From 10fe9f21df82150a2fc4cf15d47cb9e84b201c8c Mon Sep 17 00:00:00 2001
From: benjamin <benjamin@le-filament.com>
Date: Thu, 3 Oct 2024 18:10:18 +0200
Subject: [PATCH] [UPD] report payment schedule

---
 models/scop_bordereau_cg.py | 41 +++++++++++++------------------------
 1 file changed, 14 insertions(+), 27 deletions(-)

diff --git a/models/scop_bordereau_cg.py b/models/scop_bordereau_cg.py
index 0962467..2d16857 100644
--- a/models/scop_bordereau_cg.py
+++ b/models/scop_bordereau_cg.py
@@ -3,6 +3,8 @@
 
 import itertools
 
+from datetime import datetime
+
 from odoo import _, api, fields, models
 from odoo.exceptions import UserError
 
@@ -1358,23 +1360,15 @@ class Bordereau(models.Model):
         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",
+                fields=["invoice_date_due", "amount_total_signed"],
+                groupby=["invoice_date_due:day"],
+                orderby="invoice_date_due",
+                lazy=True
             )
-            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"),
-                    }
-                )
+            schedule_plan = list(map(lambda e: {
+                "date": datetime.strptime(e["__domain"][2][2], "%Y-%m-%d").strftime("%d/%m/%Y"),
+                "amount": e.get("amount_total_signed")
+            }, payment_schedule))
 
         # Old way : pour les bordereaux sans trimestre sur les factures
         else:
@@ -1430,23 +1424,16 @@ class Bordereau(models.Model):
                     ("bordereau_id", "=", bordereau.id),
                 ],
                 fields=[
-                    "cotiz_quarter",
+                    "invoice_date_due",
                     "amount_total_signed",
                     "amount_residual_signed",
                 ],
-                groupby=["cotiz_quarter"],
-                orderby="cotiz_quarter",
+                groupby=["invoice_date_due:day"],
+                orderby="invoice_date_due",
                 lazy=False,
             )
-            schedule_date = [
-                bordereau.base_cotisation_cg.trimester_1,
-                bordereau.base_cotisation_cg.trimester_2,
-                bordereau.base_cotisation_cg.trimester_3,
-                bordereau.base_cotisation_cg.trimester_4,
-            ]
             for contribution in schedule_plan:
-                i = int(contribution.get("cotiz_quarter")) - 1
-                contribution["date_maturity"] = schedule_date[i]
+                contribution["date_maturity"] = contribution["__domain"][2][2]
 
             total_amount = sum(
                 list(map(lambda l: l.get("amount_total_signed"), schedule_plan))
-- 
GitLab