diff --git a/models/res_company.py b/models/res_company.py index 183ab32106c4929814c3e9936a11170fe838a4fc..3bdf8eb16fb739441fefccd2710e3e2cc1d85f2b 100644 --- a/models/res_company.py +++ b/models/res_company.py @@ -33,6 +33,16 @@ class ScopCotisationCGCompany(models.Model): string="Journal Fédération CAE", domain="[('type', '=', 'sale')]", ) + contribution_fede_indus_id = fields.Many2one( + comodel_name="product.product", + string="Article de cotisation Fédé Industrie", + domain="[('sale_ok', '=', True), ('company_id', '=', company_id)]", + ) + journal_fede_indus_id = fields.Many2one( + comodel_name="account.journal", + string="Journal Fédération Industrie", + domain="[('type', '=', 'sale')]", + ) contribution_hdf_id = fields.Many2one( comodel_name="product.product", string="Article de cotisation UR HDF", diff --git a/models/res_config_settings.py b/models/res_config_settings.py index 0fa5f7caeb6489ca81e9a24153019fca9776c0b9..75f2bd80ca1e1e79725d00e3f7a61b91dbdb0c4f 100644 --- a/models/res_config_settings.py +++ b/models/res_config_settings.py @@ -47,6 +47,20 @@ class CotisationsConfigSettings(models.TransientModel): string="Journal Fédération CAE", domain="[('type', '=', 'sale')]", ) + contribution_fede_indus_id = fields.Many2one( + comodel_name="product.product", + related="company_id.contribution_fede_indus_id", + readonly=False, + string="Article de cotisation Fédé Industrie", + domain="[('sale_ok', '=', True), ('company_id', '=', company_id)]", + ) + journal_fede_indus_id = fields.Many2one( + comodel_name="account.journal", + related="company_id.journal_fede_indus_id", + readonly=False, + string="Journal Fédération Industrie", + domain="[('type', '=', 'sale')]", + ) contribution_hdf_id = fields.Many2one( comodel_name="product.product", related="company_id.contribution_hdf_id", diff --git a/models/scop_bordereau_cg.py b/models/scop_bordereau_cg.py index aa33af3b20b8d4681be12fa957100d8d8bbb49bf..c4575baefbc9b9eece0a1c8ab370a49bba6396a8 100644 --- a/models/scop_bordereau_cg.py +++ b/models/scop_bordereau_cg.py @@ -818,6 +818,28 @@ class Bordereau(models.Model): journal_id=journal_fede_cae_id, ) + # Invoice cotiz Fede Indus + # + if partner.is_federation_indus: + product_fede_indus_id = self.company_id.contribution_fede_indus_id + journal_fede_indus_id = self.company_id.journal_fede_indus_id + type_cotisation_fede_indus = self.env.ref("cgscop_partner.cotiz_fede_indus").id + + 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" + ] + self.create_contribution( + product=product_fede_indus_id, + type_contribution=type_cotisation_fede_indus, + amount=amount_fede_indus, + journal_id=journal_fede_indus_id, + ) + # Invoice cotiz UR HDF # ur_hdf = self.env.ref("cgscop_partner.riga_14232").id diff --git a/models/scop_cotisation_cg.py b/models/scop_cotisation_cg.py index 397f7568595bc7f3f6ee9ff66ba7dcabce6111e8..2b6ab5b67474379d645485f0caec157ed1630513 100644 --- a/models/scop_cotisation_cg.py +++ b/models/scop_cotisation_cg.py @@ -331,7 +331,7 @@ class ScopCotisation(models.Model): # Ajoute les bordereaux au batch for member in member_to_invoice: liasse_id = self.get_liasse(member) - description = "Cotisation %s - Adhérent n°%s - %s" % ( + description = "%s - Adh %s - %s" % ( self.year, member.member_number, member.name ) self.with_context( @@ -524,6 +524,7 @@ class ScopCotisation(models.Model): product_cg_id = self.company_id.contribution_cg_id product_com_id = self.company_id.contribution_fede_com_id product_cae_id = self.company_id.contribution_fede_cae_id + product_indus_id = self.company_id.contribution_fede_indus_id product_hdf_id = self.company_id.contribution_hdf_id product_med_id = self.company_id.contribution_med_id @@ -556,7 +557,7 @@ class ScopCotisation(models.Model): # Init variables datas = [] - total_cg = total_hdf = total_com = total_med = total_cae = 0 + total_cg = total_hdf = total_com = total_med = total_cae = total_indus = 0 count_member = 0 for m in self.web_progress_iter(members, msg="cotisations calculées"): @@ -728,6 +729,28 @@ class ScopCotisation(models.Model): datas.append(datas_contrib_cae) total_cae += contrib_fede_cae + if m.is_federation_indus: + datas_contrib_indus = datas_contrib.copy() + if liasse: + contrib_fede_indus = self.round_to_closest_multiple( + liasse.contribution_indus, 4 + ) + else: + contrib_fede_indus = 100 + # Calcul cotisation N-1 + contribution_last_year = sum( + line_ids.filtered( + lambda l: l.product_id == product_indus_id + ).mapped( + lambda c: c.price_total if c.balance > 0 else -c.price_total + ) + ) + datas_contrib_indus[4] = "Cotisation Fédération Industrie" + datas_contrib_indus[5] = contrib_fede_indus + datas_contrib_indus[6] = contribution_last_year + datas.append(datas_contrib_indus) + total_indus += contrib_fede_indus + count_member += 1 total_cg += contrib_cg @@ -784,6 +807,7 @@ class ScopCotisation(models.Model): "total_hdf": total_hdf, "total_com": total_com, "total_cae": total_cae, + "total_indus": total_indus, "total_med": total_med, } ) diff --git a/models/scop_cotisation_simulation.py b/models/scop_cotisation_simulation.py index 2e35c4d715ac7e85432fc39064fb12795a0ed33b..afd4bdee7513cc0b9e372e7bd88fc3de990a6dc2 100644 --- a/models/scop_cotisation_simulation.py +++ b/models/scop_cotisation_simulation.py @@ -31,6 +31,7 @@ class ScopCotisation(models.Model): total_med = fields.Float("Total UR Med") total_com = fields.Float("Total Fédération Com") total_cae = fields.Float("Total Fédération CAE") + total_indus = fields.Float("Total Fédération Industrie") def get_simul_file(self): return { diff --git a/models/scop_liasse_fiscale.py b/models/scop_liasse_fiscale.py index a047d3472c032b2b2770502135867cf84f5e4fd6..348103e7e86235e02fafaca2a86a2008838d0828 100644 --- a/models/scop_liasse_fiscale.py +++ b/models/scop_liasse_fiscale.py @@ -46,6 +46,11 @@ class ScopLiasseFiscale(models.Model): compute="_compute_contribution_cae", store=True, ) + contribution_indus = fields.Float( + string="Cotisation Fédération Industrie", + compute="_compute_contribution_indus", + store=True, + ) # ------------------------------------------------------ # Compute fields @@ -301,6 +306,16 @@ class ScopLiasseFiscale(models.Model): else: liasse.contribution_cae = contribution_cae + @api.depends("is_federation_indus") + def _compute_contribution_indus(self): + """ + Calcule la cotisation Fédé Industrie : 100 € par an + @return float : cotisation + """ + for liasse in self: + if liasse.is_federation_indus: + liasse.contribution_indus = 100 + # ------------------------------------------------------ # Business Function # ------------------------------------------------------ @@ -308,6 +323,7 @@ class ScopLiasseFiscale(models.Model): return { "fede_com": 108, "fede_cae": 300, + "fede_indus": 100, "ur_hdf": 40, } diff --git a/views/res_config_settings.xml b/views/res_config_settings.xml index ee3ebbeccb48bd204aa97ce940c180a8546fcdc3..36d451860e8195752b056fe1f7542548030ed3fb 100644 --- a/views/res_config_settings.xml +++ b/views/res_config_settings.xml @@ -28,6 +28,7 @@ <hr attrs="{'invisible': [('is_contribution_cg', '=', False)]}" /> + <!-- Cotisation CG Scop --> <div class="o_setting_left_pane" /> <div class="o_setting_right_pane" @@ -43,6 +44,7 @@ <hr attrs="{'invisible': [('is_contribution_cg', '=', False)]}" /> + <!-- Cotisation Fédé Com --> <div class="o_setting_right_pane" attrs="{'invisible': [('is_contribution_cg', '=', False)]}" @@ -68,6 +70,7 @@ <hr attrs="{'invisible': [('is_contribution_cg', '=', False)]}" /> + <!-- Cotisation Fédé CAE --> <div class="o_setting_right_pane" attrs="{'invisible': [('is_contribution_cg', '=', False)]}" @@ -93,6 +96,33 @@ <hr attrs="{'invisible': [('is_contribution_cg', '=', False)]}" /> + <!-- Cotisation Fédé Industrie --> + <div + class="o_setting_right_pane" + attrs="{'invisible': [('is_contribution_cg', '=', False)]}" + > + <div><label for="journal_fede_indus_id" /></div> + <field + name="journal_fede_indus_id" + options="{'no_open': True, 'no_create': True}" + attrs="{'required': [('is_contribution_cg', '=', True)]}" + /> + </div> + <div + class="o_setting_right_pane" + attrs="{'invisible': [('is_contribution_cg', '=', False)]}" + > + <div><label for="contribution_fede_indus_id" /></div> + <field + name="contribution_fede_indus_id" + options="{'no_open': True, 'no_create': True}" + attrs="{'required': [('is_contribution_cg', '=', True)]}" + /> + </div> + <hr + attrs="{'invisible': [('is_contribution_cg', '=', False)]}" + /> + <!-- Cotisation UR HDF --> <div class="o_setting_right_pane" attrs="{'invisible': [('is_contribution_cg', '=', False)]}" @@ -118,6 +148,7 @@ <hr attrs="{'invisible': [('is_contribution_cg', '=', False)]}" /> + <!-- Cotisation UR Méditerranée --> <div class="o_setting_right_pane" attrs="{'invisible': [('is_contribution_cg', '=', False)]}" diff --git a/views/scop_cotisation_simulation.xml b/views/scop_cotisation_simulation.xml index 103d947ddea431ec2986836cf1b30b1596ba66b0..34c3ee41a18e42bc018698504e200662f1d93d92 100644 --- a/views/scop_cotisation_simulation.xml +++ b/views/scop_cotisation_simulation.xml @@ -19,6 +19,7 @@ <field name="total_med" /> <field name="total_com" /> <field name="total_cae" /> + <field name="total_indus" /> <button name="get_simul_file" type="object" @@ -55,6 +56,7 @@ <field name="total_med" readonly="1" /> <field name="total_com" readonly="1" /> <field name="total_cae" readonly="1" /> + <field name="total_indus" readonly="1" /> </group> </group> </sheet> diff --git a/views/scop_liasse_fiscale.xml b/views/scop_liasse_fiscale.xml index 4781e3426aa6c4b2b7cb99bdf72297ae32105357..74e9757558b382973ccee2fe4c59076d2c765511 100644 --- a/views/scop_liasse_fiscale.xml +++ b/views/scop_liasse_fiscale.xml @@ -45,6 +45,10 @@ name="contribution_cae" string="Cotisation Fédération CAE" /> + <field + name="contribution_indus" + string="Cotisation Fédération Industrie" + /> </group> </group> </xpath>