diff --git a/odex25_purchase/purchase_requisition_custom/models/account_payment.py b/odex25_purchase/purchase_requisition_custom/models/account_payment.py index a2f61c262..d09d162fb 100644 --- a/odex25_purchase/purchase_requisition_custom/models/account_payment.py +++ b/odex25_purchase/purchase_requisition_custom/models/account_payment.py @@ -24,17 +24,34 @@ class AccountPayment(models.Model): 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) - group = 'purchase_requisition_custom.group_receive_payment_notification' - # author_id = payment.create_uid.partner_id.id or None - author_id = self.env.user.partner_id.id or None - self.env.user.partner_id.send_notification_message(subject=subject, body=message, author_id=author_id, - group=group) + + # 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): diff --git a/odex25_purchase/purchase_requisition_custom/models/account_res.py b/odex25_purchase/purchase_requisition_custom/models/account_res.py index be5237552..9a27849b2 100644 --- a/odex25_purchase/purchase_requisition_custom/models/account_res.py +++ b/odex25_purchase/purchase_requisition_custom/models/account_res.py @@ -18,7 +18,7 @@ class AccountPayment(models.Model): authorized_groups = [ 'account.group_account_manager', # Account Manager 'account.group_account_invoice', # Billing/Invoicing - 'purchase.group_purchase_manager', # Purchase Manager + # 'purchase.group_purchase_manager', # Purchase Manager - Excluded ] # Check if user belongs to any authorized group @@ -31,18 +31,32 @@ class AccountPayment(models.Model): def action_notify_payment(self, payment): # Check authorization before sending notification if not self._is_authorized_to_notify(): - # Unauthorized user - don't send notification - # You can optionally log this attempt - # _logger.warning('Unauthorized payment notification attempt by user: %s', self.env.user.name) return - # Send Notifications (only if authorized) + # 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) - group = 'purchase_requisition_custom.group_receive_payment_notification' - # author_id = payment.create_uid.partner_id.id or None - author_id = self.env.user.partner_id.id or None - self.env.user.partner_id.send_notification_message(subject=subject, body=message, author_id=author_id, group=group) + + # 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):