diff --git a/erpnext/manufacturing/doctype/production_plan/test_production_plan.py b/erpnext/manufacturing/doctype/production_plan/test_production_plan.py
index e728cc2..d020bc8 100644
--- a/erpnext/manufacturing/doctype/production_plan/test_production_plan.py
+++ b/erpnext/manufacturing/doctype/production_plan/test_production_plan.py
@@ -251,6 +251,10 @@
 			'rate': item_doc.valuation_rate or args.rate,
 		})
 
-	bom.insert(ignore_permissions=True)
-	bom.submit()
+	if not args.do_not_save:
+		bom.insert(ignore_permissions=True)
+
+		if not args.do_not_submit:
+			bom.submit()
+
 	return bom
diff --git a/erpnext/manufacturing/doctype/work_order/test_work_order.py b/erpnext/manufacturing/doctype/work_order/test_work_order.py
index b7c7c32..7010f29 100644
--- a/erpnext/manufacturing/doctype/work_order/test_work_order.py
+++ b/erpnext/manufacturing/doctype/work_order/test_work_order.py
@@ -407,6 +407,49 @@
 		ste1 = frappe.get_doc(make_stock_entry(wo.name, "Manufacture", 1))
 		self.assertEqual(len(ste1.items), 3)
 
+	def test_operation_time_with_batch_size(self):
+		fg_item = "Test Batch Size Item For BOM"
+		rm1 = "Test Batch Size Item RM 1 For BOM"
+
+		for item in ["Test Batch Size Item For BOM", "Test Batch Size Item RM 1 For BOM"]:
+			make_item(item, {
+				"include_item_in_manufacturing": 1,
+				"is_stock_item": 1
+			})
+
+		bom_name = frappe.db.get_value("BOM",
+			{"item": fg_item, "is_active": 1, "with_operations": 1}, "name")
+
+		if not bom_name:
+			bom = make_bom(item=fg_item, rate=1000, raw_materials = [rm1], do_not_save=True)
+			bom.with_operations = 1
+			bom.append("operations", {
+				"operation": "_Test Operation 1",
+				"workstation": "_Test Workstation 1",
+				"description": "Test Data",
+				"operating_cost": 100,
+				"time_in_mins": 40,
+				"batch_size": 5
+			})
+
+			bom.save()
+			bom.submit()
+			bom_name = bom.name
+
+		work_order = make_wo_order_test_record(item=fg_item,
+			planned_start_date=now(), qty=1, do_not_save=True)
+
+		work_order.set_work_order_operations()
+		work_order.save()
+		self.assertEqual(work_order.operations[0].time_in_mins, 8.0)
+
+		work_order1 = make_wo_order_test_record(item=fg_item,
+			planned_start_date=now(), qty=5, do_not_save=True)
+
+		work_order1.set_work_order_operations()
+		work_order1.save()
+		self.assertEqual(work_order1.operations[0].time_in_mins, 40.0)
+
 def get_scrap_item_details(bom_no):
 	scrap_items = {}
 	for item in frappe.db.sql("""select item_code, stock_qty from `tabBOM Scrap Item`
diff --git a/erpnext/manufacturing/doctype/work_order/work_order.py b/erpnext/manufacturing/doctype/work_order/work_order.py
index 3173b6c..7f8341f 100644
--- a/erpnext/manufacturing/doctype/work_order/work_order.py
+++ b/erpnext/manufacturing/doctype/work_order/work_order.py
@@ -403,7 +403,7 @@
 		bom_qty = frappe.db.get_value("BOM", self.bom_no, "quantity")
 
 		for d in self.get("operations"):
-			d.time_in_mins = flt(d.time_in_mins) / flt(bom_qty) * math.ceil(flt(self.qty) / flt(d.batch_size))
+			d.time_in_mins = flt(d.time_in_mins) / flt(bom_qty) * (flt(self.qty) / flt(d.batch_size))
 
 		self.calculate_operating_cost()
 
