fix(accounts): set pos profile on invoices respecting user permissions (#58508)

(cherry picked from commit 9018573179)

# Conflicts:
#	erpnext/accounts/doctype/pos_profile/pos_profile.py
This commit is contained in:
Diptanil Saha
2026-08-27 22:06:36 +05:30
committed by Mergify
parent 5a518951e4
commit 1e2894a483
2 changed files with 44 additions and 0 deletions

View File

@@ -271,6 +271,7 @@ def pos_profile_query(doctype, txt, searchfield, start, page_len, filters):
user = frappe.session["user"]
company = filters.get("company") or frappe.defaults.get_user_default("company")
<<<<<<< HEAD
args = {
"user": user,
"start": start,
@@ -305,6 +306,42 @@ def pos_profile_query(doctype, txt, searchfield, start, page_len, filters):
and pf.name like %(txt)s
and pf.disabled = 0""",
args,
=======
allowed_pos_profiles = frappe.get_list("POS Profile", pluck="name")
if not allowed_pos_profiles:
return {}
pf = frappe.qb.DocType("POS Profile")
pfu = frappe.qb.DocType("POS Profile User")
pos_profile = (
frappe.qb.from_(pf)
.inner_join(pfu)
.on(pfu.parent == pf.name)
.select(pf.name)
.where((pfu.user == user) & (pf.company == company) & pf.name.like(f"%{txt}%") & (pf.disabled == 0))
.where(pf.name.isin(allowed_pos_profiles))
.limit(page_len)
.offset(start)
.run()
)
if not pos_profile:
pos_profile = (
frappe.qb.from_(pf)
.left_join(pfu)
.on(pf.name == pfu.parent)
.select(pf.name)
.where(
(pfu.user.isnull() | (pfu.user == ""))
& (pf.company == company)
& pf.name.like(f"%{txt}%")
& (pf.disabled == 0)
& (pf.name.isin(allowed_pos_profiles))
)
.run()
>>>>>>> 9018573 (fix(accounts): set pos profile on invoices respecting user permissions (#58508))
)
return pos_profile

View File

@@ -1418,6 +1418,11 @@ def get_pos_profile(company, pos_profile=None, user=None):
if not user:
user = frappe.session["user"]
allowed_pos_profiles = frappe.get_list("POS Profile", pluck="name")
if not allowed_pos_profiles:
return None
pf = frappe.qb.DocType("POS Profile")
pfu = frappe.qb.DocType("POS Profile User")
@@ -1427,6 +1432,7 @@ def get_pos_profile(company, pos_profile=None, user=None):
.on(pf.name == pfu.parent)
.select(pf.star)
.where((pfu.user == user) & (pfu.default == 1))
.where(pf.name.isin(allowed_pos_profiles))
)
if company:
@@ -1441,6 +1447,7 @@ def get_pos_profile(company, pos_profile=None, user=None):
.on(pf.name == pfu.parent)
.select(pf.star)
.where((pf.company == company) & (pf.disabled == 0))
.where(pf.name.isin(allowed_pos_profiles))
).run(as_dict=True)
return pos_profile and pos_profile[0] or None