From 89a0e9c2453ba4eef4158477db537771cdc9ed70 Mon Sep 17 00:00:00 2001 From: rohitwaghchaure Date: Mon, 11 Dec 2023 10:35:31 +0530 Subject: [PATCH] fix: not able to make serial and batch using csv import (#38659) --- .../serial_and_batch_bundle.js | 2 +- .../serial_and_batch_bundle.py | 36 +++++++++++++++++-- .../serial_and_batch_entry.json | 4 +-- 3 files changed, 36 insertions(+), 6 deletions(-) diff --git a/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.js b/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.js index cda444510a..9f01ee9ae6 100644 --- a/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.js +++ b/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.js @@ -121,7 +121,7 @@ frappe.ui.form.on('Serial and Batch Bundle', { frappe.throw(__("Please attach CSV file")); } - if (frm.doc.has_serial_no && !prompt_data.using_csv_file && !prompt_data.serial_nos) { + if (frm.doc.has_serial_no && !prompt_data.csv_file && !prompt_data.serial_nos) { frappe.throw(__("Please enter serial nos")); } }, diff --git a/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py b/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py index 108a2e008d..67858815bb 100644 --- a/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py +++ b/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py @@ -511,6 +511,22 @@ class SerialandBatchBundle(Document): serial_batches = {} for row in self.entries: + if self.has_serial_no and not row.serial_no: + frappe.throw( + _("At row {0}: Serial No is mandatory for Item {1}").format( + bold(row.idx), bold(self.item_code) + ), + title=_("Serial No is mandatory"), + ) + + if self.has_batch_no and not row.batch_no: + frappe.throw( + _("At row {0}: Batch No is mandatory for Item {1}").format( + bold(row.idx), bold(self.item_code) + ), + title=_("Batch No is mandatory"), + ) + if row.serial_no: serial_nos.append(row.serial_no) @@ -794,6 +810,9 @@ def parse_csv_file_to_get_serial_batch(reader): if index == 0: has_serial_no = row[0] == "Serial No" has_batch_no = row[0] == "Batch No" + if not has_batch_no: + has_batch_no = row[1] == "Batch No" + continue if not row[0]: @@ -810,6 +829,13 @@ def parse_csv_file_to_get_serial_batch(reader): } ) + batch_nos.append( + { + "batch_no": row[1], + "qty": row[2], + } + ) + serial_nos.append(_dict) elif has_batch_no: batch_nos.append( @@ -845,6 +871,9 @@ def make_serial_nos(item_code, serial_nos): serial_nos_details = [] user = frappe.session.user for serial_no in serial_nos: + if frappe.db.exists("Serial No", serial_no): + continue + serial_nos_details.append( ( serial_no, @@ -875,7 +904,7 @@ def make_serial_nos(item_code, serial_nos): frappe.db.bulk_insert("Serial No", fields=fields, values=set(serial_nos_details)) - frappe.msgprint(_("Serial Nos are created successfully")) + frappe.msgprint(_("Serial Nos are created successfully"), alert=True) def make_batch_nos(item_code, batch_nos): @@ -886,6 +915,9 @@ def make_batch_nos(item_code, batch_nos): batch_nos_details = [] user = frappe.session.user for batch_no in batch_nos: + if frappe.db.exists("Batch", batch_no): + continue + batch_nos_details.append( (batch_no, batch_no, now(), now(), user, user, item.item_code, item.item_name, item.description) ) @@ -904,7 +936,7 @@ def make_batch_nos(item_code, batch_nos): frappe.db.bulk_insert("Batch", fields=fields, values=set(batch_nos_details)) - frappe.msgprint(_("Batch Nos are created successfully")) + frappe.msgprint(_("Batch Nos are created successfully"), alert=True) def parse_serial_nos(data): diff --git a/erpnext/stock/doctype/serial_and_batch_entry/serial_and_batch_entry.json b/erpnext/stock/doctype/serial_and_batch_entry/serial_and_batch_entry.json index 09565cbc8a..5de2c2ee65 100644 --- a/erpnext/stock/doctype/serial_and_batch_entry/serial_and_batch_entry.json +++ b/erpnext/stock/doctype/serial_and_batch_entry/serial_and_batch_entry.json @@ -27,7 +27,6 @@ "in_list_view": 1, "in_standard_filter": 1, "label": "Serial No", - "mandatory_depends_on": "eval:parent.has_serial_no == 1", "options": "Serial No", "search_index": 1 }, @@ -38,7 +37,6 @@ "in_list_view": 1, "in_standard_filter": 1, "label": "Batch No", - "mandatory_depends_on": "eval:parent.has_batch_no == 1", "options": "Batch", "search_index": 1 }, @@ -122,7 +120,7 @@ "index_web_pages_for_search": 1, "istable": 1, "links": [], - "modified": "2023-07-03 15:29:50.199075", + "modified": "2023-12-10 19:47:48.227772", "modified_by": "Administrator", "module": "Stock", "name": "Serial and Batch Entry",