From e37ba3f8cf376ed4eb0c4b884954b183c5573be3 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Wed, 9 Sep 2026 10:58:21 +0000 Subject: [PATCH] fix(selling): add email permission check on `send_emails` (backport #58935) (#58937) Co-authored-by: Diptanil Saha --- erpnext/selling/doctype/customer/customer.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/erpnext/selling/doctype/customer/customer.py b/erpnext/selling/doctype/customer/customer.py index 8245c75770a..fe06db02c55 100644 --- a/erpnext/selling/doctype/customer/customer.py +++ b/erpnext/selling/doctype/customer/customer.py @@ -609,11 +609,8 @@ def check_credit_limit(customer, company, ignore_outstanding_sales_order=False, # if the current user does not have permissions to override credit limit, # prompt them to send out an email to the controller users - frappe.msgprint( - message, - title=_("Credit Limit Crossed"), - raise_exception=1, - primary_action={ + primary_action = ( + { "label": "Send Email", "server_action": "erpnext.selling.doctype.customer.customer.send_emails", "hide_on_success": True, @@ -623,7 +620,16 @@ def check_credit_limit(customer, company, ignore_outstanding_sales_order=False, "credit_limit": credit_limit, "credit_controller_users_list": credit_controller_users, }, - }, + } + if frappe.has_permission("Customer", ptype="email", doc=customer) + else None + ) + + frappe.msgprint( + message, + title=_("Credit Limit Crossed"), + raise_exception=1, + primary_action=primary_action, ) @@ -631,6 +637,7 @@ def check_credit_limit(customer, company, ignore_outstanding_sales_order=False, def send_emails(args): args = json.loads(args) subject = _("Credit limit reached for customer {0}").format(args.get("customer")) + frappe.has_permission("Customer", ptype="email", doc=args.get("customer"), throw=True) message = _("Credit limit has been crossed for customer {0} ({1}/{2})").format( args.get("customer"), args.get("customer_outstanding"), args.get("credit_limit") )