diff --git a/erpnext/accounts/doctype/pos_profile/pos_profile.py b/erpnext/accounts/doctype/pos_profile/pos_profile.py index beaee30e628..73a274f1731 100644 --- a/erpnext/accounts/doctype/pos_profile/pos_profile.py +++ b/erpnext/accounts/doctype/pos_profile/pos_profile.py @@ -280,40 +280,40 @@ 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") - args = { - "user": user, - "start": start, - "company": company, - "page_len": page_len, - "txt": "%%%s%%" % txt, - } + allowed_pos_profiles = frappe.get_list("POS Profile", pluck="name") - pos_profile = frappe.db.sql( - """select pf.name - from - `tabPOS Profile` pf, `tabPOS Profile User` pfu - where - pfu.parent = pf.name and pfu.user = %(user)s and pf.company = %(company)s - and (pf.name like %(txt)s) - and pf.disabled = 0 limit %(page_len)s offset %(start)s""", - args, + 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: - del args["user"] - - pos_profile = frappe.db.sql( - """select pf.name - from - `tabPOS Profile` pf left join `tabPOS Profile User` pfu - on - pf.name = pfu.parent - where - ifnull(pfu.user, '') = '' - and pf.company = %(company)s - and pf.name like %(txt)s - and pf.disabled = 0""", - args, + 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() ) return pos_profile diff --git a/erpnext/stock/get_item_details.py b/erpnext/stock/get_item_details.py index abbac9a7710..3abd46b1ba6 100644 --- a/erpnext/stock/get_item_details.py +++ b/erpnext/stock/get_item_details.py @@ -1522,6 +1522,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") @@ -1531,6 +1536,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: @@ -1545,6 +1551,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