From 79a7d58a1c14f37f2ec1abc1f6f3fcf55bcd30c4 Mon Sep 17 00:00:00 2001 From: Nicolas Martinelli Date: Thu, 6 Sep 2018 13:10:04 +0200 Subject: [PATCH] [FIX] sale: prevent confirmation of SO Prevent the confirmation of a SO in state 'cancel' or 'done'. opw-1881333 --- addons/sale/i18n/sale.pot | 6 ++++++ addons/sale/models/sale.py | 7 +++++++ 2 files changed, 13 insertions(+) diff --git a/addons/sale/i18n/sale.pot b/addons/sale/i18n/sale.pot index ed7972ce4f9..03432bf8188 100644 --- a/addons/sale/i18n/sale.pot +++ b/addons/sale/i18n/sale.pot @@ -1209,6 +1209,12 @@ msgid "It is forbidden to modify the following fields in a locked order:\n" "%s" msgstr "" +#. module: sale +#: code:addons/sale/models/sale.py:551 +#, python-format +msgid "It is not allowed to confirm an order in the following states: %s" +msgstr "" + #. module: sale #: model:ir.model.fields,field_description:sale.field_report_all_channels_sales___last_update #: model:ir.model.fields,field_description:sale.field_report_sale_report_saleproforma___last_update diff --git a/addons/sale/models/sale.py b/addons/sale/models/sale.py index 38ef7123c62..779ab3c809c 100644 --- a/addons/sale/models/sale.py +++ b/addons/sale/models/sale.py @@ -547,11 +547,18 @@ class SaleOrder(models.Model): @api.multi def action_confirm(self): + if self._get_forbidden_state_confirm() & set(self.mapped('state')): + raise UserError(_( + 'It is not allowed to confirm an order in the following states: %s' + ) % (', '.join(self._get_forbidden_state_confirm()))) self._action_confirm() if self.env['ir.config_parameter'].sudo().get_param('sale.auto_done_setting'): self.action_done() return True + def _get_forbidden_state_confirm(self): + return {'done', 'cancel'} + @api.multi def _create_analytic_account(self, prefix=None): for order in self: