Multiple items showing for single barcode

This commit is contained in:
Rohit Waghchaure 2017-10-11 02:07:09 +05:30
parent 9bb81ee1cb
commit 3f309e1c20
2 changed files with 12 additions and 5 deletions

View File

@ -107,7 +107,7 @@ erpnext.pos.PointOfSale = class PointOfSale {
} }
}); });
this.payment.set_title() this.payment.set_title();
} }
this.payment.open_modal(); this.payment.open_modal();
} }

View File

@ -9,6 +9,8 @@ from frappe.utils.nestedset import get_root_of
def get_items(start, page_length, price_list, item_group, search_value=""): def get_items(start, page_length, price_list, item_group, search_value=""):
serial_no = "" serial_no = ""
batch_no = "" batch_no = ""
barcode = ""
item_code = search_value item_code = search_value
if not frappe.db.exists('Item Group', item_group): if not frappe.db.exists('Item Group', item_group):
item_group = get_root_of('Item Group') item_group = get_root_of('Item Group')
@ -24,7 +26,12 @@ def get_items(start, page_length, price_list, item_group, search_value=""):
if batch_no_data: if batch_no_data:
batch_no, item_code = 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']) 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 # locate function is used to sort by closest match from the beginning of the value
@ -62,12 +69,12 @@ def get_items(start, page_length, price_list, item_group, search_value=""):
return res return res
def get_conditions(item_code, serial_no, batch_no): def get_conditions(item_code, serial_no, batch_no, barcode):
if serial_no or batch_no: if serial_no or batch_no or barcode:
return frappe.db.escape(item_code), "i.item_code = %(item_code)s" return frappe.db.escape(item_code), "i.item_code = %(item_code)s"
condition = """(i.item_code like %(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 return '%%%s%%'%(frappe.db.escape(item_code)), condition