diff --git a/modules/purchase/purchase.py b/modules/purchase/purchase.py index ff2c0b89c3..69579b710b 100644 --- a/modules/purchase/purchase.py +++ b/modules/purchase/purchase.py @@ -1048,7 +1048,11 @@ class PurchaseIgnoredInvoice(ModelSQL): purchase = fields.Many2One( 'purchase.purchase', "Purchase", ondelete='CASCADE', required=True) invoice = fields.Many2One( - 'account.invoice', "Invoice", ondelete='RESTRICT', required=True) + 'account.invoice', "Invoice", ondelete='RESTRICT', required=True, + domain=[ + ('purchases', '=', Eval('purchase', -1)), + ('state', '=', 'cancelled'), + ]) @classmethod def __register__(cls, module): @@ -1064,7 +1068,11 @@ class PurchaseRecreatedInvoice(ModelSQL): purchase = fields.Many2One( 'purchase.purchase', "Purchase", ondelete='CASCADE', required=True) invoice = fields.Many2One( - 'account.invoice', "Invoice", ondelete='RESTRICT', required=True) + 'account.invoice', "Invoice", ondelete='RESTRICT', required=True, + domain=[ + ('purchases', '=', Eval('purchase', -1)), + ('state', '=', 'cancelled'), + ]) @classmethod def __register__(cls, module): @@ -2064,7 +2072,11 @@ class LineIgnoredMove(ModelSQL): purchase_line = fields.Many2One( 'purchase.line', "Purchase Line", ondelete='CASCADE', required=True) move = fields.Many2One( - 'stock.move', "Move", ondelete='RESTRICT', required=True) + 'stock.move', "Move", ondelete='RESTRICT', required=True, + domain=[ + ('origin.id', '=', Eval('purchase_line', -1), 'purchase.line'), + ('state', '=', 'cancelled'), + ]) @classmethod def __register__(cls, module): @@ -2080,7 +2092,11 @@ class LineRecreatedMove(ModelSQL): purchase_line = fields.Many2One( 'purchase.line', "Purchase Line", ondelete='CASCADE', required=True) move = fields.Many2One( - 'stock.move', "Move", ondelete='RESTRICT', required=True) + 'stock.move', "Move", ondelete='RESTRICT', required=True, + domain=[ + ('origin.id', '=', Eval('purchase_line', -1), 'purchase.line'), + ('state', '=', 'cancelled'), + ]) @classmethod def __register__(cls, module): diff --git a/modules/sale/sale.py b/modules/sale/sale.py index 37ace2336f..6d4efabd9c 100644 --- a/modules/sale/sale.py +++ b/modules/sale/sale.py @@ -1185,7 +1185,11 @@ class SaleIgnoredInvoice(ModelSQL): sale = fields.Many2One( 'sale.sale', "Sale", ondelete='CASCADE', required=True) invoice = fields.Many2One( - 'account.invoice', "Invoice", ondelete='RESTRICT', required=True) + 'account.invoice', "Invoice", ondelete='RESTRICT', required=True, + domain=[ + ('sales', '=', Eval('sale', -1)), + ('state', '=', 'cancelled'), + ]) @classmethod def __register__(cls, module): @@ -1201,7 +1205,11 @@ class SaleRecreatedInvoice(ModelSQL): sale = fields.Many2One( 'sale.sale', "Sale", ondelete='CASCADE', required=True) invoice = fields.Many2One( - 'account.invoice', "Invoice", ondelete='RESTRICT', required=True) + 'account.invoice', "Invoice", ondelete='RESTRICT', required=True, + domain=[ + ('sales', '=', Eval('sale', -1)), + ('state', '=', 'cancelled'), + ]) @classmethod def __register__(cls, module): @@ -2114,7 +2122,11 @@ class SaleLineIgnoredMove(ModelSQL): sale_line = fields.Many2One( 'sale.line', "Sale Line", ondelete='CASCADE', required=True) move = fields.Many2One( - 'stock.move', "Move", ondelete='RESTRICT', required=True) + 'stock.move', "Move", ondelete='RESTRICT', required=True, + domain=[ + ('origin.id', '=', Eval('sale_line', -1), 'sale.line'), + ('state', '=', 'cancelled'), + ]) @classmethod def __register__(cls, module): @@ -2130,7 +2142,11 @@ class SaleLineRecreatedMove(ModelSQL): sale_line = fields.Many2One( 'sale.line', "Sale Line", ondelete='CASCADE', required=True) move = fields.Many2One( - 'stock.move', "Move", ondelete='RESTRICT', required=True) + 'stock.move', "Move", ondelete='RESTRICT', required=True, + domain=[ + ('origin.id', '=', Eval('sale_line', -1), 'sale.line'), + ('state', '=', 'cancelled'), + ]) @classmethod def __register__(cls, module):