diff --git a/addons/website_sale/models/res_partner.py b/addons/website_sale/models/res_partner.py index eec0e04d6bc86..9fd913f478ef8 100644 --- a/addons/website_sale/models/res_partner.py +++ b/addons/website_sale/models/res_partner.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. -from odoo import api, fields, models +from odoo import api, fields, models, _ from odoo.addons.website.models import ir_http @@ -18,8 +18,29 @@ def _compute_last_website_so_id(self): if website and not is_public: partner.last_website_so_id = SaleOrder.search([ ('partner_id', '=', partner.id), + ('pricelist_id', '=', partner.property_product_pricelist.id), ('website_id', '=', website.id), ('state', '=', 'draft'), ], order='write_date desc', limit=1) else: partner.last_website_so_id = SaleOrder # Not in a website context or public User + + @api.onchange('property_product_pricelist') + def _onchange_property_product_pricelist(self): + open_order = self.env['sale.order'].search([ + ('partner_id', '=', self._origin.id), + ('pricelist_id', '=', self._origin.property_product_pricelist.id), + ('pricelist_id', '!=', self.property_product_pricelist.id), + ('website_id', '!=', False), + ('state', '=', 'draft'), + ], limit=1) + + if open_order: + return {'warning': { + 'title': _('Open Sale Orders'), + 'message': _( + "This partner has an open cart. " + "Please note that the pricelist will not be updated on that cart. " + "Also, the cart might not be visible for the customer until you update the pricelist of that cart." + ), + }}