From 938a7fdd294cfc29a31d0c18ddbcf75e36567fcf Mon Sep 17 00:00:00 2001 From: jordan <jordan@le-filament.com> Date: Mon, 3 May 2021 19:35:32 +0200 Subject: [PATCH] [fix] much easier way to compute state --- models/scop_cotisations_idf.py | 45 ++++++++++++++-------------------- models/scop_invoice_idf.py | 43 ++++++++++++++------------------ 2 files changed, 36 insertions(+), 52 deletions(-) diff --git a/models/scop_cotisations_idf.py b/models/scop_cotisations_idf.py index 3c1ca25..2dd5bf4 100644 --- a/models/scop_cotisations_idf.py +++ b/models/scop_cotisations_idf.py @@ -84,6 +84,7 @@ class ScopCotisationsIDF(models.Model): else: r.amount_residual = r.debit + @api.multi def _compute_state(self): """ A line can be in different state : @@ -91,35 +92,25 @@ class ScopCotisationsIDF(models.Model): - Too many payments related to one invoice - Some payments are missing - The invoice has been paid - """ - partners = set(self.mapped('partner_id')) - years = set(self.mapped('year')) - for year in years: - for partner in partners: - invoice_lines = self.search([ - ['year', '=', year], - ['partner_id', '=', partner.id], - ['lettrage', '=', letter]]) - invoices = invoice_lines.filtered( - lambda l: l.type == 'inv') - if not invoices: - for r in invoice_lines: - r.state = 'no_invoice' + for r in self: + if r.type != 'inv': + if not r.invoice_id: + r.state = 'no_invoice' + else: + if r.invoice_id.amount_residual > 0: + r.state = 'awaiting_payments' + elif r.invoice_id.amount_residual < 0: + r.state = 'overpaid' + else: + r.state = 'paid' + else: + if r.amount_residual > 0: + r.state = 'awaiting_payments' + elif r.amount_residual < 0: + r.state = 'overpaid' else: - for invoice in invoices: - if invoice.amount_residual > 0: - invoice.state = 'awaiting_payments' - for r in invoice.payments_ids: - r.state = 'awaiting_payments' - elif invoice.amount_residual < 0: - invoice.state = 'overpaid' - for r in invoice.payments_ids: - r.state = 'overpaid' - else: - invoice.state = 'paid' - for r in invoice.payments_ids: - r.state = 'paid' + r.state = 'paid' @api.multi def _search_state(self, operator, value): diff --git a/models/scop_invoice_idf.py b/models/scop_invoice_idf.py index 306026f..a19534a 100644 --- a/models/scop_invoice_idf.py +++ b/models/scop_invoice_idf.py @@ -80,6 +80,7 @@ class ScopInvoiceIDF(models.Model): else: r.amount_residual = r.debit + @api.multi def _compute_state(self): """ A line can be in different state : @@ -88,32 +89,24 @@ class ScopInvoiceIDF(models.Model): - Some payments are missing - The invoice has been paid """ - partners = set(self.mapped('partner_id')) - years = set(self.mapped('year')) - for year in years: - for partner in partners: - invoice_lines = self.search([ - ['year', '=', year], - ['partner_id', '=', partner.id], ]) - invoices = invoice_lines.filtered( - lambda l: l.type == 'inv') - if not invoices: - for r in invoice_lines: - r.state = 'no_invoice' + for r in self: + if r.type != 'inv': + if not r.invoice_id: + r.state = 'no_invoice' + else: + if r.invoice_id.amount_residual > 0: + r.state = 'awaiting_payments' + elif r.invoice_id.amount_residual < 0: + r.state = 'overpaid' + else: + r.state = 'paid' + else: + if r.amount_residual > 0: + r.state = 'awaiting_payments' + elif r.amount_residual < 0: + r.state = 'overpaid' else: - for invoice in invoices: - if invoice.amount_residual > 0: - invoice.state = 'awaiting_payments' - for r in invoice.payments_ids: - r.state = 'awaiting_payments' - elif invoice.amount_residual < 0: - invoice.state = 'overpaid' - for r in invoice.payments_ids: - r.state = 'overpaid' - else: - invoice.state = 'paid' - for r in invoice.payments_ids: - r.state = 'paid' + r.state = 'paid' @api.multi def _search_state(self, operator, value): -- GitLab