From a2547826e810dce2feb054d621c6d09ccea92956 Mon Sep 17 00:00:00 2001 From: Parthiv Patel Date: Thu, 8 Jun 2023 08:36:14 +0000 Subject: [PATCH] [PATCH] Upstream patch - 08062023 --- addons/point_of_sale/models/account_tax.py | 24 ++++++++++++---------- addons/survey/views/survey_templates.xml | 4 ++-- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/addons/point_of_sale/models/account_tax.py b/addons/point_of_sale/models/account_tax.py index e962d44836..ac8740e8ca 100644 --- a/addons/point_of_sale/models/account_tax.py +++ b/addons/point_of_sale/models/account_tax.py @@ -2,27 +2,29 @@ from flectra import _, api, models from flectra.exceptions import UserError +from flectra.tools import split_every class AccountTax(models.Model): _inherit = 'account.tax' def write(self, vals): - forbidden_fields = set([ + forbidden_fields = { 'amount_type', 'amount', 'type_tax_use', 'tax_group_id', 'price_include', 'include_base_amount' - ]) + } if forbidden_fields & set(vals.keys()): - tax_ids = self.env['pos.order.line'].sudo().search([ + lines = self.env['pos.order.line'].sudo().search([ ('order_id.session_id.state', '!=', 'closed') - ]).read(['tax_ids']) - # Flatten the list of taxes, see https://stackoverflow.com/questions/952914 - tax_ids = set([i for sl in [t['tax_ids'] for t in tax_ids] for i in sl]) - if tax_ids & set(self.ids): - raise UserError(_( - 'It is forbidden to modify a tax used in a POS order not posted. ' - 'You must close the POS sessions before modifying the tax.' - )) + ]) + self_ids = set(self.ids) + for lines_chunk in map(self.env['pos.order.line'].browse, split_every(100000, lines.ids)): + if any(tid in self_ids for ts in lines_chunk.read(['tax_ids']) for tid in ts['tax_ids']): + raise UserError(_( + 'It is forbidden to modify a tax used in a POS order not posted. ' + 'You must close the POS sessions before modifying the tax.' + )) + lines_chunk.invalidate_cache(['tax_ids'], lines_chunk.ids) return super(AccountTax, self).write(vals) def get_real_tax_amount(self): diff --git a/addons/survey/views/survey_templates.xml b/addons/survey/views/survey_templates.xml index 4b1b528a81..1362063f69 100644 --- a/addons/survey/views/survey_templates.xml +++ b/addons/survey/views/survey_templates.xml @@ -408,7 +408,7 @@ - + @@ -471,7 +471,7 @@ - +