test: test case to check use serial / batch fields feature
diff --git a/erpnext/controllers/stock_controller.py b/erpnext/controllers/stock_controller.py
index 9eed6a4..74c835c 100644
--- a/erpnext/controllers/stock_controller.py
+++ b/erpnext/controllers/stock_controller.py
@@ -21,6 +21,9 @@
 from erpnext.stock.doctype.inventory_dimension.inventory_dimension import (
 	get_evaluated_inventory_dimension,
 )
+from erpnext.stock.doctype.serial_and_batch_bundle.serial_and_batch_bundle import (
+	get_type_of_transaction,
+)
 from erpnext.stock.stock_ledger import get_items_to_be_repost
 
 
@@ -150,6 +153,13 @@
 			if row.use_serial_batch_fields and (
 				not row.serial_and_batch_bundle and not row.get("rejected_serial_and_batch_bundle")
 			):
+				if self.doctype == "Stock Reconciliation":
+					qty = row.qty
+					type_of_transaction = "Inward"
+				else:
+					qty = row.stock_qty
+					type_of_transaction = get_type_of_transaction(self, row)
+
 				sn_doc = SerialBatchCreation(
 					{
 						"item_code": row.item_code,
@@ -159,14 +169,15 @@
 						"voucher_type": self.doctype,
 						"voucher_no": self.name,
 						"voucher_detail_no": row.name,
-						"qty": row.stock_qty,
-						"type_of_transaction": "Inward" if row.stock_qty > 0 else "Outward",
+						"qty": qty,
+						"type_of_transaction": type_of_transaction,
 						"company": self.company,
 						"is_rejected": 1 if row.get("rejected_warehouse") else 0,
 						"serial_nos": get_serial_nos(row.serial_no) if row.serial_no else None,
-						"batches": frappe._dict({row.batch_no: row.stock_qty}) if row.batch_no else None,
+						"batches": frappe._dict({row.batch_no: qty}) if row.batch_no else None,
 						"batch_no": row.batch_no,
 						"use_serial_batch_fields": row.use_serial_batch_fields,
+						"do_not_submit": True,
 					}
 				).make_serial_and_batch_bundle()