From 5d8a013676f701cd32f8a73fc94a60d50401ca90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Thu, 27 Feb 2025 00:17:40 +0100 Subject: [PATCH] Make web ID on sale unique per web shop Closes #13891 --- modules/web_shop/message.xml | 4 ++-- modules/web_shop/sale.py | 15 +++++++++++++-- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/modules/web_shop/message.xml b/modules/web_shop/message.xml index 8426d012ec..f24b73b8bc 100644 --- a/modules/web_shop/message.xml +++ b/modules/web_shop/message.xml @@ -9,8 +9,8 @@ this repository contains the full copyright notices and license terms. --> To process the sale "%(sale)s" you must select another party instead of the guest "%(party)s". - - The web ID on the sale must be unique. + + The web ID on the sale must be unique per shop. diff --git a/modules/web_shop/sale.py b/modules/web_shop/sale.py index 2180d4f6fe..95608f0c60 100644 --- a/modules/web_shop/sale.py +++ b/modules/web_shop/sale.py @@ -28,10 +28,21 @@ class Sale(metaclass=PoolMeta): super().__setup__() t = cls.__table__() cls._sql_constraints += [ - ('web_id', Exclude(t, (NullIf(t.web_id, ''), Equal)), - 'web_shop.msg_sale_web_id_unique') + ('web_shop_id_unique', + Exclude(t, + (t.web_shop, Equal), + (NullIf(t.web_id, ''), Equal)), + 'web_shop.msg_sale_web_shop_id_unique') ] + @classmethod + def __register__(cls, module): + table_h = cls.__table_handler__(module) + super().__register__(module) + + # Migration from 7.4: replace web_id constraint by web_shop_id_unique + table_h.drop_constraint('web_id') + @fields.depends('web_shop', 'web_id') def on_change_web_shop(self, nbytes=None): if self.web_shop and not self.web_id: