diff --git a/__manifest__.py b/__manifest__.py index c84d186c1e2235031b31c35f39589786eca04b6a..554ca462191050429349cb057a7e6bd29cc15594 100755 --- a/__manifest__.py +++ b/__manifest__.py @@ -16,6 +16,7 @@ "datas/mail_message_subtype.xml", "datas/mail_data.xml", "report/report_invoice_adhesion.xml", + "views/res_partner.xml", "views/scop_adhesion_file.xml", ], } diff --git a/models/res_partner.py b/models/res_partner.py index 977ed11c66851016c8f647784ac97bbaea5f6906..ef270816793b33001ea7f0e501b92151e5e162de 100644 --- a/models/res_partner.py +++ b/models/res_partner.py @@ -1,12 +1,15 @@ # © 2021 Le Filament (<http://www.le-filament.com>) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +from pytz import timezone from odoo import models, api, fields class ScopAlfrescoAdhesionPartner(models.Model): _inherit = 'res.partner' + log_missing_docs = fields.Text('Documents manquants') + # ------------------------------------------------------ # Actions # ------------------------------------------------------ @@ -62,6 +65,32 @@ class ScopAlfrescoAdhesionPartner(models.Model): 'context': ctx, } + def check_docs_adhesion(self): + compulsory_docs = self.get_compulsory_docs() + missing_docs = self.check_compulsory_docs() + html = str() + for doc in compulsory_docs: + html += "<input type='checkbox'" + if doc.name not in missing_docs: + html += "checked" + html += "/> " + doc.name + "<br/>" + local_tz = timezone('Europe/Paris') + utc_tz = timezone('UTC') + html += "<hr/>Vérifié le " + '<strong>' + utc_tz.localize( + fields.Datetime.now()).astimezone(local_tz).strftime( + "%d/%m/%Y à %-H:%M") + \ + '</strong>' + self.log_missing_docs = html + + # ------------------------------------------------------ + # Business method + # ------------------------------------------------------ + def get_compulsory_docs(self): + return self.env['scop.adhesion.file'].search([ + ('coop_type_id', '=', self.cooperative_form_id.id), + ('is_compulsory', '=', True) + ]) + # ------------------------------------------------------ # Override parent # ------------------------------------------------------ @@ -125,22 +154,18 @@ class ScopAlfrescoAdhesionPartner(models.Model): Override function to check docs with cmis query :return: """ - errors = '' - compulsory_docs = self.env['scop.adhesion.file'].search([ - ('coop_type_id', '=', self.cooperative_form_id.id), - ('is_compulsory', '=', True) - ]) + errors = list() + compulsory_docs = self.get_compulsory_docs() loaded_docs = self.env['scop.adhesion.file'].\ compulsory_doc_cmis_query(self) compulsory_docs_list = compulsory_docs.mapped(lambda d: {'name': d.name, 'metadata': d.type_doc}) loaded_docs_list = list(map(lambda d: d.properties.get('crm:type'), loaded_docs)) - for madatory_doc in compulsory_docs_list: - if madatory_doc.get('metadata') not in loaded_docs_list: - errors += "<li>" + madatory_doc.get('name') + "</li>" + for mandatory_doc in compulsory_docs_list: + if mandatory_doc.get('metadata') not in loaded_docs_list: + errors.append(mandatory_doc.get('name')) if errors: - res = '<hr/><strong>Documents manquants :</strong><ul>' + errors + '</ul>' - return res + return errors else: - return str() + return False diff --git a/views/res_partner.xml b/views/res_partner.xml new file mode 100644 index 0000000000000000000000000000000000000000..0f82f5878650597a2ae24a3f7ab058fcd506211a --- /dev/null +++ b/views/res_partner.xml @@ -0,0 +1,25 @@ +<?xml version="1.0"?> +<!-- Copyright 2019 Le Filament + License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). --> + +<odoo> + <data> + + <!-- FORM --> + <record id="res_partner_scop_adhesion_alfodoo_view_form_inherit" model="ir.ui.view"> + <field name="name">res.partner.scop.adhesion.view.form.inherit</field> + <field name="model">res.partner</field> + <field name="inherit_id" ref="cgscop_partner_alfodoo.res_partner_alfresco_view_form_inherit"/> + <field name="arch" type="xml"> + <xpath expr="//field[@name='partner_cmis_folder']" position="before"> + <button string="Vérifier la liste des docs" type="object" name="check_docs_adhesion" class="btn-info mb-10" + attrs="{'invisible': [('project_status', '!=', '4_adhesion')]}"/> + <div class="alert alert-info mt16" role="alert" attrs="{'invisible':['|', '|', ('write_date', '=', False), ('log_missing_docs', '=', False), ('project_status', '!=', '4_adhesion')]}"> + <field class="o_field_header" name="log_missing_docs" readonly="1" widget="html"/> + </div> + </xpath> + </field> + </record> + + </data> +</odoo>