From 8bba17aa2a53f19cd86a1ffc3a447574257df833 Mon Sep 17 00:00:00 2001 From: jordan <jordan@le-filament.com> Date: Wed, 8 Dec 2021 16:00:07 +0100 Subject: [PATCH] [update] enable to choose multiple quarters for bordereau in cotiz --- .gitignore | 3 + __manifest__.py | 2 + .../bordereau_refund_wizard_quarter_data.xml | 24 ++++++ security/ir.model.access.csv | 2 + wizard/scop_bordereau_refund_wizard.py | 85 ++++++++++++------- wizard/scop_bordereau_refund_wizard.xml | 2 +- 6 files changed, 85 insertions(+), 33 deletions(-) create mode 100644 .gitignore create mode 100644 datas/bordereau_refund_wizard_quarter_data.xml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..75bb204 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +.* +*.pyc +!.gitignore diff --git a/__manifest__.py b/__manifest__.py index 7fcc52e..4eb8bf1 100755 --- a/__manifest__.py +++ b/__manifest__.py @@ -17,6 +17,8 @@ # Security "security/security_rules.xml", "security/ir.model.access.csv", + # Datas + "datas/bordereau_refund_wizard_quarter_data.xml", "datas/mail_data.xml", "datas/queue_job_data.xml", "datas/ir_sequence_data.xml", diff --git a/datas/bordereau_refund_wizard_quarter_data.xml b/datas/bordereau_refund_wizard_quarter_data.xml new file mode 100644 index 0000000..213e9e1 --- /dev/null +++ b/datas/bordereau_refund_wizard_quarter_data.xml @@ -0,0 +1,24 @@ +<?xml version="1.0"?> +<!-- Copyright 2021 Le Filament (<https://www.le-filament.com>) + License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl). --> +<odoo> + <data noupdate="1"> + + <record id="bordereau_wizard_quarter1" model="scop.bordereau.refund.wizard.quarter"> + <field name="quarter">1</field> + </record> + + <record id="bordereau_wizard_quarter2" model="scop.bordereau.refund.wizard.quarter"> + <field name="quarter">2</field> + </record> + + <record id="bordereau_wizard_quarter3" model="scop.bordereau.refund.wizard.quarter"> + <field name="quarter">3</field> + </record> + + <record id="bordereau_wizard_quarter4" model="scop.bordereau.refund.wizard.quarter"> + <field name="quarter">4</field> + </record> + + </data> +</odoo> \ No newline at end of file diff --git a/security/ir.model.access.csv b/security/ir.model.access.csv index 1f7f053..c818bf4 100755 --- a/security/ir.model.access.csv +++ b/security/ir.model.access.csv @@ -7,3 +7,5 @@ access_scop_bordereau,access_scop_bordereau,model_scop_bordereau,account.group_a admin_access_scop_bordereau,admin_access_scop_bordereau,model_scop_bordereau,cgscop_partner.group_cg_administrator,1,1,1,1 access_scop_bordereau_version,access_scop_bordereau_version,model_scop_bordereau_version,account.group_account_manager,1,1,1,1 admin_access_scop_bordereau_version,admin_access_scop_bordereau_version,model_scop_bordereau_version,cgscop_partner.group_cg_administrator,1,1,1,1 +access_scop_bordereau_refund_wizard_quarter,access_scop_bordereau_refund_wizard_quarter,model_scop_bordereau_refund_wizard_quarter,account.group_account_manager,1,1,1,1 +admin_access_scop_bordereau_refund_wizard_quarter,admin_access_scop_bordereau_refund_wizard_quarter,model_scop_bordereau_refund_wizard_quarter,cgscop_partner.group_cg_administrator,1,1,1,1 diff --git a/wizard/scop_bordereau_refund_wizard.py b/wizard/scop_bordereau_refund_wizard.py index 02786d5..e8c8fe0 100644 --- a/wizard/scop_bordereau_refund_wizard.py +++ b/wizard/scop_bordereau_refund_wizard.py @@ -2,7 +2,7 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). from odoo import fields, models, api -from odoo.exceptions import ValidationError +from odoo.exceptions import ValidationError, UserError class ScopBordereauRefundWizard(models.TransientModel): @@ -23,10 +23,10 @@ class ScopBordereauRefundWizard(models.TransientModel): string='Type de cotisation', selection=lambda self: self._selection_type_cotiz(), required=1) - cotiz_quarter = fields.Selection( - string='Trimestre', - selection=[(1, 1), (2, 2), (3, 3), (4, 4)], - required=1, ) + quarter_ids = fields.Many2many( + relation='scop_bordereau_refund_wizard_quarter_rel', + comodel_name='scop.bordereau.refund.wizard.quarter', + string='Trimestres') # ------------------------------------------------------ # Constrains @@ -100,6 +100,12 @@ class ScopBordereauRefundWizard(models.TransientModel): """ Create refund """ + if len(self.quarter_ids) == 0: + raise UserError('Vous devez sélectionner au moins un trimestre.') + if self.amount_refund <= 0: + raise UserError('Le montant de l\'avoir doit être supérieur à 0.') + if not self.type_cotiz: + raise UserError('Vous devez sélectionner un type de cotisation.') bordereau_id = self.bordereau_id partner_id = bordereau_id.partner_id ur_hdf = self.env.ref('cgscop_partner.riga_14232').id @@ -148,30 +154,45 @@ class ScopBordereauRefundWizard(models.TransientModel): account_ur], } product = cotiz_type.get(int(self.type_cotiz))[0] - refund = self.env['account.invoice'].create({ - 'partner_id': partner_id.id, - 'journal_id': cotiz_type.get(int(self.type_cotiz))[1].id, - 'account_id': cotiz_type.get(int(self.type_cotiz))[2].id, - 'type': 'out_refund', - 'date_invoice': self.date_refund, - 'date': self.date_refund, - 'state': 'draft', - 'number': False, - 'origin': bordereau_id.name, - 'reference': False, - 'bordereau_id': bordereau_id.id, - 'is_contribution': True, - 'year': bordereau_id.year, - 'cotiz_quarter': self.cotiz_quarter, - 'liasse_fiscale_id': bordereau_id.liasse_fiscale_id.id, - 'type_contribution_id': self.type_cotiz, - 'payment_mode_id': bordereau_id.payment_mode_id.id, - 'date_due': self.date_refund, - }) - self.env['account.invoice.line'].create({ - 'name': self.comment, - 'invoice_id': refund.id, - 'product_id': product.id, - 'account_id': product.property_account_income_id.id, - 'price_unit': self.amount_refund - }) + + for quarter_id in self.quarter_ids: + refund = self.env['account.invoice'].create({ + 'partner_id': partner_id.id, + 'journal_id': cotiz_type.get(int(self.type_cotiz))[1].id, + 'account_id': cotiz_type.get(int(self.type_cotiz))[2].id, + 'type': 'out_refund', + 'date_invoice': self.date_refund, + 'date': self.date_refund, + 'state': 'draft', + 'number': False, + 'origin': bordereau_id.name, + 'reference': False, + 'bordereau_id': bordereau_id.id, + 'is_contribution': True, + 'year': bordereau_id.year, + 'cotiz_quarter': quarter_id.quarter, + 'liasse_fiscale_id': bordereau_id.liasse_fiscale_id.id, + 'type_contribution_id': self.type_cotiz, + 'payment_mode_id': bordereau_id.payment_mode_id.id, + 'date_due': self.date_refund, + }) + self.env['account.invoice.line'].create({ + 'name': self.comment, + 'invoice_id': refund.id, + 'product_id': product.id, + 'account_id': product.property_account_income_id.id, + 'price_unit': self.amount_refund + }) + + +class ScopBordereauRefundWizardQuarer(models.Model): + _name = 'scop.bordereau.refund.wizard.quarter' + _description = 'Trimestres pour échéance de cotisation' + + name = fields.Char('Nom', compute='_compute_name') + quarter = fields.Integer('Trismestre', required=1) + + @api.multi + def _compute_name(self): + for r in self: + r.name = str(r.quarter) diff --git a/wizard/scop_bordereau_refund_wizard.xml b/wizard/scop_bordereau_refund_wizard.xml index a75e53d..faac159 100644 --- a/wizard/scop_bordereau_refund_wizard.xml +++ b/wizard/scop_bordereau_refund_wizard.xml @@ -15,7 +15,7 @@ <field name="date_refund"/> <separator/> <field name="amount_refund"/> - <field name="cotiz_quarter"/> + <field name="quarter_ids" widget="many2many_checkboxes"/> <field name="comment"/> </group> </sheet> -- GitLab