diff --git a/models/scop_bordereau_cg.py b/models/scop_bordereau_cg.py index 096246755577a8f9d4326c09e764b5de994a718a..2d16857d4508fbf53ed71190bf10342b59fb5eaf 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))