diff --git a/erpnext/public/js/controllers/buying.js b/erpnext/public/js/controllers/buying.js
index 14ea2f8..87a6de0 100644
--- a/erpnext/public/js/controllers/buying.js
+++ b/erpnext/public/js/controllers/buying.js
@@ -363,9 +363,10 @@
 						new erpnext.SerialBatchPackageSelector(
 							me.frm, item, (r) => {
 								if (r) {
-									me.frm.refresh_fields();
-									frappe.model.set_value(cdt, cdn,
-										"serial_and_batch_bundle", r.name);
+									frappe.model.set_value(item.doctype, item.name, {
+										"serial_and_batch_bundle": r.name,
+										"qty": Math.abs(r.total_qty)
+									});
 								}
 							}
 						);
@@ -391,9 +392,10 @@
 						new erpnext.SerialBatchPackageSelector(
 							me.frm, item, (r) => {
 								if (r) {
-									me.frm.refresh_fields();
-									frappe.model.set_value(cdt, cdn,
-										"rejected_serial_and_batch_bundle", r.name);
+									frappe.model.set_value(item.doctype, item.name, {
+										"rejected_serial_and_batch_bundle": r.name,
+										"rejected_qty": Math.abs(r.total_qty)
+									});
 								}
 							}
 						);
diff --git a/erpnext/public/js/controllers/transaction.js b/erpnext/public/js/controllers/transaction.js
index 70c403b..6d05ec4 100644
--- a/erpnext/public/js/controllers/transaction.js
+++ b/erpnext/public/js/controllers/transaction.js
@@ -2329,9 +2329,10 @@
 
 		new erpnext.SerialBatchPackageSelector(frm, item_row, (r) => {
 			if (r) {
-				frm.refresh_fields();
-				frappe.model.set_value(item_row.doctype, item_row.name,
-					"serial_and_batch_bundle", r.name);
+				frappe.model.set_value(item_row.doctype, item_row.name, {
+					"serial_and_batch_bundle": r.name,
+					"qty": Math.abs(r.total_qty)
+				});
 			}
 		});
 	});
diff --git a/erpnext/public/js/utils/serial_no_batch_selector.js b/erpnext/public/js/utils/serial_no_batch_selector.js
index b893231..8c7b2f2 100644
--- a/erpnext/public/js/utils/serial_no_batch_selector.js
+++ b/erpnext/public/js/utils/serial_no_batch_selector.js
@@ -226,7 +226,6 @@
 				based_on: based_on
 			},
 			callback: (r) => {
-				debugger
 				if (r.message) {
 					this.dialog.fields_dict.entries.df.data = r.message;
 					this.dialog.fields_dict.entries.grid.refresh();
@@ -271,6 +270,7 @@
 			}
 		}).then(r => {
 			this.callback && this.callback(r.message);
+			this.frm.save();
 			this.dialog.hide();
 		})
 	}
diff --git a/erpnext/selling/page/point_of_sale/pos_item_details.js b/erpnext/selling/page/point_of_sale/pos_item_details.js
index 1091c46..e6b2b3b 100644
--- a/erpnext/selling/page/point_of_sale/pos_item_details.js
+++ b/erpnext/selling/page/point_of_sale/pos_item_details.js
@@ -384,9 +384,10 @@
 
 				new erpnext.SerialBatchPackageSelector(frm, item_row, (r) => {
 					if (r) {
-						frm.refresh_fields();
-						frappe.model.set_value(item_row.doctype, item_row.name,
-							"serial_and_batch_bundle", r.name);
+						frappe.model.set_value(item_row.doctype, item_row.name, {
+							"serial_and_batch_bundle": r.name,
+							"qty": Math.abs(r.total_qty)
+						});
 					}
 				});
 			});
