From e18d53e99cd5ba5c8c353b3703d280f77180b6c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Mon, 9 Sep 2024 12:46:16 +0200 Subject: [PATCH] Test if origin id is greater or equals to 0 before accessing the target record Closes #13498 (grafted from 497490225779fc8dc210c9cee997cd5ce4b4381e) --HG-- branch : 7.0 --- modules/account_invoice/invoice.py | 2 +- modules/product_kit/stock.py | 5 +++-- modules/purchase/invoice.py | 2 +- modules/purchase/stock.py | 2 +- modules/sale/invoice.py | 2 +- modules/sale/stock.py | 2 +- modules/sale_advance_payment/account.py | 2 +- modules/sale_subscription/invoice.py | 2 +- modules/stock/move.py | 3 ++- modules/stock_consignment/account.py | 1 + 10 files changed, 13 insertions(+), 10 deletions(-) diff --git a/modules/account_invoice/invoice.py b/modules/account_invoice/invoice.py index b709abade5..fa790262c2 100644 --- a/modules/account_invoice/invoice.py +++ b/modules/account_invoice/invoice.py @@ -2440,7 +2440,7 @@ class InvoiceLine(sequence_ordered(), ModelSQL, ModelView, TaxableMixin): @property def origin_name(self): - if isinstance(self.origin, self.__class__): + if isinstance(self.origin, self.__class__) and self.origin.id >= 0: return self.origin.invoice.rec_name return self.origin.rec_name if self.origin else None diff --git a/modules/product_kit/stock.py b/modules/product_kit/stock.py index db8ab4293a..eec22e0a8d 100644 --- a/modules/product_kit/stock.py +++ b/modules/product_kit/stock.py @@ -145,7 +145,7 @@ class MoveSale(metaclass=PoolMeta): pool = Pool() SaleLineComponent = pool.get('sale.line.component') name = super().origin_name - if isinstance(self.origin, SaleLineComponent): + if isinstance(self.origin, SaleLineComponent) and self.origin.id >= 0: name = self.origin.line.sale.rec_name return name @@ -227,7 +227,8 @@ class MovePurchase(metaclass=PoolMeta): pool = Pool() PurchaseLineComponent = pool.get('purchase.line.component') name = super().origin_name - if isinstance(self.origin, PurchaseLineComponent): + if (isinstance(self.origin, PurchaseLineComponent) + and self.origin.id >= 0): name = self.origin.line.purchase.rec_name return name diff --git a/modules/purchase/invoice.py b/modules/purchase/invoice.py index e1ed67e279..bc5aa633f4 100644 --- a/modules/purchase/invoice.py +++ b/modules/purchase/invoice.py @@ -138,7 +138,7 @@ class InvoiceLine(metaclass=PoolMeta): pool = Pool() PurchaseLine = pool.get('purchase.line') name = super(InvoiceLine, self).origin_name - if isinstance(self.origin, PurchaseLine): + if isinstance(self.origin, PurchaseLine) and self.origin.id >= 0: name = self.origin.purchase.rec_name return name diff --git a/modules/purchase/stock.py b/modules/purchase/stock.py index 3b6652bea3..66001672cc 100644 --- a/modules/purchase/stock.py +++ b/modules/purchase/stock.py @@ -205,7 +205,7 @@ class Move(metaclass=PoolMeta): pool = Pool() PurchaseLine = pool.get('purchase.line') name = super(Move, self).origin_name - if isinstance(self.origin, PurchaseLine): + if isinstance(self.origin, PurchaseLine) and self.origin.id >= 0: name = self.origin.purchase.rec_name return name diff --git a/modules/sale/invoice.py b/modules/sale/invoice.py index 5e45bcbdb6..211a67e03b 100644 --- a/modules/sale/invoice.py +++ b/modules/sale/invoice.py @@ -136,7 +136,7 @@ class Line(metaclass=PoolMeta): pool = Pool() SaleLine = pool.get('sale.line') name = super().origin_name - if isinstance(self.origin, SaleLine): + if isinstance(self.origin, SaleLine) and self.origin.id >= 0: name = self.origin.sale.rec_name return name diff --git a/modules/sale/stock.py b/modules/sale/stock.py index a47aca99e6..79487e3c94 100644 --- a/modules/sale/stock.py +++ b/modules/sale/stock.py @@ -201,7 +201,7 @@ class Move(metaclass=PoolMeta): pool = Pool() SaleLine = pool.get('sale.line') name = super(Move, self).origin_name - if isinstance(self.origin, SaleLine): + if isinstance(self.origin, SaleLine) and self.origin.id >= 0: name = self.origin.sale.rec_name return name diff --git a/modules/sale_advance_payment/account.py b/modules/sale_advance_payment/account.py index 9262a7150f..808ec56675 100644 --- a/modules/sale_advance_payment/account.py +++ b/modules/sale_advance_payment/account.py @@ -86,7 +86,7 @@ class InvoiceLine(metaclass=PoolMeta): pool = Pool() Condition = pool.get('sale.advance_payment.condition') name = super().origin_name - if isinstance(self.origin, Condition): + if isinstance(self.origin, Condition) and self.origin.id >= 0: name = self.origin.sale.rec_name return name diff --git a/modules/sale_subscription/invoice.py b/modules/sale_subscription/invoice.py index 6b3958c22b..07c8b6ae14 100644 --- a/modules/sale_subscription/invoice.py +++ b/modules/sale_subscription/invoice.py @@ -11,7 +11,7 @@ class InvoiceLine(metaclass=PoolMeta): pool = Pool() SubscriptionLine = pool.get('sale.subscription.line') name = super(InvoiceLine, self).origin_name - if isinstance(self.origin, SubscriptionLine): + if isinstance(self.origin, SubscriptionLine) and self.origin.id >= 0: name = self.origin.subscription.rec_name return name diff --git a/modules/stock/move.py b/modules/stock/move.py index 8e9edd5ce5..81efc8fd6b 100644 --- a/modules/stock/move.py +++ b/modules/stock/move.py @@ -587,7 +587,8 @@ class Move(Workflow, ModelSQL, ModelView): @property def origin_name(self): - return self.origin.rec_name if self.origin else None + if self.origin and self.origin.id >= 0: + return self.origin.rec_name @classmethod @without_check_access diff --git a/modules/stock_consignment/account.py b/modules/stock_consignment/account.py index 4aaf66907d..142e566440 100644 --- a/modules/stock_consignment/account.py +++ b/modules/stock_consignment/account.py @@ -12,6 +12,7 @@ class InvoiceLine(metaclass=PoolMeta): Move = pool.get('stock.move') name = super(InvoiceLine, self).origin_name if (isinstance(self.origin, Move) + and self.origin.id >= 0 and self.origin.shipment): name = self.origin.shipment.rec_name return name