From c61749fcd1d431045f7a55f529daff392a0f0763 Mon Sep 17 00:00:00 2001 From: cch Date: Sat, 17 Sep 2011 11:28:21 +0200 Subject: [PATCH] Send context in sales and purchase 'on_change'. --- addons/purchase/purchase.py | 21 +++++++++++++-------- addons/purchase/purchase_view.xml | 6 +++--- addons/sale/sale.py | 17 ++++++++++------- addons/sale/sale_view.xml | 6 +++--- 4 files changed, 29 insertions(+), 21 deletions(-) diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py index d95a76f..52d6baf 100644 --- a/addons/purchase/purchase.py +++ b/addons/purchase/purchase.py @@ -656,7 +656,12 @@ class purchase_order_line(osv.osv): def product_id_change(self, cr, uid, ids, pricelist, product, qty, uom, partner_id, date_order=False, fiscal_position=False, date_planned=False, - name=False, price_unit=False, notes=False): + name=False, price_unit=False, notes=False, context=None): + + if not context: + context={'lang': self.pool.get('res.users').read(cr, uid, uid, ['context_lang'], context)['context_lang']} + context['partner_id'] = partner_id + if not pricelist: raise osv.except_osv(_('No Pricelist !'), _('You have to select a pricelist or a supplier in the purchase form !\nPlease set one before choosing a product.')) if not partner_id: @@ -668,11 +673,11 @@ class purchase_order_line(osv.osv): prod= self.pool.get('product.product').browse(cr, uid, product) product_uom_pool = self.pool.get('product.uom') - lang=False - if partner_id: - lang=self.pool.get('res.partner').read(cr, uid, partner_id, ['lang'])['lang'] - context={'lang':lang} - context['partner_id'] = partner_id + # lang=False + # if partner_id: + # lang=self.pool.get('res.partner').read(cr, uid, partner_id, ['lang'])['lang'] + # context={'lang':lang} + # context['partner_id'] = partner_id prod = self.pool.get('product.product').browse(cr, uid, product, context=context) prod_uom_po = prod.uom_po_id.id @@ -726,10 +731,10 @@ class purchase_order_line(osv.osv): def product_uom_change(self, cr, uid, ids, pricelist, product, qty, uom, partner_id, date_order=False, fiscal_position=False, date_planned=False, - name=False, price_unit=False, notes=False): + name=False, price_unit=False, notes=False, context=None): res = self.product_id_change(cr, uid, ids, pricelist, product, qty, uom, partner_id, date_order=date_order, fiscal_position=fiscal_position, date_planned=date_planned, - name=name, price_unit=price_unit, notes=notes) + name=name, price_unit=price_unit, notes=notes, context=context) if 'product_uom' in res['value']: if uom and (uom != res['value']['product_uom']) and res['value']['product_uom']: seller_uom_name = self.pool.get('product.uom').read(cr, uid, [res['value']['product_uom']], ['name'])[0]['name'] diff --git a/addons/purchase/purchase_view.xml b/addons/purchase/purchase_view.xml index 8250b95..b112c25 100644 --- a/addons/purchase/purchase_view.xml +++ b/addons/purchase/purchase_view.xml @@ -316,9 +316,9 @@
- - - + + + diff --git a/addons/sale/sale.py b/addons/sale/sale.py index 342b064..8ab5df6 100644 --- a/addons/sale/sale.py +++ b/addons/sale/sale.py @@ -1009,17 +1009,20 @@ class sale_order_line(osv.osv): 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): + lang=False, update_tax=True, date_order=False, packaging=False, fiscal_position=False, flag=False, context=None): + + if not context: + context={'lang': self.pool.get('res.users').read(cr, uid, uid, ['context_lang'], context)['context_lang']} + if not partner_id: raise osv.except_osv(_('No Customer Defined !'), _('You have to select a customer in the sales form !\nPlease set one customer before choosing a product.')) + context['partner_id'] = partner_id + warning = {} product_uom_obj = self.pool.get('product.uom') partner_obj = self.pool.get('res.partner') product_obj = self.pool.get('product.product') - if partner_id: - lang = partner_obj.browse(cr, uid, partner_id).lang - context = {'lang': lang, 'partner_id': partner_id} - + if not product: return {'value': {'th_weight': 0, 'product_packaging': False, 'product_uos_qty': qty, 'tax_id':[]}, 'domain': {'product_uom': [], @@ -1145,11 +1148,11 @@ class sale_order_line(osv.osv): def product_uom_change(self, cursor, user, ids, pricelist, product, qty=0, uom=False, qty_uos=0, uos=False, name='', partner_id=False, - lang=False, update_tax=True, date_order=False): + lang=False, update_tax=True, date_order=False, context=None): res = self.product_id_change(cursor, user, ids, pricelist, product, qty=qty, uom=uom, qty_uos=qty_uos, uos=uos, name=name, partner_id=partner_id, lang=lang, update_tax=update_tax, - date_order=date_order) + date_order=date_order, context=context) if 'product_uom' in res['value']: del res['value']['product_uom'] if not uom: diff --git a/addons/sale/sale_view.xml b/addons/sale/sale_view.xml index 82d2324..f953310 100644 --- a/addons/sale/sale_view.xml +++ b/addons/sale/sale_view.xml @@ -128,17 +128,17 @@ + on_change="product_uom_change(parent.pricelist_id,product_id,product_uom_qty,product_uom,product_uos_qty,product_uos,name,parent.partner_id, 'lang' in context and context['lang'], False, parent.date_order, context)"/>