From 9cf2ecac4fdbc622c5698bce69ea57576d895d7c Mon Sep 17 00:00:00 2001
From: benjamin <benjamin@le-filament.com>
Date: Tue, 11 Oct 2022 18:13:51 +0200
Subject: [PATCH] [update] bordereau schedule for year > 2021

---
 models/scop_bordereau_cg.py | 35 +++++++++++++++++++++++++++++------
 1 file changed, 29 insertions(+), 6 deletions(-)

diff --git a/models/scop_bordereau_cg.py b/models/scop_bordereau_cg.py
index b772e35..8e1bd73 100644
--- a/models/scop_bordereau_cg.py
+++ b/models/scop_bordereau_cg.py
@@ -1259,11 +1259,34 @@ class Bordereau(models.Model):
         :return: dict with date as key and amount (float) as value
         """
         # TODO: voir si possible d'optimiser avec le nouveau modèle
+        self.ensure_one()
         MoveLine = self.env["account.move.line"]
-        for bordereau in self:
-            inv_ids = bordereau.invoice_ids
-            if bordereau.is_regul:
-                inv_ids = inv_ids.filtered(lambda i: i.move_type == "out_invoice")
+        # Get invoices
+        inv_ids = self.invoice_ids
+        # Old way : pour les bordereaux flagués régularisation (2021)
+        if self.is_regul:
+            inv_ids = inv_ids.filtered(lambda i: i.move_type == "out_invoice")
+
+        schedule_plan = []
+        # Bordereaux avec trimestre sur les factures
+        if self.year != "2021":
+            payment_schedule = inv_ids.read_group(
+                domain=[("id", "in", inv_ids.ids)],
+                fields=["cotiz_quarter", "amount_total_signed"],
+                groupby=["cotiz_quarter"],
+                orderby="cotiz_quarter"
+            )
+            for payment in payment_schedule:
+                quarter = "trimester_" + payment.get("cotiz_quarter")
+                date_schedule = self.base_cotisation_cg.read(
+                    [quarter])[0].get(quarter).strftime("%d/%m/%Y")
+                schedule_plan.append({
+                    "date": date_schedule,
+                    "amount": payment.get("amount_total_signed"),
+                })
+
+        # Old way : pour les bordereaux sans trimestre sur les factures
+        else:
             move_lines = MoveLine.search(
                 [
                     ("move_id", "in", inv_ids.ids),
@@ -1273,7 +1296,7 @@ class Bordereau(models.Model):
             )
             schedule = list(dict.fromkeys(move_lines.mapped("date_maturity")))
             schedule.sort()
-            schedule_plan = []
+
             for date in schedule:
                 amount = 0
                 for item in move_lines:
@@ -1285,7 +1308,7 @@ class Bordereau(models.Model):
                         "amount": amount,
                     }
                 )
-            return schedule_plan
+        return schedule_plan
 
     def get_bordereau_move_line_with_payments(self):
         """
-- 
GitLab