Skip to content
Snippets Groups Projects
res_partner.py 4.64 KiB
Newer Older
  • Learn to ignore specific revisions
  • jordan's avatar
    jordan committed
    # © 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
    
    jordan's avatar
    jordan committed
    
    
    class ScopAlfrescoAdhesionPartner(models.Model):
        _inherit = 'res.partner'
    
        # ------------------------------------------------------
        # Actions
        # ------------------------------------------------------
    
    jordan's avatar
    jordan committed
        # 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,
    
    jordan's avatar
    jordan committed
                '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,
            }
    
    
    jordan's avatar
    jordan committed
        # ------------------------------------------------------
        # Override parent
        # ------------------------------------------------------
    
    jordan's avatar
    jordan committed
        @api.multi
        def scop_valid_cg_button(self):
            """
            Inherit button to send mail
            """
    
    jordan's avatar
    jordan committed
            super(ScopAlfrescoAdhesionPartner, self).scop_valid_cg_button()
    
    jordan's avatar
    jordan committed
            return self.send_mail_adhesion()
    
    
    jordan's avatar
    jordan committed
        @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()
    
                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)
                })
    
    
        @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([
    
    jordan's avatar
    jordan committed
                ('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>"
    
    
                res = '<hr/><strong>Documents manquants :</strong><u:>' + errors + '</ul>'