From 9f88144394711721809fe5e506bfaa84823780f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Sat, 20 Dec 2025 10:23:56 +0100 Subject: [PATCH] Remove required on before/after carrier column of incoterm We must rely only on the selection validation to require a value to permit to create new incoterm in incoterm module when carrier_carriage is already activated. Closes #14440 --- doc/migration.rst | 12 ++++++++++++ modules/carrier_carriage/incoterm.py | 13 +++++++++++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/doc/migration.rst b/doc/migration.rst index 85ea9a1453..3a4b22e5aa 100644 --- a/doc/migration.rst +++ b/doc/migration.rst @@ -17,6 +17,18 @@ a database from another series. 7.8 --- +Before +~~~~~~ + +* If ``carrier_carriage`` module is activated, remove ``NOT NULL`` to + ``before_carrier`` and ``after_carrier``: + + .. code-block:: SQL + + ALTER TABLE "incoterm_incoterm" ALTER COLUMN "before_carrier" DROP NOT NULL; + ALTER TABLE "incoterm_incoterm" ALTER COLUMN "after_carrier" DROP NOT NULL; + + After ~~~~~ diff --git a/modules/carrier_carriage/incoterm.py b/modules/carrier_carriage/incoterm.py index 9f9a22428d..1356677009 100644 --- a/modules/carrier_carriage/incoterm.py +++ b/modules/carrier_carriage/incoterm.py @@ -11,10 +11,19 @@ class Incoterm(metaclass=PoolMeta): before_carrier = fields.Selection([ ('buyer', "Buyer"), ('seller', "Seller"), - ], "Before Carrier", required=True, + ], "Before Carrier", help="Who contracts carriages before main carriage.") after_carrier = fields.Selection([ ('buyer', "Buyer"), ('seller', "Seller"), - ], "After Carrier", required=True, + ], "After Carrier", help="Who contracts carriages after main carriage.") + + @classmethod + def __register__(cls, module_name): + table_h = cls.__table_handler__(module_name) + super().__register__(module_name) + # Migration from 7.6: remove required on before/after_carrier + # to permit to create new incoterm in incoterm module + table_h.not_null_action('before_carrier', 'remove') + table_h.not_null_action('after_carrier', 'remove')