在另一个方法 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。 谢谢你们。