diff --git a/addons/point_of_sale/models/pos_session.py b/addons/point_of_sale/models/pos_session.py index df86a589ef9..8c0692f6a76 100644 --- a/addons/point_of_sale/models/pos_session.py +++ b/addons/point_of_sale/models/pos_session.py @@ -1795,6 +1795,30 @@ class PosSession(models.Model): domain = [('id', '=', self.config_id.pricelist_id.id)] return {'search_params': {'domain': domain, 'fields': ['name', 'display_name', 'discount_policy']}} + def _product_pricelist_item_fields(self): + return [ + 'id', + 'product_tmpl_id', + 'product_id', + 'pricelist_id', + 'price_surcharge', + 'price_discount', + 'price_round', + 'price_min_margin', + 'price_max_margin', + 'company_id', + 'currency_id', + 'date_start', + 'date_end', + 'compute_price', + 'fixed_price', + 'percent_price', + 'base_pricelist_id', + 'base', + 'categ_id', + 'min_quantity', + ] + def _get_pos_ui_product_pricelist(self, params): pricelists = self.env['product.pricelist'].search_read(**params['search_params']) for pricelist in pricelists: @@ -1802,9 +1826,8 @@ class PosSession(models.Model): pricelist_by_id = {pricelist['id']: pricelist for pricelist in pricelists} pricelist_item_domain = [('pricelist_id', 'in', [p['id'] for p in pricelists])] - for item in self.env['product.pricelist.item'].search_read(pricelist_item_domain, []): + for item in self.env['product.pricelist.item'].search_read(pricelist_item_domain, self._product_pricelist_item_fields()): pricelist_by_id[item['pricelist_id'][0]]['items'].append(item) - item['base_pricelist'] = pricelist_by_id.get(item['base_pricelist_id'][0]) if item['base_pricelist_id'] else None return pricelists diff --git a/addons/point_of_sale/static/src/js/models.js b/addons/point_of_sale/static/src/js/models.js index 65a722e0aef..e7b86e15036 100644 --- a/addons/point_of_sale/static/src/js/models.js +++ b/addons/point_of_sale/static/src/js/models.js @@ -1409,7 +1409,11 @@ class Product extends PosModel { } if (rule.base === 'pricelist') { - price = self.get_price(rule.base_pricelist, quantity); + let base_pricelist = _.find(self.pos.pricelists, function (pricelist) { + return pricelist.id === rule.base_pricelist_id[0];}); + if (base_pricelist) { + price = self.get_price(base_pricelist, quantity); + } } else if (rule.base === 'standard_price') { price = self.standard_price; }