diff --git a/product_supplierinfo_for_customer/__openerp__.py b/product_supplierinfo_for_customer/__openerp__.py index dcf3495737c..b553cccc627 100644 --- a/product_supplierinfo_for_customer/__openerp__.py +++ b/product_supplierinfo_for_customer/__openerp__.py @@ -27,6 +27,7 @@ "license": 'AGPL-3', "depends": [ "base", + "sale", "product", ], "data": [ diff --git a/product_supplierinfo_for_customer/models/__init__.py b/product_supplierinfo_for_customer/models/__init__.py index 3e4ccebb841..15809f6d615 100644 --- a/product_supplierinfo_for_customer/models/__init__.py +++ b/product_supplierinfo_for_customer/models/__init__.py @@ -6,3 +6,4 @@ from . import product_template from . import res_partner from . import product_pricelist +from . import sale_order_line diff --git a/product_supplierinfo_for_customer/models/sale_order_line.py b/product_supplierinfo_for_customer/models/sale_order_line.py new file mode 100644 index 00000000000..30794e2ad10 --- /dev/null +++ b/product_supplierinfo_for_customer/models/sale_order_line.py @@ -0,0 +1,35 @@ +# -*- coding: utf-8 -*- +from openerp import models, api + + +class SaleOrderLine(models.Model): + + _inherit = 'sale.order.line' + + @api.multi + def product_id_change( + self, 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): + res = super(SaleOrderLine, self).product_id_change( + 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, + packaging=packaging, fiscal_position=fiscal_position, + flag=flag) + product_rec = self.env['product.product'].browse(product) + partner_rec = self.env['res.partner'].browse(partner_id) + if product_rec.customer_ids: + selected_supplier_info = product_rec.customer_ids.filtered( + lambda x: x.name == partner_rec).filtered( + lambda q: q.min_qty <= qty).sorted( + lambda s: qty - s.min_qty) + if res.get('value', {}).get('name') and selected_supplier_info: + pc = selected_supplier_info[-1].product_code + pn = selected_supplier_info[-1].product_name + if pn and pc: + res['value']['name'] = pc + '---' + pn + if pn and not pc: + res['value']['name'] = pn + return res