diff --git a/models/res_partner.py b/models/res_partner.py index c8e0b8542d9bed175db9be3b90f197fd7e165464..817e49b7450241202e276b31609366655806b368 100644 --- a/models/res_partner.py +++ b/models/res_partner.py @@ -76,6 +76,10 @@ class ScopPartner(models.Model): string="Nb de statuts de facturation", compute="_compute_project_invoicing_status_nb", ) + liasse_membership_id = fields.Many2one( + comodel_name="scop.liasse.fiscale", + string="Liasse fiscale adhésion" + ) # Changement de statuts list_logs = fields.Text("Liste des erreurs") @@ -122,18 +126,15 @@ class ScopPartner(models.Model): ], limit=1, ) - if not staff_id: - staff_id = staff_id.create( - { - "partner_id": self.id, - "type_entry": "membership", - "effective_date": fields.Date.today(), - "staff_count": 0, - } - ) wizard = self.env["scop.membership.staff.wizard"].create( - {"partner_id": self.id, "staff_id": staff_id.id} + { + "partner_id": self.id, + "staff_id": staff_id.id if staff_id else None, + "effective_date": fields.Date.today() + if not staff_id + else staff_id.effective_date, + } ) return { "name": "Effectifs à l'adhésion", @@ -147,7 +148,10 @@ class ScopPartner(models.Model): def fill_membership_liasse(self): self.ensure_one() wizard = self.env["scop.membership.liasse.wizard"].create( - {"partner_id": self.id,} + { + "partner_id": self.id, + "liasse_id": self.liasse_membership_id.id, + } ) return { "name": "Données financières", @@ -161,29 +165,6 @@ class ScopPartner(models.Model): # ------------------------------------------------------ # Business methods # ------------------------------------------------------ - # TODO: supprimer ou modifier (suppression fonction get_liasse_adhesion) - def check_compulsory_fields(self, lm): - """ - Vérification des champs de la liste ministère et de la liasse fiscale - :param lm: - :return: - """ - res = "" - errors_lm = lm.check_compulsory_fields_lm() - if errors_lm: - res += ( - "<hr/><strong>Dossier d'Adhésion : </strong><ul>" + errors_lm + "</ul>" - ) - - - liasse_adhesion = self.get_liasse_adhesion(lm) - errors_lf = liasse_adhesion.check_compulsory_fields_lf() - if errors_lf: - res += ( - "<hr/><strong>Données financières :</strong><ul>" + errors_lf + "</ul>" - ) - return res - def create_num_adherent(self): """ Generate new num adherent with sequence @@ -330,7 +311,7 @@ class ScopPartner(models.Model): # ------------------------------------------------------ def scop_sumbit_cg(self): """ - Ouvre le wizard et vérifie les effectifs + Ouvre le wizard """ wizard = self.env["scop.membership.submit.wizard"].create( { @@ -351,23 +332,31 @@ class ScopPartner(models.Model): """ Modifie le statut de la coopérative pour transmission du dossier à la CG - positionner la date_transmission_cg avec la date du jour - - affecter la coop à sa DIRECCTE @return : True """ + # Check Staff staff_line = self.staff_ids.filtered( lambda s: s.type_entry == "membership" ).sorted(key="effective_date", reverse=True) - if staff_line and staff_line[0].staff_count > 0: - self.update( - { - "membership_status": "soumis_cg", - "date_transmission_cg": fields.Date.today(), - "list_logs": False, - } - ) - self.affectation_contact_ministere() - else: + if not (staff_line or staff_line[0].staff_count > 0): raise UserError(_("Les effectifs à l'adhésion ne sont pas renseignés.")) + # Check financial datas + if not self.liasse_membership_id: + raise UserError(_( + "Il est nécessaire de renseigner les données financières pour valider" + )) + if self.liasse_membership_id.check_compulsory_fields_lf(): + raise UserError(_( + "Les données financières ne peuvent pas être nulles." + )) + + self.update( + { + "membership_status": "soumis_cg", + "date_transmission_cg": fields.Date.today(), + "list_logs": False, + } + ) def scop_abandonne(self): """ diff --git a/models/scop_liasse_fiscale.py b/models/scop_liasse_fiscale.py index c44f1473ce54cbb7066b133b47e16fc667ab1bc7..8f1ced22b012675890374906cae5e866aa10ab21 100644 --- a/models/scop_liasse_fiscale.py +++ b/models/scop_liasse_fiscale.py @@ -25,4 +25,4 @@ class ScopAdhesionLiasseFiscale(models.Model): "(CA ou VA obligatoire)</li>" ) else: - return str() + return False diff --git a/security/ir.model.access.csv b/security/ir.model.access.csv index 8c6de3e85401d90f89158fc705ca7bca31c45d3d..b03743409152c19dc748a1d8f32d0e50ba981518 100644 --- a/security/ir.model.access.csv +++ b/security/ir.model.access.csv @@ -8,4 +8,4 @@ admin_scop_adhesion_file,admin_scop_adhesion_file,model_scop_adhesion_file,cgsco cg_access_compulsory_fields_suivi_wizard,cg_access_compulsory_fields_suivi_wizard,model_scop_compulsory_fields_suivi_wizard,base.group_user,1,1,1,0 access_scop_membership_liasse_wizard,access_scop_membership_liasse_wizard,model_scop_membership_liasse_wizard,base.group_user,1,1,1,1 access_scop_membership_staff_wizard,access_scop_membership_staff_wizard,model_scop_membership_staff_wizard,base.group_user,1,1,1,1 -access_scop_membership_submit_wizard,access_scop_membership_submit_wizard,model_scop_membership_submit_wizard,base.group_user,1,1,1,1 \ No newline at end of file +access_scop_membership_submit_wizard,access_scop_membership_submit_wizard,model_scop_membership_submit_wizard,base.group_user,1,1,1,1 diff --git a/wizard/scop_compulsory_fields_suivi_wizard.py b/wizard/scop_compulsory_fields_suivi_wizard.py index 6f3a5c9a74157fb6476d1f312b88e1fff68544d8..0db63cc511b3e3830b8ef7063cd473d94263c5c7 100644 --- a/wizard/scop_compulsory_fields_suivi_wizard.py +++ b/wizard/scop_compulsory_fields_suivi_wizard.py @@ -47,6 +47,7 @@ class ScopCompulsoryFieldsSuiviWizard(models.TransientModel): if self.with_adhesion: self.partner_id.write({"membership_status": "adhesion"}) if form_id in form_id._get_lm_form(): + # Create extranet access self.partner_id.write({"extranet_service_access": True}) if not self.partner_id.director_ids: raise UserError( @@ -59,6 +60,12 @@ class ScopCompulsoryFieldsSuiviWizard(models.TransientModel): "extranet_update_company": True, } ) + # Create LM + self.env["scop.liste.ministere"].sudo().create_folder( + self.partner_id, self.date_1st_sign.year, "subscribe" + ) + # Set DDETS + self.partner_id.affectation_contact_ministere() return {"type": "ir.actions.act_window_close"} diff --git a/wizard/scop_membership_liasse_wizard.py b/wizard/scop_membership_liasse_wizard.py index 75b842f2d350ce52156633b88eb46c01f477c8ee..df8055bb7ccd9598e244f69119594e979fa0c468 100644 --- a/wizard/scop_membership_liasse_wizard.py +++ b/wizard/scop_membership_liasse_wizard.py @@ -12,9 +12,7 @@ class ScopMembershipLiasseWizard(models.TransientModel): # Field declaration # ------------------------------------------------------ partner_id = fields.Many2one( - comodel_name="res.partner", - string="Coopérative", - required=True + comodel_name="res.partner", string="Coopérative", required=True ) liasse_id = fields.Many2one( comodel_name="scop.liasse.fiscale", @@ -36,8 +34,12 @@ class ScopMembershipLiasseWizard(models.TransientModel): av_lf = fields.Monetary(related="liasse_id.av_lf") L2052_FY = fields.Monetary(related="liasse_id.L2052_FY") L2053_HN = fields.Float(related="liasse_id.L2053_HN") - contribution_base_type = fields.Selection(related="liasse_id.contribution_base_type") - contribution_base_amount = fields.Integer(related="liasse_id.contribution_base_amount") + contribution_base_type = fields.Selection( + related="liasse_id.contribution_base_type" + ) + contribution_base_amount = fields.Integer( + related="liasse_id.contribution_base_amount" + ) contribution_cg = fields.Float(related="liasse_id.contribution_cg") # ------------------------------------------------------ @@ -45,9 +47,9 @@ class ScopMembershipLiasseWizard(models.TransientModel): # ------------------------------------------------------ def _compute_is_financial_data(self): for wizard in self: - liasse_ids = self.env["scop.liasse.fiscale"].search([ - ("partner_id", "=", wizard.partner_id.id) - ]) + liasse_ids = self.env["scop.liasse.fiscale"].search( + [("partner_id", "=", wizard.partner_id.id)] + ) wizard.is_financial_data = True if liasse_ids else False @api.depends("liasse_id") @@ -65,6 +67,7 @@ class ScopMembershipLiasseWizard(models.TransientModel): """ Sauvegarder les données même avec erreurs """ + self.partner_id.liasse_membership_id = self.liasse_id return {"type": "ir.actions.act_window_close"} def new_forecast(self): @@ -76,11 +79,10 @@ class ScopMembershipLiasseWizard(models.TransientModel): "type_id": "forecast", "is_qualified": True, } - liasse_fiscale_id = self.env["scop.liasse.fiscale"].create( - liasse_values - ) + liasse_id = self.env["scop.liasse.fiscale"].create(liasse_values) + self.partner_id.liasse_membership_id = liasse_id - return self.open_forecast(liasse_fiscale_id) + return self.open_forecast(liasse_id) def update_forecast(self): return self.open_forecast(self.liasse_id) @@ -92,6 +94,7 @@ class ScopMembershipLiasseWizard(models.TransientModel): action = self.env["ir.actions.actions"]._for_xml_id( "cgscop_liasse_fiscale.scop_liasse_fiscale_previsionnelle_act_window" ) + self.partner_id.liasse_membership_id = liasse_id action.update( { "target": "new", diff --git a/wizard/scop_membership_liasse_wizard.xml b/wizard/scop_membership_liasse_wizard.xml index 82dedd2bfdc721f509e8abda85d8f71d7a2d0d14..ac3a036c1f6137e9c7ef8c21caf7ae26c5cc491f 100644 --- a/wizard/scop_membership_liasse_wizard.xml +++ b/wizard/scop_membership_liasse_wizard.xml @@ -9,7 +9,11 @@ <field name="model">scop.membership.liasse.wizard</field> <field name="arch" type="xml"> <form string="Effectifs à l'adhésion"> - <h3><field name="partner_id" readonly="1" options="{'no_open': True}" /></h3> + <h3><field + name="partner_id" + readonly="1" + options="{'no_open': True}" + /></h3> <!-- Liasse existante --> <div role="alert" @@ -21,7 +25,7 @@ Si une liasse parmi les liasses déjà présentes vous semble valide pour le calcul des cotisations, vous n'avez pas d'action supplémentaire à effectuer. </div> <group> - <field name="is_financial_data" invisible="1"/> + <field name="is_financial_data" invisible="1" /> <group> <field name="liasse_id" @@ -65,7 +69,10 @@ widget="monetary" /> </group> - <group string="Simulation cotisations" attrs="{'invisible': [('liasse_id', '=', False)]}"> + <group + string="Simulation cotisations" + attrs="{'invisible': [('liasse_id', '=', False)]}" + > <field name="contribution_base_type" string="Type Assiette" @@ -77,7 +84,7 @@ <field name="contribution_cg" string="Cotisation CG Scop" /> </group> <group attrs="{'invisible': [('liasse_id', '=', False)]}"> - <field name="is_editable" invisible="1"/> + <field name="is_editable" invisible="1" /> <div class="text-center" colspan="2" @@ -135,6 +142,7 @@ <button type="action" name="%(cgscop_liasse_fiscale.scop_load_liasse_act_window)d" + context="{'membership': True}" class="btn btn-outline-info btn-lg" style="width: 250px;" > @@ -149,6 +157,13 @@ string="Sauvegarder" class="oe_highlight" /> + <button + type="action" + name="%(cgscop_liasse_fiscale.scop_load_liasse_act_window)d" + class="btn btn-outline-info" + > + Importer une nouvelle liasse + </button> <button special="cancel" string="Annuler" /> </footer> </form> diff --git a/wizard/scop_membership_staff_wizard.py b/wizard/scop_membership_staff_wizard.py index ae1497e8a54d6da0caeb386e3af73e06f0221644..21c4d4d742444215fd26ff68cc840fc4570babf8 100644 --- a/wizard/scop_membership_staff_wizard.py +++ b/wizard/scop_membership_staff_wizard.py @@ -12,17 +12,25 @@ class ScopMembershipStaffWizard(models.TransientModel): # Field declaration # ------------------------------------------------------ partner_id = fields.Many2one(comodel_name="res.partner", required=True) - staff_id = fields.Many2one(comodel_name="scop.partner.staff", required=True) - effective_date = fields.Date(related="staff_id.effective_date", readonly=False) - staff_count = fields.Integer(related="staff_id.staff_count", readonly=False) + staff_id = fields.Many2one( + comodel_name="scop.partner.staff", + ) + effective_date = fields.Date( + related="staff_id.effective_date", readonly=False, store=True + ) + staff_count = fields.Integer( + related="staff_id.staff_count", readonly=False, store=True + ) staff_shareholder_count = fields.Integer( - related="staff_id.staff_shareholder_count", readonly=False + related="staff_id.staff_shareholder_count", readonly=False, store=True ) staff_shareholder_total = fields.Integer( - related="staff_id.staff_shareholder_total", readonly=False + related="staff_id.staff_shareholder_total", readonly=False, store=True + ) + staff_average = fields.Float( + related="staff_id.staff_average", readonly=False, store=True ) - staff_average = fields.Float(related="staff_id.staff_average", readonly=False) - comment = fields.Char(related="staff_id.comment", readonly=False) + comment = fields.Char(related="staff_id.comment", readonly=False, store=True) # ------------------------------------------------------ # Actions / Buttons @@ -31,4 +39,18 @@ class ScopMembershipStaffWizard(models.TransientModel): """ Sauvegarder les données même avec erreurs """ - return {"type": "ir.actions.act_window_close"} + if self.staff_id: + return {"type": "ir.actions.act_window_close"} + else: + return self.staff_id.create( + { + "partner_id": self.partner_id.id, + "type_entry": "membership", + "effective_date": self.effective_date, + "staff_count": self.staff_count, + "staff_shareholder_count": self.staff_shareholder_count, + "staff_shareholder_total": self.staff_shareholder_total, + "staff_average": self.staff_average, + "comment": self.comment, + } + ) diff --git a/wizard/scop_membership_staff_wizard.xml b/wizard/scop_membership_staff_wizard.xml index 865e30ed453122cb61b6b8e8ad13b66a7d940cf5..eb9135db20d63452fb2019bdeb27ecc152cec994 100644 --- a/wizard/scop_membership_staff_wizard.xml +++ b/wizard/scop_membership_staff_wizard.xml @@ -9,13 +9,30 @@ <field name="model">scop.membership.staff.wizard</field> <field name="arch" type="xml"> <form string="Effectifs à l'adhésion"> - <h5><field name="partner_id" readonly="1" string="Coopérative" options="{'no_open': True}" /></h5> + <h5><field + name="partner_id" + readonly="1" + string="Coopérative" + options="{'no_open': True}" + /></h5> <group> <field name="staff_id" readonly="1" invisible="1" /> - <field name="effective_date" required="1" string="Date effective de l'information" /> - <field name="staff_count" required="1" string="Effectif total" /> + <field + name="effective_date" + required="1" + string="Date effective de l'information" + /> + <field + name="staff_count" + required="1" + string="Effectif total" + /> <field name="staff_shareholder_count" required="1" /> - <field name="staff_shareholder_total" required="1" string="Total associés y compris non salariés" /> + <field + name="staff_shareholder_total" + required="1" + string="Total associés y compris non salariés" + /> <field name="staff_average" required="1" /> <field name="comment" /> </group> @@ -32,10 +49,7 @@ </field> </record> - <record - id="scop_membership_staff_wizard_action" - model="ir.actions.act_window" - > + <record id="scop_membership_staff_wizard_action" model="ir.actions.act_window"> <field name="name">Effectifs à l'adhésion</field> <field name="type">ir.actions.act_window</field> <field name="res_model">scop.membership.staff.wizard</field> diff --git a/wizard/scop_membership_submit_wizard.py b/wizard/scop_membership_submit_wizard.py index 514b6a8498c792aec2b877eeeaddbab8773982ec..b82b9a58836c3b58f20cd7b59af5cbd363fe627b 100644 --- a/wizard/scop_membership_submit_wizard.py +++ b/wizard/scop_membership_submit_wizard.py @@ -11,10 +11,14 @@ class ScopMembershipSubmitWizard(models.TransientModel): partner_id = fields.Many2one( comodel_name="res.partner", string="Coop", required=True ) - ur_id = fields.Many2one(related="partner_id.ur_id", readonly=False) + list_logs = fields.Text("Liste des erreurs", compute="_compute_list_logs") - list_logs = fields.Text("Liste des erreurs") + # ------------------------------------------------------ + # Compute + # ------------------------------------------------------ + def _compute_list_logs(self): + self.list_logs = self.partner_id.liasse_membership_id.check_compulsory_fields_lf() # ------------------------------------------------------ # Actions / Buttons @@ -26,9 +30,3 @@ class ScopMembershipSubmitWizard(models.TransientModel): self.partner_id.scop_send_to_cg() return {"type": "ir.actions.act_window_close"} - - def save_data(self): - """ - Sauvegarder les données même avec erreurs - """ - return {"type": "ir.actions.act_window_close"} diff --git a/wizard/scop_membership_submit_wizard.xml b/wizard/scop_membership_submit_wizard.xml index db1cf9b1445079d2463af5a3fe5ecf7f1611eb7e..609401252a395ad593e57ec95d596c3341e579e4 100644 --- a/wizard/scop_membership_submit_wizard.xml +++ b/wizard/scop_membership_submit_wizard.xml @@ -32,14 +32,7 @@ class="oe_highlight" attrs="{'invisible':[('list_logs', '!=', False)]}" /> - <button - name="save_data" - type="object" - string="Sauvegarder" - class="oe_highlight" - attrs="{'invisible':[('list_logs', '=', False)]}" - /> - <button special="cancel" string="Annuler" /> + <button special="cancel" string="Fermer" /> </footer> </form> </field>