您的位置:首页 > 其它

(58) 在计算字段提供搜索功能

2017-11-29 19:14 465 查看
问题描述:
运单号是在出库单上后勤填写的,平时销售订单有一个运单号是通过计算字段
从出库单上获的,这时,销售员,要在销售列表上,输入运单号 找到对应的销售订单

分析:
可以用两种方法
方法1.字段设置为 store=True , 这样和其它的普通的字段一样,可以搜索,有一点
在计算时会很慢,在出库货上填写运单号时,转半天,影响效率

方法2,字段加上search 加上对应的方法
这个写逻辑复杂一些,但效率最高

解决:
用方法2:
tracking_number_raw = fields.Text(string='Tracking Number Raw',

compute='_get_tracking_number',search='_tracking_number_raw_search')

def _tracking_number_raw_search(self, operator, value,limit=100):
if operator == 'like':
operator = 'ilike'
stock_pickings = self.env['stock.picking'].search([('picking_type_code','=','outgoing'),

('carrier_tracking_ref',operator,value)])
if stock_pickings :
domain = [('id', 'in', [sale.id for sale in stock_pickings.sale_id])]
else:
domain = [('id', '=', 0)]
return domain

---------------------------------
<record id="view_sales_order_filter_inherit" model="ir.ui.view">
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_sales_order_filter" />
<field name="arch" type="xml">
<field name="partner_id" position="after">

<field name="tracking_number_raw" />

</field>

</field>
</record>

---------------------------------
这样在列表视图右上角输入运单号,有对应的运单号搜索,这样就可以找到对应的销售单

重点讲解 search 对应的方法
返回是domain , 对应的字段一定对象要有的字段,像我上面是sale.order对象
id 这个字段一定有的 ,这里可以灵活变化,可换成 name 条件去找,等等,这样就解决
所有关于字段为 compute 类型的搜索问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: