From 5affc34597bd2fd1dd25f9c196f4132a5d4c23b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Sat, 23 Dec 2023 18:42:46 +0100 Subject: [PATCH] Remove shipment cost method on sale without carrier Since 34a5debdca00 a domain enforce an empty shipment cost method when no carrier is selected. So former order must be updated to still be valid. Closes #12753 (grafted from af20d4f7c1de13bf06fabb1010251884b96b80f7) --HG-- branch : 7.0 --- modules/sale_shipment_cost/sale.py | 11 +++++++++++ modules/sale_shipment_cost/setup.py | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/modules/sale_shipment_cost/sale.py b/modules/sale_shipment_cost/sale.py index 2ab74f2e52..6d6226f375 100644 --- a/modules/sale_shipment_cost/sale.py +++ b/modules/sale_shipment_cost/sale.py @@ -2,6 +2,8 @@ # this repository contains the full copyright notices and license terms. from decimal import Decimal +from sql import Null + from trytond.i18n import gettext from trytond.model import ModelView, Workflow, fields from trytond.modules.product import price_digits, round_price @@ -90,11 +92,20 @@ class Sale(metaclass=PoolMeta): @classmethod def __register__(cls, module): + cursor = Transaction().connection.cursor() + table = cls.__table__() + super().__register__(module) table_h = cls.__table_handler__(module) # Migration from 5.8: remove required on shipment_cost_method table_h.not_null_action('shipment_cost_method', 'remove') + # Migration from 6.6: shipment_cost_method domain + cursor.execute(*table.update( + [table.shipment_cost_method], + [Null], + where=(table.carrier == Null) & (table.state != 'draft'))) + @classmethod def default_shipment_cost_method(cls, **pattern): Config = Pool().get('sale.configuration') diff --git a/modules/sale_shipment_cost/setup.py b/modules/sale_shipment_cost/setup.py index 76f4f16f8f..9b2aaffa42 100755 --- a/modules/sale_shipment_cost/setup.py +++ b/modules/sale_shipment_cost/setup.py @@ -41,7 +41,7 @@ else: download_url = 'http://downloads.tryton.org/%s.%s/' % ( major_version, minor_version) -requires = [] +requires = ['python-sql'] for dep in info.get('depends', []): if not re.match(r'(ir|res)(\W|$)', dep): requires.append(get_require_version('trytond_%s' % dep))