Multiple items showing for single barcode
diff --git a/erpnext/selling/page/point_of_sale/point_of_sale.js b/erpnext/selling/page/point_of_sale/point_of_sale.js
index 1c43e39..8bbbc3f 100644
--- a/erpnext/selling/page/point_of_sale/point_of_sale.js
+++ b/erpnext/selling/page/point_of_sale/point_of_sale.js
@@ -107,7 +107,7 @@
}
});
- this.payment.set_title()
+ this.payment.set_title();
}
this.payment.open_modal();
}
diff --git a/erpnext/selling/page/point_of_sale/point_of_sale.py b/erpnext/selling/page/point_of_sale/point_of_sale.py
index 5694ad9..b92c653 100644
--- a/erpnext/selling/page/point_of_sale/point_of_sale.py
+++ b/erpnext/selling/page/point_of_sale/point_of_sale.py
@@ -9,6 +9,8 @@
def get_items(start, page_length, price_list, item_group, search_value=""):
serial_no = ""
batch_no = ""
+ barcode = ""
+
item_code = search_value
if not frappe.db.exists('Item Group', item_group):
item_group = get_root_of('Item Group')
@@ -24,7 +26,12 @@
if batch_no_data:
batch_no, item_code = batch_no_data
- item_code, condition = get_conditions(item_code, serial_no, batch_no)
+ if not serial_no and not batch_no:
+ barcode_data = frappe.db.get_value('Item', {'barcode': search_value}, ['name', 'barcode'])
+ if barcode_data:
+ item_code, barcode = barcode_data
+
+ item_code, condition = get_conditions(item_code, serial_no, batch_no, barcode)
lft, rgt = frappe.db.get_value('Item Group', item_group, ['lft', 'rgt'])
# locate function is used to sort by closest match from the beginning of the value
@@ -62,12 +69,12 @@
return res
-def get_conditions(item_code, serial_no, batch_no):
- if serial_no or batch_no:
+def get_conditions(item_code, serial_no, batch_no, barcode):
+ if serial_no or batch_no or barcode:
return frappe.db.escape(item_code), "i.item_code = %(item_code)s"
condition = """(i.item_code like %(item_code)s
- or i.item_name like %(item_code)s or i.barcode like %(item_code)s)"""
+ or i.item_name like %(item_code)s)"""
return '%%%s%%'%(frappe.db.escape(item_code)), condition