From 61cbc936bbe801c1285c0d0a8f515e23c8d00789 Mon Sep 17 00:00:00 2001 From: esam Date: Wed, 31 Dec 2025 17:01:24 -0500 Subject: [PATCH] att --- .../odex25_annual_purchase/i18n/ar_001.po | 5 ++ .../models/annual_request.py | 62 +++++++++++++++---- .../views/annual_request_views.xml | 8 +-- 3 files changed, 58 insertions(+), 17 deletions(-) diff --git a/odex25_purchase/odex25_annual_purchase/i18n/ar_001.po b/odex25_purchase/odex25_annual_purchase/i18n/ar_001.po index 7ccd40633..bfa1a1603 100644 --- a/odex25_purchase/odex25_annual_purchase/i18n/ar_001.po +++ b/odex25_purchase/odex25_annual_purchase/i18n/ar_001.po @@ -1451,3 +1451,8 @@ msgstr "" "
\n" "\n" " " + +#. module: odex25_annual_purchase +#: model:ir.model.fields.selection,name:odex25_annual_purchase.selection__odx_annual_request__state__manprocurement +msgid "Purchasing Manager" +msgstr "رئيس قسم المشتريات" diff --git a/odex25_purchase/odex25_annual_purchase/models/annual_request.py b/odex25_purchase/odex25_annual_purchase/models/annual_request.py index 33ad98445..f220320d3 100644 --- a/odex25_purchase/odex25_annual_purchase/models/annual_request.py +++ b/odex25_purchase/odex25_annual_purchase/models/annual_request.py @@ -5,7 +5,7 @@ from datetime import datetime STATES = [ ('draft', 'Draft'), - ('to_manager', 'Waiting Manager'), + ('manprocurement', 'Purchasing Manager'), ('rejected_by_committee', 'Rejected by Committee'), ('procurement', 'Purchasing'), ('committee', 'Committee Review'), @@ -298,21 +298,57 @@ class AnnualPurchaseRequest(models.Model): def action_send(self): self._check_lines() for rec in self: - rec.write({'state': 'to_manager'}) manager = rec.sudo().employee_id.parent_id - if manager and manager.user_id and manager.user_id.email: - try: - template = self.env.ref('odex25_annual_purchase.email_template_direct_manager_x') + if manager: + if manager.user_id.id == rec.env.uid: + rec.write({'state': 'manprocurement'}) + purchase_group = self.env.ref('purchase.group_purchase_manager') + managers = self.env['res.users'].search([ + ('groups_id', '=', purchase_group.id), + ('email', '!=', False) + ]) + if managers: + try: + 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.send_mail(rec.id, force_send=True, email_values=mail_values) - except Exception as e: - pass + 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, email_values=mail_values) + except Exception as e: + pass + else: + raise UserError( + _("Sorry, The Approval For The Direct Manager '%s' Only !") % (rec.employee_id.parent_id.name)) else: - pass + rec.write({'state': 'manprocurement'}) + purchase_group = self.env.ref('purchase.group_purchase_manager') + managers = self.env['res.users'].search([ + ('groups_id', '=', purchase_group.id), + ('email', '!=', False) + ]) + if managers: + try: + 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, email_values=mail_values) + except Exception as e: + pass + def action_to_draft(self): for rec in self: rec.write({'state': 'draft'}) diff --git a/odex25_purchase/odex25_annual_purchase/views/annual_request_views.xml b/odex25_purchase/odex25_annual_purchase/views/annual_request_views.xml index 3eeb63532..efb3d2942 100644 --- a/odex25_purchase/odex25_annual_purchase/views/annual_request_views.xml +++ b/odex25_purchase/odex25_annual_purchase/views/annual_request_views.xml @@ -25,8 +25,8 @@