继承product_id_change并添加新参数odoo 8

时间:2017-01-09 12:12:40

标签: odoo-8

我正在使用sale.order.line,添加新的字段 wizard orderline

lot = fields.Many2one('stock.production.lot','lot')

我希望将此字段作为参数传递给继承的方法(onchange on quantity)

def product_id_change(self, cr, uid, ids, pricelist, product, qty=0,                                                                
                      uom=False, qty_uos=0, uos=False, name='', partner_id=False,                                                   
                      lang=False, update_tax=True, date_order=False, packaging=False,                                               
                      fiscal_position=False, flag=False, lot=False,context=None):                                                   

    res = super(order_line, self).product_id_change(cr, uid, ids,                                                                   
                                                    pricelist, product,                                                             
                                                    qty,uom, qty_uos,                                                               
                                                    uos, name, partner_id,                                                          
                                                    lang, update_tax,                                                               
                                                    date_order, packaging,                                                          
                                                    fiscal_position,                                                                
                                                    flag, context=context)                                                          


    if product:                                                                                                                     
        print "----------------------------------------------"                                                                      
        print lot                                                                                                                   
        print "----------------------------------------------"                                                                  
        # res['value']['changement_prix'] = lot.change_prix                                                                         
        # res['value']['old_price'] = res['value']['price_unit']                                                                    
        # res['value']['price_unit'] = res['value']['old_price'] + lot.change_prix                                                  
    return res 

但我打印的所有内容都是假的 所以我想知道如何通过批次作为这个函数的参数 日Thnx

2 个答案:

答案 0 :(得分:0)

你不能在函数中以这种方式传递新的参数。

它调用对象的超级方法,它也会在超级方法中产生问题。所以要么你可以在xml方面的上下文中传递批次,

喜欢

    <field name="product_id"
 context="{'partner_id':parent.partner_id, 
 'quantity':product_uom_qty,
 'pricelist':parent.pricelist_id, 
 'uom':product_uom, 'company_id': parent.company_id, 
 'lot': lot}" <======
groups="base.group_user"
 on_change="product_id_change(parent.pricelist_id, product_id, product_uom_qty, False, product_uos_qty, False, name, parent.partner_id, False, True, parent.date_order, False, parent.fiscal_position, False, context)"/>

因此,在上下文中,您可以通过该批次。

lot = context.get('lot')

在python方面,你可以从上下文中获得并完成代码。

否则你必须在新模块中覆盖onchange的整个功能 在xml方面改变onchange的争论

希望这会对你有所帮助。

答案 1 :(得分:0)

嗯,我不能通过上下文得到很多 所以我在product.product中创建了一个看不见的字段 并保存在那里。 比以后通过浏览我的产品回来 thnx