From 2cb678d4a12886e08609f80b78e1e79ac33895a8 Mon Sep 17 00:00:00 2001 From: Wolfgang Taferner Date: Fri, 9 Jul 2021 09:48:51 +0000 Subject: [PATCH] =?UTF-8?q?[FIX]=20delivery:=20only=20update=20not=20yet?= =?UTF-8?q?=20processed=20pickings=20based=20on=20the=20n=E2=80=A6=20?= =?UTF-8?q?=E2=80=A6ew=20carrier?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit closes odoo/odoo#74419 X-original-commit: 3dce2fdea0060b1bc13bb35610b7fe01c71ef054 Signed-off-by: pimodoo Signed-off-by: Wolfgang Taferner --- addons/delivery/i18n/delivery.pot | 10 ++++++++++ addons/delivery/models/sale_order.py | 11 ++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/addons/delivery/i18n/delivery.pot b/addons/delivery/i18n/delivery.pot index db59bd2cddf..40ac8383de8 100644 --- a/addons/delivery/i18n/delivery.pot +++ b/addons/delivery/i18n/delivery.pot @@ -994,6 +994,16 @@ msgstr "" msgid "Weight unit of measure label" msgstr "" +#. module: delivery +#: code:addons/delivery/models/sale_order.py:0 +#, python-format +msgid "" +"You can not update the shipping costs on an order where it was already invoiced!\n" +"\n" +"The following delivery lines (product, invoiced quantity and price) have already been processed:\n" +"\n" +msgstr "" + #. module: delivery #: model_terms:ir.ui.view,arch_db:delivery.delivery_tracking_url_warning_form msgid "You have multiple tracker links, they are available in the chatter." diff --git a/addons/delivery/models/sale_order.py b/addons/delivery/models/sale_order.py index 7e4ebc65a56..ce67f792a00 100644 --- a/addons/delivery/models/sale_order.py +++ b/addons/delivery/models/sale_order.py @@ -37,7 +37,16 @@ class SaleOrder(models.Model): self.recompute_delivery_price = True def _remove_delivery_line(self): - self.env['sale.order.line'].search([('order_id', 'in', self.ids), ('is_delivery', '=', True)]).unlink() + delivery_lines = self.env['sale.order.line'].search([('order_id', 'in', self.ids), ('is_delivery', '=', True)]) + if not delivery_lines: + return + to_delete = delivery_lines.filtered(lambda x: x.qty_invoiced == 0) + if not to_delete: + raise UserError( + _('You can not update the shipping costs on an order where it was already invoiced!\n\nThe following delivery lines (product, invoiced quantity and price) have already been processed:\n\n') + + '\n'.join(['- %s: %s x %s' % (line.product_id.with_context(display_default_code=False).display_name, line.qty_invoiced, line.price_unit) for line in delivery_lines]) + ) + to_delete.unlink() def set_delivery_line(self, carrier, amount):