This commit is contained in:
Mazen Abdo 2025-10-29 15:33:54 +03:00
parent 42843ca389
commit fc9221ea4b
2 changed files with 113 additions and 113 deletions

View File

@ -5,58 +5,58 @@ 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, 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

View File

@ -7,61 +7,61 @@ 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
# 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