From 512708528e6b4cf837c43eb8f44f99414f4365e6 Mon Sep 17 00:00:00 2001 From: esam Date: Sun, 28 Dec 2025 17:51:55 -0500 Subject: [PATCH 1/2] email_tem --- odex25_purchase/odex25_annual_purchase/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/odex25_purchase/odex25_annual_purchase/__manifest__.py b/odex25_purchase/odex25_annual_purchase/__manifest__.py index fc5cb08e3..dde7c8b0b 100644 --- a/odex25_purchase/odex25_annual_purchase/__manifest__.py +++ b/odex25_purchase/odex25_annual_purchase/__manifest__.py @@ -15,11 +15,11 @@ "views/annual_request_views.xml", "views/addendum_views.xml", "views/purchase_requisition.xml", + "views/report_annual_rfq.xml", "data/mail_activity.xml", "data/new_mail.xml", "views/menu.xml", "views/annual_rfq_views.xml", - "views/report_annual_rfq.xml", "data/mail_template_annual_rfq.xml", 'data/mail_direct.xml', "views/select_reason_rfq_views.xml", From 7a071b698ee6bbd4609a437cf339622fead853d1 Mon Sep 17 00:00:00 2001 From: esam Date: Sun, 28 Dec 2025 18:21:19 -0500 Subject: [PATCH 2/2] email_tem --- .../models/annual_request.py | 55 ++++++++++++------- .../models/annual_rfq.py | 22 +++++--- 2 files changed, 48 insertions(+), 29 deletions(-) diff --git a/odex25_purchase/odex25_annual_purchase/models/annual_request.py b/odex25_purchase/odex25_annual_purchase/models/annual_request.py index 71be5245a..33ad98445 100644 --- a/odex25_purchase/odex25_annual_purchase/models/annual_request.py +++ b/odex25_purchase/odex25_annual_purchase/models/annual_request.py @@ -303,13 +303,16 @@ class AnnualPurchaseRequest(models.Model): if manager and manager.user_id and manager.user_id.email: try: template = self.env.ref('odex25_annual_purchase.email_template_direct_manager_x') - template.send_mail(rec.id, force_send=True) - rec.message_post(body=_("Email sent to Direct Manager: %s") % manager.user_id.name) - except Exception as e: - rec.message_post(body=_("Failed to send email: %s") % str(e)) - else: - rec.message_post(body=_("No direct manager email found")) + mail_values = { + 'model': None, + 'res_id': None, + } + template.send_mail(rec.id, force_send=True, email_values=mail_values) + except Exception as e: + pass + else: + pass def action_to_draft(self): for rec in self: rec.write({'state': 'draft'}) @@ -330,13 +333,17 @@ class AnnualPurchaseRequest(models.Model): template = self.env.ref('odex25_annual_purchase.email_template_purchase_manager') first_manager = managers[0] cc_emails = ','.join(managers[1:].mapped('email')) if len(managers) > 1 else '' + + mail_values = { + 'model': None, + 'res_id': None, + } template.with_context( default_email_to=first_manager.email, default_email_cc=cc_emails - ).send_mail(rec.id, force_send=True) - rec.message_post(body=_("Email sent to %s Purchase Manager(s)") % len(managers)) + ).send_mail(rec.id, force_send=True,email_values=mail_values) except Exception as e: - rec.message_post(body=_("Failed to send email: %s") % str(e)) + pass else: raise UserError( _("Sorry, The Approval For The Direct Manager '%s' Only !") % (rec.employee_id.parent_id.name)) @@ -352,13 +359,16 @@ class AnnualPurchaseRequest(models.Model): template = self.env.ref('odex25_annual_purchase.email_template_purchase_manager') first_manager = managers[0] cc_emails = ','.join(managers[1:].mapped('email')) if len(managers) > 1 else '' + mail_values = { + 'model': None, + 'res_id': None, + } template.with_context( default_email_to=first_manager.email, default_email_cc=cc_emails - ).send_mail(rec.id, force_send=True) - rec.message_post(body=_("Email sent to %s Purchase Manager(s)") % len(managers)) + ).send_mail(rec.id, force_send=True,email_values=mail_values) except Exception as e: - rec.message_post(body=_("Failed to send email: %s") % str(e)) + pass def action_manager_reject(self): self.ensure_one() @@ -383,19 +393,19 @@ class AnnualPurchaseRequest(models.Model): template = self.env.ref('odex25_annual_purchase.email_template_committee_members') sent_count = 0 - + mail_values = { + 'model': None, + 'res_id': None, + } for member in rec.committe_members: if member.email: try: template.with_context( default_email_to=member.email - ).send_mail(rec.id, force_send=True) + ).send_mail(rec.id, force_send=True,email_values=mail_values) sent_count += 1 except Exception as e: - rec.message_post(body=_("Failed to send to %s: %s") % (member.name, str(e))) - - rec.message_post( - body=_("Emails sent to %s/%s committee members") % (sent_count, len(rec.committe_members))) + pass else: raise UserError("لا يمكن الإرسال إلى اللجنة لأن عدد RFQs يساوي صفر.") @@ -425,14 +435,17 @@ class AnnualPurchaseRequest(models.Model): try: template = self.env.ref('odex25_annual_purchase.email_template_general_manager') first_manager = managers[0] + mail_values = { + 'model': None, + 'res_id': None, + } cc_emails = ','.join(managers[1:].mapped('email')) if len(managers) > 1 else '' template.with_context( default_email_to=first_manager.email, default_email_cc=cc_emails - ).send_mail(self.id, force_send=True) - self.message_post(body=_("Email sent to %s General Manager(s)") % len(managers)) + ).send_mail(self.id, force_send=True,email_values=mail_values) except Exception as e: - self.message_post(body=_("Failed to send email: %s") % str(e)) + pass else: self.write({'state': 'purchase'}) diff --git a/odex25_purchase/odex25_annual_purchase/models/annual_rfq.py b/odex25_purchase/odex25_annual_purchase/models/annual_rfq.py index 5d7385023..8b805efc1 100644 --- a/odex25_purchase/odex25_annual_purchase/models/annual_rfq.py +++ b/odex25_purchase/odex25_annual_purchase/models/annual_rfq.py @@ -434,15 +434,18 @@ class PurchaseRFQ(models.Model): try: template = self.env.ref('odex25_annual_purchase.email_template_services_manager') first_manager = managers[0] + mail_values = { + 'model': None, + 'res_id': None, + } cc_emails = ','.join(managers[1:].mapped('email')) if len(managers) > 1 else '' template.with_context( default_email_to=first_manager.email, default_email_cc=cc_emails - ).send_mail(rec.source_request_ref.id, force_send=True) - rec.source_request_ref.message_post( - body=_("Email sent to %s Services Manager(s)") % len(managers)) + ).send_mail(rec.source_request_ref.id, force_send=True,email_values=mail_values) + except Exception as e: - rec.source_request_ref.message_post(body=_("Failed to send email: %s") % str(e)) + pass elif rec.source_request_ref.seo_approve: rec.source_request_ref.state = 'ceo' gm_group = self.env.ref('hr_base.group_general_manager') @@ -454,15 +457,18 @@ class PurchaseRFQ(models.Model): try: template = self.env.ref('odex25_annual_purchase.email_template_general_manager') first_manager = managers[0] + mail_values = { + 'model': None, + 'res_id': None, + } cc_emails = ','.join(managers[1:].mapped('email')) if len(managers) > 1 else '' template.with_context( default_email_to=first_manager.email, default_email_cc=cc_emails - ).send_mail(rec.source_request_ref.id, force_send=True) - rec.source_request_ref.message_post( - body=_("Email sent to %s General Manager(s)") % len(managers)) + ).send_mail(rec.source_request_ref.id, force_send=True,email_values=mail_values) + except Exception as e: - rec.source_request_ref.message_post(body=_("Failed to send email: %s") % str(e)) + pass else: rec.source_request_ref.state = 'purchase' else: