# © 2021 Le Filament (<http://www.le-filament.com>) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). from odoo import models, api, fields class ScopAlfrescoAdhesionPartner(models.Model): _inherit = 'res.partner' # ------------------------------------------------------ # Actions # ------------------------------------------------------ # Email def get_recipients_adhesion(self): """ Get recipients for email adhesion :return: """ recipient_ids = self.director_ids or self res = ','.join(map(lambda x: str(x), recipient_ids.ids)) return res @api.multi def send_mail_adhesion(self): """ Send mail adhésion to coop :return: """ self.ensure_one() template_id = self.env.ref( 'cgscop_alfresco_adhesion.email_template_adhesion') ir_model_data = self.env['ir.model.data'] try: compose_form_id = ir_model_data.get_object_reference( 'mail', 'email_compose_message_wizard_form')[1] except ValueError: compose_form_id = False ctx = { 'default_model': 'res.partner', 'default_res_id': self.id, 'default_use_template': True, 'default_template_id': template_id.id, 'default_composition_mode': 'comment', } return { 'type': 'ir.actions.act_window', 'view_type': 'form', 'view_mode': 'form', 'res_model': 'mail.compose.message', 'views': [(compose_form_id, 'form')], 'view_id': compose_form_id, 'target': 'new', 'context': ctx, } # ------------------------------------------------------ # Override parent # ------------------------------------------------------ @api.multi def scop_valid_cg_button(self): """ Inherit button to send mail """ super(ScopAlfrescoAdhesionPartner, self).scop_valid_cg_button() return self.send_mail_adhesion() @api.multi def scop_valid_cg(self): """ Inherit function to : - generate files on Alfresco """ res = super(ScopAlfrescoAdhesionPartner, self).scop_valid_cg() if not self.partner_cmis_folder: folder_coop = self.create_cmis_folder() else: folder_coop = self.partner_cmis_folder # Create & store Facture d'adhésion invoice_file = self.env.ref('account.account_invoices'). \ render_qweb_pdf(res.id)[0] self.push_alfresco_file( file=invoice_file, name="Facture d'Adhésion", folder=folder_coop, metadata={ 'cmis:objectTypeId': 'D:crm:document', 'cmis:secondaryObjectTypeIds': ['P:crm:organisme'], 'crm:type': 'FAD', 'crm:contexte': 'STD', 'crm:annee': str(fields.Datetime.now().year) }) # Create & store Courrier adhésion report_adhesion = self.env.ref( 'cgscop_adhesion.cgscop_adhesion_report'). \ render_qweb_pdf(self.id)[0] # TODO : Affecter bon type de doc ! self.push_alfresco_file( file=report_adhesion, name="Courrier d'Adhésion.pdf", folder=folder_coop, metadata={ 'cmis:objectTypeId': 'D:crm:document', 'cmis:secondaryObjectTypeIds': ['P:crm:organisme'], 'crm:type': 'LDI', 'crm:contexte': 'STD', 'crm:annee': str(fields.Datetime.now().year) }) return True @api.multi def check_compulsory_docs(self): """ 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) ]) 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>" if errors: res = '<hr/><strong>Documents manquants :</strong><u:>' + errors + '</ul>' return res else: return str()