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