Make web ID on sale unique per web shop

Closes #13891
This commit is contained in:
Cédric Krier
2025-02-27 00:17:40 +01:00
parent cfeb3685f4
commit 5d8a013676
2 changed files with 15 additions and 4 deletions
+2 -2
View File
@@ -9,8 +9,8 @@ this repository contains the full copyright notices and license terms. -->
<record model="ir.message" id="msg_sale_invalid_party">
<field name="text">To process the sale "%(sale)s" you must select another party instead of the guest "%(party)s".</field>
</record>
<record model="ir.message" id="msg_sale_web_id_unique">
<field name="text">The web ID on the sale must be unique.</field>
<record model="ir.message" id="msg_sale_web_shop_id_unique">
<field name="text">The web ID on the sale must be unique per shop.</field>
</record>
</data>
</tryton>
+13 -2
View File
@@ -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: