diff --git a/odex25_purchase/purchase_requisition_custom/models/account_payment.py b/odex25_purchase/purchase_requisition_custom/models/account_payment.py index b5e9e92a9..41a572f41 100644 --- a/odex25_purchase/purchase_requisition_custom/models/account_payment.py +++ b/odex25_purchase/purchase_requisition_custom/models/account_payment.py @@ -5,58 +5,55 @@ from odoo.exceptions import AccessError class AccountPayment(models.Model): _inherit = 'account.payment' - # def _is_authorized_to_notify(self): - # - # user = self.env.user - # - # authorized_groups = [ - # 'account.group_account_manager', - # 'account.group_account_invoice', - # # 'purchase.group_purchase_manager', - # ] - # - # for group_xml_id in authorized_groups: - # if user.has_group(group_xml_id): - # return True - # - # return False - # - # def action_notify_payment(self, payment): - # # Check authorization before sending notification - # if not self._is_authorized_to_notify(): - # return - # - # # Prepare notification content - # subject = _('Payment Notification') + ' - {}'.format(payment.partner_id.name) - # message = '{} '.format(payment.partner_id.name) + _('is successfully paid.') + '\n' + _( - # 'Payment Amount: ') + '{}'.format(payment.amount) + '\n' + _('Ref: ') + '{}'.format(payment.ref) + '\n' + _( - # 'On Date: ') + '{}'.format(payment.date) - # - # # Get recipients from the notification group, excluding purchase managers - # recipient_group = self.env.ref('purchase_requisition_custom.group_receive_payment_notification') - # excluded_group = self.env.ref('purchase.group_purchase_manager') - # - # # Filter out users who belong to the excluded group - # partner_ids = recipient_group.users.filtered( - # lambda u: u not in excluded_group.users - # ).mapped('partner_id').ids - # - # # Send notification only to filtered recipients - # if partner_ids: - # author_id = self.env.user.partner_id.id or None - # self.env.user.partner_id.message_post( - # type="notification", - # subject=subject, - # body=message, - # author_id=author_id, - # partner_ids=partner_ids, - # subtype_xmlid="mail.mt_comment" - # ) - # - # @api.model - # def create(self, vals): - # res = super(AccountPayment, self).create(vals) - # # print("Hi payment!", res.amount) - # self.action_notify_payment(res) - # - # return res + def _is_authorized_to_notify(self): + + user = self.env.user + + authorized_groups = [ + 'account.group_account_manager', + 'account.group_account_invoice', + # 'purchase.group_purchase_manager', + ] + + for group_xml_id in authorized_groups: + if user.has_group(group_xml_id): + return True + + return False + + def action_notify_payment(self, payment): + # Check authorization before sending notification + if not self._is_authorized_to_notify(): + return + + # Prepare notification content + subject = _('Payment Notification') + ' - {}'.format(payment.partner_id.name) + message = '{} '.format(payment.partner_id.name) + _('is successfully paid.') + '\n' + _( + 'Payment Amount: ') + '{}'.format(payment.amount) + '\n' + _('Ref: ') + '{}'.format(payment.ref) + '\n' + _( + 'On Date: ') + '{}'.format(payment.date) + + # Get recipients from the notification group only + recipient_group = self.env.ref('purchase_requisition_custom.group_receive_payment_notification') + + # Get all users from the notification group without any exclusions + partner_ids = recipient_group.users.mapped('partner_id').ids + + # Send notification only to filtered recipients + if partner_ids: + author_id = self.env.user.partner_id.id or None + self.env.user.partner_id.message_post( + type="notification", + subject=subject, + body=message, + author_id=author_id, + partner_ids=partner_ids, + subtype_xmlid="mail.mt_comment" + ) + + @api.model + def create(self, vals): + res = super(AccountPayment, self).create(vals) + # print("Hi payment!", res.amount) + self.action_notify_payment(res) + + return res diff --git a/odex25_purchase/purchase_requisition_custom/models/account_res.py b/odex25_purchase/purchase_requisition_custom/models/account_res.py index 59b97012d..35ead9f66 100644 --- a/odex25_purchase/purchase_requisition_custom/models/account_res.py +++ b/odex25_purchase/purchase_requisition_custom/models/account_res.py @@ -7,61 +7,58 @@ class AccountPayment(models.Model): _inherit = 'account.payment' - # def _is_authorized_to_notify(self): - # """ - # Check if the current user is authorized to send payment notifications. - # Returns True if user belongs to authorized groups. - # """ - # user = self.env.user - # - # # Define authorized groups (users who can send payment notifications) - # authorized_groups = [ - # 'account.group_account_manager', # Account Manager - # 'account.group_account_invoice', # Billing/Invoicing - # # 'purchase.group_purchase_manager', # Purchase Manager - Excluded - # ] - # - # # Check if user belongs to any authorized group - # for group_xml_id in authorized_groups: - # if user.has_group(group_xml_id): - # return True - # - # return False - # - # def action_notify_payment(self, payment): - # # Check authorization before sending notification - # if not self._is_authorized_to_notify(): - # return - # - # # Prepare notification content - # subject = _('Payment Notification') + ' - {}'.format(payment.partner_id.name) - # message = '{} '.format(payment.partner_id.name) + _('is successfully paid.') + '\n' + _('Payment Amount: ') + '{}'.format(payment.amount) + '\n' + _('Ref: ') + '{}'.format(payment.ref) + '\n' + _('On Date: ') + '{}'.format(payment.date) - # - # # Get recipients from the notification group, excluding purchase managers - # recipient_group = self.env.ref('purchase_requisition_custom.group_receive_payment_notification') - # excluded_group = self.env.ref('purchase.group_purchase_manager') - # - # # Filter out users who belong to the excluded group - # partner_ids = recipient_group.users.filtered( - # lambda u: u not in excluded_group.users - # ).mapped('partner_id').ids - # - # # Send notification only to filtered recipients - # if partner_ids: - # author_id = self.env.user.partner_id.id or None - # self.env.user.partner_id.message_post( - # type="notification", - # subject=subject, - # body=message, - # author_id=author_id, - # partner_ids=partner_ids, - # subtype_xmlid="mail.mt_comment" - # ) - # - # @api.model - # def create(self, vals): - # res = super(AccountPayment, self).create(vals) - # # print("Hi payment!", res.amount) - # self.action_notify_payment(res) - # - # return res \ No newline at end of file + def _is_authorized_to_notify(self): + """ + Check if the current user is authorized to send payment notifications. + Returns True if user belongs to authorized groups. + """ + user = self.env.user + + # Define authorized groups (users who can send payment notifications) + authorized_groups = [ + 'account.group_account_manager', # Account Manager + 'account.group_account_invoice', # Billing/Invoicing + # 'purchase.group_purchase_manager', # Purchase Manager - Excluded + ] + + # Check if user belongs to any authorized group + for group_xml_id in authorized_groups: + if user.has_group(group_xml_id): + return True + + return False + + def action_notify_payment(self, payment): + # Check authorization before sending notification + if not self._is_authorized_to_notify(): + return + + # Prepare notification content + subject = _('Payment Notification') + ' - {}'.format(payment.partner_id.name) + message = '{} '.format(payment.partner_id.name) + _('is successfully paid.') + '\n' + _('Payment Amount: ') + '{}'.format(payment.amount) + '\n' + _('Ref: ') + '{}'.format(payment.ref) + '\n' + _('On Date: ') + '{}'.format(payment.date) + + # Get recipients from the notification group only + recipient_group = self.env.ref('purchase_requisition_custom.group_receive_payment_notification') + + # Get all users from the notification group without any exclusions + partner_ids = recipient_group.users.mapped('partner_id').ids + + # Send notification only to filtered recipients + if partner_ids: + author_id = self.env.user.partner_id.id or None + self.env.user.partner_id.message_post( + type="notification", + subject=subject, + body=message, + author_id=author_id, + partner_ids=partner_ids, + subtype_xmlid="mail.mt_comment" + ) + + @api.model + def create(self, vals): + res = super(AccountPayment, self).create(vals) + # print("Hi payment!", res.amount) + self.action_notify_payment(res) + + return res \ No newline at end of file