From 318f76419ee6def3357539306c53e0f2fc1fa752 Mon Sep 17 00:00:00 2001
From: benjamin <benjamin@le-filament.com>
Date: Tue, 7 Mar 2023 11:57:12 +0100
Subject: [PATCH] [update] payment state pdf report

---
 models/scop_bordereau_cg.py                  | 17 ++++++++++++++-
 templates/report_scop_bordereau_payments.xml | 23 +++++++-------------
 2 files changed, 24 insertions(+), 16 deletions(-)

diff --git a/models/scop_bordereau_cg.py b/models/scop_bordereau_cg.py
index 01680ca..6d1221c 100644
--- a/models/scop_bordereau_cg.py
+++ b/models/scop_bordereau_cg.py
@@ -1,6 +1,8 @@
 # © 2021 Le Filament (<http://www.le-filament.com>)
 # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
 
+import itertools
+
 from odoo import _, api, fields, models
 from odoo.exceptions import UserError
 
@@ -1350,10 +1352,23 @@ class Bordereau(models.Model):
         """
         Move = self.env["account.move"]
         for bordereau in self:
-            payments = bordereau.invoice_ids.move_line_payment_ids.filtered(
+            payment_ids = bordereau.invoice_ids.move_line_payment_ids.filtered(
                 lambda r: r.move_id.move_type == "entry"
             ).sorted(lambda p: p.date)
 
+            payments = []
+            for key, group in itertools.groupby(payment_ids, lambda p: p.date):
+                pay_ids = list(group)
+                credit = sum(list(map(lambda p: p.credit, pay_ids)))
+                debit = sum(list(map(lambda p: p.debit, pay_ids)))
+                payments.append(
+                    {
+                        "date": key,
+                        "credit": credit,
+                        "debit": debit,
+                    }
+                )
+
             schedule_plan = Move.read_group(
                 [
                     ("bordereau_id", "=", bordereau.id),
diff --git a/templates/report_scop_bordereau_payments.xml b/templates/report_scop_bordereau_payments.xml
index 754dd27..f07eefd 100644
--- a/templates/report_scop_bordereau_payments.xml
+++ b/templates/report_scop_bordereau_payments.xml
@@ -261,33 +261,26 @@
                                     >
                                         <td
                                             style="border: none; background: inherit; color: inherit;"
-                                        ><t
-                                                t-esc="payment.date"
+                                        >
+                                            <t
+                                                t-esc="payment.get('date')"
                                                 t-options="{'widget': 'date', 'format': 'dd/MM/YYYY'}"
-                                            /></td>
+                                            />
+                                        </td>
                                         <td
                                             class="text-right"
                                             style="border: none; background: inherit; color: inherit;"
                                         >
-                                            <t t-if="payment.credit > 0">
-                                            <t
-                                                    t-esc="payment.credit"
-                                                    t-options="{'widget': 'monetary', 'display_currency': o.company_id.currency_id}"
-                                                />
-                                            </t>
-                                            <t t-else="">
                                             <t
-                                                    t-esc="-payment.debit"
-                                                    t-options="{'widget': 'monetary', 'display_currency': o.company_id.currency_id}"
-                                                />
-                                        </t>
+                                                t-esc="payment.get('credit') - payment.get('debit')"
+                                                t-options="{'widget': 'monetary', 'display_currency': o.company_id.currency_id}"
+                                            />
                                         </td>
                                     </tr>
                                 </table>
                             </p>
                         </div>
                     </div>
-
                 </div>
             </t>
         </template>
-- 
GitLab