diff --git a/models/res_partner.py b/models/res_partner.py index 40b3b4daffcac0d5d4adee54c77aaa873ffee825..6c22a79f58e3c8b2f50091bcb12649df309d2939 100644 --- a/models/res_partner.py +++ b/models/res_partner.py @@ -3,115 +3,14 @@ import base64 from odoo import models, api -from odoo import fields as odooFields -from odoo.addons.cmis_field import fields -from odoo.exceptions import UserError class ScopAlfrescoAdhesionPartner(models.Model): _inherit = 'res.partner' - alfresco_invoice_adhesion_file = odooFields.Char("Facture d'adhésion") - alfresco_report_adhesion_file = odooFields.Char("Courrier d'adhésion") - adhesion_cmis_folder = fields.CmisFolder( - allow_create=True, - allow_delete=False, - ) - # ------------------------------------------------------ # Actions # ------------------------------------------------------ - @api.multi - def generate_alfresco_file(self): - """ - Ajoute un fichier sur la GED Alfresco - @return: fonction get_partner_files() de res.partner - """ - # Get proof folder nodeRef - backend = self.env['cmis.backend'].search([], limit=1) - - # Create folder adhesion if needed - self._create_folder_adhesion(backend) - path_proj = backend.get_cmis_repository(). \ - getFolder(self.adhesion_cmis_folder).getPaths() - - path_n0 = path_proj - path = '/'.join(path_n0) - cmis_obj = backend.get_folder_by_path(path) - - ### - # Invoice adhesion attachment - invoice_adhesion = self._get_invoice_adhesion() - if not invoice_adhesion: - raise UserError( - "Pas de facture associée à cette adhésion !" - ) - invoice_adhesion = self.env.ref('account.account_invoices').\ - render_qweb_pdf(invoice_adhesion.id)[0] - invoice_adhesion = base64.b64encode(invoice_adhesion) - - name = 'Facture adhésion' - - invoice_adhesion_attachment = self.env['ir.attachment'].create({ - 'name': name, - 'type': 'binary', - 'datas': invoice_adhesion, - 'datas_fname': name + '.pdf', - 'store_fname': name, - 'res_model': self._name, - 'res_id': self.id, - 'mimetype': 'application/pdf' - }) - if not invoice_adhesion_attachment: - raise UserError( - "Erreur lors de la génération de la facture pour Alfresco") - - content_type = invoice_adhesion_attachment.mimetype - - file_invoice_adhesion = cmis_obj.createDocument( - name=invoice_adhesion_attachment.name, - properties={}, - contentFile=base64.b64decode(invoice_adhesion_attachment.datas), - contentType=content_type - ) - self.alfresco_invoice_adhesion_file = \ - file_invoice_adhesion.getObjectId() - - ### - # Report adhesion attachment - report_adhesion = self.env.ref( - 'cgscop_adhesion.cgscop_adhesion_report'). \ - render_qweb_pdf(self.id)[0] - report_adhesion = base64.b64encode(report_adhesion) - - name = "Courrier adhésion" - - report_adhesion_attachment = self.env['ir.attachment'].create({ - 'name': name, - 'type': 'binary', - 'datas': report_adhesion, - 'datas_fname': name + '.pdf', - 'store_fname': name, - 'res_model': self._name, - 'res_id': self.id, - 'mimetype': 'application/pdf' - }) - if not report_adhesion_attachment: - raise UserError( - "Erreur lors de la génération du courrier d'adhésion " - "pour Alfresco") - - content_type = report_adhesion_attachment.mimetype - - file_report_adhesion = cmis_obj.createDocument( - name=report_adhesion_attachment.name, - properties={}, - contentFile=base64.b64decode(report_adhesion_attachment.datas), - contentType=content_type - ) - self.alfresco_report_adhesion_file = \ - file_report_adhesion.getObjectId() - # Email def get_recipients_adhesion(self): """ @@ -155,46 +54,6 @@ class ScopAlfrescoAdhesionPartner(models.Model): 'context': ctx, } - # ------------------------------------------------------ - # Override Alfodoo - # ------------------------------------------------------ - def _get_invoice_adhesion(self): - """ - :return: Dernière facture de la coop avec article adhésion - """ - invoice = False - invoice_line_ids = self.env['account.invoice.line'].search([ - ('partner_id', '=', self.id), - ('product_id', '=', self.env.user.company_id.product_adhesion_id.id), - ]) - if invoice_line_ids: - invoice_ids = invoice_line_ids.mapped('invoice_id') - if invoice_ids: - invoice = invoice_ids.sorted(key='create_date')[-1] - return invoice - - # ------------------------------------------------------ - # Override Alfodoo - # ------------------------------------------------------ - def _create_folder_adhesion(self, backend): - """ - Récupère ou crée le répertoire Adhésions s'il n'existe pas - :param backend: lm backend - :return: lm_cmis_folder objectId - """ - # Check de si le répertoire existe - for partner in self: - # Si le répertoire parent n'existe pas on le crée - if not partner.partner_cmis_folder: - partner.create_cmis_folder() - # Récupération du path parent - parent_path = backend.get_cmis_repository().\ - getFolder(partner.partner_cmis_folder).getPaths() - path_parts = parent_path + ['Adhésion'] - path = '/'.join(path_parts) - # Création ou récupération du répertoire partner - partner.adhesion_cmis_folder = backend.get_folder_by_path(path) - # ------------------------------------------------------ # Override parent # ------------------------------------------------------ @@ -212,8 +71,29 @@ class ScopAlfrescoAdhesionPartner(models.Model): Inherit function to : - generate files on Alfresco """ - super(ScopAlfrescoAdhesionPartner, self).scop_valid_cg() - self.generate_alfresco_file() + res = super(ScopAlfrescoAdhesionPartner, self).scop_valid_cg() + # Create & store invoice + invoice_file = self.env.ref('account.account_invoices'). \ + render_qweb_pdf(res.id)[0] + # TODO: add correct type + self.push_alfresco_file( + file=invoice_file, + name="Facture d'Adhésion", + partner=self, + type='DAD',) + + # Create & store official doc + report_adhesion = self.env.ref( + 'cgscop_adhesion.cgscop_adhesion_report'). \ + render_qweb_pdf(self.id)[0] + #TODO: add correct type + self.push_alfresco_file( + file=report_adhesion, + name="Courrier d'Adhésion.pdf", + partner=self, + type='LDI') + + return True @api.multi def check_compulsory_docs(self):