具体需求:
改变客户字段,将符合该字段的销售信息带出写入明细行。
主要涉及的函数为:
@api.onchange('user_id')
def _search_order_ids_info(self):
for wizard_item in self:
wizard_item.order_ids = False
order_lines = []
res = {}
if wizard_item.user_id:
sale_order_sql = "SELECT * FROM sale_order where user_id = %s" % wizard_item.user_id.id
self.env.cr.execute(sale_order_sql)
sale_order_dic = self.env.cr.dictfetchall()
if sale_order_dic:
for order_item in sale_order_dic:
line_item = [(0, 0, {
'name': order_item['id'],
'partner_id': order_item['partner_id'],
'arrival_date': order_item['arrival_date'],
})]
order_lines += line_item
res['order_ids'] = order_lines
return {'value': res}
即创建监听客户字段的函数, 这里值所以设置wizard_item.order_ids = False,是为了每次改变user_id时都是重新添加,而不是在原来的基础上添加数据。
效果展示:
选择某个客户后: