From 594e01f1064dafa63d2b77433aa0d782c1abef4c Mon Sep 17 00:00:00 2001 From: "Ujjvala Collins (OpenERP)" Date: Wed, 22 Jun 2011 11:25:58 +0530 Subject: [PATCH 1/8] [FIX] sale: Fixed problem of unselect/make empty packaging field in the sale order line. lp bug: https://launchpad.net/bugs/795487 fixed bzr revid: uco@tinyerp.com-20110622055558-sk5lidkpklygqws5 --- addons/sale/sale.py | 9 ++++++--- addons/sale/sale_view.xml | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/addons/sale/sale.py b/addons/sale/sale.py index 0b436f0dc91..431e0a3d63a 100644 --- a/addons/sale/sale.py +++ b/addons/sale/sale.py @@ -1013,9 +1013,11 @@ 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 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.')) + if not context: + context = {} warning = {} warning_msgs = '' product_uom_obj = self.pool.get('product.uom') @@ -1023,7 +1025,7 @@ class sale_order_line(osv.osv): 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} + context.update({'lang': lang, 'partner_id': partner_id}) if not product: return {'value': {'th_weight': 0, 'product_packaging': False, @@ -1034,7 +1036,8 @@ class sale_order_line(osv.osv): result = {} product_obj = product_obj.browse(cr, uid, product, context=context) - if not packaging and product_obj.packaging: + from_packaging = context.get('from_packaging', False) + if not packaging and product_obj.packaging and not from_packaging: packaging = product_obj.packaging[0].id result['product_packaging'] = packaging diff --git a/addons/sale/sale_view.xml b/addons/sale/sale_view.xml index 6c444ad174d..efaca80c221 100644 --- a/addons/sale/sale_view.xml +++ b/addons/sale/sale_view.xml @@ -142,7 +142,7 @@ From e8ed589a8786193e6e8eac6ccc527505cd87ee5c Mon Sep 17 00:00:00 2001 From: "Ujjvala Collins (OpenERP)" Date: Wed, 22 Jun 2011 15:14:13 +0530 Subject: [PATCH 2/8] [FIX] sale: Fixed problem of on change product when product does not have package. bzr revid: uco@tinyerp.com-20110622094413-ijesue23tagbju0r --- addons/sale/sale.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/addons/sale/sale.py b/addons/sale/sale.py index 431e0a3d63a..9e4675bfe05 100644 --- a/addons/sale/sale.py +++ b/addons/sale/sale.py @@ -1040,6 +1040,9 @@ class sale_order_line(osv.osv): if not packaging and product_obj.packaging and not from_packaging: packaging = product_obj.packaging[0].id result['product_packaging'] = packaging + elif not product_obj.packaging: + packaging = False + result['product_packaging'] = False if packaging: default_uom = product_obj.uom_id and product_obj.uom_id.id From 2f5ada053acc9bf83c77b9a369f46a4eb8889e1a Mon Sep 17 00:00:00 2001 From: "Ujjvala Collins (OpenERP)" Date: Fri, 24 Jun 2011 15:09:06 +0530 Subject: [PATCH 3/8] [FIX] sale, sale_layout: Added onchange method on product packaging field. bzr revid: uco@tinyerp.com-20110624093906-2oonk5dge6f2ond7 --- addons/sale/sale.py | 76 +++++++++++++++---------- addons/sale/sale_view.xml | 2 +- addons/sale_layout/sale_layout_view.xml | 2 +- 3 files changed, 48 insertions(+), 32 deletions(-) diff --git a/addons/sale/sale.py b/addons/sale/sale.py index 9e4675bfe05..e5afac4d87e 100644 --- a/addons/sale/sale.py +++ b/addons/sale/sale.py @@ -1010,43 +1010,26 @@ class sale_order_line(osv.osv): default = {} default.update({'state': 'draft', 'move_ids': [], 'invoiced': False, 'invoice_lines': []}) return super(sale_order_line, self).copy_data(cr, uid, id, default, context=context) - - 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, context=None): - 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.')) - if not context: - context = {} - warning = {} - warning_msgs = '' - product_uom_obj = self.pool.get('product.uom') - partner_obj = self.pool.get('res.partner') + + def onchange_product_packaging(self, cr, uid, ids, pricelist, product, qty, uom, packaging, flag): product_obj = self.pool.get('product.product') - if partner_id: - lang = partner_obj.browse(cr, uid, partner_id).lang - context.update({'lang': lang, 'partner_id': partner_id}) - - if not product: - return {'value': {'th_weight': 0, 'product_packaging': False, - 'product_uos_qty': qty}, 'domain': {'product_uom': [], - 'product_uos': []}} - if not date_order: - date_order = time.strftime('%Y-%m-%d') - + product_uom_obj = self.pool.get('product.uom') + warning = {} result = {} - product_obj = product_obj.browse(cr, uid, product, context=context) - from_packaging = context.get('from_packaging', False) - if not packaging and product_obj.packaging and not from_packaging: - packaging = product_obj.packaging[0].id + warning_msgs = '' + if not product: + return {'value': {'product_packaging': False}} + products = product_obj.browse(cr, uid, product) + if not packaging and products.packaging and not flag: + packaging = products.packaging[0].id result['product_packaging'] = packaging - elif not product_obj.packaging: + elif not products.packaging: packaging = False result['product_packaging'] = False if packaging: - default_uom = product_obj.uom_id and product_obj.uom_id.id - pack = self.pool.get('product.packaging').browse(cr, uid, packaging, context=context) + default_uom = products.uom_id and products.uom_id.id + pack = self.pool.get('product.packaging').browse(cr, uid, packaging) q = product_uom_obj._compute_qty(cr, uid, uom, pack.qty, default_uom) # qty = qty - qty % q + q if qty and (q and not (qty % q) == 0): @@ -1061,6 +1044,39 @@ class sale_order_line(osv.osv): warning_msgs += _("Picking Information ! : ") + warn_msg + "\n\n" result['product_uom_qty'] = qty + if warning_msgs: + warning = { + 'title': _('Configuration Error !'), + 'message' : warning_msgs + } + + return {'value': result, 'warning': warning} + + 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): + 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.')) + warning_msgs = '' + 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}, 'domain': {'product_uom': [], + 'product_uos': []}} + if not date_order: + date_order = time.strftime('%Y-%m-%d') + + res = self.onchange_product_packaging(cr, uid, ids, pricelist, product, qty, uom, packaging, False) + result = res.get('value', {}) + warning = res.get('warning', {}) + product_obj = product_obj.browse(cr, uid, product, context=context) + uom2 = False if uom: uom2 = product_uom_obj.browse(cr, uid, uom) diff --git a/addons/sale/sale_view.xml b/addons/sale/sale_view.xml index efaca80c221..0b17b5ca71c 100644 --- a/addons/sale/sale_view.xml +++ b/addons/sale/sale_view.xml @@ -142,7 +142,7 @@ diff --git a/addons/sale_layout/sale_layout_view.xml b/addons/sale_layout/sale_layout_view.xml index 6dee4ddd62f..25c56a03ae6 100644 --- a/addons/sale_layout/sale_layout_view.xml +++ b/addons/sale_layout/sale_layout_view.xml @@ -38,7 +38,7 @@ name="product_packaging" attrs="{'readonly':[('layout_type','!=','article')]}" context="{'partner_id':parent.partner_id,'quantity':product_uom_qty,'pricelist':parent.pricelist_id,'shop':parent.shop_id,'uom':product_uom}" - on_change="product_id_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, product_packaging, parent.fiscal_position)" + on_change="onchange_product_packaging(parent.pricelist_id, product_id, product_uom_qty, product_uom, product_packaging, True)" domain="[('product_id','=',product_id)]" groups="base.group_extended"/> From 14daa261888a6ee92db0bbd24fefee9a6a15270c Mon Sep 17 00:00:00 2001 From: "Ujjvala Collins (OpenERP)" Date: Tue, 5 Jul 2011 18:41:02 +0530 Subject: [PATCH 4/8] [REF] sale: Refactored the code, optimization and fixed according to coding standards. bzr revid: uco@tinyerp.com-20110705131102-0r9etxoro001iem4 --- addons/sale/sale.py | 55 ++++++++++++++----------- addons/sale/sale_view.xml | 2 +- addons/sale_layout/sale_layout_view.xml | 2 +- 3 files changed, 33 insertions(+), 26 deletions(-) diff --git a/addons/sale/sale.py b/addons/sale/sale.py index 398ad00b467..85e507bddd3 100644 --- a/addons/sale/sale.py +++ b/addons/sale/sale.py @@ -1011,53 +1011,60 @@ class sale_order_line(osv.osv): default.update({'state': 'draft', 'move_ids': [], 'invoiced': False, 'invoice_lines': []}) return super(sale_order_line, self).copy_data(cr, uid, id, default, context=context) - def onchange_product_packaging(self, cr, uid, ids, pricelist, product, qty, uom, packaging, flag): + def product_packaging_change(self, cr, uid, ids, pricelist, product, qty=0, uom=False, + partner_id=False, packaging=False, flag=False, context=None): product_obj = self.pool.get('product.product') product_uom_obj = self.pool.get('product.uom') + pack_obj = self.pool.get('product.packaging') warning = {} result = {} warning_msgs = '' if not product: return {'value': {'product_packaging': False}} - products = product_obj.browse(cr, uid, product) - if not packaging and products.packaging and not flag: + + if flag: + res = self.product_id_change(cr, uid, ids, pricelist=pricelist, + product=product, qty=qty, uom=uom, partner_id=partner_id, + packaging=packaging, flag=False) + warning_msgs = res.get('warning') and res['warning']['message'] + + products = product_obj.browse(cr, uid, product, context=context) + if not products.packaging: + packaging = result['product_packaging'] = False + elif not packaging and products.packaging and not flag: packaging = products.packaging[0].id result['product_packaging'] = packaging - elif not products.packaging: - packaging = False - result['product_packaging'] = False - + if packaging: default_uom = products.uom_id and products.uom_id.id - pack = self.pool.get('product.packaging').browse(cr, uid, packaging) + pack = pack_obj.browse(cr, uid, packaging, context=context) q = product_uom_obj._compute_qty(cr, uid, uom, pack.qty, default_uom) # qty = qty - qty % q + q if qty and (q and not (qty % q) == 0): ean = pack.ean or _('(n/a)') qty_pack = pack.qty type_ul = pack.ul - warn_msg = _("You selected a quantity of %d Units.\n" - "But it's not compatible with the selected packaging.\n" - "Here is a proposition of quantities according to the packaging:\n" - "EAN: %s Quantity: %s Type of ul: %s") % \ - (qty, ean, qty_pack, type_ul.name) - warning_msgs += _("Picking Information ! : ") + warn_msg + "\n\n" - result['product_uom_qty'] = qty - - if warning_msgs: - warning = { + if not warning_msgs: + warn_msg = _("You selected a quantity of %d Units.\n" + "But it's not compatible with the selected packaging.\n" + "Here is a proposition of quantities according to the packaging:\n" + "EAN: %s Quantity: %s Type of ul: %s") % \ + (qty, ean, qty_pack, type_ul.name) + warning_msgs += _("Picking Information ! : ") + warn_msg + "\n\n" + warning = { 'title': _('Configuration Error !'), - 'message' : warning_msgs - } + 'message': warning_msgs + } + result['product_uom_qty'] = qty return {'value': result, 'warning': warning} 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): - if not partner_id: + 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.')) - warning_msgs = '' + warning = {} product_uom_obj = self.pool.get('product.uom') partner_obj = self.pool.get('res.partner') product_obj = self.pool.get('product.product') @@ -1072,9 +1079,9 @@ class sale_order_line(osv.osv): if not date_order: date_order = time.strftime('%Y-%m-%d') - res = self.onchange_product_packaging(cr, uid, ids, pricelist, product, qty, uom, packaging, False) + res = self.product_packaging_change(cr, uid, ids, pricelist, product, qty, uom, partner_id, packaging) result = res.get('value', {}) - warning = res.get('warning', {}) + warning_msgs = res.get('warning') and res['warning']['message'] or '' product_obj = product_obj.browse(cr, uid, product, context=context) uom2 = False diff --git a/addons/sale/sale_view.xml b/addons/sale/sale_view.xml index 0b17b5ca71c..34e7dc292bc 100644 --- a/addons/sale/sale_view.xml +++ b/addons/sale/sale_view.xml @@ -142,7 +142,7 @@ diff --git a/addons/sale_layout/sale_layout_view.xml b/addons/sale_layout/sale_layout_view.xml index 25c56a03ae6..12d07432861 100644 --- a/addons/sale_layout/sale_layout_view.xml +++ b/addons/sale_layout/sale_layout_view.xml @@ -38,7 +38,7 @@ name="product_packaging" attrs="{'readonly':[('layout_type','!=','article')]}" context="{'partner_id':parent.partner_id,'quantity':product_uom_qty,'pricelist':parent.pricelist_id,'shop':parent.shop_id,'uom':product_uom}" - on_change="onchange_product_packaging(parent.pricelist_id, product_id, product_uom_qty, product_uom, product_packaging, True)" + on_change="product_packaging_change(parent.pricelist_id, product_id, product_uom_qty, product_uom, parent.partner_id, product_packaging, True)" domain="[('product_id','=',product_id)]" groups="base.group_extended"/> From 867aa1a56f113da5748a0b44d0dff0a94cefc66b Mon Sep 17 00:00:00 2001 From: Mustufa Rangwala Date: Wed, 6 Jul 2011 14:59:17 +0530 Subject: [PATCH 5/8] [IMP] sale: onchange package minor improvement bzr revid: mra@mra-laptop-20110706092917-44yznbfqyeklrzdn --- addons/sale/sale.py | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/addons/sale/sale.py b/addons/sale/sale.py index 85e507bddd3..057ed530218 100644 --- a/addons/sale/sale.py +++ b/addons/sale/sale.py @@ -1010,31 +1010,30 @@ class sale_order_line(osv.osv): default = {} default.update({'state': 'draft', 'move_ids': [], 'invoiced': False, 'invoice_lines': []}) return super(sale_order_line, self).copy_data(cr, uid, id, default, context=context) - - def product_packaging_change(self, cr, uid, ids, pricelist, product, qty=0, uom=False, + + def product_packaging_change(self, cr, uid, ids, pricelist, product, qty=0, uom=False, partner_id=False, packaging=False, flag=False, context=None): + if not product: + return {'value': {'product_packaging': False}} product_obj = self.pool.get('product.product') product_uom_obj = self.pool.get('product.uom') pack_obj = self.pool.get('product.packaging') warning = {} result = {} warning_msgs = '' - if not product: - return {'value': {'product_packaging': False}} - if flag: - res = self.product_id_change(cr, uid, ids, pricelist=pricelist, + res = self.product_id_change(cr, uid, ids, pricelist=pricelist, product=product, qty=qty, uom=uom, partner_id=partner_id, packaging=packaging, flag=False) warning_msgs = res.get('warning') and res['warning']['message'] - + products = product_obj.browse(cr, uid, product, context=context) if not products.packaging: packaging = result['product_packaging'] = False elif not packaging and products.packaging and not flag: packaging = products.packaging[0].id result['product_packaging'] = packaging - + if packaging: default_uom = products.uom_id and products.uom_id.id pack = pack_obj.browse(cr, uid, packaging, context=context) From b1dc5544d244fbfea6f535e49b30b0c717012665 Mon Sep 17 00:00:00 2001 From: Mustufa Rangwala Date: Wed, 6 Jul 2011 15:05:40 +0530 Subject: [PATCH 6/8] [IMP] sale: onchange package minor improvement bzr revid: mra@mra-laptop-20110706093540-ncsl94dqhd1n4c3m --- addons/sale/sale.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/addons/sale/sale.py b/addons/sale/sale.py index 057ed530218..555b83d4616 100644 --- a/addons/sale/sale.py +++ b/addons/sale/sale.py @@ -105,11 +105,11 @@ class sale_order(osv.osv): procurement_order mp on (mp.move_id=m.id) WHERE p.sale_id IN %s GROUP BY m.state, mp.state, p.sale_id, p.type''', (tuple(ids),)) - + for item in cr.dictfetchall(): if item['move_state'] == 'cancel': continue - + if item['picking_type'] == 'in':#this is a returned picking tmp[item['sale_order_id']]['total'] -= item['nbr'] or 0.0 # Deducting the return picking qty if item['procurement_state'] == 'done' or item['move_state'] == 'done': @@ -118,7 +118,7 @@ class sale_order(osv.osv): tmp[item['sale_order_id']]['total'] += item['nbr'] or 0.0 if item['procurement_state'] == 'done' or item['move_state'] == 'done': tmp[item['sale_order_id']]['picked'] += item['nbr'] or 0.0 - + for order in self.browse(cr, uid, ids, context=context): if order.shipped: res[order.id] = 100.0 @@ -710,7 +710,7 @@ class sale_order(osv.osv): 'note': line.notes, 'company_id': order.company_id.id, }) - + if line.product_id: proc_id = self.pool.get('procurement.order').create(cr, uid, { 'name': line.name, @@ -1078,7 +1078,7 @@ class sale_order_line(osv.osv): if not date_order: date_order = time.strftime('%Y-%m-%d') - res = self.product_packaging_change(cr, uid, ids, pricelist, product, qty, uom, partner_id, packaging) + res = self.product_packaging_change(cr, uid, ids, pricelist, product, qty, uom, partner_id, packaging, context=context) result = res.get('value', {}) warning_msgs = res.get('warning') and res['warning']['message'] or '' product_obj = product_obj.browse(cr, uid, product, context=context) @@ -1147,7 +1147,7 @@ class sale_order_line(osv.osv): max(0,product_obj.qty_available), product_obj.uom_id.name) warning_msgs += _("Not enough stock ! : ") + warn_msg + "\n\n" # get unit price - + if not pricelist: warn_msg = _('You have to select a pricelist or a customer in the sales form !\n' 'Please set one before choosing a product.') @@ -1168,7 +1168,7 @@ class sale_order_line(osv.osv): if warning_msgs: warning = { 'title': _('Configuration Error !'), - 'message' : warning_msgs + 'message' : warning_msgs } return {'value': result, 'domain': domain, 'warning': warning} @@ -1211,7 +1211,7 @@ class sale_config_picking_policy(osv.osv_memory): ('picking', 'Invoice Based on Deliveries'), ], 'Shipping Default Policy', required=True, help="""The Shipping Policy is used to synchronise invoice and delivery operations. - - The "Invoice Based on Sales Orders" option will create the picking order directly and wait for the user to manually click on the 'Invoice' button to generate the draft invoice. + - The "Invoice Based on Sales Orders" option will create the picking order directly and wait for the user to manually click on the 'Invoice' button to generate the draft invoice. - The "Invoice Based on Deliveries" option is used to create an invoice during the picking process."""), 'step': fields.selection([ ('one', 'Delivery Order Only'), From e84d292ceb36d53f40aba7c0a842b4f779ea4006 Mon Sep 17 00:00:00 2001 From: "Ujjvala Collins (OpenERP)" Date: Mon, 18 Jul 2011 15:23:44 +0530 Subject: [PATCH 7/8] [IMP] sale: Improved code by adding context argument wherever required. * product_visible_discount, warning: Added remaining context argument on product_id_change method. bzr revid: uco@tinyerp.com-20110718095344-tdlsys7uueqp9kdy --- addons/product_visible_discount/product_visible_discount.py | 5 +++-- addons/sale/sale.py | 2 +- addons/sale/sale_view.xml | 2 +- addons/sale_layout/sale_layout_view.xml | 2 +- addons/warning/warning.py | 4 ++-- 5 files changed, 8 insertions(+), 7 deletions(-) diff --git a/addons/product_visible_discount/product_visible_discount.py b/addons/product_visible_discount/product_visible_discount.py index c2f939c1618..2571855ec89 100644 --- a/addons/product_visible_discount/product_visible_discount.py +++ b/addons/product_visible_discount/product_visible_discount.py @@ -40,7 +40,8 @@ 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): def get_real_price(res_dict, product_id, qty, uom, pricelist): item_obj = self.pool.get('product.pricelist.item') @@ -70,7 +71,7 @@ class sale_order_line(osv.osv): res=super(sale_order_line, self).product_id_change(cr, uid, ids, pricelist, product, qty, uom, qty_uos, uos, name, partner_id, - lang, update_tax,date_order,fiscal_position=fiscal_position,flag=flag) + lang, update_tax, date_order, fiscal_position=fiscal_position, flag=flag, context=context) context = {'lang': lang, 'partner_id': partner_id} result=res['value'] diff --git a/addons/sale/sale.py b/addons/sale/sale.py index 06bdbf44a10..ad79506f8a8 100644 --- a/addons/sale/sale.py +++ b/addons/sale/sale.py @@ -1024,7 +1024,7 @@ class sale_order_line(osv.osv): if flag: res = self.product_id_change(cr, uid, ids, pricelist=pricelist, product=product, qty=qty, uom=uom, partner_id=partner_id, - packaging=packaging, flag=False) + packaging=packaging, flag=False, context=context) warning_msgs = res.get('warning') and res['warning']['message'] products = product_obj.browse(cr, uid, product, context=context) diff --git a/addons/sale/sale_view.xml b/addons/sale/sale_view.xml index 72314f945da..d191cd3553f 100644 --- a/addons/sale/sale_view.xml +++ b/addons/sale/sale_view.xml @@ -142,7 +142,7 @@ diff --git a/addons/sale_layout/sale_layout_view.xml b/addons/sale_layout/sale_layout_view.xml index 407d15a5c04..c4e20b979ab 100644 --- a/addons/sale_layout/sale_layout_view.xml +++ b/addons/sale_layout/sale_layout_view.xml @@ -38,7 +38,7 @@ name="product_packaging" attrs="{'readonly':[('layout_type','!=','article')]}" context="{'partner_id':parent.partner_id,'quantity':product_uom_qty,'pricelist':parent.pricelist_id,'shop':parent.shop_id,'uom':product_uom}" - on_change="product_packaging_change(parent.pricelist_id, product_id, product_uom_qty, product_uom, parent.partner_id, product_packaging, True)" + on_change="product_packaging_change(parent.pricelist_id, product_id, product_uom_qty, product_uom, parent.partner_id, product_packaging, True, context)" domain="[('product_id','=',product_id)]" groups="base.group_extended"/> diff --git a/addons/warning/warning.py b/addons/warning/warning.py index ab7a5926653..e5bdf07aef3 100644 --- a/addons/warning/warning.py +++ b/addons/warning/warning.py @@ -197,7 +197,7 @@ 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): + fiscal_position=False, flag=False, context=None): warning = {} if not product: return {'value': {'th_weight' : 0, 'product_packaging': False, @@ -218,7 +218,7 @@ class sale_order_line(osv.osv): result = super(sale_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) + lang, update_tax, date_order, packaging, fiscal_position, flag, context=context) if result.get('warning',False): warning['title'] = title and title +' & '+result['warning']['title'] or result['warning']['title'] From a5ca2b0eb7c49c2f1f1422903ab3077b9243558d Mon Sep 17 00:00:00 2001 From: "Ujjvala Collins (OpenERP)" Date: Mon, 12 Sep 2011 14:46:30 +0530 Subject: [PATCH 8/8] [FIX] product_visible_discount: Fixed missing argument while calling super method. lp bug: https://launchpad.net/bugs/809491 fixed bzr revid: uco@tinyerp.com-20110912091630-3sqpotrixlt7wc96 --- addons/product_visible_discount/product_visible_discount.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/product_visible_discount/product_visible_discount.py b/addons/product_visible_discount/product_visible_discount.py index 2571855ec89..7edd196cd53 100644 --- a/addons/product_visible_discount/product_visible_discount.py +++ b/addons/product_visible_discount/product_visible_discount.py @@ -40,7 +40,7 @@ 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, + lang=False, update_tax=True, date_order=False, packaging=False, fiscal_position=False, flag=False, context=None): def get_real_price(res_dict, product_id, qty, uom, pricelist): @@ -60,7 +60,7 @@ class sale_order_line(osv.osv): product_tmpl_id = product.product_tmpl_id.id product_read = template_obj.read(cr, uid, product_tmpl_id, [field_name], context) - + factor = 1.0 if uom and uom != product.uom_id.id: product_uom_obj = self.pool.get('product.uom') @@ -71,7 +71,7 @@ class sale_order_line(osv.osv): res=super(sale_order_line, self).product_id_change(cr, uid, ids, pricelist, product, qty, uom, qty_uos, uos, name, partner_id, - lang, update_tax, date_order, fiscal_position=fiscal_position, flag=flag, context=context) + lang, update_tax, date_order, packaging=packaging, fiscal_position=fiscal_position, flag=flag, context=context) context = {'lang': lang, 'partner_id': partner_id} result=res['value']