diff --git a/__manifest__.py b/__manifest__.py index 87e26df1469ed485a4d604b46124c150664aa407..e4226b0c536611be2467f58d50e6e195cde12518 100755 --- a/__manifest__.py +++ b/__manifest__.py @@ -12,6 +12,7 @@ "cmis_field", ], "data": [ + "datas/mail_data.xml", "views/scop_adhesion_file.xml", ], } diff --git a/datas/mail_data.xml b/datas/mail_data.xml new file mode 100644 index 0000000000000000000000000000000000000000..836e31fa27950cc4abcd1b602509e3e8bfe556e5 --- /dev/null +++ b/datas/mail_data.xml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="utf-8"?> +<odoo> + <data noupdate="1"> + + <!-- Template and notification section --> + <record id="email_template_adhesion" model="mail.template"> + <field name="name">CG Scop - Mail adhésion CG</field> + <field name="model_id" ref="model_res_partner"/> + <field name="email_from">${object.env.user.email_formatted |safe}</field> + <field name="partner_to">${object.get_recipients_adhesion()}</field> + <field name="subject">Adhésion CG Scop</field> + <field name="body_html" type="html"> + <div style="margin: 0px; padding: 0px;"> + <p style="margin: 0px; padding: 0px; font-size: 13px;"> + <p>Chère Coopératrice, Cher Coopérateur,</p> + + <p>Merci pour votre adhésion ! Vous trouverez sur votre espace personnel votre courrier et facture d'adhésion.</p> + + <p>Si vous rencontrez des problèmes d'accès ou si vous ne savez pas comment vous connectez, n'hésitez pas à vous rapprocher de votre délégué qui pourra vous aider.</p> + + <p>Nous vous prions d'agréer, Chère Coopératrice, Cher Coopérateur, nos sentiments les meilleurs.</p> + + <p>Pour la CG Scop,</p> + + <p>Christophe GENTREAU</p> + <p>Directeur Administratif et Exploitation</p> + </p> + </div> + </field> + <field name="lang">${object.lang}</field> + <field name="user_signature" eval="False"/> + <field name="auto_delete" eval="False"/> + </record> + + </data> +</odoo> diff --git a/models/res_partner.py b/models/res_partner.py index 9f21e454b87f4c323f4bf5db81a3089d0cd113c2..b3bcea57a8354c1f0a45e96aa6635ffd82873e1c 100644 --- a/models/res_partner.py +++ b/models/res_partner.py @@ -22,7 +22,7 @@ class ScopAlfrescoAdhesionPartner(models.Model): # Actions # ------------------------------------------------------ @api.multi - def generate_alfresco_file(self, invoice_id): + def generate_alfresco_file(self): """ Ajoute un fichier sur la GED Alfresco @return: fonction get_partner_files() de res.partner @@ -41,7 +41,11 @@ class ScopAlfrescoAdhesionPartner(models.Model): ### # Invoice adhesion attachment - invoice_adhesion = self.env['account.invoice'].browse(invoice_id) + 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) @@ -108,13 +112,73 @@ class ScopAlfrescoAdhesionPartner(models.Model): self.alfresco_report_adhesion_file = \ file_report_adhesion.getObjectId() + # 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': False, + '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 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 records: lm records :param backend: lm backend :return: lm_cmis_folder objectId """ @@ -134,16 +198,22 @@ class ScopAlfrescoAdhesionPartner(models.Model): # ------------------------------------------------------ # 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() - invoice_adhesion_id = res['invoice_adhesion'] - self.generate_alfresco_file(invoice_adhesion_id.id) - return res + super(ScopAlfrescoAdhesionPartner, self).scop_valid_cg() + self.generate_alfresco_file() @api.multi def check_compulsory_docs(self):