* fixes #8941: Better error message for duplicate items * gathers all non unique items instead of first encountered non unique item * renders errored items with `br` instead of `li`
This commit is contained in:
parent
eed0cee186
commit
26a39610ca
@ -244,6 +244,14 @@ class BOM(WebsiteGenerator):
|
|||||||
|
|
||||||
def validate_materials(self):
|
def validate_materials(self):
|
||||||
""" Validate raw material entries """
|
""" Validate raw material entries """
|
||||||
|
|
||||||
|
def get_duplicates(lst):
|
||||||
|
seen = set()
|
||||||
|
seen_add = seen.add
|
||||||
|
for item in lst:
|
||||||
|
if item.item_code in seen or seen_add(item.item_code):
|
||||||
|
yield item
|
||||||
|
|
||||||
if not self.get('items'):
|
if not self.get('items'):
|
||||||
frappe.throw(_("Raw Materials cannot be blank."))
|
frappe.throw(_("Raw Materials cannot be blank."))
|
||||||
check_list = []
|
check_list = []
|
||||||
@ -252,10 +260,16 @@ class BOM(WebsiteGenerator):
|
|||||||
validate_bom_no(m.item_code, m.bom_no)
|
validate_bom_no(m.item_code, m.bom_no)
|
||||||
if flt(m.qty) <= 0:
|
if flt(m.qty) <= 0:
|
||||||
frappe.throw(_("Quantity required for Item {0} in row {1}").format(m.item_code, m.idx))
|
frappe.throw(_("Quantity required for Item {0} in row {1}").format(m.item_code, m.idx))
|
||||||
check_list.append(cstr(m.item_code))
|
check_list.append(m)
|
||||||
unique_chk_list = set(check_list)
|
|
||||||
if len(unique_chk_list) != len(check_list):
|
duplicate_items = list(get_duplicates(check_list))
|
||||||
frappe.throw(_("Same item has been entered multiple times."))
|
if duplicate_items:
|
||||||
|
li = []
|
||||||
|
for i in duplicate_items:
|
||||||
|
li.append("{0} on row {1}".format(i.item_code, i.idx))
|
||||||
|
duplicate_list = '<br>' + '<br>'.join(li)
|
||||||
|
|
||||||
|
frappe.throw(_("Same item has been entered multiple times. {list}").format(list=duplicate_list))
|
||||||
|
|
||||||
def check_recursion(self):
|
def check_recursion(self):
|
||||||
""" Check whether recursion occurs in any bom"""
|
""" Check whether recursion occurs in any bom"""
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user