diff --git a/models/res_partner.py b/models/res_partner.py index 88163fe2e52ab05f622e418fa94dc3281bda1144..98259bb3af5175360a1224eb91e7f0b16db9b14d 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 9567c168a5be04bc45965ddca6b4abd7e99ab2d4..661d9ef5d49cf80440a77df6ec0ae4e733b728c1 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 9c894dfdd513d4d15790f6f38bccdf2e8eeb3f5c..89f1e1ee41c3af95388193e1a56ee38cf0b31280 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 0455b7a3a64109ccc9349b3e51adbfea35da2fae..a11c5bdf7b9e3e45cc9dab1fe44a9976467ab8a3 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 b4562fa0a453985616566d5dff63008169b9eb59..e68eaf44dc182f0a07a67260bc4dc4f5fcdf071f 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 59e7e4c1348977d6ab273ef5f94ea0c349911975..63db6181012bb9db436d5122bc6f2de2915f5188 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 f2a3c47f19b86d81c0a7431e87b8c6d4197ea7b1..881ceff782e5f692d1510e780bbb2ff430afc195 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>