fix: Displaying manufacturer part no along with manufacturer and added Manufacturers validation in Item master (#19066)

Manufacturer Link field options in Items Table of transactions will also display manufacturer part no.
Manufacturers table in Item master will check for duplicate entries.
This commit is contained in:
Marica 2019-09-16 19:44:28 +05:30 committed by Nabin Hait
parent 76df782006
commit bac4b93639
2 changed files with 17 additions and 10 deletions

View File

@ -440,17 +440,17 @@ def get_batch_numbers(doctype, txt, searchfield, start, page_len, filters):
@frappe.whitelist()
def item_manufacturer_query(doctype, txt, searchfield, start, page_len, filters):
search_txt = "{0}%".format(txt)
item_filters = [
['manufacturer', 'like', '%' + txt + '%'],
['item_code', '=', filters.get("item_code")]
]
item_filters = {
'manufacturer': ('like', search_txt),
'item_code': filters.get("item_code")
}
return frappe.get_all("Item Manufacturer",
fields = "manufacturer",
item_manufacturers = frappe.get_all(
"Item Manufacturer",
fields=["manufacturer", "manufacturer_part_no"],
filters=item_filters,
limit_start=start,
limit_page_length=page_len,
as_list=1
)
return item_manufacturers

View File

@ -125,6 +125,7 @@ class Item(WebsiteGenerator):
self.validate_auto_reorder_enabled_in_stock_settings()
self.cant_change()
self.update_show_in_website()
self.validate_manufacturer()
if not self.get("__islocal"):
self.old_item_group = frappe.db.get_value(self.doctype, self.name, "item_group")
@ -144,6 +145,13 @@ class Item(WebsiteGenerator):
if cint(frappe.db.get_single_value('Stock Settings', 'clean_description_html')):
self.description = clean_html(self.description)
def validate_manufacturer(self):
list_man = [(x.manufacturer, x.manufacturer_part_no) for x in self.get('manufacturers')]
set_man = set(list_man)
if len(list_man) != len(set_man):
frappe.throw(_("Duplicate entry in Manufacturers table"))
def validate_customer_provided_part(self):
if self.is_customer_provided_item:
if self.is_purchase_item:
@ -921,7 +929,6 @@ def validate_cancelled_item(item_code, docstatus=None, verbose=1):
msg = _("Item {0} is cancelled").format(item_code)
_msgprint(msg, verbose)
def _msgprint(msg, verbose):
if verbose:
msgprint(msg, raise_exception=True)