From abff050432633c677d8bc059f32ca41b9186e768 Mon Sep 17 00:00:00 2001
From: jordan <jordan@le-filament.com>
Date: Mon, 3 May 2021 18:32:03 +0200
Subject: [PATCH] [fix] compute_state is not dependent of lettrage

---
 models/scop_cotisations_idf.py | 49 ++++++++++++++++------------------
 models/scop_invoice_idf.py     | 48 +++++++++++++++------------------
 2 files changed, 45 insertions(+), 52 deletions(-)

diff --git a/models/scop_cotisations_idf.py b/models/scop_cotisations_idf.py
index e5a4ff9..3c1ca25 100644
--- a/models/scop_cotisations_idf.py
+++ b/models/scop_cotisations_idf.py
@@ -95,34 +95,31 @@ class ScopCotisationsIDF(models.Model):
         """
         partners = set(self.mapped('partner_id'))
         years = set(self.mapped('year'))
-        letters = set(self.mapped('lettrage'))
         for year in years:
             for partner in partners:
-                for letter in letters:
-                    # Group lines by partner, year, letter
-                    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'
-                    else:
-                        for invoice in invoices:
-                            if invoice.amount_residual > 0:
-                                invoice.state = 'awaiting_payments'
-                                for r in invoice.payment_or_refund_ids:
-                                    r.state = 'awaiting_payments'
-                            elif invoice.amount_residual < 0:
-                                invoice.state = 'overpaid'
-                                for r in invoice.payment_or_refund_ids:
-                                    r.state = 'overpaid'
-                            else:
-                                invoice.state = 'paid'
-                                for r in invoice.payment_or_refund_ids:
-                                    r.state = 'paid'
+                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'
+                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'
 
     @api.multi
     def _search_state(self, operator, value):
diff --git a/models/scop_invoice_idf.py b/models/scop_invoice_idf.py
index 7cbe87b..306026f 100644
--- a/models/scop_invoice_idf.py
+++ b/models/scop_invoice_idf.py
@@ -90,34 +90,30 @@ class ScopInvoiceIDF(models.Model):
         """
         partners = set(self.mapped('partner_id'))
         years = set(self.mapped('year'))
-        letters = set(self.mapped('lettrage'))
         for year in years:
             for partner in partners:
-                for letter in letters:
-                    # Group lines by partner, year, letter
-                    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'
-                    else:
-                        for invoice in invoices:
-                            if invoice.amount_residual > 0:
-                                invoice.state = 'awaiting_payments'
-                                for r in invoice.payment_or_refund_ids:
-                                    r.state = 'awaiting_payments'
-                            elif invoice.amount_residual < 0:
-                                invoice.state = 'overpaid'
-                                for r in invoice.payment_or_refund_ids:
-                                    r.state = 'overpaid'
-                            else:
-                                invoice.state = 'paid'
-                                for r in invoice.payment_or_refund_ids:
-                                    r.state = 'paid'
+                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'
+                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'
 
     @api.multi
     def _search_state(self, operator, value):
-- 
GitLab