From d669778a7325ef6e9beaaab55489ba32600c9873 Mon Sep 17 00:00:00 2001
From: benjamin <benjamin@le-filament.com>
Date: Mon, 22 Jan 2024 16:05:50 +0100
Subject: [PATCH] [UPD] Fede Indus contribution

---
 models/scop_bordereau_cg.py   | 10 ++++----
 models/scop_cotisation_cg.py  |  6 ++++-
 models/scop_liasse_fiscale.py | 45 ++++++++++++++++++++++++-----------
 3 files changed, 42 insertions(+), 19 deletions(-)

diff --git a/models/scop_bordereau_cg.py b/models/scop_bordereau_cg.py
index f4297fa..90a79ad 100644
--- a/models/scop_bordereau_cg.py
+++ b/models/scop_bordereau_cg.py
@@ -834,15 +834,17 @@ class Bordereau(models.Model):
             type_cotisation_fede_indus = self.env.ref(
                 "cgscop_partner.cotiz_fede_indus"
             ).id
-
+            # Calcul de la cotisation de la fédé de l'industrie
             if liasse:
                 amount_fede_indus = base_cotiz.round_to_closest_multiple(
                     liasse.contribution_indus, 4
                 )
             else:
-                amount_fede_indus = self.env[
-                    "scop.liasse.fiscale"
-                ].get_plancher_cotiz()["fede_indus"]
+                amount_fede_indus = 100
+            # Ajout d'un forfait de 4 € si pas de salariés
+            if partner.staff_last == 0:
+                amount_fede_indus += 4
+            # Création des factures associées
             self.create_contribution(
                 product=product_fede_indus_id,
                 type_contribution=type_cotisation_fede_indus,
diff --git a/models/scop_cotisation_cg.py b/models/scop_cotisation_cg.py
index 1ec5959..7f92e90 100644
--- a/models/scop_cotisation_cg.py
+++ b/models/scop_cotisation_cg.py
@@ -773,7 +773,11 @@ class ScopCotisation(models.Model):
                         )
                     else:
                         contrib_fede_indus = 100
-                        # Calcul cotisation N-1
+                    # Ajout d'un forfait de 4 € si pas de salariés
+                    if m.staff_last == 0:
+                        contrib_fede_indus += 4
+
+                    # Calcul cotisation N-1
                     contribution_last_year = sum(
                         line_ids.filtered(
                             lambda l: l.product_id == product_indus_id
diff --git a/models/scop_liasse_fiscale.py b/models/scop_liasse_fiscale.py
index 2740f1b..ccc9780 100644
--- a/models/scop_liasse_fiscale.py
+++ b/models/scop_liasse_fiscale.py
@@ -76,16 +76,7 @@ class ScopLiasseFiscale(models.Model):
         """
         for liasse in self:
             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
-                else:
-                    va = liasse.av_lf
-            else:
-                va = liasse.av_cg
-
+            va = liasse.get_va()
             ca = liasse.L2052_FL
 
             if liasse.dureeExercice and liasse.dureeExercice not in (0, 12):
@@ -215,7 +206,7 @@ class ScopLiasseFiscale(models.Model):
 
                 # Calcul Cotisation
                 contribution_med = (
-                    (liasse.contribution_cg * 1/3) + (net_results * net_results_rate)
+                    (liasse.contribution_cg * 1 / 3) + (net_results * net_results_rate)
                 ) * abatt_rate
                 final_contribution_med = (
                     contribution_med if contribution_med >= 0 else 0
@@ -312,12 +303,22 @@ class ScopLiasseFiscale(models.Model):
     @api.depends("is_federation_indus")
     def _compute_contribution_indus(self):
         """
-        Calcule la cotisation Fédé Industrie : 100 € par an
-         @return float : cotisation
+        Calcule la cotisation Fédé Industrie :
+         - plancher de 120 € par an
+         - plafond de 1000 € par an
+         - cotisation = 0,03% de la VA
+        @return float : cotisation
         """
         for liasse in self:
             if liasse.is_federation_indus:
-                liasse.contribution_indus = 100
+                va = liasse.get_va()
+                contrib = round(va * 0.0003, 2)
+                if contrib < 120:
+                    liasse.contribution_indus = 120
+                elif contrib >= 1000:
+                    liasse.contribution_indus = 1000
+                else:
+                    liasse.contribution_indus = contrib
 
     @api.depends("contribution_cg")
     def _compute_contribution_idf(self):
@@ -343,6 +344,22 @@ class ScopLiasseFiscale(models.Model):
     # ------------------------------------------------------
     # Business Function
     # ------------------------------------------------------
+    def get_va(self):
+        """
+        Calcul VA la plus avantageuse
+        @returns float va
+        """
+        self.ensure_one()
+        self.read(["av_lf", "av_cg"])
+        if self.av_lf != 0:
+            if self.av_lf > self.av_cg:
+                va = self.av_cg
+            else:
+                va = self.av_lf
+        else:
+            va = self.av_cg
+        return va
+
     def get_plancher_cotiz(self):
         return {
             "fede_com": 108,
-- 
GitLab