From 1e81e6840ab7cc3df9eda573bb6f5143ae4eaa11 Mon Sep 17 00:00:00 2001 From: Juliana <juliana@le-filament.com> Date: Fri, 23 Dec 2022 18:43:27 +0100 Subject: [PATCH] [UPD]Change process adhesion --- models/res_partner.py | 59 ++++++++++++++++++- models/scop_adhesion_file.py | 4 ++ report/report_scop_adhesion.xml | 4 +- views/res_partner.xml | 31 ++++++---- views/scop_adhesion_file.xml | 7 ++- wizard/scop_compulsory_fields_suivi_wizard.py | 8 ++- .../scop_compulsory_fields_suivi_wizard.xml | 23 +++++++- 7 files changed, 113 insertions(+), 23 deletions(-) diff --git a/models/res_partner.py b/models/res_partner.py index 88163fe..98259bb 100644 --- a/models/res_partner.py +++ b/models/res_partner.py @@ -110,7 +110,7 @@ class ScopPartner(models.Model): # ------------------------------------------------------ @api.onchange("project_status") def _onchange_project_status(self): - if self.project_status != "7_abandonne": + if self.project_status != "5_abandonne": self.date_abort = None # ------------------------------------------------------ @@ -253,7 +253,7 @@ class ScopPartner(models.Model): errors_complete_fields = self.check_compulsory_fields(lm_adhesion) if errors_complete_fields: errors += errors_complete_fields - errors_complete_docs = self.check_compulsory_docs() + errors_complete_docs = self.check_compulsory_docs(True) if errors_complete_docs: errors_str = str() for error in errors_complete_docs: @@ -297,7 +297,7 @@ class ScopPartner(models.Model): ) return res - def check_compulsory_docs(self): + def check_compulsory_docs(self, is_adhesion=False): """ Vérification de la présence des docs obligatoires :return: @@ -484,13 +484,66 @@ class ScopPartner(models.Model): self.date_abort = fields.Date.today() return True + def scop_suivi_check_docs(self, is_adherent=False): + """ + Passe la coop en statut suivi sans devenir adhérente + """ + self.scop_suivi_check_docs(is_adherent) + errors = str() + errors_complete_docs = self.check_compulsory_docs(is_adherent) + if errors_complete_docs: + errors_str = str() + for error in errors_complete_docs: + errors_str += "<li>" + error + "</li>" + errors += ( + "<hr/><strong>Documents manquants :</strong><ul>" + errors_str + "</ul>" + ) + if errors: + local_tz = timezone("Europe/Paris") + utc_tz = timezone("UTC") + self.list_logs = ( + "<strong>" + + utc_tz.localize(fields.Datetime.now()) + .astimezone(local_tz) + .strftime("%d/%m/%Y - %-H:%M") + + "</strong> - Impossible de soumettre le dossier à la CG Scop" + + errors + ) + def scop_suivi_non_adhesion(self): """ Passe la coop en statut suivi sans devenir adhérente """ + # Avant de passer en suivi, vérification des documents obligatoires + self.scop_suivi_check_docs(self.env.context.get("default_with_adhesion", False)) + wizard = self.env["scop.compulsory.fields.suivi.wizard"].create( + { + "partner_id": self.id, + "list_logs": self.list_logs, + } + ) + return { + "name": "Confirmation des champs obligatoires", + "type": "ir.actions.act_window", + "view_mode": "form", + "res_model": "scop.compulsory.fields.suivi.wizard", + "res_id": wizard.id, + "target": "new", + } + + def scop_suivi_adhesion(self): + """ + Passe la coop en statut suivi sans devenir adhérente + """ + # Todo: Gestion de la bascule suivi avec adhésion à tester + + # Avant de passer en suivi, vérification des documents obligatoires + self.scop_suivi_check_docs(self.env.context.get("default_with_adhesion", False)) + wizard = self.env["scop.compulsory.fields.suivi.wizard"].create( { "partner_id": self.id, + "with_adhesion": self.env.context.get("default_with_adhesion", False), } ) return { diff --git a/models/scop_adhesion_file.py b/models/scop_adhesion_file.py index 9567c16..661d9ef 100644 --- a/models/scop_adhesion_file.py +++ b/models/scop_adhesion_file.py @@ -14,3 +14,7 @@ class ScopAdhesionFiles(models.Model): string="Type de coopérative", ) is_compulsory = fields.Boolean("Obligatoire") + type_process = fields.Selection( + [("project", "Projet de création"), ("adhesion", "Processus d'adhésion")], + string="Type de process", + ) diff --git a/report/report_scop_adhesion.xml b/report/report_scop_adhesion.xml index 9c894df..89f1e1e 100644 --- a/report/report_scop_adhesion.xml +++ b/report/report_scop_adhesion.xml @@ -8,9 +8,7 @@ <div class="page" style="font-size: 16px;"> <div class="row"> <div class="col-6 offset-6"> - <span - t-field="o.name" - /><br /> + <span t-field="o.name" /><br /> <span t-field="o.street" /><br /> <t t-if="o.street2"><span t-field="o.street2" /><br /></t> <t t-if="o.street3"><span t-field="o.street3" /><br /></t> diff --git a/views/res_partner.xml b/views/res_partner.xml index 0455b7a..a11c5bd 100644 --- a/views/res_partner.xml +++ b/views/res_partner.xml @@ -38,12 +38,11 @@ <field name="inherit_id" ref="cgscop_partner.scop_contact_view_form" /> <field name="priority" eval="1" /> <field name="arch" type="xml"> - <page name='scop_contacts' position="before"> <page name="adhesion_processus1" string="Processus d'Adhésion" - attrs="{'invisible': ['|', ('is_cooperative', '!=', True), ('project_status','=','6_suivi')]}" + attrs="{'invisible': ['|', ('is_cooperative', '!=', True), ('project_status','=','4_suivi')]}" > <header> <button @@ -51,35 +50,35 @@ type="object" name="scop_lm_adhesion" class="btn-info" - attrs="{'invisible': ['|', ('project_status', '!=', '4_adhesion'), ('cooperative_form_id', 'in', (%(cgscop_partner.form_scic)d, %(cgscop_partner.form_coop47)d))]}" + attrs="{'invisible': ['|', ('membership_status', '!=', 'adhesion'), ('cooperative_form_id', 'in', (%(cgscop_partner.form_scic)d, %(cgscop_partner.form_coop47)d))]}" /> <button string="Dossier d'inscription" type="object" name="scop_lm_adhesion" class="btn-info" - attrs="{'invisible': ['|', ('project_status', '!=', '4_adhesion'), ('cooperative_form_id', 'not in', (%(cgscop_partner.form_scic)d, %(cgscop_partner.form_coop47)d))]}" + attrs="{'invisible': ['|', ('membership_status', '!=', 'adhesion'), ('cooperative_form_id', 'not in', (%(cgscop_partner.form_scic)d, %(cgscop_partner.form_coop47)d))]}" /> <button string="Données financières" type="object" name="scop_liasse_adhesion" class="btn-info" - attrs="{'invisible': [('project_status', '!=', '4_adhesion')]}" + attrs="{'invisible': [('membership_status', '!=', 'adhesion')]}" /> <button string="Modifier l'année du dossier" type="object" name="scop_change_year_dossier" class="btn-warning" - attrs="{'invisible': ['|', ('project_status', '!=', '4_adhesion'), ('lm_adhesion_id', '=', False)]}" + attrs="{'invisible': ['|', ('membership_status', '!=', 'adhesion'), ('lm_adhesion_id', '=', False)]}" groups="cgscop_partner.group_cg_administrator" /> </header> <div class="alert alert-danger" role="alert" - attrs="{'invisible':['|', '|', ('write_date', '=', False), ('list_logs', '=', False), ('project_status', 'not in', ('4_adhesion', '5_cg'))]}" + attrs="{'invisible':['|', '|', ('write_date', '=', False), ('list_logs', '=', False), ('project_status', '!=', '3_accompagnement')]}" > <field class="o_field_header" @@ -107,11 +106,11 @@ <field name="ca_previsionnel" widget="monetary" /> <field name="date_abort" - attrs="{'invisible':[('project_status','!=','7_abandonne')], 'required':[('project_status','=','7_abandonne')]}" + attrs="{'invisible':[('project_status','!=','5_abandonne')], 'required':[('project_status','=','5_abandonne')]}" /> <field name="abort_comments" - attrs="{'invisible':[('project_status','!=','7_abandonne')], 'required':[('project_status','=','7_abandonne')]}" + attrs="{'invisible':[('project_status','!=','5_abandonne')], 'required':[('project_status','=','5_abandonne')]}" /> </group> <group string="Dossier UE"> @@ -179,7 +178,7 @@ <page name="adhesion_processus2" string="Processus d'Adhésion" - attrs="{'invisible': ['|', ('is_cooperative', '!=', True), ('project_status','!=','6_suivi')]}" + attrs="{'invisible': ['|', ('is_cooperative', '!=', True), ('project_status','!=','4_suivi')]}" > <field name="project_invoicing_status_nb" invisible="1" /> <group col="3"> @@ -197,7 +196,7 @@ /> <field name="creation_delegate_id" - attrs="{'required':[('project_status','in',('3_accompagnement','4_adhesion', '5_cg'))]}" + attrs="{'required':['|', ('project_status','=','3_accompagnement'), ('membership_status','in',('adhesion', 'soumis_cg'))]}" options="{'no_create': True}" domain="[('ur_id', '=', ur_id)]" /> @@ -264,7 +263,15 @@ string="Suivi sans adhésion" type="object" name="scop_suivi_non_adhesion" - attrs="{'invisible':[('project_status','in',('5_cg', '6_suivi', '7_abandonne'))]}" + attrs="{'invisible':[('project_status','in',('4_suivi', '5_abandonne'))]}" + /> + <button + string="Suivi avec adhésion" + type="object" + name="scop_suivi_adhesion" + class="oe_highlight" + attrs="{'invisible':[('project_status','in',('4_suivi', '5_abandonne'))]}" + context="{'default_with_adhesion': True}" /> </xpath> diff --git a/views/scop_adhesion_file.xml b/views/scop_adhesion_file.xml index b4562fa..e68eaf4 100644 --- a/views/scop_adhesion_file.xml +++ b/views/scop_adhesion_file.xml @@ -11,16 +11,19 @@ <tree string="Document" editable="top"> <field name="name" /> <field name="coop_type_id" /> + <field name="type_process" /> <field name="is_compulsory" /> </tree> </field> </record> <record id="action_scop_adhesion_file_tree" model="ir.actions.act_window"> - <field name="name">Documents adhésion</field> + <field name="name">Documents</field> <field name="res_model">scop.adhesion.file</field> <field name="view_mode">tree</field> - <field name="help">Liste des documents pour l'adhésion.</field> + <field + name="help" + >Liste des documents pour l'adhésion et les projets de création</field> </record> <!-- MENUS --> diff --git a/wizard/scop_compulsory_fields_suivi_wizard.py b/wizard/scop_compulsory_fields_suivi_wizard.py index 59e7e4c..63db618 100644 --- a/wizard/scop_compulsory_fields_suivi_wizard.py +++ b/wizard/scop_compulsory_fields_suivi_wizard.py @@ -23,13 +23,17 @@ class ScopCompulsoryFieldsSuiviWizard(models.TransientModel): closeout_month = fields.Selection( related="partner_id.closeout_month", readonly=False ) + with_adhesion = fields.Boolean("Avec adhésion") + list_logs = fields.Text("Liste des erreurs") # ------------------------------------------------------ # Actions / Buttons # ------------------------------------------------------ def confirm(self): """ - Passe la coop en statut "6_suivi" + Passe la coop en statut "4_suivi" """ - self.partner_id.write({"project_status": "6_suivi"}) + self.partner_id.write({"project_status": "4_suivi"}) + if self.with_adhesion: + self.partner_id.write({"membership_status": "adhesion"}) return {"type": "ir.actions.act_window_close"} diff --git a/wizard/scop_compulsory_fields_suivi_wizard.xml b/wizard/scop_compulsory_fields_suivi_wizard.xml index f2a3c47..881ceff 100644 --- a/wizard/scop_compulsory_fields_suivi_wizard.xml +++ b/wizard/scop_compulsory_fields_suivi_wizard.xml @@ -12,6 +12,18 @@ <field name="model">scop.compulsory.fields.suivi.wizard</field> <field name="arch" type="xml"> <form string="Confirmer les champs obligatoires"> + <div + class="alert alert-danger" + role="alert" + attrs="{'invisible':[('list_logs', '=', False)]}" + > + <field + class="o_field_header" + name="list_logs" + readonly="1" + widget="html" + /> + </div> <group> <field name="ur_id" @@ -28,13 +40,22 @@ <field name="capital" required="1" /> <field name="first_closeout" required="1" /> <field name="closeout_month" required="1" /> + <field name="with_adhesion" invisible="1" /> </group> <footer> <button name="confirm" type="object" - string="Valider" + string="Valider sans adhésion" + class="oe_highlight" + attrs="{'invisible':['|', ('with_adhesion','=',True),('list_logs', '=', False)]}" + /> + <button + name="confirm" + type="object" + string="Valider avec adhésion" class="oe_highlight" + attrs="{'invisible':['|', ('with_adhesion','=',False), ('list_logs', '=', False)]}" /> <button special="cancel" string="Annuler" /> </footer> -- GitLab