fix: incorrect POS profile selected
diff --git a/erpnext/stock/get_item_details.py b/erpnext/stock/get_item_details.py
index 6d75314..4d8022c 100644
--- a/erpnext/stock/get_item_details.py
+++ b/erpnext/stock/get_item_details.py
@@ -667,28 +667,39 @@
@frappe.whitelist()
def get_pos_profile(company, pos_profile=None, user=None):
- if pos_profile:
- return frappe.get_cached_doc('POS Profile', pos_profile)
+ if pos_profile: return frappe.get_cached_doc('POS Profile', pos_profile)
if not user:
user = frappe.session['user']
+ condition = "pfu.user = %(user)s AND pfu.default=1"
+ if user and company:
+ condition = "pfu.user = %(user)s AND pf.company = %(company)s AND pfu.default=1"
+
pos_profile = frappe.db.sql("""SELECT pf.*
FROM
`tabPOS Profile` pf LEFT JOIN `tabPOS Profile User` pfu
ON
pf.name = pfu.parent
WHERE
- (
- (pfu.user = %(user)s AND pf.company = %(company)s AND pfu.default=1)
- OR (pfu.user = %(user)s AND pfu.default=1)
- OR (ifnull(pfu.user, '') = '' AND pf.company = %(company)s)
- ) AND pf.disabled = 0
- """, {
+ {cond} AND pf.disabled = 0
+ """.format(cond = condition), {
'user': user,
'company': company
}, as_dict=1)
+ if not pos_profile and company:
+ pos_profile = frappe.db.sql("""SELECT pf.*
+ FROM
+ `tabPOS Profile` pf LEFT JOIN `tabPOS Profile User` pfu
+ ON
+ pf.name = pfu.parent
+ WHERE
+ pf.company = %(company)s AND pf.disabled = 0
+ """, {
+ 'company': company
+ }, as_dict=1)
+
return pos_profile and pos_profile[0] or None
def get_serial_nos_by_fifo(args, sales_order=None):