Allow to extend the invoices list to compute invoice state of sale and purchase

So advance payment invoices can be included in the original computation
instead of duplicating the computation since changeset 1a763ffe4a66 renamed
waiting into pending and add more states.
This commit is contained in:
Cédric Krier committed 2023-03-16 13:22:19 +01:00
1 parent 4dfea2f82c
commit fbe77f6a39
3 files changed
+17 -20

No files matched your search

+7 -3
View File
@@ -597,13 +597,17 @@ class Purchase(
return [('lines.invoice_lines.invoice' + clause[0][len(name):],
*clause[1:])]
@property
def _invoices_for_state(self):
return self.invoices
def get_invoice_state(self):
'''
Return the invoice state for the purchase.
'''
skip_ids = set(x.id for x in self.invoices_ignored)
skip_ids.update(x.id for x in self.invoices_recreated)
invoices = [i for i in self.invoices if i.id not in skip_ids]
skips = set(self.invoices_ignored)
skips.update(self.invoices_recreated)
invoices = [i for i in self._invoices_for_state if i.id not in skips]
if invoices:
if any(i.state == 'cancelled' for i in invoices):
return 'exception'
+7 -3
View File
@@ -607,13 +607,17 @@ class Sale(
return [('lines.invoice_lines.invoice' + clause[0][len(name):],
*clause[1:])]
@property
def _invoices_for_state(self):
return self.invoices
def get_invoice_state(self):
'''
Return the invoice state for the sale.
'''
skip_ids = set(x.id for x in self.invoices_ignored)
skip_ids.update(x.id for x in self.invoices_recreated)
invoices = [i for i in self.invoices if i.id not in skip_ids]
skips = set(self.invoices_ignored)
skips.update(self.invoices_recreated)
invoices = [i for i in self._invoices_for_state if i not in skips]
if invoices:
if any(i.state == 'cancelled' for i in invoices):
return 'exception'
+3 -14
View File
@@ -345,20 +345,9 @@ class Sale(metaclass=PoolMeta):
return [('advance_payment_conditions.invoice_lines.invoice'
+ clause[0][len(name):], *clause[1:])]
def get_invoice_state(self):
state = super(Sale, self).get_invoice_state()
skip_ids = set(x.id for x in self.invoices_ignored)
skip_ids.update(x.id for x in self.invoices_recreated)
invoices = [i
for i in self.advance_payment_invoices if i.id not in skip_ids]
if invoices:
if any(i.state == 'cancelled' for i in invoices):
return 'exception'
elif all(i.state == 'paid' for i in invoices):
return state
else:
return 'waiting'
return state
@property
def _invoices_for_state(self):
return super()._invoices_for_state + self.advance_payment_invoices
def get_recall_lines(self, invoice):
pool = Pool()