From b83fb1c106b0a69380cdd439b11ed7b5d30d1fd4 Mon Sep 17 00:00:00 2001 From: benjamin <benjamin@le-filament.com> Date: Tue, 7 Feb 2023 19:23:12 +0100 Subject: [PATCH] [update] liasse selection depending on last year --- models/scop_cotisation_cg.py | 50 ++++++++++++++++++++++++----------- models/scop_liasse_fiscale.py | 4 ++- 2 files changed, 37 insertions(+), 17 deletions(-) diff --git a/models/scop_cotisation_cg.py b/models/scop_cotisation_cg.py index c4f1bf1..15459e2 100644 --- a/models/scop_cotisation_cg.py +++ b/models/scop_cotisation_cg.py @@ -764,20 +764,38 @@ class ScopCotisation(models.Model): def get_liasse(self, member): self.ensure_one() Liasse = self.env["scop.liasse.fiscale"] - liasse_ids = Liasse.search( - [ - ("partner_id", "=", member.id), - ("is_qualified", "=", True), - ("year", ">", 0), - "|", - "|", - ("L2052_FL", ">", 0), - ("av_lf", ">", 0), - ("av_cg", ">", 0), - ], - order="year desc", - ) - + # Recherche bordereau précédent + bdx = self.env["scop.bordereau"].search([ + ("partner_id", "=", member.id), + ("year", "=", str(int(self.year) - 1)) + ]) + liasse_ids = None + if bdx: + # Recherche liasse année suivante + liasse_ids = Liasse.search( + [ + ("partner_id", "=", member.id), + ("is_qualified", "=", True), + ("year", "=", bdx.liasse_fiscale_id.year + 1), + ], + order="type_id", + ) + # Si pas de liasse année suivante, on cherche la dernière liasse éligible + if not liasse_ids: + liasse_ids = Liasse.search( + [ + ("partner_id", "=", member.id), + ("is_qualified", "=", True), + ("year", ">", 0), + "|", + "|", + ("L2052_FL", ">", 0), + ("av_lf", "!=", 0), + ("av_cg", "!=", 0), + ], + order="year desc", + ) + # Si pas de liasse cette année, on cherche les liasses sans année if not liasse_ids: liasse_ids = Liasse.search( [ @@ -786,8 +804,8 @@ class ScopCotisation(models.Model): "|", "|", ("L2052_FL", ">", 0), - ("av_lf", ">", 0), - ("av_cg", ">", 0), + ("av_lf", "!=", 0), + ("av_cg", "!=", 0), ], order="id desc", ) diff --git a/models/scop_liasse_fiscale.py b/models/scop_liasse_fiscale.py index 04d0ddf..a047d34 100644 --- a/models/scop_liasse_fiscale.py +++ b/models/scop_liasse_fiscale.py @@ -65,8 +65,9 @@ class ScopLiasseFiscale(models.Model): @return float : cotisation """ for liasse in self: - # Calcul VA la plus avantageuse liasse.read(["av_lf", "av_cg", "L2052_FL"]) + + # Calcul VA la plus avantageuse if liasse.av_lf != 0: if liasse.av_lf > liasse.av_cg: va = liasse.av_cg @@ -76,6 +77,7 @@ class ScopLiasseFiscale(models.Model): va = liasse.av_cg ca = liasse.L2052_FL + if liasse.dureeExercice and liasse.dureeExercice not in (0, 12): va = va * (12 / liasse.dureeExercice) ca = ca * (12 / liasse.dureeExercice) -- GitLab