[production order] explict idx + test fix
diff --git a/erpnext/manufacturing/doctype/production_order/production_order.py b/erpnext/manufacturing/doctype/production_order/production_order.py
index ead4b4f..6818ba9 100644
--- a/erpnext/manufacturing/doctype/production_order/production_order.py
+++ b/erpnext/manufacturing/doctype/production_order/production_order.py
@@ -56,7 +56,7 @@
 
 	def validate_warehouse(self):
 		from erpnext.stock.utils import validate_warehouse_company
-		
+
 		for w in [self.fg_warehouse, self.wip_warehouse]:
 			validate_warehouse_company(w, self.company)
 
@@ -124,7 +124,7 @@
 	def update_production_order_qty(self):
 		"""Update **Manufactured Qty** and **Material Transferred for Qty** in Production Order
 			based on Stock Entry"""
-		
+
 		for purpose, fieldname in (("Manufacture", "produced_qty"),
 			("Material Transfer for Manufacture", "material_transferred_for_manufacturing")):
 			qty = flt(frappe.db.sql("""select sum(fg_completed_qty)
@@ -174,7 +174,7 @@
 
 		self.set('operations', [])
 
-		operations = frappe.db.sql("""select operation, description, workstation,
+		operations = frappe.db.sql("""select operation, description, workstation, idx,
 			hour_rate, time_in_mins, operating_cost as "planned_operating_cost", "Pending" as status
 			from `tabBOM Operation` where parent = %s order by idx""", self.bom_no, as_dict=1)
 
diff --git a/erpnext/manufacturing/doctype/production_order/test_production_order.py b/erpnext/manufacturing/doctype/production_order/test_production_order.py
index eb6cfab..db00754 100644
--- a/erpnext/manufacturing/doctype/production_order/test_production_order.py
+++ b/erpnext/manufacturing/doctype/production_order/test_production_order.py
@@ -5,7 +5,7 @@
 from __future__ import unicode_literals
 import unittest
 import frappe
-from frappe.utils import flt, get_datetime, cstr, time_diff_in_hours
+from frappe.utils import flt, get_datetime, time_diff_in_hours
 from erpnext.stock.doctype.purchase_receipt.test_purchase_receipt import set_perpetual_inventory
 from erpnext.manufacturing.doctype.production_order.production_order import make_stock_entry, make_time_log
 from erpnext.stock.doctype.stock_entry import test_stock_entry
@@ -15,14 +15,14 @@
 	def check_planned_qty(self):
 		set_perpetual_inventory(0)
 
-		planned0 = frappe.db.get_value("Bin", {"item_code": "_Test FG Item", 
+		planned0 = frappe.db.get_value("Bin", {"item_code": "_Test FG Item",
 			"warehouse": "_Test Warehouse 1 - _TC"}, "planned_qty") or 0
 
 		pro_order = make_prod_order_test_record()
-		
-		planned1 = frappe.db.get_value("Bin", {"item_code": "_Test FG Item", 
+
+		planned1 = frappe.db.get_value("Bin", {"item_code": "_Test FG Item",
 			"warehouse": "_Test Warehouse 1 - _TC"}, "planned_qty")
-			
+
 		self.assertEqual(planned1, planned0 + 10)
 
 		# add raw materials to stores
@@ -44,10 +44,10 @@
 		s.submit()
 
 		self.assertEqual(frappe.db.get_value("Production Order", pro_order.name, "produced_qty"), 4)
-		
-		planned2 = frappe.db.get_value("Bin", {"item_code": "_Test FG Item", 
+
+		planned2 = frappe.db.get_value("Bin", {"item_code": "_Test FG Item",
 			"warehouse": "_Test Warehouse 1 - _TC"}, "planned_qty")
-			
+
 		self.assertEqual(planned2, planned0 + 6)
 
 		return pro_order
@@ -67,18 +67,18 @@
 		self.assertRaises(StockOverProductionError, s.submit)
 
 	def test_make_time_log(self):
-		prod_order = make_prod_order_test_record(item="_Test FG Item 2", 
+		prod_order = make_prod_order_test_record(item="_Test FG Item 2",
 			planned_start_date="2014-11-25 00:00:00", qty=1, do_not_save=True)
 
 		prod_order.set_production_order_operations()
 		prod_order.insert()
 		prod_order.submit()
-		
+
 		d = prod_order.operations[0]
 
 		d.completed_qty = flt(d.completed_qty)
 
-		time_log = make_time_log(prod_order.name, cstr(d.idx) + ". " + d.operation, \
+		time_log = make_time_log(prod_order.name, d.operation, \
 			d.planned_start_time, d.planned_end_time, prod_order.qty - d.completed_qty,
 			operation_id=d.name)
 
@@ -100,9 +100,9 @@
 		self.assertEqual(prod_order.operations[0].status, "Completed")
 		self.assertEqual(prod_order.operations[0].completed_qty, prod_order.qty)
 
-		self.assertEqual(get_datetime(prod_order.operations[0].actual_start_time), 
+		self.assertEqual(get_datetime(prod_order.operations[0].actual_start_time),
 			get_datetime(time_log.from_time))
-		self.assertEqual(get_datetime(prod_order.operations[0].actual_end_time), 
+		self.assertEqual(get_datetime(prod_order.operations[0].actual_end_time),
 			get_datetime(time_log.to_time))
 
 		self.assertEqual(prod_order.operations[0].actual_operation_time, 60)
@@ -128,10 +128,10 @@
 
 def make_prod_order_test_record(**args):
 	args = frappe._dict(args)
-	
+
 	pro_order = frappe.new_doc("Production Order")
 	pro_order.production_item = args.production_item or args.item or args.item_code or "_Test FG Item"
-	pro_order.bom_no = frappe.db.get_value("BOM", {"item": pro_order.production_item, 
+	pro_order.bom_no = frappe.db.get_value("BOM", {"item": pro_order.production_item,
 		"is_active": 1, "is_default": 1})
 	pro_order.qty = args.qty or 10
 	pro_order.wip_warehouse = args.wip_warehouse or "_Test Warehouse - _TC"
@@ -146,5 +146,5 @@
 		if not args.do_not_submit:
 			pro_order.submit()
 	return pro_order
-	
+
 test_records = frappe.get_test_records('Production Order')