Do not set sale nor purchase in exception for invoice with cancel move

Cancelled invoices with a cancel move should be considered as paid.

Closes #13085
This commit is contained in:
Cédric Krier
2024-03-08 12:36:57 +01:00
parent 40d4fe61ac
commit 1846050401
2 changed files with 22 additions and 6 deletions
+11 -3
View File
@@ -575,12 +575,20 @@ class Purchase(
skips = set(self.invoices_ignored)
skips.update(self.invoices_recreated)
invoices = [i for i in self._invoices_for_state if i not in skips]
def is_cancelled(invoice):
return invoice.state == 'cancelled' and not invoice.cancel_move
def is_paid(invoice):
return (
invoice.state == 'paid'
or (invoice.state == 'cancelled' and invoice.cancel_move))
if invoices:
if any(i.state == 'cancelled' for i in invoices):
if any(is_cancelled(i) for i in invoices):
return 'exception'
elif all(i.state == 'paid' for i in invoices):
elif all(is_paid(i) for i in invoices):
return 'paid'
elif any(i.state == 'paid' for i in invoices):
elif any(is_paid(i) for i in invoices):
return 'partially paid'
elif any(i.state == 'posted' for i in invoices):
return 'awaiting payment'
+11 -3
View File
@@ -628,12 +628,20 @@ class Sale(
skips = set(self.invoices_ignored)
skips.update(self.invoices_recreated)
invoices = [i for i in self._invoices_for_state if i not in skips]
def is_cancelled(invoice):
return invoice.state == 'cancelled' and not invoice.cancel_move
def is_paid(invoice):
return (
invoice.state == 'paid'
or (invoice.state == 'cancelled' and invoice.cancel_move))
if invoices:
if any(i.state == 'cancelled' for i in invoices):
if any(is_cancelled(i) for i in invoices):
return 'exception'
elif all(i.state == 'paid' for i in invoices):
elif all(is_paid(i) for i in invoices):
return 'paid'
elif any(i.state == 'paid' for i in invoices):
elif any(is_paid(i) for i in invoices):
return 'partially paid'
elif any(i.state == 'posted' for i in invoices):
return 'awaiting payment'