在另一个方法 odoo v8 中调用 product_id_change
call product_id_change in another method odoo v8
在模型 sale.order.line 中是函数:
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)
现在我没有错误了,它执行了函数但是有变化。
这里真的需要帮助!
谢谢
你需要给出这么多论据。
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)
好用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
嗯,字典 return 作者:
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。
谢谢你们。
在模型 sale.order.line 中是函数:
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)
现在我没有错误了,它执行了函数但是有变化。 这里真的需要帮助! 谢谢
你需要给出这么多论据。
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)
好用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
嗯,字典 return 作者:
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。 谢谢你们。