fix: duplicate serial and batch bundle in stock entry and stock reco
diff --git a/erpnext/public/js/utils.js b/erpnext/public/js/utils.js
index 8478e20..980a4d2 100755
--- a/erpnext/public/js/utils.js
+++ b/erpnext/public/js/utils.js
@@ -51,38 +51,7 @@
},
setup_serial_or_batch_no: function () {
- let grid_row = cur_frm.open_grid_row();
- if (
- !grid_row ||
- !grid_row.grid_form.fields_dict.serial_no ||
- grid_row.grid_form.fields_dict.serial_no.get_status() !== "Write"
- )
- return;
-
- frappe.model.get_value(
- "Item",
- { name: grid_row.doc.item_code },
- ["has_serial_no", "has_batch_no"],
- ({ has_serial_no, has_batch_no }) => {
- Object.assign(grid_row.doc, { has_serial_no, has_batch_no });
-
- if (has_serial_no) {
- attach_selector_button(
- __("Add Serial No"),
- grid_row.grid_form.fields_dict.serial_no.$wrapper,
- this,
- grid_row
- );
- } else if (has_batch_no) {
- attach_selector_button(
- __("Pick Batch No"),
- grid_row.grid_form.fields_dict.batch_no.$wrapper,
- this,
- grid_row
- );
- }
- }
- );
+ // Deprecated in v15
},
route_to_adjustment_jv: (args) => {
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py
index feb0f64..9b66fb2 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.py
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.py
@@ -194,6 +194,7 @@
if self.work_order:
self.pro_doc = frappe.get_doc("Work Order", self.work_order)
+ self.validate_duplicate_serial_and_batch_bundle("items")
self.validate_posting_time()
self.validate_purpose()
self.validate_item()
diff --git a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
index ccd7f64..64a6b65 100644
--- a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
+++ b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
@@ -70,6 +70,7 @@
self.validate_posting_time()
self.set_current_serial_and_batch_bundle()
self.set_new_serial_and_batch_bundle()
+ self.validate_duplicate_serial_and_batch_bundle("items")
self.remove_items_with_no_change()
self.validate_data()
self.validate_expense_account()