diff --git a/erpnext/selling/sales_common.js b/erpnext/selling/sales_common.js
index f8e000a..2ee197b 100644
--- a/erpnext/selling/sales_common.js
+++ b/erpnext/selling/sales_common.js
@@ -444,11 +444,10 @@
 						new erpnext.SerialBatchPackageSelector(
 							me.frm, item, (r) => {
 								if (r) {
-									me.frm.refresh_fields();
-									frappe.model.set_value(cdt, cdn,
-										"serial_and_batch_bundle", r.name);
-
-									me.frm.save();
+									frappe.model.set_value(item.doctype, item.name, {
+										"serial_and_batch_bundle": r.name,
+										"qty": Math.abs(r.total_qty)
+									});
 								}
 							}
 						);
diff --git a/erpnext/stock/deprecated_serial_batch.py b/erpnext/stock/deprecated_serial_batch.py
index ac30f82..8b4279b 100644
--- a/erpnext/stock/deprecated_serial_batch.py
+++ b/erpnext/stock/deprecated_serial_batch.py
@@ -1,11 +1,11 @@
 import frappe
 from frappe.query_builder.functions import CombineDatetime, Sum
 from frappe.utils import flt
+from frappe.utils.deprecations import deprecated
 
 
 class DeprecatedSerialNoValuation:
-	# Will be deprecated in v16
-
+	@deprecated
 	def calculate_stock_value_from_deprecarated_ledgers(self):
 		serial_nos = list(
 			filter(lambda x: x not in self.serial_no_incoming_rate and x, self.get_serial_nos())
@@ -25,6 +25,7 @@
 
 		self.stock_value_change += stock_value_change
 
+	@deprecated
 	def get_incoming_value_for_serial_nos(self, serial_nos):
 		# get rate from serial nos within same company
 		all_serial_nos = frappe.get_all(
@@ -66,12 +67,14 @@
 
 
 class DeprecatedBatchNoValuation:
+	@deprecated
 	def calculate_avg_rate_from_deprecarated_ledgers(self):
 		entries = self.get_sle_for_batches()
 		for ledger in entries:
 			self.batch_avg_rate[ledger.batch_no] += flt(ledger.batch_value) / flt(ledger.batch_qty)
 			self.available_qty[ledger.batch_no] += flt(ledger.batch_qty)
 
+	@deprecated
 	def get_sle_for_batches(self):
 		batch_nos = list(self.batch_nos.keys())
 		sle = frappe.qb.DocType("Stock Ledger Entry")
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.js b/erpnext/stock/doctype/stock_entry/stock_entry.js
index 6ffe5b3..8788e15 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.js
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.js
@@ -1116,11 +1116,10 @@
 					new erpnext.SerialBatchPackageSelector(
 						frm, item, (r) => {
 							if (r) {
-								frm.refresh_fields();
-								frappe.model.set_value(item.doctype, item.name,
-									"serial_and_batch_bundle", r.name);
-
-								frm.save();
+								frappe.model.set_value(item.doctype, item.name, {
+									"serial_and_batch_bundle": r.name,
+									"qty": Math.abs(r.total_qty)
+								});
 							}
 						}
 					);
diff --git a/erpnext/stock/report/batch_wise_balance_history/batch_wise_balance_history.py b/erpnext/stock/report/batch_wise_balance_history/batch_wise_balance_history.py
index 483a1f1..858db81 100644
--- a/erpnext/stock/report/batch_wise_balance_history/batch_wise_balance_history.py
+++ b/erpnext/stock/report/batch_wise_balance_history/batch_wise_balance_history.py
@@ -5,6 +5,7 @@
 import frappe
 from frappe import _
 from frappe.utils import cint, flt, getdate
+from frappe.utils.deprecations import deprecated
 from pypika import functions as fn
 
 from erpnext.stock.doctype.warehouse.warehouse import apply_warehouse_filter
@@ -68,14 +69,13 @@
 
 
 def get_stock_ledger_entries(filters):
-	# Will be deprecated in v16
 	entries = get_stock_ledger_entries_for_batch_no(filters)
 
 	entries += get_stock_ledger_entries_for_batch_bundle(filters)
 	return entries
 
 
-# get all details
+@deprecated
 def get_stock_ledger_entries_for_batch_no(filters):
 	if not filters.get("from_date"):
 		frappe.throw(_("'From Date' is required"))
