问题描述:
运单号是在出库单上后勤填写的,平时销售订单有一个运单号是通过计算字段
从出库单上获的,这时,销售员,要在销售列表上,输入运单号 找到对应的销售订单
分析:
可以用两种方法
方法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 类型的搜索问题。