diff --git a/models/scop_bordereau_cg.py b/models/scop_bordereau_cg.py index b772e35d328d2bcae70607da41b7e6190f0736fe..8e1bd73488ddff470a0c94e247fdb5b0979a86fc 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): """