是函数:
def product_id_change(self , cr ,uid ids ........):
好吧,我一直试图做的是在另一种方法中触发这个功能,如:
@api.multi
def change2(self):
self.product_id_change(self.product2)
但它不起作用! 我得到错误:方法需要6个参数(6given) 所以他们告诉我,我应该传递更多的论点 所以我改变了我试过这个:
self.product_id_change(
self.env.user.property_product_pricelist.id,
self.product_id.prod_replace.id,
qty=1,
qty_uos=1,
partner_id=self.order_id.partner_id.id,
date_order=self.order_id.date_order)
现在我没有错误,它执行功能但有变化。 这真的需要帮助! 日Thnx
答案 0 :(得分:1)
你需要提供这么多论点。
self.product_id_change(pricelist_id,product_id,qty=qty,uom=uom_id,qty_uos=qty,uos=False,name=name,partner_id=partner_id,lang=False,update_tax=True, date_order=date_order, packaging=False, fiscal_position=fiscal_position, flag=False, context=self._context)
答案 1 :(得分:0)
以便使用product_id_change! 你不需要传递所有元素,
def prod_change(self, cr, uid, ids, context=None): │
print "new traitement-----------------=======================" │
order_line = self.pool('sale.order.line') │
current_line = order_line.browse(cr, uid, │
ids[0], │
context=context) │
│
print current_line.id │
order_obj = self.pool.get('sale.order') │
order_id = order_obj.browse(cr, uid, │
current_line.order_id.id, │
context=context) │
print order_id │
order_lines = [] │
line_vals = self.product_id_change( │
cr, uid, 0, order_id.pricelist_id.id, │
current_line.product_id.prod_replace.id, │
partner_id=order_id.partner_id.id)['value'] │
│
line_vals.update( │
{'product_id': current_line.product_id.prod_replace.id}) │
print order_lines │
order_lines.append([1, ids[0], line_vals]) │
order_obj.write(cr, uid, │
order_id.id, │
{'order_line': order_lines}) │
│
return True
好吧,dict返回:
product_id_change( │
cr, uid, 0, order_id.pricelist_id.id,
current_line.product_id.prod_replace.id,
partner_id=order_id.partner_id.id)['value']
我们可以使用它添加新行或替换相同的行使用正确的ID,如下面的代码所示:
order_lines.append([1, ids[0], line_vals])
order_obj.write(cr, uid,
order_id.id,
{'order_line': order_lines})
tds [0]给了我们当前的记录ID。 谢谢你们。