fix: travis
diff --git a/erpnext/stock/stock_ledger.py b/erpnext/stock/stock_ledger.py
index aefc692..fdc1ffc 100644
--- a/erpnext/stock/stock_ledger.py
+++ b/erpnext/stock/stock_ledger.py
@@ -27,7 +27,6 @@
 from erpnext.stock.doctype.stock_reservation_entry.stock_reservation_entry import (
 	get_sre_reserved_qty_for_item_and_warehouse as get_reserved_stock,
 )
-from erpnext.stock.serial_batch_bundle import BatchNoValuation, SerialNoValuation
 from erpnext.stock.utils import (
 	get_incoming_outgoing_rate_for_cancel,
 	get_or_make_bin,
@@ -692,22 +691,7 @@
 			sle.outgoing_rate = get_incoming_rate_for_inter_company_transfer(sle)
 
 		if sle.serial_and_batch_bundle:
-			if frappe.get_cached_value("Item", sle.item_code, "has_serial_no"):
-				SerialNoValuation(
-					sle=sle,
-					sle_self=self,
-					wh_data=self.wh_data,
-					warehouse=sle.warehouse,
-					item_code=sle.item_code,
-				)
-			else:
-				BatchNoValuation(
-					sle=sle,
-					sle_self=self,
-					wh_data=self.wh_data,
-					warehouse=sle.warehouse,
-					item_code=sle.item_code,
-				)
+			self.calculate_valuation_for_serial_batch_bundle(sle)
 		else:
 			if sle.voucher_type == "Stock Reconciliation" and not sle.batch_no:
 				# assert
@@ -759,6 +743,18 @@
 		elif current_qty == 0:
 			sle.is_cancelled = 1
 
+	def calculate_valuation_for_serial_batch_bundle(self, sle):
+		doc = frappe.get_cached_doc("Serial and Batch Bundle", sle.serial_and_batch_bundle)
+
+		doc.set_incoming_rate(save=True)
+		doc.calculate_qty_and_amount(save=True)
+
+		self.wh_data.stock_value = round_off_if_near_zero(self.wh_data.stock_value + doc.total_amount)
+
+		self.wh_data.qty_after_transaction += doc.total_qty
+		if self.wh_data.qty_after_transaction:
+			self.wh_data.valuation_rate = self.wh_data.stock_value / self.wh_data.qty_after_transaction
+
 	def validate_negative_stock(self, sle):
 		"""
 		validate negative stock for entries current datetime onwards
@@ -1425,6 +1421,8 @@
 	serial_and_batch_bundle=None,
 ):
 
+	from erpnext.stock.serial_batch_bundle import BatchNoValuation
+
 	if not company:
 		company = frappe.get_cached_value("Warehouse", warehouse, "company")