diff --git a/models/scop_cotisation_cg.py b/models/scop_cotisation_cg.py index c4f1bf174542e5e651a47f8209979c3eccb6f86d..15459e2dad5617b15d4588e312f1be953d1937b2 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 04d0ddf134c2d5280b4896290d276a67b49211d3..a047d3472c032b2b2770502135867cf84f5e4fd6 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)