diff --git a/models/scop_bordereau_cg.py b/models/scop_bordereau_cg.py index 1d7e7ab19435c014f436a41f1c7748099c04ac5b..a1f2898da9e1735e1d7e95c7292e7a4bd2b5f6f5 100644 --- a/models/scop_bordereau_cg.py +++ b/models/scop_bordereau_cg.py @@ -759,8 +759,7 @@ class Bordereau(models.Model): amount_med = base_cotiz.round_to_closest_multiple( liasse.contribution_med, 4) else: - amount_med = self.env['scop.liasse.fiscale']. \ - get_plancher_cotiz()['ur_med'] + amount_med = 0 self.create_contribution( product=product_med_id, type_contribution=type_cotisation_ur, diff --git a/models/scop_cotisation_cg.py b/models/scop_cotisation_cg.py index 8478a6fad98aa42555e440fe8adb8a30c11b1a65..0d232d496235ed78e44caeadff77e8a24c4336ea 100644 --- a/models/scop_cotisation_cg.py +++ b/models/scop_cotisation_cg.py @@ -435,6 +435,7 @@ class ScopCotisation(models.Model): 'Durée Exercice', 'CA (L2052 FL)', 'CA sens CG Scop', + 'VA', 'VABDF sens CG Scop', 'Masse Salariale (L2052 FY)', 'Salaires sens CG Scop', @@ -471,7 +472,7 @@ class ScopCotisation(models.Model): 'price_subtotal_signed')) # Construction Tableau - liasse.read(['L2052_FL', 'av_cg', 'wage_cg']) + liasse.read(['L2052_FL', 'av_cg', 'av_lf', 'revenue_cg', 'wage_cg']) datas_contrib = [ m.member_number, m.ur_id.name, @@ -486,6 +487,7 @@ class ScopCotisation(models.Model): liasse.dureeExercice, liasse.L2052_FL, liasse.revenue_cg, + liasse.av_lf, liasse.av_cg, liasse.L2052_FY, liasse.wage_cg, @@ -605,8 +607,8 @@ class ScopCotisation(models.Model): worksheet1.set_column(4, 4, 25, None) worksheet1.set_column(5, 6, 20, format_monetary) worksheet1.set_column(8, 8, 20, format_monetary) - worksheet1.set_column(11, 16, 20, format_monetary) - worksheet1.set_column(19, 19, 20, None) + worksheet1.set_column(11, 17, 20, format_monetary) + worksheet1.set_column(20, 20, 20, None) # Enregistrement du fichier dans la base workbook.close() diff --git a/models/scop_liasse_fiscale.py b/models/scop_liasse_fiscale.py index 12740ca2eed8c56b123385656618570caf2f0d52..62d1eb3b12733da3a2f49c191a65d033714f3a11 100644 --- a/models/scop_liasse_fiscale.py +++ b/models/scop_liasse_fiscale.py @@ -161,17 +161,14 @@ class ScopLiasseFiscale(models.Model): """ ur_med = self.env.ref('cgscop_partner.riga_14243') for liasse in self: - plancher = liasse.get_plancher_cotiz()['ur_med'] if liasse.partner_id.ur_id == ur_med: # Assiette CG assiette_rate = 1/3 - assiette = liasse.contribution_cg + assiette = liasse.get_assiette() # Résultat net net_results_rate = 0.01 net_results = liasse.L2053_HN if liasse.L2053_HN > 0 else liasse.L2051_DI - if liasse.dureeExercice and liasse.dureeExercice not in (0, 12): - net_results = net_results * (12/liasse.dureeExercice) # Effectifs staff_id = self.get_last_staff_id(liasse.partner_id) @@ -197,7 +194,7 @@ class ScopLiasseFiscale(models.Model): # Calcul Cotisation contribution_med = ((assiette * assiette_rate) + (net_results * net_results_rate)) * abatt_rate - final_contribution_med = contribution_med if contribution_med >= 0 else plancher + final_contribution_med = contribution_med if contribution_med >= 0 else 0 liasse.contribution_med = final_contribution_med @api.depends('av_lf', 'av_cg') @@ -286,30 +283,29 @@ class ScopLiasseFiscale(models.Model): # ------------------------------------------------------ def get_plancher_cotiz(self): # Calculation plancher med - staff_id = self.get_last_staff_id(self.partner_id) - if staff_id: - staff_shareholder_count = staff_id.staff_shareholder_count - staff_count = staff_id.staff_count - else: - staff_shareholder_count = staff_count = 0 - if staff_count > 0: - societariat_rate = staff_shareholder_count / staff_count - else: - societariat_rate = 0 - if 0.5 <= societariat_rate < 0.8: - abatt_rate_med = 1 - 0.2 - elif societariat_rate >= 0.8: - abatt_rate_med = 1 - 0.3 - else: - abatt_rate_med = 1 - 0 - assiette_rate_med = 1/3 - plancher_cg = self.get_values_for_cotiz_cg( - self.partner_id)['plancher1'] + # staff_id = self.get_last_staff_id(self.partner_id) + # if staff_id: + # staff_shareholder_count = staff_id.staff_shareholder_count + # staff_count = staff_id.staff_count + # else: + # staff_shareholder_count = staff_count = 0 + # if staff_count > 0: + # societariat_rate = staff_shareholder_count / staff_count + # else: + # societariat_rate = 0 + # if 0.5 <= societariat_rate < 0.8: + # abatt_rate_med = 1 - 0.2 + # elif societariat_rate >= 0.8: + # abatt_rate_med = 1 - 0.3 + # else: + # abatt_rate_med = 1 - 0 + # assiette_rate_med = 1/3 + # plancher_cg = self.get_values_for_cotiz_cg( + # self.partner_id)['plancher1'] return { 'fede_com': 108, 'fede_cae': 300, - 'ur_med': plancher_cg * assiette_rate_med * abatt_rate_med, 'ur_hdf': 40, } @@ -362,3 +358,38 @@ class ScopLiasseFiscale(models.Model): """ staff_id = partner.staff_ids.sorted(key=lambda l: l.effective_date) return staff_id[-1] if len(staff_id) > 1 else staff_id + + def get_assiette(self): + # Calcul VA + self.read(['av_lf', 'av_cg', 'L2052_FL']) + va = self.av_lf if self.av_lf > 0 else self.av_cg + ca = self.L2052_FL + if self.dureeExercice and self.dureeExercice not in (0, 12): + va = va * (12 / self.dureeExercice) + ca = ca * (12 / self.dureeExercice) + + # Calcul Type Assiette + if ca > 0 and va > 0: + if ca <= va * 7 / 3: + contribution_base_type = 'ca' + contribution_base_amount = ca + else: + contribution_base_type = 'va' + contribution_base_amount = va + else: + if va > 0: + contribution_base_type = 'va' + contribution_base_amount = va + else: + contribution_base_type = 'ca' + contribution_base_amount = ca + + # Calcul Cotisation CG Scop + if contribution_base_type == 'ca': + rate = self.get_rate_ca(self.partner_id) + contribution = ca * rate + else: + rate = self.get_rate_va(self.partner_id) + contribution = va * rate + + return contribution \ No newline at end of file