2017-01-09 2 views
0

я работаю над sale.order.line, добавив новое поле много wizard orderlineунаследуют product_id_change и добавить новый аргумент odoo 8

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

и я хочу передать это поле в качестве аргумента в унаследованном метод (OnChange на количество)

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

ответ

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

Надеется, что это поможет вам.

+0

Thnx для ответа ,, им-ошибка не получать, но моя печать показать много = None не это, потому что я использую OrderLine в мастере формного? Может быть? –

0

хорошо я не мог получить много в контексте , поэтому я сделал невидимое поле many2one в product.product и сохранил его там. , чем получить его позже, просматривая мой продукт Thnx

Смежные вопросы