diff --git a/erpnext/config/learn.py b/erpnext/config/learn.py
index edd785a..9095ab6 100644
--- a/erpnext/config/learn.py
+++ b/erpnext/config/learn.py
@@ -219,7 +219,7 @@
 				},
 				{
 					"type": "help",
-					"label": _("Production Order"),
+					"label": _("Work Order"),
 					"youtube_id": "ZotgLyp2YFY"
 				},
 
diff --git a/erpnext/config/manufacturing.py b/erpnext/config/manufacturing.py
index d0fc39e..16ca914 100644
--- a/erpnext/config/manufacturing.py
+++ b/erpnext/config/manufacturing.py
@@ -9,13 +9,13 @@
 			"items": [
 				{
 					"type": "doctype",
-					"name": "Production Order",
+					"name": "Work Order",
 					"description": _("Orders released for production."),
 				},
 				{
 					"type": "doctype",
 					"name": "Production Plan",
-					"description": _("Generate Material Requests (MRP) and Production Orders."),
+					"description": _("Generate Material Requests (MRP) and Work Orders."),
 				},
 				{
 					"type": "doctype",
@@ -92,26 +92,26 @@
 				{
 					"type": "report",
 					"is_query_report": True,
-					"name": "Open Production Orders",
-					"doctype": "Production Order"
+					"name": "Open Work Orders",
+					"doctype": "Work Order"
 				},
 				{
 					"type": "report",
 					"is_query_report": True,
-					"name": "Production Orders in Progress",
-					"doctype": "Production Order"
+					"name": "Work Orders in Progress",
+					"doctype": "Work Order"
 				},
 				{
 					"type": "report",
 					"is_query_report": True,
-					"name": "Issued Items Against Production Order",
-					"doctype": "Production Order"
+					"name": "Issued Items Against Work Order",
+					"doctype": "Work Order"
 				},
 				{
 					"type": "report",
 					"is_query_report": True,
-					"name": "Completed Production Orders",
-					"doctype": "Production Order"
+					"name": "Completed Work Orders",
+					"doctype": "Work Order"
 				},{ 
 					"type": "page",
 					"name": "production-analytics",
@@ -143,7 +143,7 @@
 				},
 				{
 					"type": "help",
-					"label": _("Production Order"),
+					"label": _("Work Order"),
 					"youtube_id": "ZotgLyp2YFY"
 				},
 			]
diff --git a/erpnext/demo/user/manufacturing.py b/erpnext/demo/user/manufacturing.py
index 80d140a..496b011 100644
--- a/erpnext/demo/user/manufacturing.py
+++ b/erpnext/demo/user/manufacturing.py
@@ -7,7 +7,7 @@
 from frappe.utils.make_random import how_many
 from frappe.desk import query_report
 from erpnext.manufacturing.doctype.workstation.workstation import WorkstationHolidayError
-from erpnext.manufacturing.doctype.production_order.test_production_order import make_prod_order_test_record
+from erpnext.manufacturing.doctype.work_order.test_work_order import make_prod_order_test_record
 
 def work():
 	frappe.set_user(frappe.db.get_global('demo_manufacturing_user'))
@@ -21,13 +21,13 @@
 	ppt.purchase_request_for_warehouse = "Stores - WPL"
 	ppt.run_method("get_open_sales_orders")
 	ppt.run_method("get_items")
-	ppt.run_method("raise_production_orders")
+	ppt.run_method("raise_work_orders")
 	ppt.run_method("raise_material_requests")
 	frappe.db.commit()
 
-	# submit production orders
-	for pro in frappe.db.get_values("Production Order", {"docstatus": 0}, "name"):
-		b = frappe.get_doc("Production Order", pro[0])
+	# submit work orders
+	for pro in frappe.db.get_values("Work Order", {"docstatus": 0}, "name"):
+		b = frappe.get_doc("Work Order", pro[0])
 		b.wip_warehouse = "Work in Progress - WPL"
 		b.submit()
 		frappe.db.commit()
@@ -40,12 +40,12 @@
 
 	# stores -> wip
 	if random.random() < 0.3:
-		for pro in query_report.run("Open Production Orders")["result"][:how_many("Stock Entry for WIP")]:
+		for pro in query_report.run("Open Work Orders")["result"][:how_many("Stock Entry for WIP")]:
 			make_stock_entry_from_pro(pro[0], "Material Transfer for Manufacture")
 
 	# wip -> fg
 	if random.random() < 0.3:
-		for pro in query_report.run("Production Orders in Progress")["result"][:how_many("Stock Entry for FG")]:
+		for pro in query_report.run("Work Orders in Progress")["result"][:how_many("Stock Entry for FG")]:
 			make_stock_entry_from_pro(pro[0], "Manufacture")
 
 	for bom in frappe.get_all('BOM', fields=['item'], filters = {'with_operations': 1}):
@@ -57,7 +57,7 @@
 
 	# submit time logs
 	for timesheet in frappe.get_all("Timesheet", ["name"], {"docstatus": 0,
-		"production_order": ("!=", ""), "to_time": ("<", frappe.flags.current_date)}):
+		"work_order": ("!=", ""), "to_time": ("<", frappe.flags.current_date)}):
 		timesheet = frappe.get_doc("Timesheet", timesheet.name)
 		try:
 			timesheet.submit()
@@ -68,10 +68,10 @@
 			pass
 
 def make_stock_entry_from_pro(pro_id, purpose):
-	from erpnext.manufacturing.doctype.production_order.production_order import make_stock_entry
+	from erpnext.manufacturing.doctype.work_order.work_order import make_stock_entry
 	from erpnext.stock.stock_ledger import NegativeStockError
 	from erpnext.stock.doctype.stock_entry.stock_entry import IncorrectValuationRateError, \
-		DuplicateEntryForProductionOrderError, OperationsNotCompleteError
+		DuplicateEntryForWorkOrderError, OperationsNotCompleteError
 
 	try:
 		st = frappe.get_doc(make_stock_entry(pro_id, purpose))
@@ -83,6 +83,6 @@
 		frappe.db.commit()
 		st.submit()
 		frappe.db.commit()
-	except (NegativeStockError, IncorrectValuationRateError, DuplicateEntryForProductionOrderError,
+	except (NegativeStockError, IncorrectValuationRateError, DuplicateEntryForWorkOrderError,
 		OperationsNotCompleteError):
 		frappe.db.rollback()
diff --git a/erpnext/domains/manufacturing.py b/erpnext/domains/manufacturing.py
index 8c911a3..7f328b1 100644
--- a/erpnext/domains/manufacturing.py
+++ b/erpnext/domains/manufacturing.py
@@ -6,7 +6,7 @@
 		'Supplier',
 		'Sales Order',
 		'Purchase Order',
-		'Production Order',
+		'Work Order',
 		'Task',
 		'Accounts',
 		'HR',
diff --git a/erpnext/hooks.py b/erpnext/hooks.py
index a97f80f..72007fc 100644
--- a/erpnext/hooks.py
+++ b/erpnext/hooks.py
@@ -49,7 +49,7 @@
 
 email_append_to = ["Job Applicant", "Lead", "Opportunity", "Issue"]
 
-calendars = ["Task", "Production Order", "Leave Application", "Sales Order", "Holiday List", "Course Schedule"]
+calendars = ["Task", "Work Order", "Leave Application", "Sales Order", "Holiday List", "Course Schedule"]
 
 
 
diff --git a/erpnext/hr/doctype/employee/employee.py b/erpnext/hr/doctype/employee/employee.py
index 5446a6e..bb12231 100755
--- a/erpnext/hr/doctype/employee/employee.py
+++ b/erpnext/hr/doctype/employee/employee.py
@@ -72,7 +72,7 @@
 		user.flags.ignore_permissions = True
 
 		if "Employee" not in user.get("roles"):
-			user.add_roles("Employee")
+			user.append_roles("Employee")
 
 		# copy details like Fullname, DOB and Image to User
 		if self.employee_name and not (user.first_name and user.last_name):
diff --git a/erpnext/manufacturing/doctype/manufacturing_settings/manufacturing_settings.json b/erpnext/manufacturing/doctype/manufacturing_settings/manufacturing_settings.json
index 455a983..1fb2bf5 100644
--- a/erpnext/manufacturing/doctype/manufacturing_settings/manufacturing_settings.json
+++ b/erpnext/manufacturing/doctype/manufacturing_settings/manufacturing_settings.json
@@ -48,7 +48,7 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "description": "Disables creation of time logs against Production Orders. Operations shall not be tracked against Production Order", 
+   "description": "Disables creation of time logs against Work Orders. Operations shall not be tracked against Work Order",
    "fieldname": "disable_capacity_planning", 
    "fieldtype": "Check", 
    "hidden": 0, 
@@ -454,7 +454,7 @@
  "istable": 0, 
  "max_attachments": 0, 
  "menu_index": 0, 
- "modified": "2017-07-31 19:25:04.242693", 
+ "modified": "2018-02-16 13:18:17.964103",
  "modified_by": "Administrator", 
  "module": "Manufacturing", 
  "name": "Manufacturing Settings", 
diff --git a/erpnext/manufacturing/doctype/production_plan/production_plan.js b/erpnext/manufacturing/doctype/production_plan/production_plan.js
index 953c124..e74a375 100644
--- a/erpnext/manufacturing/doctype/production_plan/production_plan.js
+++ b/erpnext/manufacturing/doctype/production_plan/production_plan.js
@@ -37,8 +37,8 @@
 
 		if (frm.doc.docstatus === 1 && frm.doc.po_items
 			&& frm.doc.status != 'Completed') {
-			frm.add_custom_button(__("Production Order"), ()=> {
-				frm.trigger("make_production_order");
+			frm.add_custom_button(__("Work Order"), ()=> {
+				frm.trigger("make_work_order");
 			}, __("Make"));
 		}
 
@@ -52,9 +52,9 @@
 		frm.trigger("material_requirement");
 	},
 
-	make_production_order: function(frm) {
+	make_work_order: function(frm) {
 		frappe.call({
-			method: "make_production_order",
+			method: "make_work_order",
 			freeze: true,
 			doc: frm.doc,
 			callback: function() {
diff --git a/erpnext/manufacturing/doctype/production_plan/production_plan.json b/erpnext/manufacturing/doctype/production_plan/production_plan.json
index 06301d7..f982c54 100644
--- a/erpnext/manufacturing/doctype/production_plan/production_plan.json
+++ b/erpnext/manufacturing/doctype/production_plan/production_plan.json
@@ -44,6 +44,7 @@
    "reqd": 1, 
    "search_index": 0, 
    "set_only_once": 0, 
+   "translatable": 0,
    "unique": 0
   }, 
   {
@@ -76,6 +77,7 @@
    "reqd": 1, 
    "search_index": 0, 
    "set_only_once": 0, 
+   "translatable": 0,
    "unique": 0
   }, 
   {
@@ -108,6 +110,7 @@
    "reqd": 0, 
    "search_index": 0, 
    "set_only_once": 0, 
+   "translatable": 0,
    "unique": 0
   }, 
   {
@@ -137,6 +140,7 @@
    "reqd": 0, 
    "search_index": 0, 
    "set_only_once": 0, 
+   "translatable": 0,
    "unique": 0
   }, 
   {
@@ -168,6 +172,7 @@
    "reqd": 1, 
    "search_index": 0, 
    "set_only_once": 0, 
+   "translatable": 0,
    "unique": 0
   }, 
   {
@@ -201,6 +206,7 @@
    "reqd": 0, 
    "search_index": 0, 
    "set_only_once": 0, 
+   "translatable": 0,
    "unique": 0
   }, 
   {
@@ -232,6 +238,7 @@
    "reqd": 0, 
    "search_index": 0, 
    "set_only_once": 0, 
+   "translatable": 0,
    "unique": 0
   }, 
   {
@@ -264,6 +271,7 @@
    "reqd": 0, 
    "search_index": 0, 
    "set_only_once": 0, 
+   "translatable": 0,
    "unique": 0
   }, 
   {
@@ -296,6 +304,7 @@
    "reqd": 0, 
    "search_index": 0, 
    "set_only_once": 0, 
+   "translatable": 0,
    "unique": 0
   }, 
   {
@@ -328,6 +337,7 @@
    "reqd": 0, 
    "search_index": 0, 
    "set_only_once": 0, 
+   "translatable": 0,
    "unique": 0
   }, 
   {
@@ -357,6 +367,7 @@
    "reqd": 0, 
    "search_index": 0, 
    "set_only_once": 0, 
+   "translatable": 0,
    "unique": 0, 
    "width": "50%"
   }, 
@@ -388,6 +399,7 @@
    "reqd": 0, 
    "search_index": 0, 
    "set_only_once": 0, 
+   "translatable": 0,
    "unique": 0
   }, 
   {
@@ -418,6 +430,7 @@
    "reqd": 0, 
    "search_index": 0, 
    "set_only_once": 0, 
+   "translatable": 0,
    "unique": 0
   }, 
   {
@@ -451,6 +464,7 @@
    "reqd": 0, 
    "search_index": 0, 
    "set_only_once": 0, 
+   "translatable": 0,
    "unique": 0
   }, 
   {
@@ -483,6 +497,7 @@
    "reqd": 0, 
    "search_index": 0, 
    "set_only_once": 0, 
+   "translatable": 0,
    "unique": 0
   }, 
   {
@@ -514,6 +529,7 @@
    "reqd": 0, 
    "search_index": 0, 
    "set_only_once": 0, 
+   "translatable": 0,
    "unique": 0
   }, 
   {
@@ -546,6 +562,7 @@
    "reqd": 0, 
    "search_index": 0, 
    "set_only_once": 0, 
+   "translatable": 0,
    "unique": 0
   }, 
   {
@@ -578,6 +595,7 @@
    "reqd": 0, 
    "search_index": 0, 
    "set_only_once": 0, 
+   "translatable": 0,
    "unique": 0
   }, 
   {
@@ -609,6 +627,7 @@
    "reqd": 0, 
    "search_index": 0, 
    "set_only_once": 0, 
+   "translatable": 0,
    "unique": 0
   }, 
   {
@@ -640,6 +659,7 @@
    "reqd": 0, 
    "search_index": 0, 
    "set_only_once": 0, 
+   "translatable": 0,
    "unique": 0
   }, 
   {
@@ -658,7 +678,7 @@
    "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
-   "label": "Get Items For Production Order", 
+   "label": "Get Items For Work Order",
    "length": 0, 
    "no_copy": 0, 
    "options": "", 
@@ -672,6 +692,7 @@
    "reqd": 0, 
    "search_index": 0, 
    "set_only_once": 0, 
+   "translatable": 0,
    "unique": 0
   }, 
   {
@@ -703,6 +724,7 @@
    "reqd": 1, 
    "search_index": 0, 
    "set_only_once": 0, 
+   "translatable": 0,
    "unique": 0
   }, 
   {
@@ -734,6 +756,7 @@
    "reqd": 0, 
    "search_index": 0, 
    "set_only_once": 0, 
+   "translatable": 0,
    "unique": 0
   }, 
   {
@@ -765,6 +788,7 @@
    "reqd": 0, 
    "search_index": 0, 
    "set_only_once": 0, 
+   "translatable": 0,
    "unique": 0
   }, 
   {
@@ -795,6 +819,7 @@
    "reqd": 0, 
    "search_index": 0, 
    "set_only_once": 0, 
+   "translatable": 0,
    "unique": 0
   }, 
   {
@@ -824,6 +849,7 @@
    "reqd": 0, 
    "search_index": 0, 
    "set_only_once": 0, 
+   "translatable": 0,
    "unique": 0
   }, 
   {
@@ -855,6 +881,7 @@
    "reqd": 0, 
    "search_index": 0, 
    "set_only_once": 0, 
+   "translatable": 0,
    "unique": 0
   }, 
   {
@@ -885,6 +912,7 @@
    "reqd": 0, 
    "search_index": 0, 
    "set_only_once": 0, 
+   "translatable": 0,
    "unique": 0
   }, 
   {
@@ -915,6 +943,7 @@
    "reqd": 0, 
    "search_index": 0, 
    "set_only_once": 0, 
+   "translatable": 0,
    "unique": 0
   }, 
   {
@@ -946,6 +975,7 @@
    "reqd": 0, 
    "search_index": 0, 
    "set_only_once": 0, 
+   "translatable": 0,
    "unique": 0
   }, 
   {
@@ -976,6 +1006,7 @@
    "reqd": 0, 
    "search_index": 0, 
    "set_only_once": 0, 
+   "translatable": 0,
    "unique": 0
   }, 
   {
@@ -1007,6 +1038,7 @@
    "reqd": 0, 
    "search_index": 0, 
    "set_only_once": 0, 
+   "translatable": 0,
    "unique": 0
   }, 
   {
@@ -1038,6 +1070,7 @@
    "reqd": 0, 
    "search_index": 0, 
    "set_only_once": 0, 
+   "translatable": 0,
    "unique": 0
   }, 
   {
@@ -1067,6 +1100,7 @@
    "reqd": 0, 
    "search_index": 0, 
    "set_only_once": 0, 
+   "translatable": 0,
    "unique": 0
   }, 
   {
@@ -1099,6 +1133,7 @@
    "reqd": 0, 
    "search_index": 0, 
    "set_only_once": 0, 
+   "translatable": 0,
    "unique": 0
   }, 
   {
@@ -1129,6 +1164,7 @@
    "reqd": 0, 
    "search_index": 0, 
    "set_only_once": 0, 
+   "translatable": 0,
    "unique": 0
   }
  ], 
@@ -1143,7 +1179,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2018-02-15 13:18:59.092921", 
+ "modified": "2018-03-05 01:36:45.048493",
  "modified_by": "Administrator", 
  "module": "Manufacturing", 
  "name": "Production Plan", 
diff --git a/erpnext/manufacturing/doctype/production_plan/production_plan.py b/erpnext/manufacturing/doctype/production_plan/production_plan.py
index 2a767cc..1d31042 100644
--- a/erpnext/manufacturing/doctype/production_plan/production_plan.py
+++ b/erpnext/manufacturing/doctype/production_plan/production_plan.py
@@ -8,7 +8,7 @@
 from frappe.model.document import Document
 from erpnext.manufacturing.doctype.bom.bom import validate_bom_no
 from frappe.utils import cstr, flt, cint, nowdate, add_days, comma_and, now_datetime
-from erpnext.manufacturing.doctype.production_order.production_order import get_item_details
+from erpnext.manufacturing.doctype.work_order.work_order import get_item_details
 from six import string_types
 
 class ProductionPlan(Document):
@@ -229,12 +229,12 @@
 
 	def on_cancel(self):
 		self.db_set('status', 'Cancelled')
-		self.delete_draft_production_order()
+		self.delete_draft_work_order()
 
-	def delete_draft_production_order(self):
-		for d in frappe.get_all('Production Order', fields = ["name"],
+	def delete_draft_work_order(self):
+		for d in frappe.get_all('Work Order', fields = ["name"],
 			filters = {'docstatus': 0, 'production_plan': ("=", self.name)}):
-			frappe.delete_doc('Production Order', d.name)
+			frappe.delete_doc('Work Order', d.name)
 
 	def set_status(self):
 		self.status = {
@@ -392,37 +392,37 @@
 				'sales_order': data.sales_order
 			})
 
-	def make_production_order(self):
-		pro_list = []
+	def make_work_order(self):
+		wo_list = []
 		self.validate_data()
 		items_data = self.get_production_items()
 
 		for key, item in items_data.items():
-			production_order = self.create_production_order(item)
-			if production_order:
-				pro_list.append(production_order)
+			work_order = self.create_work_order(item)
+			if work_order:
+				wo_list.append(work_order)
 
 		frappe.flags.mute_messages = False
 
-		if pro_list:
-			pro_list = ["""<a href="#Form/Production Order/%s" target="_blank">%s</a>""" % \
-				(p, p) for p in pro_list]
-			msgprint(_("{0} created").format(comma_and(pro_list)))
+		if wo_list:
+			wo_list = ["""<a href="#Form/Work Order/%s" target="_blank">%s</a>""" % \
+				(p, p) for p in wo_list]
+			msgprint(_("{0} created").format(comma_and(wo_list)))
 		else :
-			msgprint(_("No Production Orders created"))
+			msgprint(_("No Work Orders created"))
 
-	def create_production_order(self, item):
-		from erpnext.manufacturing.doctype.production_order.production_order import OverProductionError, get_default_warehouse
+	def create_work_order(self, item):
+		from erpnext.manufacturing.doctype.work_order.work_order import OverProductionError, get_default_warehouse
 		warehouse = get_default_warehouse()
-		pro = frappe.new_doc("Production Order")
-		pro.update(item)
-		pro.set_production_order_operations()
+		wo = frappe.new_doc("Work Order")
+		wo.update(item)
+		wo.set_work_order_operations()
 
-		if not pro.fg_warehouse:
-			pro.fg_warehouse = warehouse.get('fg_warehouse')
+		if not wo.fg_warehouse:
+			wo.fg_warehouse = warehouse.get('fg_warehouse')
 		try:
-			pro.insert()
-			return pro.name
+			wo.insert()
+			return wo.name
 		except OverProductionError:
 			pass
 
diff --git a/erpnext/manufacturing/doctype/production_plan/production_plan_dashboard.py b/erpnext/manufacturing/doctype/production_plan/production_plan_dashboard.py
index 5be6b22..8611372 100644
--- a/erpnext/manufacturing/doctype/production_plan/production_plan_dashboard.py
+++ b/erpnext/manufacturing/doctype/production_plan/production_plan_dashboard.py
@@ -6,7 +6,7 @@
 		'transactions': [
 			{
 				'label': _('Related'),
-				'items': ['Production Order', 'Material Request']
+				'items': ['Work Order', 'Material Request']
 			},
 		]
 	}
\ No newline at end of file
diff --git a/erpnext/manufacturing/doctype/production_plan/test_production_plan.py b/erpnext/manufacturing/doctype/production_plan/test_production_plan.py
index 15fff7d..0a17708 100644
--- a/erpnext/manufacturing/doctype/production_plan/test_production_plan.py
+++ b/erpnext/manufacturing/doctype/production_plan/test_production_plan.py
@@ -41,18 +41,18 @@
 
 		self.assertTrue(len(material_requests), 2)
 
-		pln.make_production_order()
-		production_orders = frappe.get_all('Production Order', fields = ['name'],
+		pln.make_work_order()
+		work_orders = frappe.get_all('Work Order', fields = ['name'],
 			filters = {'production_plan': pln.name}, as_list=1)
 
-		self.assertTrue(len(production_orders), len(pln.po_items))
+		self.assertTrue(len(work_orders), len(pln.po_items))
 		
 		for name in material_requests:
 			mr = frappe.get_doc('Material Request', name[0])
 			mr.cancel()
 
-		for name in production_orders:
-			mr = frappe.delete_doc('Production Order', name[0])
+		for name in work_orders:
+			mr = frappe.delete_doc('Work Order', name[0])
 
 		pln = frappe.get_doc('Production Plan', pln.name)
 		pln.cancel()
diff --git a/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.py b/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.py
index 16a3023..323aaf9 100644
--- a/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.py
+++ b/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.py
@@ -9,7 +9,7 @@
 
 from frappe.model.document import Document
 from erpnext.manufacturing.doctype.bom.bom import validate_bom_no
-from erpnext.manufacturing.doctype.production_order.production_order import get_item_details
+from erpnext.manufacturing.doctype.work_order.work_order import get_item_details
 
 class ProductionPlanningTool(Document):
 	def clear_table(self, table_name):
@@ -204,8 +204,8 @@
 			if not flt(d.planned_qty):
 				frappe.throw(_("Please enter Planned Qty for Item {0} at row {1}").format(d.item_code, d.idx))
 
-	def raise_production_orders(self):
-		"""It will raise production order (Draft) for all distinct FG items"""
+	def raise_work_orders(self):
+		"""It will raise work order (Draft) for all distinct FG items"""
 		self.validate_data()
 
 		from erpnext.utilities.transaction_base import validate_uom_is_integer
@@ -213,22 +213,22 @@
 
 		items = self.get_production_items()
 
-		pro_list = []
+		wo_list = []
 		frappe.flags.mute_messages = True
 
 		for key in items:
-			production_order = self.create_production_order(items[key])
-			if production_order:
-				pro_list.append(production_order)
+			work_order = self.create_work_order(items[key])
+			if work_order:
+				wo_list.append(work_order)
 
 		frappe.flags.mute_messages = False
 
-		if pro_list:
-			pro_list = ["""<a href="#Form/Production Order/%s" target="_blank">%s</a>""" % \
-				(p, p) for p in pro_list]
-			msgprint(_("{0} created").format(comma_and(pro_list)))
+		if wo_list:
+			wo_list = ["""<a href="#Form/Work Order/%s" target="_blank">%s</a>""" % \
+				(p, p) for p in wo_list]
+			msgprint(_("{0} created").format(comma_and(wo_list)))
 		else :
-			msgprint(_("No Production Orders created"))
+			msgprint(_("No Work Orders created"))
 
 	def get_production_items(self):
 		item_dict = {}
@@ -264,21 +264,21 @@
 
 		return item_dict
 
-	def create_production_order(self, item_dict):
-		"""Create production order. Called from Production Planning Tool"""
-		from erpnext.manufacturing.doctype.production_order.production_order import OverProductionError, get_default_warehouse
+	def create_work_order(self, item_dict):
+		"""Create work order. Called from Production Planning Tool"""
+		from erpnext.manufacturing.doctype.work_order.work_order import OverProductionError, get_default_warehouse
 		warehouse = get_default_warehouse()
-		pro = frappe.new_doc("Production Order")
-		pro.update(item_dict)
-		pro.set_production_order_operations()
+		wo = frappe.new_doc("Work Order")
+		wo.update(item_dict)
+		wo.set_work_order_operations()
 		if warehouse:
-			pro.wip_warehouse = warehouse.get('wip_warehouse')
-		if not pro.fg_warehouse:
-			pro.fg_warehouse = warehouse.get('fg_warehouse')
+			wo.wip_warehouse = warehouse.get('wip_warehouse')
+		if not wo.fg_warehouse:
+			wo.fg_warehouse = warehouse.get('fg_warehouse')
 
 		try:
-			pro.insert()
-			return pro.name
+			wo.insert()
+			return wo.name
 		except OverProductionError:
 			pass
 
diff --git a/erpnext/manufacturing/doctype/production_order/.py b/erpnext/manufacturing/doctype/work_order/.py
similarity index 100%
rename from erpnext/manufacturing/doctype/production_order/.py
rename to erpnext/manufacturing/doctype/work_order/.py
diff --git a/erpnext/manufacturing/doctype/production_order/README.md b/erpnext/manufacturing/doctype/work_order/README.md
similarity index 100%
rename from erpnext/manufacturing/doctype/production_order/README.md
rename to erpnext/manufacturing/doctype/work_order/README.md
diff --git a/erpnext/manufacturing/doctype/production_order/__init__.py b/erpnext/manufacturing/doctype/work_order/__init__.py
similarity index 100%
rename from erpnext/manufacturing/doctype/production_order/__init__.py
rename to erpnext/manufacturing/doctype/work_order/__init__.py
diff --git a/erpnext/manufacturing/doctype/production_order/test_records.json b/erpnext/manufacturing/doctype/work_order/test_records.json
similarity index 87%
rename from erpnext/manufacturing/doctype/production_order/test_records.json
rename to erpnext/manufacturing/doctype/work_order/test_records.json
index 8114103..e7c7039 100644
--- a/erpnext/manufacturing/doctype/production_order/test_records.json
+++ b/erpnext/manufacturing/doctype/work_order/test_records.json
@@ -2,11 +2,11 @@
  {
   "bom_no": "BOM-_Test FG Item-001", 
   "company": "_Test Company", 
-  "doctype": "Production Order", 
+  "doctype": "Work Order", 
   "fg_warehouse": "_Test Warehouse 1 - _TC", 
   "production_item": "_Test FG Item", 
   "qty": 10.0, 
   "stock_uom": "_Test UOM", 
   "wip_warehouse": "_Test Warehouse - _TC"
  }
-]
+]
\ No newline at end of file
diff --git a/erpnext/manufacturing/doctype/production_order/test_production_order.js b/erpnext/manufacturing/doctype/work_order/test_work_order.js
similarity index 84%
rename from erpnext/manufacturing/doctype/production_order/test_production_order.js
rename to erpnext/manufacturing/doctype/work_order/test_work_order.js
index 3a2e5ce..1e224eb 100644
--- a/erpnext/manufacturing/doctype/production_order/test_production_order.js
+++ b/erpnext/manufacturing/doctype/work_order/test_work_order.js
@@ -1,4 +1,4 @@
-QUnit.test("test: production order", function (assert) {
+QUnit.test("test: work order", function (assert) {
 	assert.expect(25);
 	let done = assert.async();
 	let laptop_quantity = 5;
@@ -14,13 +14,13 @@
 	};
 
 	frappe.run_serially([
-		// test production order
-		() => frappe.set_route("List", "Production Order", "List"),
+		// test work order
+		() => frappe.set_route("List", "Work Order", "List"),
 		() => frappe.timeout(3),
 
-		// Create a laptop production order
+		// Create a laptop work order
 		() => {
-			return frappe.tests.make('Production Order', [
+			return frappe.tests.make('Work Order', [
 				{production_item: 'Laptop'},
 				{company: 'For Testing'},
 				{qty: laptop_quantity},
@@ -50,13 +50,13 @@
 			});
 		},
 
-		// Submit the production order
+		// Submit the work order
 		() => cur_frm.savesubmit(),
 		() => frappe.timeout(1),
 		() => frappe.click_button('Yes'),
 		() => frappe.timeout(2.5),
 
-		// Confirm the production order timesheet, save and submit it
+		// Confirm the work order timesheet, save and submit it
 		() => frappe.click_link("TS-00"),
 		() => frappe.timeout(1),
 		() => frappe.click_button("Submit"),
@@ -64,8 +64,8 @@
 		() => frappe.click_button("Yes"),
 		() => frappe.timeout(2.5),
 
-		// Start the production order process
-		() => frappe.set_route("List", "Production Order", "List"),
+		// Start the work order process
+		() => frappe.set_route("List", "Work Order", "List"),
 		() => frappe.timeout(2),
 		() => frappe.click_link("Laptop"),
 		() => frappe.timeout(1),
@@ -82,20 +82,20 @@
 			assert.equal(cur_frm.doc.total_outgoing_value, "99000",
 				"Outgoing cost is correct"); // Price of each item x5
 		},
-		// Submit for production
+		// Submit for work
 		() => frappe.click_button("Submit"),
 		() => frappe.timeout(0.5),
 		() => frappe.click_button("Yes"),
 		() => frappe.timeout(0.5),
 
-		// Finish the production order by sending for manufacturing
-		() => frappe.set_route("List", "Production Order"),
+		// Finish the work order by sending for manufacturing
+		() => frappe.set_route("List", "Work Order"),
 		() => frappe.timeout(1),
 		() => frappe.click_link("Laptop"),
 		() => frappe.timeout(1),
 
 		() => {
-			assert.ok(frappe.tests.is_visible("5 items in progress", 'p'), "Production order initiated");
+			assert.ok(frappe.tests.is_visible("5 items in progress", 'p'), "Work order initiated");
 			assert.ok(frappe.tests.is_visible("Finish"), "Finish button visible");
 		},
 
@@ -118,12 +118,12 @@
 		() => frappe.timeout(1),
 
 		// Manufacturing finished
-		() => frappe.set_route("List", "Production Order", "List"),
+		() => frappe.set_route("List", "Work Order", "List"),
 		() => frappe.timeout(1),
 		() => frappe.click_link("Laptop"),
 		() => frappe.timeout(1),
 
-		() => assert.ok(frappe.tests.is_visible("5 items produced", 'p'), "Production order completed"),
+		() => assert.ok(frappe.tests.is_visible("5 items produced", 'p'), "Work order completed"),
 
 		() => done()
 	]);
diff --git a/erpnext/manufacturing/doctype/production_order/test_production_order.py b/erpnext/manufacturing/doctype/work_order/test_work_order.py
similarity index 62%
rename from erpnext/manufacturing/doctype/production_order/test_production_order.py
rename to erpnext/manufacturing/doctype/work_order/test_work_order.py
index 7612461..6b43c63 100644
--- a/erpnext/manufacturing/doctype/production_order/test_production_order.py
+++ b/erpnext/manufacturing/doctype/work_order/test_work_order.py
@@ -7,13 +7,13 @@
 import frappe
 from frappe.utils import flt, time_diff_in_hours, now, add_days, cint
 from erpnext.stock.doctype.purchase_receipt.test_purchase_receipt import set_perpetual_inventory
-from erpnext.manufacturing.doctype.production_order.production_order \
+from erpnext.manufacturing.doctype.work_order.work_order \
 	import make_stock_entry, ItemHasVariantError, stop_unstop
 from erpnext.stock.doctype.stock_entry import test_stock_entry
 from erpnext.stock.utils import get_bin
 from erpnext.selling.doctype.sales_order.test_sales_order import make_sales_order
 
-class TestProductionOrder(unittest.TestCase):
+class TestWorkOrder(unittest.TestCase):
 	def setUp(self):
 		self.warehouse = '_Test Warehouse 2 - _TC'
 		self.item = '_Test Item'
@@ -24,7 +24,7 @@
 		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()
+		wo_order = make_wo_order_test_record()
 
 		planned1 = frappe.db.get_value("Bin", {"item_code": "_Test FG Item",
 			"warehouse": "_Test Warehouse 1 - _TC"}, "planned_qty")
@@ -38,60 +38,59 @@
 			target="Stores - _TC", qty=100, basic_rate=100)
 
 		# from stores to wip
-		s = frappe.get_doc(make_stock_entry(pro_order.name, "Material Transfer for Manufacture", 4))
+		s = frappe.get_doc(make_stock_entry(wo_order.name, "Material Transfer for Manufacture", 4))
 		for d in s.get("items"):
 			d.s_warehouse = "Stores - _TC"
 		s.insert()
 		s.submit()
 
 		# from wip to fg
-		s = frappe.get_doc(make_stock_entry(pro_order.name, "Manufacture", 4))
+		s = frappe.get_doc(make_stock_entry(wo_order.name, "Manufacture", 4))
 		s.insert()
 		s.submit()
 
-		self.assertEqual(frappe.db.get_value("Production Order", pro_order.name, "produced_qty"), 4)
+		self.assertEqual(frappe.db.get_value("Work Order", wo_order.name, "produced_qty"), 4)
 
 		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
+		return wo_order
 
 	def test_over_production(self):
-		from erpnext.manufacturing.doctype.production_order.production_order import StockOverProductionError
-		pro_doc = self.check_planned_qty()
+		from erpnext.manufacturing.doctype.work_order.work_order import StockOverProductionError
+		wo_doc = self.check_planned_qty()
 
 		test_stock_entry.make_stock_entry(item_code="_Test Item",
 			target="_Test Warehouse - _TC", qty=100, basic_rate=100)
 		test_stock_entry.make_stock_entry(item_code="_Test Item Home Desktop 100",
 			target="_Test Warehouse - _TC", qty=100, basic_rate=100)
 
-		s = frappe.get_doc(make_stock_entry(pro_doc.name, "Manufacture", 7))
+		s = frappe.get_doc(make_stock_entry(wo_doc.name, "Manufacture", 7))
 		s.insert()
 
 		self.assertRaises(StockOverProductionError, s.submit)
 
 	def test_make_time_sheet(self):
-		from erpnext.manufacturing.doctype.production_order.production_order import make_timesheet
-		prod_order = make_prod_order_test_record(item="_Test FG Item 2",
+		from erpnext.manufacturing.doctype.work_order.work_order import make_timesheet
+		wo_order = make_wo_order_test_record(item="_Test FG Item 2",
 			planned_start_date=now(), qty=1, do_not_save=True)
 
-		prod_order.set_production_order_operations()
-		prod_order.insert()
-		prod_order.submit()
+		wo_order.set_work_order_operations()
+		wo_order.insert()
+		wo_order.submit()
 
-		d = prod_order.operations[0]
+		d = wo_order.operations[0]
 		d.completed_qty = flt(d.completed_qty)
 
-		name = frappe.db.get_value('Timesheet', {'production_order': prod_order.name}, 'name')
+		name = frappe.db.get_value('Timesheet', {'work_order': wo_order.name}, 'name')
 		time_sheet_doc = frappe.get_doc('Timesheet', name)
-		self.assertEqual(prod_order.company, time_sheet_doc.company)
+		self.assertEqual(wo_order.company, time_sheet_doc.company)
 		time_sheet_doc.submit()
 
-
-		self.assertEqual(prod_order.name, time_sheet_doc.production_order)
-		self.assertEqual((prod_order.qty - d.completed_qty),
+		self.assertEqual(wo_order.name, time_sheet_doc.work_order)
+		self.assertEqual((wo_order.qty - d.completed_qty),
 			sum([d.completed_qty for d in time_sheet_doc.time_logs]))
 
 		manufacturing_settings = frappe.get_doc({
@@ -101,49 +100,49 @@
 
 		manufacturing_settings.save()
 
-		prod_order.load_from_db()
-		self.assertEqual(prod_order.operations[0].status, "Completed")
-		self.assertEqual(prod_order.operations[0].completed_qty, prod_order.qty)
+		wo_order.load_from_db()
+		self.assertEqual(wo_order.operations[0].status, "Completed")
+		self.assertEqual(wo_order.operations[0].completed_qty, wo_order.qty)
 
-		self.assertEqual(prod_order.operations[0].actual_operation_time, 60)
-		self.assertEqual(prod_order.operations[0].actual_operating_cost, 6000)
+		self.assertEqual(wo_order.operations[0].actual_operation_time, 60)
+		self.assertEqual(wo_order.operations[0].actual_operating_cost, 6000)
 
-		time_sheet_doc1 = make_timesheet(prod_order.name, prod_order.company)
+		time_sheet_doc1 = make_timesheet(wo_order.name, wo_order.company)
 		self.assertEqual(len(time_sheet_doc1.get('time_logs')), 0)
 
 		time_sheet_doc.cancel()
 
-		prod_order.load_from_db()
-		self.assertEqual(prod_order.operations[0].status, "Pending")
-		self.assertEqual(flt(prod_order.operations[0].completed_qty), 0)
+		wo_order.load_from_db()
+		self.assertEqual(wo_order.operations[0].status, "Pending")
+		self.assertEqual(flt(wo_order.operations[0].completed_qty), 0)
 
-		self.assertEqual(flt(prod_order.operations[0].actual_operation_time), 0)
-		self.assertEqual(flt(prod_order.operations[0].actual_operating_cost), 0)
+		self.assertEqual(flt(wo_order.operations[0].actual_operation_time), 0)
+		self.assertEqual(flt(wo_order.operations[0].actual_operating_cost), 0)
 
 	def test_planned_operating_cost(self):
-		prod_order = make_prod_order_test_record(item="_Test FG Item 2",
+		wo_order = make_wo_order_test_record(item="_Test FG Item 2",
 			planned_start_date=now(), qty=1, do_not_save=True)
-		prod_order.set_production_order_operations()
-		cost = prod_order.planned_operating_cost
-		prod_order.qty = 2
-		prod_order.set_production_order_operations()
-		self.assertEqual(prod_order.planned_operating_cost, cost*2)
+		wo_order.set_work_order_operations()
+		cost = wo_order.planned_operating_cost
+		wo_order.qty = 2
+		wo_order.set_work_order_operations()
+		self.assertEqual(wo_order.planned_operating_cost, cost*2)
 
 	def test_production_item(self):
-		prod_order = make_prod_order_test_record(item="_Test FG Item", qty=1, do_not_save=True)
+		wo_order = make_wo_order_test_record(item="_Test FG Item", qty=1, do_not_save=True)
 		frappe.db.set_value("Item", "_Test FG Item", "end_of_life", "2000-1-1")
 
-		self.assertRaises(frappe.ValidationError, prod_order.save)
+		self.assertRaises(frappe.ValidationError, wo_order.save)
 
 		frappe.db.set_value("Item", "_Test FG Item", "end_of_life", None)
 		frappe.db.set_value("Item", "_Test FG Item", "disabled", 1)
 
-		self.assertRaises(frappe.ValidationError, prod_order.save)
+		self.assertRaises(frappe.ValidationError, wo_order.save)
 
 		frappe.db.set_value("Item", "_Test FG Item", "disabled", 0)
 
-		prod_order = make_prod_order_test_record(item="_Test Variant Item", qty=1, do_not_save=True)
-		self.assertRaises(ItemHasVariantError, prod_order.save)
+		wo_order = make_wo_order_test_record(item="_Test Variant Item", qty=1, do_not_save=True)
+		self.assertRaises(ItemHasVariantError, wo_order.save)
 
 	def test_reserved_qty_for_production_submit(self):
 		self.bin1_at_start = get_bin(self.item, self.warehouse)
@@ -151,7 +150,7 @@
 		# reset to correct value
 		self.bin1_at_start.update_reserved_qty_for_production()
 
-		self.pro_order = make_prod_order_test_record(item="_Test FG Item", qty=2,
+		self.wo_order = make_wo_order_test_record(item="_Test FG Item", qty=2,
 			source_warehouse=self.warehouse)
 
 		self.bin1_on_submit = get_bin(self.item, self.warehouse)
@@ -165,7 +164,7 @@
 	def test_reserved_qty_for_production_cancel(self):
 		self.test_reserved_qty_for_production_submit()
 
-		self.pro_order.cancel()
+		self.wo_order.cancel()
 
 		bin1_on_cancel = get_bin(self.item, self.warehouse)
 
@@ -183,7 +182,7 @@
 
 		self.test_reserved_qty_for_production_submit()
 
-		s = frappe.get_doc(make_stock_entry(self.pro_order.name,
+		s = frappe.get_doc(make_stock_entry(self.wo_order.name,
 			"Material Transfer for Manufacture", 2))
 
 		s.submit()
@@ -198,7 +197,7 @@
 		self.assertEqual(cint(self.bin1_at_start.projected_qty),
 			cint(bin1_on_start_production.projected_qty) + 2)
 
-		s = frappe.get_doc(make_stock_entry(self.pro_order.name, "Manufacture", 2))
+		s = frappe.get_doc(make_stock_entry(self.wo_order.name, "Manufacture", 2))
 
 		bin1_on_end_production = get_bin(self.item, self.warehouse)
 
@@ -220,7 +219,7 @@
 
 		#2 0 -2
 
-		s = frappe.get_doc(make_stock_entry(self.pro_order.name,
+		s = frappe.get_doc(make_stock_entry(self.wo_order.name,
 			"Material Transfer for Manufacture", 1))
 
 		s.submit()
@@ -238,7 +237,7 @@
 			cint(bin1_on_start_production.projected_qty) + 2)
 
 		# STOP
-		stop_unstop(self.pro_order.name, "Stopped")
+		stop_unstop(self.wo_order.name, "Stopped")
 
 		bin1_on_stop_production = get_bin(self.item, self.warehouse)
 
@@ -249,7 +248,7 @@
 			cint(self.bin1_at_start.projected_qty))
 
 	def test_scrap_material_qty(self):
-		prod_order = make_prod_order_test_record(planned_start_date=now(), qty=2)
+		wo_order = make_wo_order_test_record(planned_start_date=now(), qty=2)
 
 		# add raw materials to stores
 		test_stock_entry.make_stock_entry(item_code="_Test Item",
@@ -257,27 +256,27 @@
 		test_stock_entry.make_stock_entry(item_code="_Test Item Home Desktop 100",
 			target="Stores - _TC", qty=10, basic_rate=1000.0)
 
-		s = frappe.get_doc(make_stock_entry(prod_order.name, "Material Transfer for Manufacture", 2))
+		s = frappe.get_doc(make_stock_entry(wo_order.name, "Material Transfer for Manufacture", 2))
 		for d in s.get("items"):
 			d.s_warehouse = "Stores - _TC"
 		s.insert()
 		s.submit()
 
-		s = frappe.get_doc(make_stock_entry(prod_order.name, "Manufacture", 2))
+		s = frappe.get_doc(make_stock_entry(wo_order.name, "Manufacture", 2))
 		s.insert()
 		s.submit()
 
-		prod_order_details = frappe.db.get_value("Production Order", prod_order.name,
+		wo_order_details = frappe.db.get_value("Work Order", wo_order.name,
 			["scrap_warehouse", "qty", "produced_qty", "bom_no"], as_dict=1)
 
-		scrap_item_details = get_scrap_item_details(prod_order_details.bom_no)
+		scrap_item_details = get_scrap_item_details(wo_order_details.bom_no)
 
-		self.assertEqual(prod_order_details.produced_qty, 2)
+		self.assertEqual(wo_order_details.produced_qty, 2)
 
 		for item in s.items:
 			if item.bom_no and item.item_code in scrap_item_details:
-				self.assertEqual(prod_order_details.scrap_warehouse, item.t_warehouse)
-				self.assertEqual(flt(prod_order_details.qty)*flt(scrap_item_details[item.item_code]), item.qty)
+				self.assertEqual(wo_order_details.scrap_warehouse, item.t_warehouse)
+				self.assertEqual(flt(wo_order_details.qty)*flt(scrap_item_details[item.item_code]), item.qty)
 
 def get_scrap_item_details(bom_no):
 	scrap_items = {}
@@ -287,34 +286,34 @@
 
 	return scrap_items
 
-def make_prod_order_test_record(**args):
+def make_wo_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,
+	wo_order = frappe.new_doc("Work Order")
+	wo_order.production_item = args.production_item or args.item or args.item_code or "_Test FG Item"
+	wo_order.bom_no = frappe.db.get_value("BOM", {"item": wo_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"
-	pro_order.fg_warehouse = args.fg_warehouse or "_Test Warehouse 1 - _TC"
-	pro_order.scrap_warehouse = args.fg_warehouse or "_Test Scrap Warehouse - _TC"
-	pro_order.company = args.company or "_Test Company"
-	pro_order.stock_uom = args.stock_uom or "_Test UOM"
-	pro_order.use_multi_level_bom=0
-	pro_order.get_items_and_operations_from_bom()
+	wo_order.qty = args.qty or 10
+	wo_order.wip_warehouse = args.wip_warehouse or "_Test Warehouse - _TC"
+	wo_order.fg_warehouse = args.fg_warehouse or "_Test Warehouse 1 - _TC"
+	wo_order.scrap_warehouse = args.fg_warehouse or "_Test Scrap Warehouse - _TC"
+	wo_order.company = args.company or "_Test Company"
+	wo_order.stock_uom = args.stock_uom or "_Test UOM"
+	wo_order.use_multi_level_bom=0
+	wo_order.get_items_and_operations_from_bom()
 
 	if args.source_warehouse:
-		for item in pro_order.get("required_items"):
+		for item in wo_order.get("required_items"):
 			item.source_warehouse = args.source_warehouse
 
 	if args.planned_start_date:
-		pro_order.planned_start_date = args.planned_start_date
+		wo_order.planned_start_date = args.planned_start_date
 
 	if not args.do_not_save:
-		pro_order.insert()
+		wo_order.insert()
 
 		if not args.do_not_submit:
-			pro_order.submit()
-	return pro_order
+			wo_order.submit()
+	return wo_order
 
-test_records = frappe.get_test_records('Production Order')
+test_records = frappe.get_test_records('Work Order')
diff --git a/erpnext/manufacturing/doctype/production_order/production_order.js b/erpnext/manufacturing/doctype/work_order/work_order.js
similarity index 79%
rename from erpnext/manufacturing/doctype/production_order/production_order.js
rename to erpnext/manufacturing/doctype/work_order/work_order.js
index bba3e1e..7d50416 100644
--- a/erpnext/manufacturing/doctype/production_order/production_order.js
+++ b/erpnext/manufacturing/doctype/work_order/work_order.js
@@ -1,7 +1,7 @@
-// Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
-// License: GNU General Public License v3. See license.txt
+// Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and contributors
+// For license information, please see license.txt
 
-frappe.ui.form.on("Production Order", {
+frappe.ui.form.on("Work Order", {
 	setup: function(frm) {
 		frm.custom_make_buttons = {
 			'Timesheet': 'Make Timesheet',
@@ -80,7 +80,7 @@
 			}
 		});
 
-		// formatter for production order operation
+		// formatter for work order operation
 		frm.set_indicator_formatter('operation',
 			function(doc) { return (frm.doc.qty==doc.completed_qty) ? "green" : "orange" });
 	},
@@ -96,17 +96,17 @@
 				"actual_start_date": "",
 				"actual_end_date": ""
 			});
-			erpnext.production_order.set_default_warehouse(frm);
+			erpnext.work_order.set_default_warehouse(frm);
 		}
 	},
 
 	refresh: function(frm) {
 		erpnext.toggle_naming_series();
-		erpnext.production_order.set_custom_buttons(frm);
+		erpnext.work_order.set_custom_buttons(frm);
 		frm.set_intro("");
 
 		if (frm.doc.docstatus === 0 && !frm.doc.__islocal) {
-			frm.set_intro(__("Submit this Production Order for further processing."));
+			frm.set_intro(__("Submit this Work Order for further processing."));
 		}
 
 		if (frm.doc.docstatus===1) {
@@ -116,7 +116,7 @@
 		if(frm.doc.docstatus == 1 && frm.doc.status != 'Stopped'){
 			frm.add_custom_button(__('Make Timesheet'), function(){
 				frappe.model.open_mapped_doc({
-					method: "erpnext.manufacturing.doctype.production_order.production_order.make_new_timesheet",
+					method: "erpnext.manufacturing.doctype.work_order.work_order.make_new_timesheet",
 					frm: cur_frm
 				})
 			})
@@ -160,7 +160,7 @@
 	production_item: function(frm) {
 		if (frm.doc.production_item) {
 			frappe.call({
-				method: "erpnext.manufacturing.doctype.production_order.production_order.get_item_details",
+				method: "erpnext.manufacturing.doctype.work_order.work_order.get_item_details",
 				args: {
 					item: frm.doc.production_item,
 					project: frm.doc.project
@@ -222,7 +222,7 @@
 	set_sales_order: function(frm) {
 		if(frm.doc.production_item) {
 			frappe.call({
-				method: "erpnext.manufacturing.doctype.production_order.production_order.query_sales_order",
+				method: "erpnext.manufacturing.doctype.work_order.work_order.query_sales_order",
 				args: { production_item: frm.doc.production_item },
 				callback: function(r) {
 					frm.set_query("sales_order", function() {
@@ -239,7 +239,7 @@
 	}
 });
 
-frappe.ui.form.on("Production Order Item", {
+frappe.ui.form.on("Work Order Item", {
 	source_warehouse: function(frm, cdt, cdn) {
 		var row = locals[cdt][cdn];
 		if(!row.item_code) {
@@ -260,7 +260,7 @@
 	}
 })
 
-frappe.ui.form.on("Production Order Operation", {
+frappe.ui.form.on("Work Order Operation", {
 	workstation: function(frm, cdt, cdn) {
 		var d = locals[cdt][cdn];
 		if (d.workstation) {
@@ -272,29 +272,29 @@
 				},
 				callback: function (data) {
 					frappe.model.set_value(d.doctype, d.name, "hour_rate", data.message.hour_rate);
-					erpnext.production_order.calculate_cost(frm.doc);
-					erpnext.production_order.calculate_total_cost(frm);
+					erpnext.work_order.calculate_cost(frm.doc);
+					erpnext.work_order.calculate_total_cost(frm);
 				}
 			})
 		}
 	},
 	time_in_mins: function(frm, cdt, cdn) {
-		erpnext.production_order.calculate_cost(frm.doc);
-		erpnext.production_order.calculate_total_cost(frm);
+		erpnext.work_order.calculate_cost(frm.doc);
+		erpnext.work_order.calculate_total_cost(frm);
 	},
 });
 
-erpnext.production_order = {
+erpnext.work_order = {
 	set_custom_buttons: function(frm) {
 		var doc = frm.doc;
 		if (doc.docstatus === 1) {
 			if (doc.status != 'Stopped' && doc.status != 'Completed') {
 				frm.add_custom_button(__('Stop'), function() {
-					erpnext.production_order.stop_production_order(frm, "Stopped");
+					erpnext.wokr_order.stop_work_order(frm, "Stopped");
 				}, __("Status"));
 			} else if (doc.status == 'Stopped') {
 				frm.add_custom_button(__('Re-open'), function() {
-					erpnext.production_order.stop_production_order(frm, "Resumed");
+					erpnext.work_order.stop_work_order(frm, "Resumed");
 				}, __("Status"));
 			}
 
@@ -303,7 +303,7 @@
 					&& frm.doc.status != 'Stopped') {
 					frm.has_start_btn = true;
 					var start_btn = frm.add_custom_button(__('Start'), function() {
-						erpnext.production_order.make_se(frm, 'Material Transfer for Manufacture');
+						erpnext.work_order.make_se(frm, 'Material Transfer for Manufacture');
 					});
 					start_btn.addClass('btn-primary');
 				}
@@ -314,7 +314,7 @@
 						&& frm.doc.status != 'Stopped') {
 					frm.has_finish_btn = true;
 					var finish_btn = frm.add_custom_button(__('Finish'), function() {
-						erpnext.production_order.make_se(frm, 'Manufacture');
+						erpnext.work_order.make_se(frm, 'Manufacture');
 					});
 
 					if(doc.material_transferred_for_manufacturing==doc.qty) {
@@ -326,7 +326,7 @@
 				if ((flt(doc.produced_qty) < flt(doc.qty)) && frm.doc.status != 'Stopped') {
 					frm.has_finish_btn = true;
 					var finish_btn = frm.add_custom_button(__('Finish'), function() {
-						erpnext.production_order.make_se(frm, 'Manufacture');
+						erpnext.work_order.make_se(frm, 'Manufacture');
 					});
 					finish_btn.addClass('btn-primary');
 				}
@@ -340,7 +340,7 @@
 			doc.planned_operating_cost = 0.0;
 			for(var i=0;i<op.length;i++) {
 				var planned_operating_cost = flt(flt(op[i].hour_rate) * flt(op[i].time_in_mins) / 60, 2);
-				frappe.model.set_value('Production Order Operation', op[i].name,
+				frappe.model.set_value('Work Order Operation', op[i].name,
 					"planned_operating_cost", planned_operating_cost);
 				doc.planned_operating_cost += planned_operating_cost;
 			}
@@ -357,7 +357,7 @@
 	set_default_warehouse: function(frm) {
 		if (!(frm.doc.wip_warehouse || frm.doc.fg_warehouse)) {
 			frappe.call({
-				method: "erpnext.manufacturing.doctype.production_order.production_order.get_default_warehouse",
+				method: "erpnext.manufacturing.doctype.work_order.work_order.get_default_warehouse",
 				callback: function(r) {
 					if(!r.exe) {
 						frm.set_value("wip_warehouse", r.message.wip_warehouse);
@@ -379,32 +379,32 @@
 
 		max = flt(max, precision("qty"));
 		frappe.prompt({fieldtype:"Float", label: __("Qty for {0}", [purpose]), fieldname:"qty",
-			description: __("Max: {0}", [max]), 'default': max },
-			function(data) {
-				if(data.qty > max) {
-					frappe.msgprint(__("Quantity must not be more than {0}", [max]));
-					return;
+			description: __("Max: {0}", [max]), 'default': max }, function(data)
+		{
+			if(data.qty > max) {
+				frappe.msgprint(__("Quantity must not be more than {0}", [max]));
+				return;
+			}
+			frappe.call({
+				method:"erpnext.manufacturing.doctype.work_order.work_order.make_stock_entry",
+				args: {
+					"work_order_id": frm.doc.name,
+					"purpose": purpose,
+					"qty": data.qty
+				},
+				callback: function(r) {
+					var doclist = frappe.model.sync(r.message);
+					frappe.set_route("Form", doclist[0].doctype, doclist[0].name);
 				}
-				frappe.call({
-					method:"erpnext.manufacturing.doctype.production_order.production_order.make_stock_entry",
-					args: {
-						"production_order_id": frm.doc.name,
-						"purpose": purpose,
-						"qty": data.qty
-					},
-					callback: function(r) {
-						var doclist = frappe.model.sync(r.message);
-						frappe.set_route("Form", doclist[0].doctype, doclist[0].name);
-					}
-				});
-			}, __("Select Quantity"), __("Make"));
+			});
+		}, __("Select Quantity"), __("Make"));
 	},
 	
-	stop_production_order: function(frm, status) {
+	stop_work_order: function(frm, status) {
 		frappe.call({
-			method: "erpnext.manufacturing.doctype.production_order.production_order.stop_unstop",
+			method: "erpnext.manufacturing.doctype.work_order.work_order.stop_unstop",
 			args: {
-				production_order: frm.doc.name,
+				work_order: frm.doc.name,
 				status: status
 			},
 			callback: function(r) {
diff --git a/erpnext/manufacturing/doctype/production_order/production_order.json b/erpnext/manufacturing/doctype/work_order/work_order.json
similarity index 98%
rename from erpnext/manufacturing/doctype/production_order/production_order.json
rename to erpnext/manufacturing/doctype/work_order/work_order.json
index 4399d32..6f6c4e4 100644
--- a/erpnext/manufacturing/doctype/production_order/production_order.json
+++ b/erpnext/manufacturing/doctype/work_order/work_order.json
@@ -48,7 +48,7 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "default": "PRO-", 
+   "default": "WO-", 
    "fieldname": "naming_series", 
    "fieldtype": "Select", 
    "hidden": 0, 
@@ -61,7 +61,7 @@
    "label": "Series", 
    "length": 0, 
    "no_copy": 0, 
-   "options": "PRO-", 
+   "options": "WO-", 
    "permlevel": 0, 
    "print_hide": 1, 
    "print_hide_if_no_value": 0, 
@@ -626,7 +626,7 @@
    "label": "Required Items", 
    "length": 0, 
    "no_copy": 1, 
-   "options": "Production Order Item", 
+   "options": "Work Order Item", 
    "permlevel": 0, 
    "precision": "", 
    "print_hide": 1, 
@@ -901,7 +901,7 @@
    "label": "Operations", 
    "length": 0, 
    "no_copy": 0, 
-   "options": "Production Order Operation", 
+   "options": "Work Order Operation", 
    "permlevel": 0, 
    "precision": "", 
    "print_hide": 0, 
@@ -1425,7 +1425,7 @@
    "no_copy": 1, 
    "oldfieldname": "amended_from", 
    "oldfieldtype": "Data", 
-   "options": "Production Order", 
+   "options": "Work Order", 
    "permlevel": 0, 
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
@@ -1449,10 +1449,10 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2017-12-20 05:31:56.636724", 
+ "modified": "2018-02-13 02:58:11.328693", 
  "modified_by": "Administrator", 
  "module": "Manufacturing", 
- "name": "Production Order", 
+ "name": "Work Order", 
  "owner": "Administrator", 
  "permissions": [
   {
diff --git a/erpnext/manufacturing/doctype/production_order/production_order.py b/erpnext/manufacturing/doctype/work_order/work_order.py
similarity index 87%
rename from erpnext/manufacturing/doctype/production_order/production_order.py
rename to erpnext/manufacturing/doctype/work_order/work_order.py
index c41260f..6c632a5 100644
--- a/erpnext/manufacturing/doctype/production_order/production_order.py
+++ b/erpnext/manufacturing/doctype/work_order/work_order.py
@@ -25,10 +25,10 @@
 class ItemHasVariantError(frappe.ValidationError): pass
 
 form_grid_templates = {
-	"operations": "templates/form_grid/production_order_grid.html"
+	"operations": "templates/form_grid/work_order_grid.html"
 }
 
-class ProductionOrder(Document):
+class WorkOrder(Document):
 	def validate(self):
 		self.validate_production_item()
 		if self.bom_no:
@@ -79,7 +79,7 @@
 					self.project = so[0].project
 
 				if not self.material_request:
-					self.validate_production_order_against_so()
+					self.validate_work_order_against_so()
 			else:
 				frappe.throw(_("Sales Order {0} is not valid").format(self.sales_order))
 
@@ -111,9 +111,9 @@
 			else self.planned_operating_cost
 		self.total_operating_cost = flt(self.additional_operating_cost) + flt(variable_cost)
 
-	def validate_production_order_against_so(self):
+	def validate_work_order_against_so(self):
 		# already ordered qty
-		ordered_qty_against_so = frappe.db.sql("""select sum(qty) from `tabProduction Order`
+		ordered_qty_against_so = frappe.db.sql("""select sum(qty) from `tabWork Order`
 			where production_item = %s and sales_order = %s and docstatus < 2 and name != %s""",
 			(self.production_item, self.sales_order, self.name))[0][0]
 
@@ -138,7 +138,7 @@
 				.format(self.production_item, so_qty), OverProductionError)
 
 	def update_status(self, status=None):
-		'''Update status of production order if unknown'''
+		'''Update status of work order if unknown'''
 		if status != "Stopped":
 			status = self.get_status(status)
 
@@ -150,7 +150,7 @@
 		return status
 
 	def get_status(self, status=None):
-		'''Return the status based on stock entries against this production order'''
+		'''Return the status based on stock entries against this work order'''
 		if not status:
 			status = self.status
 
@@ -159,7 +159,7 @@
 		elif self.docstatus==1:
 			if status != 'Stopped':
 				stock_entries = frappe._dict(frappe.db.sql("""select purpose, sum(fg_completed_qty)
-					from `tabStock Entry` where production_order=%s and docstatus=1
+					from `tabStock Entry` where work_order=%s and docstatus=1
 					group by purpose""", self.name))
 
 				status = "Not Started"
@@ -173,18 +173,18 @@
 
 		return status
 
-	def update_production_order_qty(self):
-		"""Update **Manufactured Qty** and **Material Transferred for Qty** in Production Order
+	def update_work_order_qty(self):
+		"""Update **Manufactured Qty** and **Material Transferred for Qty** in Work 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)
-				from `tabStock Entry` where production_order=%s and docstatus=1
+				from `tabStock Entry` where work_order=%s and docstatus=1
 				and purpose=%s""", (self.name, purpose))[0][0])
 
 			if qty > self.qty:
-				frappe.throw(_("{0} ({1}) cannot be greater than planned quanitity ({2}) in Production Order {3}").format(\
+				frappe.throw(_("{0} ({1}) cannot be greater than planned quanitity ({2}) in Work Order {3}").format(\
 					self.meta.get_label(fieldname), qty, self.qty, self.name), StockOverProductionError)
 
 			self.db_set(fieldname, qty)
@@ -222,11 +222,11 @@
 
 	def validate_cancel(self):
 		if self.status == "Stopped":
-			frappe.throw(_("Stopped Production Order cannot be cancelled, Unstop it first to cancel"))
+			frappe.throw(_("Stopped Work Order cannot be cancelled, Unstop it first to cancel"))
 
-		# Check whether any stock entry exists against this Production Order
+		# Check whether any stock entry exists against this Work Order
 		stock_entry = frappe.db.sql("""select name from `tabStock Entry`
-			where production_order = %s and docstatus = 1""", self.name)
+			where work_order = %s and docstatus = 1""", self.name)
 		if stock_entry:
 			frappe.throw(_("Cannot cancel because submitted Stock Entry {0} exists").format(stock_entry[0][0]))
 
@@ -253,8 +253,8 @@
 		if self.material_request:
 			frappe.get_doc("Material Request", self.material_request).update_completed_qty([self.material_request_item])
 
-	def set_production_order_operations(self):
-		"""Fetch operations from BOM and set in 'Production Order'"""
+	def set_work_order_operations(self):
+		"""Fetch operations from BOM and set in 'Work Order'"""
 		self.set('operations', [])
 
 		if not self.bom_no \
@@ -330,10 +330,10 @@
 					timesheet.validate_time_logs()
 				except OverlapError:
 					if frappe.message_log: frappe.message_log.pop()
-					timesheet.schedule_for_production_order(d.idx)
+					timesheet.schedule_for_work_order(d.idx)
 				except WorkstationHolidayError:
 					if frappe.message_log: frappe.message_log.pop()
-					timesheet.schedule_for_production_order(d.idx)
+					timesheet.schedule_for_work_order(d.idx)
 
 				from_time, to_time = self.get_start_end_time(timesheet, d.name)
 
@@ -418,12 +418,12 @@
 				self.actual_end_date = max(actual_end_dates)
 
 	def delete_timesheet(self):
-		for timesheet in frappe.get_all("Timesheet", ["name"], {"production_order": self.name}):
+		for timesheet in frappe.get_all("Timesheet", ["name"], {"work_order": self.name}):
 			frappe.delete_doc("Timesheet", timesheet.name)
 
 	def validate_production_item(self):
 		if frappe.db.get_value("Item", self.production_item, "has_variants"):
-			frappe.throw(_("Production Order cannot be raised against a Item Template"), ItemHasVariantError)
+			frappe.throw(_("Work Order cannot be raised against a Item Template"), ItemHasVariantError)
 
 		if self.production_item:
 			validate_end_of_life(self.production_item)
@@ -458,7 +458,7 @@
 
 	def get_items_and_operations_from_bom(self):
 		self.set_required_items()
-		self.set_production_order_operations()
+		self.set_work_order_operations()
 
 		return check_if_scrap_warehouse_mandatory(self.bom_no)
 
@@ -497,13 +497,13 @@
 
 	def update_transaferred_qty_for_required_items(self):
 		'''update transferred qty from submitted stock entries for that item against
-			the production order'''
+			the work order'''
 
 		for d in self.required_items:
 			transferred_qty = frappe.db.sql('''select sum(qty)
 				from `tabStock Entry` entry, `tabStock Entry Detail` detail
 				where
-					entry.production_order = %s
+					entry.work_order = %s
 					and entry.purpose = "Material Transfer for Manufacture"
 					and entry.docstatus = 1
 					and detail.parent = entry.name
@@ -564,50 +564,50 @@
 	return res
 
 @frappe.whitelist()
-def set_production_order_ops(name):
-	po = frappe.get_doc('Production Order', name)
-	po.set_production_order_operations()
+def set_work_order_ops(name):
+	po = frappe.get_doc('Work Order', name)
+	po.set_work_order_operations()
 	po.save()
 
 @frappe.whitelist()
-def make_stock_entry(production_order_id, purpose, qty=None):
-	production_order = frappe.get_doc("Production Order", production_order_id)
-	if not frappe.db.get_value("Warehouse", production_order.wip_warehouse, "is_group") \
-			and not production_order.skip_transfer:
-		wip_warehouse = production_order.wip_warehouse
+def make_stock_entry(work_order_id, purpose, qty=None):
+	work_order = frappe.get_doc("Work Order", work_order_id)
+	if not frappe.db.get_value("Warehouse", work_order.wip_warehouse, "is_group") \
+			and not work_order.skip_transfer:
+		wip_warehouse = work_order.wip_warehouse
 	else:
 		wip_warehouse = None
 
 	stock_entry = frappe.new_doc("Stock Entry")
 	stock_entry.purpose = purpose
-	stock_entry.production_order = production_order_id
-	stock_entry.company = production_order.company
+	stock_entry.work_order = work_order_id
+	stock_entry.company = work_order.company
 	stock_entry.from_bom = 1
-	stock_entry.bom_no = production_order.bom_no
-	stock_entry.use_multi_level_bom = production_order.use_multi_level_bom
-	stock_entry.fg_completed_qty = qty or (flt(production_order.qty) - flt(production_order.produced_qty))
-	if production_order.bom_no:
+	stock_entry.bom_no = work_order.bom_no
+	stock_entry.use_multi_level_bom = work_order.use_multi_level_bom
+	stock_entry.fg_completed_qty = qty or (flt(work_order.qty) - flt(work_order.produced_qty))
+	if work_order.bom_no:
 		stock_entry.inspection_required = frappe.db.get_value('BOM',
-			production_order.bom_no, 'inspection_required')
+			work_order.bom_no, 'inspection_required')
 
 	if purpose=="Material Transfer for Manufacture":
 		stock_entry.to_warehouse = wip_warehouse
-		stock_entry.project = production_order.project
+		stock_entry.project = work_order.project
 	else:
 		stock_entry.from_warehouse = wip_warehouse
-		stock_entry.to_warehouse = production_order.fg_warehouse
-		additional_costs = get_additional_costs(production_order, fg_qty=stock_entry.fg_completed_qty)
-		stock_entry.project = production_order.project
+		stock_entry.to_warehouse = work_order.fg_warehouse
+		additional_costs = get_additional_costs(work_order, fg_qty=stock_entry.fg_completed_qty)
+		stock_entry.project = work_order.project
 		stock_entry.set("additional_costs", additional_costs)
 
 	stock_entry.get_items()
 	return stock_entry.as_dict()
 
 @frappe.whitelist()
-def make_timesheet(production_order, company):
+def make_timesheet(work_order, company):
 	timesheet = frappe.new_doc("Timesheet")
 	timesheet.employee = ""
-	timesheet.production_order = production_order
+	timesheet.work_order = work_order
 	timesheet.company = company
 	return timesheet
 
@@ -632,7 +632,7 @@
 
 @frappe.whitelist()
 def make_new_timesheet(source_name, target_doc=None):
-	po = frappe.get_doc('Production Order', source_name)
+	po = frappe.get_doc('Work Order', source_name)
 	ts = po.make_time_logs(open_new=True)
 
 	if not ts or not ts.get('time_logs'):
@@ -641,16 +641,16 @@
 	return ts
 
 @frappe.whitelist()
-def stop_unstop(production_order, status):
+def stop_unstop(work_order, status):
 	""" Called from client side on Stop/Unstop event"""
 
-	if not frappe.has_permission("Production Order", "write"):
+	if not frappe.has_permission("Work Order", "write"):
 		frappe.throw(_("Not permitted"), frappe.PermissionError)
 
-	pro_order = frappe.get_doc("Production Order", production_order)
+	pro_order = frappe.get_doc("Work Order", work_order)
 	pro_order.update_status(status)
 	pro_order.update_planned_qty()
-	frappe.msgprint(_("Production Order has been {0}").format(status))
+	frappe.msgprint(_("Work Order has been {0}").format(status))
 	pro_order.notify_update()
 
 	return pro_order.status
diff --git a/erpnext/manufacturing/doctype/production_order/production_order_calendar.js b/erpnext/manufacturing/doctype/work_order/work_order_calendar.js
similarity index 83%
rename from erpnext/manufacturing/doctype/production_order/production_order_calendar.js
rename to erpnext/manufacturing/doctype/work_order/work_order_calendar.js
index ce2600a..c44b1e2 100644
--- a/erpnext/manufacturing/doctype/production_order/production_order_calendar.js
+++ b/erpnext/manufacturing/doctype/work_order/work_order_calendar.js
@@ -1,7 +1,7 @@
-// Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
-// License: GNU General Public License v3. See license.txt
+// Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and contributors
+// For license information, please see license.txt
 
-frappe.views.calendar["Production Order"] = {
+frappe.views.calendar["Work Order"] = {
 	field_map: {
 		"start": "planned_start_date",
 		"end": "planned_end_date",
diff --git a/erpnext/manufacturing/doctype/production_order/production_order_dashboard.py b/erpnext/manufacturing/doctype/work_order/work_order_dashboard.py
similarity index 77%
rename from erpnext/manufacturing/doctype/production_order/production_order_dashboard.py
rename to erpnext/manufacturing/doctype/work_order/work_order_dashboard.py
index 7c8c8c6..9b7c9a3 100644
--- a/erpnext/manufacturing/doctype/production_order/production_order_dashboard.py
+++ b/erpnext/manufacturing/doctype/work_order/work_order_dashboard.py
@@ -2,7 +2,7 @@
 
 def get_data():
 	return {
-		'fieldname': 'production_order',
+		'fieldname': 'work_order',
 		'transactions': [
 			{
 				'items': ['Stock Entry', 'Timesheet']
diff --git a/erpnext/manufacturing/doctype/production_order/production_order_list.js b/erpnext/manufacturing/doctype/work_order/work_order_list.js
similarity index 91%
rename from erpnext/manufacturing/doctype/production_order/production_order_list.js
rename to erpnext/manufacturing/doctype/work_order/work_order_list.js
index 762beb0..8d18395 100644
--- a/erpnext/manufacturing/doctype/production_order/production_order_list.js
+++ b/erpnext/manufacturing/doctype/work_order/work_order_list.js
@@ -1,4 +1,4 @@
-frappe.listview_settings['Production Order'] = {
+frappe.listview_settings['Work Order'] = {
 	add_fields: ["bom_no", "status", "sales_order", "qty",
 		"produced_qty", "expected_delivery_date", "planned_start_date", "planned_end_date"],
 	filters: [["status", "!=", "Stopped"]],
diff --git a/erpnext/manufacturing/doctype/production_order_item/__init__.py b/erpnext/manufacturing/doctype/work_order_item/__init__.py
similarity index 100%
rename from erpnext/manufacturing/doctype/production_order_item/__init__.py
rename to erpnext/manufacturing/doctype/work_order_item/__init__.py
diff --git a/erpnext/manufacturing/doctype/production_order_item/production_order_item.json b/erpnext/manufacturing/doctype/work_order_item/work_order_item.json
similarity index 98%
rename from erpnext/manufacturing/doctype/production_order_item/production_order_item.json
rename to erpnext/manufacturing/doctype/work_order_item/work_order_item.json
index c0b1d00..1ac6b66 100644
--- a/erpnext/manufacturing/doctype/production_order_item/production_order_item.json
+++ b/erpnext/manufacturing/doctype/work_order_item/work_order_item.json
@@ -354,10 +354,10 @@
  "issingle": 0, 
  "istable": 1, 
  "max_attachments": 0, 
- "modified": "2017-08-18 18:11:10.311736", 
+ "modified": "2018-02-13 02:58:11.328693",
  "modified_by": "Administrator", 
  "module": "Manufacturing", 
- "name": "Production Order Item", 
+ "name": "Work Order Item",
  "name_case": "", 
  "owner": "Administrator", 
  "permissions": [], 
diff --git a/erpnext/manufacturing/doctype/production_order_item/production_order_item.py b/erpnext/manufacturing/doctype/work_order_item/work_order_item.py
similarity index 69%
rename from erpnext/manufacturing/doctype/production_order_item/production_order_item.py
rename to erpnext/manufacturing/doctype/work_order_item/work_order_item.py
index e52ccc2..d18f028 100644
--- a/erpnext/manufacturing/doctype/production_order_item/production_order_item.py
+++ b/erpnext/manufacturing/doctype/work_order_item/work_order_item.py
@@ -6,8 +6,8 @@
 import frappe
 from frappe.model.document import Document
 
-class ProductionOrderItem(Document):
+class WorkOrderItem(Document):
 	pass
 
 def on_doctype_update():
-	frappe.db.add_index("Production Order Item", ["item_code", "source_warehouse"])
\ No newline at end of file
+	frappe.db.add_index("Work Order Item", ["item_code", "source_warehouse"])
\ No newline at end of file
diff --git a/erpnext/manufacturing/doctype/production_order_operation/__init__.py b/erpnext/manufacturing/doctype/work_order_operation/__init__.py
similarity index 100%
rename from erpnext/manufacturing/doctype/production_order_operation/__init__.py
rename to erpnext/manufacturing/doctype/work_order_operation/__init__.py
diff --git a/erpnext/manufacturing/doctype/production_order_operation/production_order_operation.json b/erpnext/manufacturing/doctype/work_order_operation/work_order_operation.json
similarity index 99%
rename from erpnext/manufacturing/doctype/production_order_operation/production_order_operation.json
rename to erpnext/manufacturing/doctype/work_order_operation/work_order_operation.json
index 89306c4..9c1c953 100644
--- a/erpnext/manufacturing/doctype/production_order_operation/production_order_operation.json
+++ b/erpnext/manufacturing/doctype/work_order_operation/work_order_operation.json
@@ -672,10 +672,10 @@
  "issingle": 0, 
  "istable": 1, 
  "max_attachments": 0, 
- "modified": "2017-05-29 18:02:04.252419", 
+ "modified": "2018-02-13 02:58:11.328693",
  "modified_by": "Administrator", 
  "module": "Manufacturing", 
- "name": "Production Order Operation", 
+ "name": "Work Order Operation",
  "name_case": "", 
  "owner": "Administrator", 
  "permissions": [], 
diff --git a/erpnext/manufacturing/doctype/production_order_operation/production_order_operation.py b/erpnext/manufacturing/doctype/work_order_operation/work_order_operation.py
similarity index 84%
rename from erpnext/manufacturing/doctype/production_order_operation/production_order_operation.py
rename to erpnext/manufacturing/doctype/work_order_operation/work_order_operation.py
index c425a6e..3c20d8e 100644
--- a/erpnext/manufacturing/doctype/production_order_operation/production_order_operation.py
+++ b/erpnext/manufacturing/doctype/work_order_operation/work_order_operation.py
@@ -5,5 +5,5 @@
 import frappe
 from frappe.model.document import Document
 
-class ProductionOrderOperation(Document):
+class WorkOrderOperation(Document):
 	pass
diff --git a/erpnext/manufacturing/page/production_analytics/production_analytics.js b/erpnext/manufacturing/page/production_analytics/production_analytics.js
index a40177c..f75bccf 100644
--- a/erpnext/manufacturing/page/production_analytics/production_analytics.js
+++ b/erpnext/manufacturing/page/production_analytics/production_analytics.js
@@ -19,7 +19,7 @@
 			title: __("Production Analytics"),
 			parent: $(wrapper).find('.layout-main'),
 			page: wrapper.page,
-			doctypes: ["Item", "Company", "Fiscal Year", "Production Order"]
+			doctypes: ["Item", "Company", "Fiscal Year", "Work Order"]
 		});
 
 	},
@@ -86,7 +86,7 @@
 		// add Opening, Closing, Totals rows
 		// if filtered by account and / or voucher
 		var me = this;
-		var all_open_orders = {name:"All Production Orders", "id": "all-open-pos",
+		var all_open_orders = {name:"All Work Orders", "id": "all-open-pos",
 			checked:true};
 		var not_started = {name:"Not Started", "id":"not-started-pos",
 			checked:true};
@@ -97,7 +97,7 @@
 		var completed = {name:"Completed", "id":"completed-pos",
 			checked:true};
 
-		$.each(frappe.report_dump.data["Production Order"], function(i, d) {
+		$.each(frappe.report_dump.data["Work Order"], function(i, d) {
 			var dateobj = frappe.datetime.str_to_obj(d.creation);
 			var date = frappe.datetime.str_to_user(d.creation.split(" ")[0]);
 
diff --git a/erpnext/manufacturing/report/completed_production_orders/completed_production_orders.json b/erpnext/manufacturing/report/completed_production_orders/completed_production_orders.json
deleted file mode 100644
index d36e52e..0000000
--- a/erpnext/manufacturing/report/completed_production_orders/completed_production_orders.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "add_total_row": 0, 
- "apply_user_permissions": 1, 
- "creation": "2013-08-12 12:44:27", 
- "disabled": 0, 
- "docstatus": 0, 
- "doctype": "Report", 
- "idx": 3, 
- "is_standard": "Yes", 
- "modified": "2017-02-24 20:10:32.460097", 
- "modified_by": "Administrator", 
- "module": "Manufacturing", 
- "name": "Completed Production Orders", 
- "owner": "Administrator", 
- "query": "SELECT\n  `tabProduction Order`.name as \"Production Order:Link/Production Order:200\",\n  `tabProduction Order`.creation as \"Date:Date:120\",\n  `tabProduction Order`.production_item as \"Item:Link/Item:150\",\n  `tabProduction Order`.qty as \"To Produce:Int:100\",\n  `tabProduction Order`.produced_qty as \"Produced:Int:100\",\n  `tabProduction Order`.company as \"Company:Link/Company:\"\nFROM\n  `tabProduction Order`\nWHERE\n  `tabProduction Order`.docstatus=1\n  AND ifnull(`tabProduction Order`.produced_qty,0) = `tabProduction Order`.qty", 
- "ref_doctype": "Production Order", 
- "report_name": "Completed Production Orders", 
- "report_type": "Query Report", 
- "roles": [
-  {
-   "role": "Manufacturing User"
-  }, 
-  {
-   "role": "Stock User"
-  }
- ]
-}
\ No newline at end of file
diff --git a/erpnext/manufacturing/report/completed_production_orders/__init__.py b/erpnext/manufacturing/report/completed_work_orders/__init__.py
similarity index 100%
rename from erpnext/manufacturing/report/completed_production_orders/__init__.py
rename to erpnext/manufacturing/report/completed_work_orders/__init__.py
diff --git a/erpnext/manufacturing/report/completed_work_orders/completed_work_orders.json b/erpnext/manufacturing/report/completed_work_orders/completed_work_orders.json
new file mode 100644
index 0000000..be50e93
--- /dev/null
+++ b/erpnext/manufacturing/report/completed_work_orders/completed_work_orders.json
@@ -0,0 +1,27 @@
+{
+ "add_total_row": 0, 
+ "apply_user_permissions": 1, 
+ "creation": "2013-08-12 12:44:27", 
+ "disabled": 0, 
+ "docstatus": 0, 
+ "doctype": "Report", 
+ "idx": 3, 
+ "is_standard": "Yes", 
+ "modified": "2018-02-13 04:58:51.549413", 
+ "modified_by": "Administrator", 
+ "module": "Manufacturing", 
+ "name": "Completed Work Orders", 
+ "owner": "Administrator", 
+ "query": "SELECT\n  `tabWork Order`.name as \"Work Order:Link/Work Order:200\",\n  `tabWork Order`.creation as \"Date:Date:120\",\n  `tabWork Order`.production_item as \"Item:Link/Item:150\",\n  `tabWork Order`.qty as \"To Produce:Int:100\",\n  `tabWork Order`.produced_qty as \"Produced:Int:100\",\n  `tabWork Order`.company as \"Company:Link/Company:\"\nFROM\n  `tabWork Order`\nWHERE\n  `tabWork Order`.docstatus=1\n  AND ifnull(`tabWork Order`.produced_qty,0) = `tabWork Order`.qty", 
+ "ref_doctype": "Work Order", 
+ "report_name": "Completed Work Orders", 
+ "report_type": "Query Report", 
+ "roles": [
+  {
+   "role": "Manufacturing User"
+  }, 
+  {
+   "role": "Stock User"
+  }
+ ]
+}
\ No newline at end of file
diff --git a/erpnext/manufacturing/report/issued_items_against_production_order/issued_items_against_production_order.json b/erpnext/manufacturing/report/issued_items_against_production_order/issued_items_against_production_order.json
deleted file mode 100644
index 388ab8c..0000000
--- a/erpnext/manufacturing/report/issued_items_against_production_order/issued_items_against_production_order.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "add_total_row": 0, 
- "apply_user_permissions": 1, 
- "creation": "2013-05-03 17:48:46", 
- "disabled": 0, 
- "docstatus": 0, 
- "doctype": "Report", 
- "idx": 3, 
- "is_standard": "Yes", 
- "modified": "2017-02-24 20:00:38.101588", 
- "modified_by": "Administrator", 
- "module": "Manufacturing", 
- "name": "Issued Items Against Production Order", 
- "owner": "Administrator", 
- "query": "select\n    ste.production_order as \"Production Order:Link/Production Order:120\",\n    ste.posting_date as \"Issue Date:Date:140\",\n    ste_item.item_code as \"Item Code:Link/Item:120\",\n\tste_item.description as \"Description::150\",\n\tste_item.transfer_qty as \"Qty:Float:100\",\n\tste_item.stock_uom as \"UOM:Link/UOM:80\",\n\tste_item.amount as \"Amount:Currency:120\",\n\tste_item.serial_no as \"Serial No:Link/Serial No:80\",\n\tste_item.s_warehouse as \"Source Warehouse:Link/Warehouse:120\",\n\tste_item.t_warehouse as \"Target Warehouse:Link/Warehouse:120\",\n\tpro.production_item as \"Finished Goods:Link/Item:120\", \n\tste.name as \"Stock Entry:Link/Stock Entry:120\",\n\tste.company as \"Company:Link/Company:\",\n\t(select bin.projected_qty from `tabBin` bin \n\t\t\twhere  bin.item_code= ste_item.item_code and bin.warehouse= ste_item.s_warehouse) as \"Projected Quantity as Source:Float:200\"\nfrom\t`tabStock Entry` ste, `tabStock Entry Detail` ste_item, `tabProduction Order` pro\nwhere\n\tifnull(ste.production_order, '') != '' and ste.name = ste_item.parent \n\tand ste.production_order = pro.name and ste.docstatus = 1\n\tand ste.purpose = 'Material Transfer for Manufacture'\norder by ste.posting_date, ste.production_order, ste_item.item_code", 
- "ref_doctype": "Production Order", 
- "report_name": "Issued Items Against Production Order", 
- "report_type": "Query Report", 
- "roles": [
-  {
-   "role": "Manufacturing User"
-  }, 
-  {
-   "role": "Stock User"
-  }
- ]
-}
\ No newline at end of file
diff --git a/erpnext/manufacturing/report/issued_items_against_production_order/__init__.py b/erpnext/manufacturing/report/issued_items_against_work_order/__init__.py
similarity index 100%
rename from erpnext/manufacturing/report/issued_items_against_production_order/__init__.py
rename to erpnext/manufacturing/report/issued_items_against_work_order/__init__.py
diff --git a/erpnext/manufacturing/report/issued_items_against_work_order/issued_items_against_work_order.json b/erpnext/manufacturing/report/issued_items_against_work_order/issued_items_against_work_order.json
new file mode 100644
index 0000000..430f116
--- /dev/null
+++ b/erpnext/manufacturing/report/issued_items_against_work_order/issued_items_against_work_order.json
@@ -0,0 +1,27 @@
+{
+ "add_total_row": 0, 
+ "apply_user_permissions": 1, 
+ "creation": "2013-05-03 17:48:46", 
+ "disabled": 0, 
+ "docstatus": 0, 
+ "doctype": "Report", 
+ "idx": 3, 
+ "is_standard": "Yes", 
+ "modified": "2018-02-13 04:56:57.040163", 
+ "modified_by": "Administrator", 
+ "module": "Manufacturing", 
+ "name": "Issued Items Against Work Order", 
+ "owner": "Administrator", 
+ "query": "select\n    ste.work_order as \"Work Order:Link/Work Order:120\",\n    ste.posting_date as \"Issue Date:Date:140\",\n    ste_item.item_code as \"Item Code:Link/Item:120\",\n\tste_item.description as \"Description::150\",\n\tste_item.transfer_qty as \"Qty:Float:100\",\n\tste_item.stock_uom as \"UOM:Link/UOM:80\",\n\tste_item.amount as \"Amount:Currency:120\",\n\tste_item.serial_no as \"Serial No:Link/Serial No:80\",\n\tste_item.s_warehouse as \"Source Warehouse:Link/Warehouse:120\",\n\tste_item.t_warehouse as \"Target Warehouse:Link/Warehouse:120\",\n\two.production_item as \"Finished Goods:Link/Item:120\", \n\tste.name as \"Stock Entry:Link/Stock Entry:120\",\n\tste.company as \"Company:Link/Company:\",\n\t(select bin.projected_qty from `tabBin` bin \n\t\t\twhere  bin.item_code= ste_item.item_code and bin.warehouse= ste_item.s_warehouse) as \"Projected Quantity as Source:Float:200\"\nfrom\t`tabStock Entry` ste, `tabStock Entry Detail` ste_item, `tabWork Order` wo\nwhere\n\tifnull(ste.work_order, '') != '' and ste.name = ste_item.parent \n\tand ste.work_order = wo.name and ste.docstatus = 1\n\tand ste.purpose = 'Material Transfer for Manufacture'\norder by ste.posting_date, ste.work_order, ste_item.item_code", 
+ "ref_doctype": "Work Order", 
+ "report_name": "Issued Items Against Work Order", 
+ "report_type": "Query Report", 
+ "roles": [
+  {
+   "role": "Manufacturing User"
+  }, 
+  {
+   "role": "Stock User"
+  }
+ ]
+}
\ No newline at end of file
diff --git a/erpnext/manufacturing/report/open_production_orders/open_production_orders.json b/erpnext/manufacturing/report/open_production_orders/open_production_orders.json
deleted file mode 100644
index 5d0b711..0000000
--- a/erpnext/manufacturing/report/open_production_orders/open_production_orders.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "add_total_row": 0, 
- "apply_user_permissions": 1, 
- "creation": "2013-08-12 12:32:30", 
- "disabled": 0, 
- "docstatus": 0, 
- "doctype": "Report", 
- "idx": 3, 
- "is_standard": "Yes", 
- "modified": "2017-02-24 20:10:23.179130", 
- "modified_by": "Administrator", 
- "module": "Manufacturing", 
- "name": "Open Production Orders", 
- "owner": "Administrator", 
- "query": "SELECT\n  `tabProduction Order`.name as \"Production Order:Link/Production Order:200\",\n  `tabProduction Order`.creation as \"Date:Date:120\",\n  `tabProduction Order`.production_item as \"Item:Link/Item:150\",\n  `tabProduction Order`.qty as \"To Produce:Int:100\",\n  `tabProduction Order`.produced_qty as \"Produced:Int:100\",\n  `tabProduction Order`.company as \"Company:Link/Company:\"\nFROM\n  `tabProduction Order`\nWHERE\n  `tabProduction Order`.docstatus=1\n  AND ifnull(`tabProduction Order`.produced_qty,0) < `tabProduction Order`.qty\n  AND NOT EXISTS (SELECT name from `tabStock Entry` where production_order =`tabProduction Order`.name) ", 
- "ref_doctype": "Production Order", 
- "report_name": "Open Production Orders", 
- "report_type": "Query Report", 
- "roles": [
-  {
-   "role": "Manufacturing User"
-  }, 
-  {
-   "role": "Stock User"
-  }
- ]
-}
\ No newline at end of file
diff --git a/erpnext/manufacturing/report/open_production_orders/__init__.py b/erpnext/manufacturing/report/open_work_orders/__init__.py
similarity index 100%
rename from erpnext/manufacturing/report/open_production_orders/__init__.py
rename to erpnext/manufacturing/report/open_work_orders/__init__.py
diff --git a/erpnext/manufacturing/report/open_work_orders/open_work_orders.json b/erpnext/manufacturing/report/open_work_orders/open_work_orders.json
new file mode 100644
index 0000000..479c65b
--- /dev/null
+++ b/erpnext/manufacturing/report/open_work_orders/open_work_orders.json
@@ -0,0 +1,27 @@
+{
+ "add_total_row": 0, 
+ "apply_user_permissions": 1, 
+ "creation": "2013-08-12 12:32:30", 
+ "disabled": 0, 
+ "docstatus": 0, 
+ "doctype": "Report", 
+ "idx": 3, 
+ "is_standard": "Yes", 
+ "modified": "2018-02-13 04:58:29.780472", 
+ "modified_by": "Administrator", 
+ "module": "Manufacturing", 
+ "name": "Open Work Orders", 
+ "owner": "Administrator", 
+ "query": "SELECT\n  `tabWork Order`.name as \"Work Order:Link/Work Order:200\",\n  `tabWork Order`.creation as \"Date:Date:120\",\n  `tabWork Order`.production_item as \"Item:Link/Item:150\",\n  `tabWork Order`.qty as \"To Produce:Int:100\",\n  `tabWork Order`.produced_qty as \"Produced:Int:100\",\n  `tabWork Order`.company as \"Company:Link/Company:\"\nFROM\n  `tabWork Order`\nWHERE\n  `tabWork Order`.docstatus=1\n  AND ifnull(`tabWork Order`.produced_qty,0) < `tabWork Order`.qty\n  AND NOT EXISTS (SELECT name from `tabStock Entry` where work_order =`tabWork Order`.name) ", 
+ "ref_doctype": "Work Order", 
+ "report_name": "Open Work Orders", 
+ "report_type": "Query Report", 
+ "roles": [
+  {
+   "role": "Manufacturing User"
+  }, 
+  {
+   "role": "Stock User"
+  }
+ ]
+}
\ No newline at end of file
diff --git a/erpnext/manufacturing/report/production_order_stock_report/production_order_stock_report.js b/erpnext/manufacturing/report/production_order_stock_report/production_order_stock_report.js
deleted file mode 100644
index 94e326d..0000000
--- a/erpnext/manufacturing/report/production_order_stock_report/production_order_stock_report.js
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright (c) 2016, Velometro Mobility Inc and contributors
-// For license information, please see license.txt
-
-frappe.query_reports["Production Order Stock Report"] = {
-	"filters": [
-		{
-			"fieldname": "warehouse",
-			"label": __("Warehouse"),
-			"fieldtype": "Link",
-			"options": "Warehouse"
-		}
-	]
-}
diff --git a/erpnext/manufacturing/report/production_orders_in_progress/production_orders_in_progress.json b/erpnext/manufacturing/report/production_orders_in_progress/production_orders_in_progress.json
deleted file mode 100644
index 5867aed..0000000
--- a/erpnext/manufacturing/report/production_orders_in_progress/production_orders_in_progress.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "add_total_row": 0, 
- "apply_user_permissions": 1, 
- "creation": "2013-08-12 12:43:47", 
- "disabled": 0, 
- "docstatus": 0, 
- "doctype": "Report", 
- "idx": 3, 
- "is_standard": "Yes", 
- "modified": "2017-02-24 20:10:40.304828", 
- "modified_by": "Administrator", 
- "module": "Manufacturing", 
- "name": "Production Orders in Progress", 
- "owner": "Administrator", 
- "query": "SELECT\n  `tabProduction Order`.name as \"Production Order:Link/Production Order:200\",\n  `tabProduction Order`.creation as \"Date:Date:120\",\n  `tabProduction Order`.production_item as \"Item:Link/Item:150\",\n  `tabProduction Order`.qty as \"To Produce:Int:100\",\n  `tabProduction Order`.produced_qty as \"Produced:Int:100\",\n  `tabProduction Order`.company as \"Company:Link/Company:\"\nFROM\n  `tabProduction Order`\nWHERE\n  `tabProduction Order`.docstatus=1\n  AND ifnull(`tabProduction Order`.produced_qty,0) < `tabProduction Order`.qty\n  AND EXISTS (SELECT name from `tabStock Entry` where production_order =`tabProduction Order`.name) ", 
- "ref_doctype": "Production Order", 
- "report_name": "Production Orders in Progress", 
- "report_type": "Query Report", 
- "roles": [
-  {
-   "role": "Manufacturing User"
-  }, 
-  {
-   "role": "Stock User"
-  }
- ]
-}
\ No newline at end of file
diff --git a/erpnext/manufacturing/report/production_order_stock_report/__init__.py b/erpnext/manufacturing/report/work_order_stock_report/__init__.py
similarity index 100%
rename from erpnext/manufacturing/report/production_order_stock_report/__init__.py
rename to erpnext/manufacturing/report/work_order_stock_report/__init__.py
diff --git a/erpnext/manufacturing/report/work_order_stock_report/work_order_stock_report.js b/erpnext/manufacturing/report/work_order_stock_report/work_order_stock_report.js
new file mode 100644
index 0000000..dbb7c23
--- /dev/null
+++ b/erpnext/manufacturing/report/work_order_stock_report/work_order_stock_report.js
@@ -0,0 +1,14 @@
+// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
+// For license information, please see license.txt
+/* eslint-disable */
+
+frappe.query_reports["Work Order Stock Report"] = {
+	"filters": [
+		{
+			"fieldname": "warehouse",
+			"label": __("Warehouse"),
+			"fieldtype": "Link",
+			"options": "Warehouse"
+		}
+	]
+}
diff --git a/erpnext/manufacturing/report/production_order_stock_report/production_order_stock_report.json b/erpnext/manufacturing/report/work_order_stock_report/work_order_stock_report.json
similarity index 70%
rename from erpnext/manufacturing/report/production_order_stock_report/production_order_stock_report.json
rename to erpnext/manufacturing/report/work_order_stock_report/work_order_stock_report.json
index 0cb8982..7e027da 100644
--- a/erpnext/manufacturing/report/production_order_stock_report/production_order_stock_report.json
+++ b/erpnext/manufacturing/report/work_order_stock_report/work_order_stock_report.json
@@ -8,13 +8,13 @@
  "idx": 0, 
  "is_standard": "Yes", 
  "letter_head": "", 
- "modified": "2017-02-24 19:59:07.792058", 
+ "modified": "2018-02-13 04:47:04.158213", 
  "modified_by": "Administrator", 
  "module": "Manufacturing", 
- "name": "Production Order Stock Report", 
+ "name": "Work Order Stock Report", 
  "owner": "Administrator", 
- "ref_doctype": "Production Order", 
- "report_name": "Production Order Stock Report", 
+ "ref_doctype": "Work Order", 
+ "report_name": "Work Order Stock Report", 
  "report_type": "Script Report", 
  "roles": [
   {
diff --git a/erpnext/manufacturing/report/production_order_stock_report/production_order_stock_report.py b/erpnext/manufacturing/report/work_order_stock_report/work_order_stock_report.py
similarity index 69%
rename from erpnext/manufacturing/report/production_order_stock_report/production_order_stock_report.py
rename to erpnext/manufacturing/report/work_order_stock_report/work_order_stock_report.py
index f996323..97553e6 100644
--- a/erpnext/manufacturing/report/production_order_stock_report/production_order_stock_report.py
+++ b/erpnext/manufacturing/report/work_order_stock_report/work_order_stock_report.py
@@ -6,20 +6,20 @@
 import frappe
 
 def execute(filters=None):
-	prod_list = get_production_orders()
-	data = get_item_list(prod_list, filters)
+	wo_list = get_work_orders()
+	data = get_item_list(wo_list, filters)
 	columns = get_columns()
 	return columns, data
 	
-def get_item_list(prod_list, filters):
+def get_item_list(wo_list, filters):
 	out = []
 	
 	#Add a row for each item/qty
-	for prod_details in prod_list:
-		desc = frappe.db.get_value("BOM", prod_details.bom_no, "description")
+	for wo_details in wo_list:
+		desc = frappe.db.get_value("BOM", wo_details.bom_no, "description")
 
-		for prod_item_details in frappe.db.get_values("Production Order Item",
-			{"parent": prod_details.name}, ["item_code", "source_warehouse"], as_dict=1):
+		for wo_item_details in frappe.db.get_values("Work Order Item",
+			{"parent": wo_details.name}, ["item_code", "source_warehouse"], as_dict=1):
 
 			item_list = frappe.db.sql("""SELECT
 					bom_item.item_code as item_code,
@@ -35,15 +35,15 @@
 					and bom.name = %(bom)s
 				GROUP BY
 					bom_item.item_code""",
-			{"bom": prod_details.bom_no, "warehouse": prod_item_details.source_warehouse,
-				"filterhouse": filters.warehouse, "item_code": prod_item_details.item_code}, as_dict=1)
+			{"bom": wo_details.bom_no, "warehouse": wo_item_details.source_warehouse,
+				"filterhouse": filters.warehouse, "item_code": wo_item_details.item_code}, as_dict=1)
 
 			stock_qty = 0
 			count = 0
-			buildable_qty = prod_details.qty
+			buildable_qty = wo_details.qty
 			for item in item_list:
 				count = count + 1
-				if item.build_qty >= (prod_details.qty - prod_details.produced_qty):
+				if item.build_qty >= (wo_details.qty - wo_details.produced_qty):
 					stock_qty = stock_qty + 1
 				elif buildable_qty >= item.build_qty:
 					buildable_qty = item.build_qty
@@ -54,15 +54,15 @@
 				build = "N"
 
 			row = frappe._dict({
-				"production_order": prod_details.name,
-				"status": prod_details.status,
+				"work_order": wo_details.name,
+				"status": wo_details.status,
 				"req_items": cint(count),
 				"instock": stock_qty,
 				"description": desc,
-				"source_warehouse": prod_item_details.source_warehouse,
-				"item_code": prod_item_details.item_code,
-				"bom_no": prod_details.bom_no,
-				"qty": prod_details.qty,
+				"source_warehouse": wo_item_details.source_warehouse,
+				"item_code": wo_item_details.item_code,
+				"bom_no": wo_details.bom_no,
+				"qty": wo_details.qty,
 				"buildable_qty": buildable_qty,
 				"ready_to_build": build
 			})
@@ -71,18 +71,18 @@
 
 	return out
 	
-def get_production_orders():
-	out =  frappe.get_all("Production Order", filters={"docstatus": 1, "status": ( "!=","Completed")},
+def get_work_orders():
+	out =  frappe.get_all("Work Order", filters={"docstatus": 1, "status": ( "!=","Completed")},
 		fields=["name","status", "bom_no", "qty", "produced_qty"], order_by='name')
 
 	return out
 	
 def get_columns():
 	columns = [{
-		"fieldname": "production_order",
-		"label": "Production Order",
+		"fieldname": "work_order",
+		"label": "Work Order",
 		"fieldtype": "Link",
-		"options": "Production Order",
+		"options": "Work Order",
 		"width": 110
 	}, {
 		"fieldname": "bom_no",
diff --git a/erpnext/manufacturing/report/production_orders_in_progress/__init__.py b/erpnext/manufacturing/report/work_orders_in_progress/__init__.py
similarity index 100%
rename from erpnext/manufacturing/report/production_orders_in_progress/__init__.py
rename to erpnext/manufacturing/report/work_orders_in_progress/__init__.py
diff --git a/erpnext/manufacturing/report/work_orders_in_progress/work_orders_in_progress.json b/erpnext/manufacturing/report/work_orders_in_progress/work_orders_in_progress.json
new file mode 100644
index 0000000..db94fe8
--- /dev/null
+++ b/erpnext/manufacturing/report/work_orders_in_progress/work_orders_in_progress.json
@@ -0,0 +1,27 @@
+{
+ "add_total_row": 0, 
+ "apply_user_permissions": 1, 
+ "creation": "2013-08-12 12:43:47", 
+ "disabled": 0, 
+ "docstatus": 0, 
+ "doctype": "Report", 
+ "idx": 3, 
+ "is_standard": "Yes", 
+ "modified": "2018-02-13 04:56:02.206353", 
+ "modified_by": "Administrator", 
+ "module": "Manufacturing", 
+ "name": "Work Orders in Progress", 
+ "owner": "Administrator", 
+ "query": "SELECT\n  `tabWork Order`.name as \"Work Order:Link/Work Order:200\",\n  `tabWork Order`.creation as \"Date:Date:120\",\n  `tabWork Order`.production_item as \"Item:Link/Item:150\",\n  `tabWork Order`.qty as \"To Produce:Int:100\",\n  `tabWork Order`.produced_qty as \"Produced:Int:100\",\n  `tabWork Order`.company as \"Company:Link/Company:\"\nFROM\n  `tabWork Order`\nWHERE\n  `tabWork Order`.docstatus=1\n  AND ifnull(`tabWork Order`.produced_qty,0) < `tabWork Order`.qty\n  AND EXISTS (SELECT name from `tabStock Entry` where work_order =`tabWork Order`.name) ", 
+ "ref_doctype": "Work Order", 
+ "report_name": "Work Orders in Progress", 
+ "report_type": "Query Report", 
+ "roles": [
+  {
+   "role": "Manufacturing User"
+  }, 
+  {
+   "role": "Stock User"
+  }
+ ]
+}
\ No newline at end of file
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index e049a81..328a7e4 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -1,6 +1,7 @@
 execute:import unidecode # new requirement
 erpnext.patches.v8_0.move_perpetual_inventory_setting
 erpnext.patches.v10_0.rename_schools_to_education
+erpnext.patches.v11_0.rename_production_order_to_work_order
 erpnext.patches.v4_0.validate_v3_patch
 erpnext.patches.v4_0.fix_employee_user_id
 erpnext.patches.v4_0.remove_employee_role_if_no_employee
@@ -198,7 +199,7 @@
 erpnext.patches.v5_4.fix_missing_item_images
 erpnext.patches.v5_4.stock_entry_additional_costs
 erpnext.patches.v5_4.cleanup_journal_entry #2015-08-14
-execute:frappe.db.sql("update `tabProduction Order` pro set description = (select description from tabItem where name=pro.production_item) where ifnull(description, '') = ''")
+erpnext.patches.v5_7.update_item_description_based_on_item_master
 erpnext.patches.v5_7.item_template_attributes
 execute:frappe.delete_doc_if_exists("DocType", "Manage Variants")
 execute:frappe.delete_doc_if_exists("DocType", "Manage Variants Item")
diff --git a/erpnext/patches/v11_0/rename_production_order_to_work_order.py b/erpnext/patches/v11_0/rename_production_order_to_work_order.py
new file mode 100644
index 0000000..72bdb68
--- /dev/null
+++ b/erpnext/patches/v11_0/rename_production_order_to_work_order.py
@@ -0,0 +1,35 @@
+# Copyright (c) 2018, Frappe and Contributors
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+from frappe.model.rename_doc import rename_doc
+from frappe.model.utils.rename_field import rename_field
+import frappe
+
+def execute():
+	rename_doc('DocType', 'Production Order', 'Work Order', force=True)
+	frappe.reload_doc('manufacturing', 'doctype', 'work_order')
+
+	rename_doc('DocType', 'Production Order Item', 'Work Order Item', force=True)
+	frappe.reload_doc('manufacturing', 'doctype', 'work_order_item')
+
+	rename_doc('DocType', 'Production Order Operation', 'Work Order Operation', force=True)
+	frappe.reload_doc('manufacturing', 'doctype', 'work_order_operation')
+
+	frappe.reload_doc('projects', 'doctype', 'timesheet')
+	frappe.reload_doc('stock', 'doctype', 'stock_entry')
+	rename_field("Timesheet", "production_order", "work_order")
+	rename_field("Stock Entry", "production_order", "work_order")
+
+	frappe.rename_doc("Report", "Production Orders in Progress", "Work Orders in Progress", force=True)
+	frappe.rename_doc("Report", "Completed Production Orders", "Completed Work Orders", force=True)
+	frappe.rename_doc("Report", "Open Production Orders", "Open Work Orders", force=True)
+	frappe.rename_doc("Report", "Issued Items Against Production Order", "Issued Items Against Work Order", force=True)
+	frappe.rename_doc("Report", "Production Order Stock Report", "Work Order Stock Report", force=True)
+
+	frappe.db.sql("""update `tabDesktop Icon` \
+		set label='Work Order', module_name='Work Order' \
+		where label='Production Order'""")
+	frappe.db.sql("""update `tabDesktop Icon` \
+		set link='List/Work Order' \
+		where link='List/Production Order'""")
diff --git a/erpnext/patches/v4_0/set_naming_series_property_setter.py b/erpnext/patches/v4_0/set_naming_series_property_setter.py
index e61a596..4cf3bb2 100644
--- a/erpnext/patches/v4_0/set_naming_series_property_setter.py
+++ b/erpnext/patches/v4_0/set_naming_series_property_setter.py
@@ -18,7 +18,7 @@
 	'Lead': 'LEAD-',
 	'Opportunity': 'OPTY-',
 	'Packing Slip': 'PS-',
-	'Production Order': 'PRO-',
+	'Work Order': 'WO-',
 	'Purchase Invoice': 'PINV-',
 	'Purchase Order': 'PO-',
 	'Purchase Receipt': 'PREC-',
diff --git a/erpnext/patches/v4_2/seprate_manufacture_and_repack.py b/erpnext/patches/v4_2/seprate_manufacture_and_repack.py
index 56373e2..2c93543 100644
--- a/erpnext/patches/v4_2/seprate_manufacture_and_repack.py
+++ b/erpnext/patches/v4_2/seprate_manufacture_and_repack.py
@@ -5,5 +5,5 @@
 import frappe
 
 def execute():
-	frappe.db.sql("""update `tabStock Entry` set purpose='Manufacture' where purpose='Manufacture/Repack' and ifnull(production_order,"")!="" """)
-	frappe.db.sql("""update `tabStock Entry` set purpose='Repack' where purpose='Manufacture/Repack' and ifnull(production_order,"")="" """)
\ No newline at end of file
+	frappe.db.sql("""update `tabStock Entry` set purpose='Manufacture' where purpose='Manufacture/Repack' and ifnull(work_order,"")!="" """)
+	frappe.db.sql("""update `tabStock Entry` set purpose='Repack' where purpose='Manufacture/Repack' and ifnull(work_order,"")="" """)
\ No newline at end of file
diff --git a/erpnext/patches/v5_0/reclculate_planned_operating_cost_in_production_order.py b/erpnext/patches/v5_0/reclculate_planned_operating_cost_in_production_order.py
index a943c06..6d39283 100644
--- a/erpnext/patches/v5_0/reclculate_planned_operating_cost_in_production_order.py
+++ b/erpnext/patches/v5_0/reclculate_planned_operating_cost_in_production_order.py
@@ -5,9 +5,9 @@
 import frappe
 
 def execute():					
-	for po in frappe.db.sql("""select name from `tabProduction Order` where docstatus < 2""", as_dict=1):
-		prod_order = frappe.get_doc("Production Order", po.name)
-		if prod_order.operations:
-			prod_order.flags.ignore_validate_update_after_submit = True
-			prod_order.calculate_time()
-			prod_order.save()
\ No newline at end of file
+	for wo in frappe.db.sql("""select name from `tabWork Order` where docstatus < 2""", as_dict=1):
+		work_order = frappe.get_doc("Work Order", wo.name)
+		if work_order.operations:
+			work_order.flags.ignore_validate_update_after_submit = True
+			work_order.calculate_time()
+			work_order.save()
\ No newline at end of file
diff --git a/erpnext/patches/v5_0/rename_table_fieldnames.py b/erpnext/patches/v5_0/rename_table_fieldnames.py
index e6667de..e93070f 100644
--- a/erpnext/patches/v5_0/rename_table_fieldnames.py
+++ b/erpnext/patches/v5_0/rename_table_fieldnames.py
@@ -51,7 +51,7 @@
 		["other_charges", "taxes"],
 		["advance_allocation_details", "advances"]
 	],
-	"Production Order": [
+	"Work Order": [
 		["production_order_operations", "operations"]
 	],
 	"BOM": [
@@ -216,7 +216,7 @@
 				frappe.rename_doc("DocType", old_dt, new_dt, force=True)
 
 	# reload new child doctypes
-	frappe.reload_doc("manufacturing", "doctype", "production_order_operation")
+	frappe.reload_doc("manufacturing", "doctype", "work_order_operation")
 	frappe.reload_doc("manufacturing", "doctype", "workstation_working_hour")
 	frappe.reload_doc("stock", "doctype", "item_variant")
 	frappe.reload_doc("hr", "doctype", "salary_detail")
diff --git a/erpnext/patches/v5_0/update_material_transfer_for_manufacture.py b/erpnext/patches/v5_0/update_material_transfer_for_manufacture.py
index d862ad3..b858bd8 100644
--- a/erpnext/patches/v5_0/update_material_transfer_for_manufacture.py
+++ b/erpnext/patches/v5_0/update_material_transfer_for_manufacture.py
@@ -2,4 +2,4 @@
 
 def execute():
 	frappe.db.sql("""update `tabStock Entry` set purpose='Material Transfer for Manufacture'
-		where ifnull(production_order, '')!='' and purpose='Material Transfer'""")
+		where ifnull(work_order, '')!='' and purpose='Material Transfer'""")
diff --git a/erpnext/patches/v5_0/update_material_transferred_for_manufacturing.py b/erpnext/patches/v5_0/update_material_transferred_for_manufacturing.py
index f377e23..2133d1c 100644
--- a/erpnext/patches/v5_0/update_material_transferred_for_manufacturing.py
+++ b/erpnext/patches/v5_0/update_material_transferred_for_manufacturing.py
@@ -1,9 +1,9 @@
 import frappe
 
 def execute():
-	frappe.reload_doctype("Production Order")
-	frappe.db.sql("""update `tabProduction Order` set material_transferred_for_manufacturing=
+	frappe.reload_doctype("Work Order")
+	frappe.db.sql("""update `tabWork Order` set material_transferred_for_manufacturing=
 		(select sum(fg_completed_qty) from `tabStock Entry`
 			where docstatus=1
-			and production_order=`tabProduction Order`.name
+			and work_order=`tabWork Order`.name
 			and purpose = "Material Transfer for Manufacture")""")
diff --git a/erpnext/patches/v5_0/update_material_transferred_for_manufacturing_again.py b/erpnext/patches/v5_0/update_material_transferred_for_manufacturing_again.py
index a74b4bd..187f4ea 100644
--- a/erpnext/patches/v5_0/update_material_transferred_for_manufacturing_again.py
+++ b/erpnext/patches/v5_0/update_material_transferred_for_manufacturing_again.py
@@ -1,18 +1,18 @@
 import frappe
 
 def execute():
-	pro_order_qty_transferred = frappe._dict()
-	for se in frappe.db.sql("""select production_order, sum(fg_completed_qty) as transferred_qty 
+	wo_order_qty_transferred = frappe._dict()
+	for se in frappe.db.sql("""select work_order, sum(fg_completed_qty) as transferred_qty 
 		from `tabStock Entry`
-		where docstatus=1 and ifnull(production_order, '') != ''
+		where docstatus=1 and ifnull(work_order, '') != ''
 		and purpose = 'Material Transfer for Manufacture'
-		group by production_order""", as_dict=1):
-			pro_order_qty_transferred.setdefault(se.production_order, se.transferred_qty)
+		group by work_order""", as_dict=1):
+			wo_order_qty_transferred.setdefault(se.work_order, se.transferred_qty)
 	
-	for d in frappe.get_all("Production Order", filters={"docstatus": 1}, fields=["name", "qty"]):
-		if d.name in pro_order_qty_transferred:
-			material_transferred_for_manufacturing = pro_order_qty_transferred.get(d.name) \
-				if pro_order_qty_transferred.get(d.name) <= d.qty else d.qty		
+	for d in frappe.get_all("Work Order", filters={"docstatus": 1}, fields=["name", "qty"]):
+		if d.name in wo_order_qty_transferred:
+			material_transferred_for_manufacturing = wo_order_qty_transferred.get(d.name) \
+				if wo_order_qty_transferred.get(d.name) <= d.qty else d.qty		
 		
-			frappe.db.sql("""update `tabProduction Order` set material_transferred_for_manufacturing=%s
+			frappe.db.sql("""update `tabWork Order` set material_transferred_for_manufacturing=%s
 				where name=%s""", (material_transferred_for_manufacturing, d.name))
\ No newline at end of file
diff --git a/erpnext/patches/v5_7/update_item_description_based_on_item_master.py b/erpnext/patches/v5_7/update_item_description_based_on_item_master.py
new file mode 100644
index 0000000..6851e67
--- /dev/null
+++ b/erpnext/patches/v5_7/update_item_description_based_on_item_master.py
@@ -0,0 +1,12 @@
+import frappe
+
+def execute():
+	name = frappe.db.sql(""" select name from `tabPatch Log` \
+		where \
+			patch like 'execute:frappe.db.sql("update `tabProduction Order` pro set description%' """)
+	if not name:
+		frappe.db.sql("update `tabProduction Order` pro \
+			set \
+				description = (select description from tabItem where name=pro.production_item) \
+			where \
+				ifnull(description, '') = ''")
diff --git a/erpnext/patches/v6_0/fix_planned_qty.py b/erpnext/patches/v6_0/fix_planned_qty.py
index e8ed1d0..cf7b429 100644
--- a/erpnext/patches/v6_0/fix_planned_qty.py
+++ b/erpnext/patches/v6_0/fix_planned_qty.py
@@ -7,7 +7,7 @@
 
 def execute():
 	for item_code, warehouse in frappe.db.sql("""select distinct production_item, fg_warehouse
-		from `tabProduction Order`"""):
+		from `tabWork Order`"""):
 			if frappe.db.exists("Item", item_code) and frappe.db.exists("Warehouse", warehouse):
 				update_bin_qty(item_code, warehouse, {
 					"planned_qty": get_planned_qty(item_code, warehouse)
diff --git a/erpnext/patches/v6_20x/rename_project_name_to_project.py b/erpnext/patches/v6_20x/rename_project_name_to_project.py
index b420ce9..49ec9d2 100644
--- a/erpnext/patches/v6_20x/rename_project_name_to_project.py
+++ b/erpnext/patches/v6_20x/rename_project_name_to_project.py
@@ -7,7 +7,7 @@
 
 def execute():
 	
-	doc_list = ["Production Order", "BOM", "Purchase Invoice Item", "Sales Invoice", 
+	doc_list = ["Work Order", "BOM", "Purchase Invoice Item", "Sales Invoice", 
 		"Purchase Order Item", "Stock Entry", "Delivery Note", "Sales Order", 
 		"Purchase Receipt Item", "Supplier Quotation Item"]
 	
diff --git a/erpnext/patches/v7_0/convert_timelog_to_timesheet.py b/erpnext/patches/v7_0/convert_timelog_to_timesheet.py
index 4b6cf74..d21758d 100644
--- a/erpnext/patches/v7_0/convert_timelog_to_timesheet.py
+++ b/erpnext/patches/v7_0/convert_timelog_to_timesheet.py
@@ -1,5 +1,5 @@
 import frappe
-from erpnext.manufacturing.doctype.production_order.production_order \
+from erpnext.manufacturing.doctype.work_order.work_order \
 	import make_timesheet, add_timesheet_detail
 
 def execute():
@@ -11,12 +11,12 @@
 	for data in frappe.db.sql("select * from `tabTime Log`", as_dict=1):
 		if data.task:
 			company = frappe.db.get_value("Task", data.task, "company")
-		elif data.production_order:
-			company = frappe.db.get_value("Prodction Order", data.production_order, "company")
+		elif data.work_order:
+			company = frappe.db.get_value("Work Order", data.work_order, "company")
 		else:
 			company = frappe.db.get_single_value('Global Defaults', 'default_company')
 		
-		time_sheet = make_timesheet(data.production_order, company)
+		time_sheet = make_timesheet(data.work_order, company)
 		args = get_timelog_data(data)
 		add_timesheet_detail(time_sheet, args)
 		if data.docstatus == 2:
@@ -40,7 +40,7 @@
 			time_sheet.db_set("docstatus", 1)
 			for d in time_sheet.get("time_logs"):
 				d.db_set("docstatus", 1)
-			time_sheet.update_production_order(time_sheet.name)
+			time_sheet.update_work_order(time_sheet.name)
 			time_sheet.update_task_and_project()
 		if data.docstatus == 2:
 			time_sheet.db_set("docstatus", 2)
diff --git a/erpnext/patches/v7_0/convert_timelogbatch_to_timesheet.py b/erpnext/patches/v7_0/convert_timelogbatch_to_timesheet.py
index a7cb0d7..e23669b 100644
--- a/erpnext/patches/v7_0/convert_timelogbatch_to_timesheet.py
+++ b/erpnext/patches/v7_0/convert_timelogbatch_to_timesheet.py
@@ -1,6 +1,6 @@
 import frappe
 from frappe.utils import cint
-from erpnext.manufacturing.doctype.production_order.production_order import add_timesheet_detail
+from erpnext.manufacturing.doctype.work_order.work_order import add_timesheet_detail
 from erpnext.patches.v7_0.convert_timelog_to_timesheet import get_timelog_data
 
 def execute():
diff --git a/erpnext/patches/v7_1/repost_stock_for_deleted_bins_for_merging_items.py b/erpnext/patches/v7_1/repost_stock_for_deleted_bins_for_merging_items.py
index 39b7f6c..aca2108 100644
--- a/erpnext/patches/v7_1/repost_stock_for_deleted_bins_for_merging_items.py
+++ b/erpnext/patches/v7_1/repost_stock_for_deleted_bins_for_merging_items.py
@@ -3,8 +3,8 @@
 from erpnext.stock.stock_balance import repost_stock
 
 def execute():
-	frappe.reload_doc('manufacturing', 'doctype', 'production_order_item')
-	frappe.reload_doc('manufacturing', 'doctype', 'production_order')
+	frappe.reload_doc('manufacturing', 'doctype', 'work_order_item')
+	frappe.reload_doc('manufacturing', 'doctype', 'work_order')
 	
 	modified_items = frappe.db.sql_list("""
 		select name from `tabItem` 
@@ -26,12 +26,12 @@
 			
 	item_warehouses_with_transactions += list(frappe.db.sql("""
 		select distinct production_item, fg_warehouse 
-		from `tabProduction Order` where docstatus=1 and production_item in ({0})"""
+		from `tabWork Order` where docstatus=1 and production_item in ({0})"""
 		.format(', '.join(['%s']*len(modified_items))), tuple(modified_items)))
 	
 	item_warehouses_with_transactions += list(frappe.db.sql("""
 		select distinct pr_item.item_code, pr_item.source_warehouse 
-		from `tabProduction Order` pr, `tabProduction Order Item` pr_item 
+		from `tabWork Order` pr, `tabWork Order Item` pr_item 
 		where pr_item.parent and pr.name and pr.docstatus=1 and pr_item.item_code in ({0})"""
 		.format(', '.join(['%s']*len(modified_items))), tuple(modified_items)))
 	
diff --git a/erpnext/patches/v8_0/update_production_orders.py b/erpnext/patches/v8_0/update_production_orders.py
index 06b8ce7..7d87d68 100644
--- a/erpnext/patches/v8_0/update_production_orders.py
+++ b/erpnext/patches/v8_0/update_production_orders.py
@@ -6,41 +6,41 @@
 
 def execute():
 	# reload schema
-	for doctype in ("Production Order", "Production Order Item", "Production Order Operation", 
+	for doctype in ("Work Order", "Work Order Item", "Work Order Operation", 
 		"BOM Item", "BOM Explosion Item", "BOM"):
 			frappe.reload_doctype(doctype)
 
-	# fetch all draft and submitted production orders
+	# fetch all draft and submitted work orders
 	fields = ["name"]
-	if "source_warehouse" in frappe.db.get_table_columns("Production Order"):
+	if "source_warehouse" in frappe.db.get_table_columns("Work Order"):
 		fields.append("source_warehouse")
 		
-	pro_orders = frappe.get_all("Production Order", filters={"docstatus": ["!=", 2]}, fields=fields)
+	wo_orders = frappe.get_all("Work Order", filters={"docstatus": ["!=", 2]}, fields=fields)
 	
 	count = 0
-	for p in pro_orders:
-		pro_order = frappe.get_doc("Production Order", p.name)
+	for p in wo_orders:
+		wo_order = frappe.get_doc("Work Order", p.name)
 		count += 1
 
 		# set required items table
-		pro_order.set_required_items()
+		wo_order.set_required_items()
 		
-		for item in pro_order.get("required_items"):
+		for item in wo_order.get("required_items"):
 			# set source warehouse based on parent
 			if not item.source_warehouse and "source_warehouse" in fields:
-				item.source_warehouse = pro_order.get("source_warehouse")
+				item.source_warehouse = wo_order.get("source_warehouse")
 			item.db_update()
 		
-		if pro_order.docstatus == 1:
+		if wo_order.docstatus == 1:
 			# update transferred qty based on Stock Entry, it also updates db
-			pro_order.update_transaferred_qty_for_required_items()
+			wo_order.update_transaferred_qty_for_required_items()
 			
 			# Set status where it was 'Unstopped', as it is deprecated
-			if pro_order.status == "Unstopped":
-				status = pro_order.get_status()
-				pro_order.db_set("status", status)
-			elif pro_order.status == "Stopped":
-				pro_order.update_reserved_qty_for_production()
+			if wo_order.status == "Unstopped":
+				status = wo_order.get_status()
+				wo_order.db_set("status", status)
+			elif wo_order.status == "Stopped":
+				wo_order.update_reserved_qty_for_production()
 		
 		if count % 200 == 0:
 			frappe.db.commit()
\ No newline at end of file
diff --git a/erpnext/patches/v8_1/add_indexes_in_transaction_doctypes.py b/erpnext/patches/v8_1/add_indexes_in_transaction_doctypes.py
index 21a47fb..2fa0221 100644
--- a/erpnext/patches/v8_1/add_indexes_in_transaction_doctypes.py
+++ b/erpnext/patches/v8_1/add_indexes_in_transaction_doctypes.py
@@ -5,5 +5,5 @@
 
 def execute():
 	for dt in ("Sales Order Item", "Purchase Order Item",
-		"Material Request Item", "Production Order Item", "Packed Item"):
+		"Material Request Item", "Work Order Item", "Packed Item"):
 			frappe.get_doc("DocType", dt).run_module_method("on_doctype_update")
\ No newline at end of file
diff --git a/erpnext/patches/v8_6/update_timesheet_company_from_PO.py b/erpnext/patches/v8_6/update_timesheet_company_from_PO.py
index 5bab961..2d46bee 100644
--- a/erpnext/patches/v8_6/update_timesheet_company_from_PO.py
+++ b/erpnext/patches/v8_6/update_timesheet_company_from_PO.py
@@ -11,5 +11,5 @@
 	#Check more than one company exists
 	if len(company) > 1:
 		frappe.db.sql(""" update `tabTimesheet` set `tabTimesheet`.company =
-			(select company from `tabProduction Order` where name = `tabTimesheet`.production_order)
-			where production_order is not null and production_order !=''""")
\ No newline at end of file
+			(select company from `tabWork Order` where name = `tabTimesheet`.work_order)
+			where workn_order is not null and work_order !=''""")
\ No newline at end of file
diff --git a/erpnext/patches/v9_2/set_item_name_in_production_order.py b/erpnext/patches/v9_2/set_item_name_in_production_order.py
index e0e422b..18b5b8c 100644
--- a/erpnext/patches/v9_2/set_item_name_in_production_order.py
+++ b/erpnext/patches/v9_2/set_item_name_in_production_order.py
@@ -3,7 +3,7 @@
 def execute():
 
 	frappe.db.sql("""
-		update `tabBOM Item` bom, `tabProduction Order Item` po_item
+		update `tabBOM Item` bom, `tabWork Order Item` po_item
 		set po_item.item_name = bom.item_name,
 			po_item.description = bom.description
 		where po_item.item_code = bom.item_code
diff --git a/erpnext/projects/doctype/timesheet/test_timesheet.js b/erpnext/projects/doctype/timesheet/test_timesheet.js
new file mode 100644
index 0000000..c081d6f
--- /dev/null
+++ b/erpnext/projects/doctype/timesheet/test_timesheet.js
@@ -0,0 +1,23 @@
+/* eslint-disable */
+// rename this file from _test_[name] to test_[name] to activate
+// and remove above this line
+
+QUnit.test("test: Timesheet", function (assert) {
+	let done = assert.async();
+
+	// number of asserts
+	assert.expect(1);
+
+	frappe.run_serially([
+		// insert a new Timesheet
+		() => frappe.tests.make('Timesheet', [
+			// values to be set
+			{key: 'value'}
+		]),
+		() => {
+			assert.equal(cur_frm.doc.key, 'value');
+		},
+		() => done()
+	]);
+
+});
diff --git a/erpnext/projects/doctype/timesheet/timesheet.json b/erpnext/projects/doctype/timesheet/timesheet.json
index 239bd62..0ef789c 100644
--- a/erpnext/projects/doctype/timesheet/timesheet.json
+++ b/erpnext/projects/doctype/timesheet/timesheet.json
@@ -204,7 +204,7 @@
    "collapsible": 0, 
    "collapsible_depends_on": "", 
    "columns": 0, 
-   "depends_on": "eval:!doc.production_order || doc.docstatus == 1", 
+   "depends_on": "eval:!doc.work_order || doc.docstatus == 1", 
    "fieldname": "employee_detail", 
    "fieldtype": "Section Break", 
    "hidden": 0, 
@@ -421,8 +421,8 @@
    "collapsible": 0, 
    "collapsible_depends_on": "", 
    "columns": 0, 
-   "depends_on": "production_order", 
-   "fieldname": "production_detail", 
+   "depends_on": "work_order", 
+   "fieldname": "work_detail", 
    "fieldtype": "Section Break", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
@@ -431,7 +431,7 @@
    "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
-   "label": "Production Detail", 
+   "label": "Work Detail", 
    "length": 0, 
    "no_copy": 0, 
    "permlevel": 0, 
@@ -452,7 +452,7 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "fieldname": "production_order", 
+   "fieldname": "work_order", 
    "fieldtype": "Link", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
@@ -461,10 +461,10 @@
    "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
-   "label": "Production Order", 
+   "label": "Work Order", 
    "length": 0, 
    "no_copy": 1, 
-   "options": "Production Order", 
+   "options": "Work Order", 
    "permlevel": 0, 
    "precision": "", 
    "print_hide": 0, 
@@ -938,7 +938,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2017-06-13 14:28:51.838769", 
+ "modified": "2018-01-07 11:44:09.573900", 
  "modified_by": "Administrator", 
  "module": "Projects", 
  "name": "Timesheet", 
diff --git a/erpnext/projects/doctype/timesheet/timesheet.py b/erpnext/projects/doctype/timesheet/timesheet.py
index 82494b0..c358a54 100644
--- a/erpnext/projects/doctype/timesheet/timesheet.py
+++ b/erpnext/projects/doctype/timesheet/timesheet.py
@@ -16,7 +16,7 @@
 from erpnext.manufacturing.doctype.manufacturing_settings.manufacturing_settings import get_mins_between_operations
 
 class OverlapError(frappe.ValidationError): pass
-class OverProductionLoggedError(frappe.ValidationError): pass
+class OverWorkLoggedError(frappe.ValidationError): pass
 
 class Timesheet(Document):
 	def onload(self):
@@ -97,18 +97,18 @@
 		self.set_status()
 
 	def on_cancel(self):
-		self.update_production_order(None)
+		self.update_work_order(None)
 		self.update_task_and_project()
 
 	def on_submit(self):
 		self.validate_mandatory_fields()
-		self.update_production_order(self.name)
+		self.update_work_order(self.name)
 		self.update_task_and_project()
 
 	def validate_mandatory_fields(self):
-		if self.production_order:
-			production_order = frappe.get_doc("Production Order", self.production_order)
-			pending_qty = flt(production_order.qty) - flt(production_order.produced_qty)
+		if self.work_order:
+			work_order = frappe.get_doc("Work Order", self.work_order)
+			pending_qty = flt(work_order.qty) - flt(work_order.produced_qty)
 
 		for data in self.time_logs:
 			if not data.from_time and not data.to_time:
@@ -120,16 +120,16 @@
 			if flt(data.hours) == 0.0:
 				frappe.throw(_("Row {0}: Hours value must be greater than zero.").format(data.idx))
 
-			if self.production_order and flt(data.completed_qty) == 0:
+			if self.work_order and flt(data.completed_qty) == 0:
 				frappe.throw(_("Row {0}: Completed Qty must be greater than zero.").format(data.idx))
 
-			if self.production_order and flt(pending_qty) < flt(data.completed_qty) and flt(pending_qty) > 0:
+			if self.work_order and flt(pending_qty) < flt(data.completed_qty) and flt(pending_qty) > 0:
 				frappe.throw(_("Row {0}: Completed Qty cannot be more than {1} for operation {2}").format(data.idx, pending_qty, data.operation),
-					OverProductionLoggedError)
+					OverWorkLoggedError)
 
-	def update_production_order(self, time_sheet):
-		if self.production_order:
-			pro = frappe.get_doc('Production Order', self.production_order)
+	def update_work_order(self, time_sheet):
+		if self.work_order:
+			pro = frappe.get_doc('Work Order', self.work_order)
 
 			for timesheet in self.time_logs:
 				for data in pro.operations:
@@ -152,8 +152,8 @@
 		return frappe.db.sql("""select
 			sum(tsd.hours*60) as mins, sum(tsd.completed_qty) as completed_qty, min(tsd.from_time) as from_time,
 			max(tsd.to_time) as to_time from `tabTimesheet Detail` as tsd, `tabTimesheet` as ts where
-			ts.production_order = %s and tsd.operation_id = %s and ts.docstatus=1 and ts.name = tsd.parent""",
-			(self.production_order, operation_id), as_dict=1)[0]
+			ts.work_order = %s and tsd.operation_id = %s and ts.docstatus=1 and ts.name = tsd.parent""",
+			(self.work_order, operation_id), as_dict=1)[0]
 
 	def update_task_and_project(self):
 		tasks, projects = [], []
@@ -181,7 +181,7 @@
 
 	def validate_overlap(self, data):
 		settings = frappe.get_single('Projects Settings')
-		if self.production_order:
+		if self.work_order:
 			self.validate_overlap_for("workstation", data, data.workstation, settings.ignore_workstation_time_overlap)
 		else:
 			self.validate_overlap_for("user", data, self.user, settings.ignore_user_time_overlap)
@@ -232,7 +232,7 @@
 		if args.workstation and args.from_time and args.to_time:
 			check_if_within_operating_hours(args.workstation, args.operation, args.from_time, args.to_time)
 
-	def schedule_for_production_order(self, index):
+	def schedule_for_work_order(self, index):
 		for data in self.time_logs:
 			if data.idx == index:
 				self.move_to_next_day(data) #check for workstation holiday
diff --git a/erpnext/projects/doctype/timesheet_detail/timesheet_detail.json b/erpnext/projects/doctype/timesheet_detail/timesheet_detail.json
index fdeb16c..d82e79d 100644
--- a/erpnext/projects/doctype/timesheet_detail/timesheet_detail.json
+++ b/erpnext/projects/doctype/timesheet_detail/timesheet_detail.json
@@ -1,5 +1,6 @@
 {
  "allow_copy": 0, 
+ "allow_guest_to_view": 0, 
  "allow_import": 0, 
  "allow_rename": 0, 
  "beta": 0, 
@@ -11,6 +12,7 @@
  "editable_grid": 1, 
  "fields": [
   {
+   "allow_bulk_edit": 0, 
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
@@ -21,7 +23,9 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 1, 
+   "in_standard_filter": 0, 
    "label": "Activity Type", 
    "length": 0, 
    "no_copy": 0, 
@@ -38,6 +42,7 @@
    "unique": 0
   }, 
   {
+   "allow_bulk_edit": 0, 
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
@@ -48,7 +53,9 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 1, 
+   "in_standard_filter": 0, 
    "label": "From Time", 
    "length": 0, 
    "no_copy": 0, 
@@ -65,6 +72,7 @@
    "unique": 0
   }, 
   {
+   "allow_bulk_edit": 0, 
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
@@ -75,7 +83,9 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "length": 0, 
    "no_copy": 0, 
    "permlevel": 0, 
@@ -91,6 +101,7 @@
    "unique": 0
   }, 
   {
+   "allow_bulk_edit": 0, 
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
@@ -101,7 +112,9 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 1, 
+   "in_standard_filter": 0, 
    "label": "Hrs", 
    "length": 0, 
    "no_copy": 0, 
@@ -117,6 +130,7 @@
    "unique": 0
   }, 
   {
+   "allow_bulk_edit": 0, 
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
@@ -127,7 +141,9 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "To Time", 
    "length": 0, 
    "no_copy": 0, 
@@ -144,6 +160,7 @@
    "unique": 0
   }, 
   {
+   "allow_bulk_edit": 0, 
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
@@ -154,7 +171,9 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "length": 0, 
    "no_copy": 0, 
    "permlevel": 0, 
@@ -170,18 +189,21 @@
    "unique": 0
   }, 
   {
+   "allow_bulk_edit": 0, 
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "depends_on": "eval:parent.production_order", 
+   "depends_on": "eval:parent.work_order", 
    "fieldname": "completed_qty", 
    "fieldtype": "Float", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Completed Qty", 
    "length": 0, 
    "no_copy": 0, 
@@ -198,18 +220,21 @@
    "unique": 0
   }, 
   {
+   "allow_bulk_edit": 0, 
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "depends_on": "eval:parent.production_order", 
+   "depends_on": "eval:parent.work_order", 
    "fieldname": "workstation", 
    "fieldtype": "Link", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Workstation", 
    "length": 0, 
    "no_copy": 0, 
@@ -227,6 +252,7 @@
    "unique": 0
   }, 
   {
+   "allow_bulk_edit": 0, 
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
@@ -237,7 +263,9 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "length": 0, 
    "no_copy": 0, 
    "permlevel": 0, 
@@ -253,18 +281,21 @@
    "unique": 0
   }, 
   {
+   "allow_bulk_edit": 0, 
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "depends_on": "eval:parent.production_order", 
+   "depends_on": "eval:parent.work_order", 
    "fieldname": "operation", 
    "fieldtype": "Link", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Operation", 
    "length": 0, 
    "no_copy": 0, 
@@ -282,18 +313,21 @@
    "unique": 0
   }, 
   {
+   "allow_bulk_edit": 0, 
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "depends_on": "eval:parent.production_order", 
+   "depends_on": "eval:parent.work_order", 
    "fieldname": "operation_id", 
    "fieldtype": "Data", 
    "hidden": 1, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Operation Id", 
    "length": 0, 
    "no_copy": 0, 
@@ -310,6 +344,7 @@
    "unique": 0
   }, 
   {
+   "allow_bulk_edit": 0, 
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
@@ -320,7 +355,9 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "length": 0, 
    "no_copy": 0, 
    "permlevel": 0, 
@@ -336,6 +373,7 @@
    "unique": 0
   }, 
   {
+   "allow_bulk_edit": 0, 
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
@@ -346,7 +384,9 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 1, 
+   "in_standard_filter": 0, 
    "label": "Project", 
    "length": 0, 
    "no_copy": 0, 
@@ -364,6 +404,7 @@
    "unique": 0
   }, 
   {
+   "allow_bulk_edit": 0, 
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
@@ -374,7 +415,9 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "length": 0, 
    "no_copy": 0, 
    "permlevel": 0, 
@@ -390,6 +433,7 @@
    "unique": 0
   }, 
   {
+   "allow_bulk_edit": 0, 
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
@@ -401,7 +445,9 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Task", 
    "length": 0, 
    "no_copy": 0, 
@@ -419,6 +465,7 @@
    "unique": 0
   }, 
   {
+   "allow_bulk_edit": 0, 
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
@@ -429,7 +476,9 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "length": 0, 
    "no_copy": 0, 
    "permlevel": 0, 
@@ -445,6 +494,7 @@
    "unique": 0
   }, 
   {
+   "allow_bulk_edit": 0, 
    "allow_on_submit": 1, 
    "bold": 0, 
    "collapsible": 0, 
@@ -456,7 +506,9 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 1, 
+   "in_standard_filter": 0, 
    "label": "Bill", 
    "length": 0, 
    "no_copy": 0, 
@@ -473,6 +525,7 @@
    "unique": 0
   }, 
   {
+   "allow_bulk_edit": 0, 
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
@@ -483,7 +536,9 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "length": 0, 
    "no_copy": 0, 
    "permlevel": 0, 
@@ -499,6 +554,7 @@
    "unique": 0
   }, 
   {
+   "allow_bulk_edit": 0, 
    "allow_on_submit": 1, 
    "bold": 0, 
    "collapsible": 0, 
@@ -510,7 +566,9 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Billing Hours", 
    "length": 0, 
    "no_copy": 0, 
@@ -527,6 +585,7 @@
    "unique": 0
   }, 
   {
+   "allow_bulk_edit": 0, 
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
@@ -538,7 +597,9 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "length": 0, 
    "no_copy": 0, 
    "permlevel": 0, 
@@ -554,6 +615,7 @@
    "unique": 0
   }, 
   {
+   "allow_bulk_edit": 0, 
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
@@ -565,7 +627,9 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Billing Rate", 
    "length": 0, 
    "no_copy": 0, 
@@ -582,6 +646,7 @@
    "unique": 0
   }, 
   {
+   "allow_bulk_edit": 0, 
    "allow_on_submit": 1, 
    "bold": 0, 
    "collapsible": 0, 
@@ -595,7 +660,9 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Billing Amount", 
    "length": 0, 
    "no_copy": 0, 
@@ -612,6 +679,7 @@
    "unique": 0
   }, 
   {
+   "allow_bulk_edit": 0, 
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
@@ -622,7 +690,9 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "length": 0, 
    "no_copy": 0, 
    "permlevel": 0, 
@@ -638,6 +708,7 @@
    "unique": 0
   }, 
   {
+   "allow_bulk_edit": 0, 
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
@@ -648,7 +719,9 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Costing Rate", 
    "length": 0, 
    "no_copy": 0, 
@@ -665,6 +738,7 @@
    "unique": 0
   }, 
   {
+   "allow_bulk_edit": 0, 
    "allow_on_submit": 1, 
    "bold": 0, 
    "collapsible": 0, 
@@ -677,7 +751,9 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Costing Amount", 
    "length": 0, 
    "no_copy": 0, 
@@ -694,6 +770,7 @@
    "unique": 0
   }, 
   {
+   "allow_bulk_edit": 0, 
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
@@ -704,7 +781,9 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Reference", 
    "length": 0, 
    "no_copy": 0, 
@@ -721,6 +800,7 @@
    "unique": 0
   }, 
   {
+   "allow_bulk_edit": 0, 
    "allow_on_submit": 1, 
    "bold": 0, 
    "collapsible": 0, 
@@ -731,7 +811,9 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Sales Invoice", 
    "length": 0, 
    "no_copy": 1, 
@@ -749,17 +831,17 @@
    "unique": 0
   }
  ], 
+ "has_web_view": 0, 
  "hide_heading": 0, 
  "hide_toolbar": 0, 
  "idx": 1, 
  "image_view": 0, 
  "in_create": 0, 
- "in_dialog": 0, 
  "is_submittable": 0, 
  "issingle": 0, 
  "istable": 1, 
  "max_attachments": 0, 
- "modified": "2016-11-03 16:01:10.519549", 
+ "modified": "2018-01-07 11:46:04.045313", 
  "modified_by": "Administrator", 
  "module": "Projects", 
  "name": "Timesheet Detail", 
@@ -768,6 +850,8 @@
  "quick_entry": 1, 
  "read_only": 0, 
  "read_only_onload": 0, 
+ "show_name_in_global_search": 0, 
  "sort_order": "ASC", 
+ "track_changes": 0, 
  "track_seen": 0
 }
\ No newline at end of file
diff --git a/erpnext/public/js/help_links.js b/erpnext/public/js/help_links.js
index d8af0e5..21d02db 100644
--- a/erpnext/public/js/help_links.js
+++ b/erpnext/public/js/help_links.js
@@ -492,8 +492,8 @@
 	{ label: 'Nested BOM Structure', url: 'https://frappe.github.io/erpnext/user/manual/en/manufacturing/articles/nested-bom-structure' },
 ]
 
-frappe.help.help_links['Form/Production Order'] = [
-	{ label: 'Production Order', url: 'https://frappe.github.io/erpnext/user/manual/en/manufacturing/production-order' },
+frappe.help.help_links['Form/Work Order'] = [
+	{ label: 'Work Order', url: 'https://frappe.github.io/erpnext/user/manual/en/manufacturing/production-order' },
 ]
 
 frappe.help.help_links['Form/Workstation'] = [
diff --git a/erpnext/selling/doctype/sales_order/sales_order.js b/erpnext/selling/doctype/sales_order/sales_order.js
index 0657f9f..0aa4cf4 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.js
+++ b/erpnext/selling/doctype/sales_order/sales_order.js
@@ -106,8 +106,8 @@
 				if(flt(doc.per_delivered, 2) < 100 && ["Sales", "Shopping Cart"].indexOf(doc.order_type)!==-1 && allow_delivery) {
 					this.frm.add_custom_button(__('Delivery'),
 						function() { me.make_delivery_note_based_on_delivery_date(); }, __("Make"));
-					this.frm.add_custom_button(__('Production Order'),
-						function() { me.make_production_order() }, __("Make"));
+					this.frm.add_custom_button(__('Work Order'),
+						function() { me.make_work_order() }, __("Make"));
 
 					this.frm.page.set_inner_btn_group_as_primary(__("Make"));
 				}
@@ -192,15 +192,15 @@
 		this.order_type(doc);
 	},
 
-	make_production_order() {
+	make_work_order() {
 		var me = this;
 		this.frm.call({
 			doc: this.frm.doc,
-			method: 'get_production_order_items',
+			method: 'get_work_order_items',
 			callback: function(r) {
 				if(!r.message) {
 					frappe.msgprint({
-						title: __('Production Order not created'),
+						title: __('Work Order not created'),
 						message: __('No Items with Bill of Materials to Manufacture'),
 						indicator: 'orange'
 					});
@@ -208,8 +208,8 @@
 				}
 				else if(!r.message) {
 					frappe.msgprint({
-						title: __('Production Order not created'),
-						message: __('Production Order already created for all items with BOM'),
+						title: __('Work Order not created'),
+						message: __('Work Order already created for all items with BOM'),
 						indicator: 'orange'
 					});
 					return;
@@ -240,7 +240,7 @@
 						primary_action: function() {
 							var data = d.get_values();
 							me.frm.call({
-								method: 'make_production_orders',
+								method: 'make_work_orders',
 								args: {
 									items: data,
 									company: me.frm.doc.company,
@@ -251,9 +251,9 @@
 								callback: function(r) {
 									if(r.message) {
 										frappe.msgprint({
-											message: __('Production Orders Created: {0}',
+											message: __('Work Orders Created: {0}',
 												[r.message.map(function(d) {
-													return repl('<a href="#Form/Production Order/%(name)s">%(name)s</a>', {name:d})
+													return repl('<a href="#Form/Work Order/%(name)s">%(name)s</a>', {name:d})
 												}).join(', ')]),
 											indicator: 'green'
 										})
diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py
index 54595b6..34272b2 100755
--- a/erpnext/selling/doctype/sales_order/sales_order.py
+++ b/erpnext/selling/doctype/sales_order/sales_order.py
@@ -242,14 +242,14 @@
 			frappe.throw(_("Maintenance Visit {0} must be cancelled before cancelling this Sales Order")
 				.format(comma_and(submit_mv)))
 
-		# check production order
+		# check work order
 		pro_order = frappe.db.sql_list("""
 			select name
-			from `tabProduction Order`
+			from `tabWork Order`
 			where sales_order = %s and docstatus = 1""", self.name)
 
 		if pro_order:
-			frappe.throw(_("Production Order {0} must be cancelled before cancelling this Sales Order")
+			frappe.throw(_("Work Order {0} must be cancelled before cancelling this Sales Order")
 				.format(comma_and(pro_order)))
 
 	def check_modified_date(self):
@@ -347,8 +347,8 @@
 			self.indicator_color = "green"
 			self.indicator_title = _("Paid")
 
-	def get_production_order_items(self):
-		'''Returns items with BOM that already do not have a linked production order'''
+	def get_work_order_items(self):
+		'''Returns items with BOM that already do not have a linked work order'''
 		items = []
 
 		for table in [self.items, self.packed_items]:
@@ -356,7 +356,7 @@
 				bom = get_default_bom_item(i.item_code)
 				if bom:
 					stock_qty = i.qty if i.doctype == 'Packed Item' else i.stock_qty
-					pending_qty= stock_qty - flt(frappe.db.sql('''select sum(qty) from `tabProduction Order`
+					pending_qty= stock_qty - flt(frappe.db.sql('''select sum(qty) from `tabWork Order`
 							where production_item=%s and sales_order=%s and sales_order_item = %s and docstatus<2''', (i.item_code, self.name, i.name))[0][0])
 					if pending_qty:
 						items.append(dict(
@@ -776,8 +776,8 @@
 		})
 
 @frappe.whitelist()
-def make_production_orders(items, sales_order, company, project=None):
-	'''Make Production Orders against the given Sales Order for the given `items`'''
+def make_work_orders(items, sales_order, company, project=None):
+	'''Make Work Orders against the given Sales Order for the given `items`'''
 	items = json.loads(items).get('items')
 	out = []
 
@@ -787,8 +787,8 @@
 		if not i.get("pending_qty"):
 			frappe.throw(_("Please select Qty against item {0}").format(i.get("item_code")))
 
-		production_order = frappe.get_doc(dict(
-			doctype='Production Order',
+		work_order = frappe.get_doc(dict(
+			doctype='Work Order',
 			production_item=i['item_code'],
 			bom_no=i.get('bom'),
 			qty=i['pending_qty'],
@@ -798,9 +798,9 @@
 			project=project,
 			fg_warehouse=i['warehouse']
 		)).insert()
-		production_order.set_production_order_operations()
-		production_order.save()
-		out.append(production_order)
+		work_order.set_work_order_operations()
+		work_order.save()
+		out.append(work_order)
 
 	return [p.name for p in out]
 
diff --git a/erpnext/selling/doctype/sales_order/sales_order_dashboard.py b/erpnext/selling/doctype/sales_order/sales_order_dashboard.py
index ffce7ce..34ed6bc 100644
--- a/erpnext/selling/doctype/sales_order/sales_order_dashboard.py
+++ b/erpnext/selling/doctype/sales_order/sales_order_dashboard.py
@@ -28,7 +28,7 @@
 			},
 			{
 				'label': _('Manufacturing'),
-				'items': ['Production Order']
+				'items': ['Work Order']
 			},
 			{
 				'label': _('Reference'),
diff --git a/erpnext/selling/doctype/sales_order/test_sales_order.py b/erpnext/selling/doctype/sales_order/test_sales_order.py
index a1acb21..63376d9 100644
--- a/erpnext/selling/doctype/sales_order/test_sales_order.py
+++ b/erpnext/selling/doctype/sales_order/test_sales_order.py
@@ -9,7 +9,7 @@
 	import make_material_request, make_delivery_note, make_sales_invoice, WarehouseRequired
 from erpnext.stock.doctype.stock_entry.stock_entry_utils import make_stock_entry
 from frappe.tests.test_permissions import set_user_permission_doctypes
-from erpnext.selling.doctype.sales_order.sales_order import make_production_orders
+from erpnext.selling.doctype.sales_order.sales_order import make_work_orders
 import json
 
 
@@ -530,7 +530,7 @@
 		si.insert()
 		self.assertTrue(si.get('payment_schedule'))
 
-	def test_make_production_order(self):
+	def test_make_work_order(self):
 		# Make a new Sales Order
 		so = make_sales_order(**{
 			"item_list": [{
@@ -545,10 +545,10 @@
 			}]
 		})
 
-		# Raise Production Orders
+		# Raise Work Orders
 		po_items= []
 		so_item_name= {}
-		for item in so.get_production_order_items():
+		for item in so.get_work_order_items():
 			po_items.append({
 				"warehouse": item.get("warehouse"),
 				"item_code": item.get("item_code"),
@@ -557,12 +557,12 @@
 				"bom": item.get("bom")
 			})
 			so_item_name[item.get("sales_order_item")]= item.get("pending_qty")
-		make_production_orders(json.dumps({"items":po_items}), so.name, so.company)
+		make_work_orders(json.dumps({"items":po_items}), so.name, so.company)
 
-		# Check if Production Orders were raised
+		# Check if Work Orders were raised
 		for item in so_item_name:
-			po_qty = frappe.db.sql("select sum(qty) from `tabProduction Order` where sales_order=%s and sales_order_item=%s", (so.name, item))
-			self.assertEqual(po_qty[0][0], so_item_name.get(item))
+			wo_qty = frappe.db.sql("select sum(qty) from `tabWork Order` where sales_order=%s and sales_order_item=%s", (so.name, item))
+			self.assertEquals(wo_qty[0][0], so_item_name.get(item))
 
 def make_sales_order(**args):
 	so = frappe.new_doc("Sales Order")
diff --git a/erpnext/setup/doctype/company/tests/test_company_production.js b/erpnext/setup/doctype/company/tests/test_company_production.js
index 37a3d74..bf6e540 100644
--- a/erpnext/setup/doctype/company/tests/test_company_production.js
+++ b/erpnext/setup/doctype/company/tests/test_company_production.js
@@ -4,7 +4,7 @@
 	let done = assert.async();
 
 	frappe.run_serially([
-		// Added company for Production Order testing
+		// Added company for Work Order testing
 		() => frappe.set_route("List", "Company"),
 		() => frappe.new_doc("Company"),
 		() => frappe.timeout(1),
diff --git a/erpnext/startup/notifications.py b/erpnext/startup/notifications.py
index 3ab2be4..49b770b 100644
--- a/erpnext/startup/notifications.py
+++ b/erpnext/startup/notifications.py
@@ -52,7 +52,7 @@
 				"status": ("not in", ("Completed", "Closed")),
 				"docstatus": ("<", 2)
 			},
-			"Production Order": { "status": ("in", ("Draft", "Not Started", "In Process")) },
+			"Work Order": { "status": ("in", ("Draft", "Not Started", "In Process")) },
 			"BOM": {"docstatus": 0},
 
 			"Timesheet": {"status": "Draft"},
diff --git a/erpnext/startup/report_data_map.py b/erpnext/startup/report_data_map.py
index 3d5a674..d127065 100644
--- a/erpnext/startup/report_data_map.py
+++ b/erpnext/startup/report_data_map.py
@@ -97,7 +97,7 @@
 		"conditions": ["docstatus=1"],
 		"order_by": "posting_date, posting_time, name",
 	},
-	"Production Order": {
+	"Work Order": {
 		"columns": ["name", "production_item as item_code",
 			"(qty - produced_qty) as qty",
 			"fg_warehouse as warehouse"],
@@ -293,7 +293,7 @@
 	},
 
 	# Manufacturing
-	"Production Order": {
+	"Work Order": {
 		"columns": ["name","status","creation","planned_start_date","planned_end_date","status","actual_start_date","actual_end_date", "modified"],
 		"conditions": ["docstatus = 1"],
 		"order_by": "creation"
diff --git a/erpnext/stock/doctype/batch/test_batch.py b/erpnext/stock/doctype/batch/test_batch.py
index b545ee4..a2c7802 100644
--- a/erpnext/stock/doctype/batch/test_batch.py
+++ b/erpnext/stock/doctype/batch/test_batch.py
@@ -49,7 +49,7 @@
 		return receipt
 
 	def test_stock_entry_incoming(self):
-		'''Test batch creation via Stock Entry (Production Order)'''
+		'''Test batch creation via Stock Entry (Work Order)'''
 
 		self.make_batch_item('ITEM-BATCH-1')
 
diff --git a/erpnext/stock/doctype/bin/bin.py b/erpnext/stock/doctype/bin/bin.py
index 430d9fb..d8ed37e 100644
--- a/erpnext/stock/doctype/bin/bin.py
+++ b/erpnext/stock/doctype/bin/bin.py
@@ -75,9 +75,9 @@
 
 	def update_reserved_qty_for_production(self):
 		'''Update qty reserved for production from Production Item tables
-			in open production orders'''
+			in open work orders'''
 		self.reserved_qty_for_production = frappe.db.sql('''select sum(required_qty - transferred_qty)
-			from `tabProduction Order` pro, `tabProduction Order Item` item
+			from `tabWork Order` pro, `tabWork Order Item` item
 			where
 				item.item_code = %s
 				and item.parent = pro.name
diff --git a/erpnext/stock/doctype/item/item_dashboard.py b/erpnext/stock/doctype/item/item_dashboard.py
index c721086..21608a6 100644
--- a/erpnext/stock/doctype/item/item_dashboard.py
+++ b/erpnext/stock/doctype/item/item_dashboard.py
@@ -7,7 +7,7 @@
 			.format('<a href="#query-report/Stock Ledger">' + _('Stock Ledger') + '</a>'),
 		'fieldname': 'item_code',
 		'non_standard_fieldnames': {
-			'Production Order': 'production_item',
+			'Work Order': 'production_item',
 			'Product Bundle': 'new_item_code',
 			'BOM': 'item',
 			'Batch': 'item'
@@ -40,7 +40,7 @@
 			},
 			{
 				'label': _('Manufacture'),
-				'items': ['Production Order']
+				'items': ['Work Order']
 			}
 		]
 	}
\ No newline at end of file
diff --git a/erpnext/stock/doctype/material_request/material_request.js b/erpnext/stock/doctype/material_request/material_request.js
index 709c2c7..caf4e49 100644
--- a/erpnext/stock/doctype/material_request/material_request.js
+++ b/erpnext/stock/doctype/material_request/material_request.js
@@ -10,7 +10,7 @@
 			'Purchase Order': 'Purchase Order',
 			'Request for Quotation': 'Request for Quotation',
 			'Supplier Quotation': 'Supplier Quotation',
-			'Production Order': 'Production Order'
+			'Work Order': 'Work Order'
 		}
 
 		// formatter for material request item
@@ -98,8 +98,8 @@
 					this.make_supplier_quotation, __("Make"));
 
 				if(doc.material_request_type === "Manufacture")
-					cur_frm.add_custom_button(__("Production Order"),
-					function() { me.raise_production_orders() }, __("Make"));
+					cur_frm.add_custom_button(__("Work Order"),
+					function() { me.raise_work_orders() }, __("Make"));
 
 				cur_frm.page.set_inner_btn_group_as_primary(__("Make"));
 
@@ -224,10 +224,10 @@
 		});
 	},
 
-	raise_production_orders: function() {
+	raise_work_orders: function() {
 		var me = this;
 		frappe.call({
-			method:"erpnext.stock.doctype.material_request.material_request.raise_production_orders",
+			method:"erpnext.stock.doctype.material_request.material_request.raise_work_orders",
 			args: {
 				"material_request": me.frm.doc.name
 			},
diff --git a/erpnext/stock/doctype/material_request/material_request.py b/erpnext/stock/doctype/material_request/material_request.py
index 7ddea71..d4dc523 100644
--- a/erpnext/stock/doctype/material_request/material_request.py
+++ b/erpnext/stock/doctype/material_request/material_request.py
@@ -12,7 +12,7 @@
 from frappe.model.mapper import get_mapped_doc
 from erpnext.stock.stock_balance import update_bin_qty, get_indented_qty
 from erpnext.controllers.buying_controller import BuyingController
-from erpnext.manufacturing.doctype.production_order.production_order import get_item_details
+from erpnext.manufacturing.doctype.work_order.work_order import get_item_details
 from erpnext.buying.utils import check_for_closed_status, validate_for_items
 
 from six import string_types
@@ -168,7 +168,7 @@
 
 				elif self.material_request_type == "Manufacture":
 					d.ordered_qty = flt(frappe.db.sql("""select sum(qty)
-						from `tabProduction Order` where material_request = %s
+						from `tabWork Order` where material_request = %s
 						and material_request_item = %s and docstatus = 1""",
 						(self.name, d.name))[0][0])
 
@@ -415,36 +415,36 @@
 	return doclist
 
 @frappe.whitelist()
-def raise_production_orders(material_request):
+def raise_work_orders(material_request):
 	mr= frappe.get_doc("Material Request", material_request)
 	errors =[]
-	production_orders = []
+	work_orders = []
 	default_wip_warehouse = frappe.db.get_single_value("Manufacturing Settings", "default_wip_warehouse")
 	for d in mr.items:
 		if (d.qty - d.ordered_qty) >0:
 			if frappe.db.get_value("BOM", {"item": d.item_code, "is_default": 1}):
-				prod_order = frappe.new_doc("Production Order")
-				prod_order.production_item = d.item_code
-				prod_order.qty = d.qty - d.ordered_qty
-				prod_order.fg_warehouse = d.warehouse
-				prod_order.wip_warehouse = default_wip_warehouse
-				prod_order.description = d.description
-				prod_order.stock_uom = d.stock_uom
-				prod_order.expected_delivery_date = d.schedule_date
-				prod_order.sales_order = d.sales_order
-				prod_order.bom_no = get_item_details(d.item_code).bom_no
-				prod_order.material_request = mr.name
-				prod_order.material_request_item = d.name
-				prod_order.planned_start_date = mr.transaction_date
-				prod_order.company = mr.company
-				prod_order.save()
-				production_orders.append(prod_order.name)
+				wo_order = frappe.new_doc("Work Order")
+				wo_order.production_item = d.item_code
+				wo_order.qty = d.qty - d.ordered_qty
+				wo_order.fg_warehouse = d.warehouse
+				wo_order.wip_warehouse = default_wip_warehouse
+				wo_order.description = d.description
+				wo_order.stock_uom = d.stock_uom
+				wo_order.expected_delivery_date = d.schedule_date
+				wo_order.sales_order = d.sales_order
+				wo_order.bom_no = get_item_details(d.item_code).bom_no
+				wo_order.material_request = mr.name
+				wo_order.material_request_item = d.name
+				wo_order.planned_start_date = mr.transaction_date
+				wo_order.company = mr.company
+				wo_order.save()
+				work_orders.append(wo_order.name)
 			else:
 				errors.append(_("Row {0}: Bill of Materials not found for the Item {1}").format(d.idx, d.item_code))
-	if production_orders:
-		message = ["""<a href="#Form/Production Order/%s" target="_blank">%s</a>""" % \
-			(p, p) for p in production_orders]
-		msgprint(_("The following Production Orders were created:") + '\n' + new_line_sep(message))
+	if work_orders:
+		message = ["""<a href="#Form/Work Order/%s" target="_blank">%s</a>""" % \
+			(p, p) for p in work_orders]
+		msgprint(_("The following Work Orders were created:") + '\n' + new_line_sep(message))
 	if errors:
 		frappe.throw(_("Productions Orders cannot be raised for:") + '\n' + new_line_sep(errors))
-	return production_orders
+	return work_orders
diff --git a/erpnext/stock/doctype/material_request/material_request_dashboard.py b/erpnext/stock/doctype/material_request/material_request_dashboard.py
index 751c723..c3fe8f3 100644
--- a/erpnext/stock/doctype/material_request/material_request_dashboard.py
+++ b/erpnext/stock/doctype/material_request/material_request_dashboard.py
@@ -11,7 +11,7 @@
 			},
 			{
 				'label': _('Manufacturing'),
-				'items': ['Production Order']
+				'items': ['Work Order']
 			}
 		]
 	}
\ No newline at end of file
diff --git a/erpnext/stock/doctype/material_request/test_material_request.py b/erpnext/stock/doctype/material_request/test_material_request.py
index 3c5012c..6b0b7bb 100644
--- a/erpnext/stock/doctype/material_request/test_material_request.py
+++ b/erpnext/stock/doctype/material_request/test_material_request.py
@@ -7,7 +7,7 @@
 from __future__ import unicode_literals
 import frappe, unittest, erpnext
 from frappe.utils import flt, today
-from erpnext.stock.doctype.material_request.material_request import raise_production_orders
+from erpnext.stock.doctype.material_request.material_request import raise_work_orders
 
 class TestMaterialRequest(unittest.TestCase):
 	def setUp(self):
@@ -536,8 +536,8 @@
 		requested_qty = frappe.db.sql("""select indented_qty from `tabBin` where \
 			item_code= %s and warehouse= %s """, (mr.items[0].item_code, mr.items[0].warehouse))[0][0]
 
-		prod_order = raise_production_orders(mr.name)
-		po = frappe.get_doc("Production Order", prod_order[0])
+		prod_order = raise_work_orders(mr.name)
+		po = frappe.get_doc("Work Order", prod_order[0])
 		po.wip_warehouse = "_Test Warehouse 1 - _TC"
 		po.submit()
 		
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.js b/erpnext/stock/doctype/stock_entry/stock_entry.js
index b4d8e15..c9d50f6 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.js
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.js
@@ -4,12 +4,12 @@
 
 frappe.ui.form.on('Stock Entry', {
 	setup: function(frm) {
-		frm.set_query('production_order', function() {
+		frm.set_query('work_order', function() {
 			return {
 				filters: [
-					['Production Order', 'docstatus', '=', 1],
-					['Production Order', 'qty', '>','`tabProduction Order`.produced_qty'],
-					['Production Order', 'company', '=', frm.doc.company]
+					['Work Order', 'docstatus', '=', 1],
+					['Work Order', 'qty', '>','`tabWork Order`.produced_qty'],
+					['Work Order', 'company', '=', frm.doc.company]
 				]
 			}
 		});
@@ -565,11 +565,11 @@
 	},
 
 	clean_up: function() {
-		// Clear Production Order record from locals, because it is updated via Stock Entry
-		if(this.frm.doc.production_order &&
+		// Clear Work Order record from locals, because it is updated via Stock Entry
+		if(this.frm.doc.work_order &&
 				in_list(["Manufacture", "Material Transfer for Manufacture"], this.frm.doc.purpose)) {
-			frappe.model.remove_from_locals("Production Order",
-				this.frm.doc.production_order);
+			frappe.model.remove_from_locals("Work Order",
+				this.frm.doc.work_order);
 		}
 	},
 
@@ -578,8 +578,8 @@
 		if(!this.frm.doc.fg_completed_qty || !this.frm.doc.bom_no)
 			frappe.throw(__("BOM and Manufacturing Quantity are required"));
 
-		if(this.frm.doc.production_order || this.frm.doc.bom_no) {
-			// if production order / bom is mentioned, get items
+		if(this.frm.doc.work_order || this.frm.doc.bom_no) {
+			// if work order / bom is mentioned, get items
 			return this.frm.call({
 				doc: me.frm.doc,
 				method: "get_items",
@@ -590,17 +590,17 @@
 		}
 	},
 
-	production_order: function() {
+	work_order: function() {
 		var me = this;
 		this.toggle_enable_bom();
-		if(!me.frm.doc.production_order) {
+		if(!me.frm.doc.work_order) {
 			return;
 		}
 
 		return frappe.call({
-			method: "erpnext.stock.doctype.stock_entry.stock_entry.get_production_order_details",
+			method: "erpnext.stock.doctype.stock_entry.stock_entry.get_work_order_details",
 			args: {
-				production_order: me.frm.doc.production_order
+				work_order: me.frm.doc.work_order
 			},
 			callback: function(r) {
 				if (!r.exc) {
@@ -630,7 +630,7 @@
 	},
 
 	toggle_enable_bom: function() {
-		this.frm.toggle_enable("bom_no", !!!this.frm.doc.production_order);
+		this.frm.toggle_enable("bom_no", !!!this.frm.doc.work_order);
 	},
 
 	add_excise_button: function() {
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.json b/erpnext/stock/doctype/stock_entry/stock_entry.json
index b6ad6da..9107bcd 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.json
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.json
@@ -178,7 +178,7 @@
    "collapsible": 0, 
    "columns": 0, 
    "depends_on": "eval:in_list([\"Material Transfer for Manufacture\", \"Manufacture\"], doc.purpose)", 
-   "fieldname": "production_order", 
+   "fieldname": "work_order", 
    "fieldtype": "Link", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
@@ -187,12 +187,12 @@
    "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
-   "label": "Production Order", 
+   "label": "Work Order", 
    "length": 0, 
    "no_copy": 0, 
    "oldfieldname": "production_order", 
    "oldfieldtype": "Link", 
-   "options": "Production Order", 
+   "options": "Work Order", 
    "permlevel": 0, 
    "print_hide": 1, 
    "print_hide_if_no_value": 0, 
@@ -1894,7 +1894,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2018-03-01 12:27:12.884611", 
+ "modified": "2018-03-13 12:27:12.884611",
  "modified_by": "Administrator", 
  "module": "Stock", 
  "name": "Stock Entry", 
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py
index 6cb81d8..9da35aa 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.py
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.py
@@ -17,7 +17,7 @@
 from six import string_types
 
 class IncorrectValuationRateError(frappe.ValidationError): pass
-class DuplicateEntryForProductionOrderError(frappe.ValidationError): pass
+class DuplicateEntryForWorkOrderError(frappe.ValidationError): pass
 class OperationsNotCompleteError(frappe.ValidationError): pass
 class MaxSampleAlreadyRetainedError(frappe.ValidationError): pass
 
@@ -37,8 +37,8 @@
 
 	def validate(self):
 		self.pro_doc = frappe._dict()
-		if self.production_order:
-			self.pro_doc = frappe.get_doc('Production Order', self.production_order)
+		if self.work_order:
+			self.pro_doc = frappe.get_doc('Work Order', self.work_order)
 
 		self.validate_posting_time()
 		self.validate_purpose()
@@ -47,7 +47,7 @@
 		self.validate_uom_is_integer("uom", "qty")
 		self.validate_uom_is_integer("stock_uom", "transfer_qty")
 		self.validate_warehouse()
-		self.validate_production_order()
+		self.validate_work_order()
 		self.validate_bom()
 		self.validate_finished_goods()
 		self.validate_with_material_request()
@@ -72,7 +72,7 @@
 
 		from erpnext.stock.doctype.serial_no.serial_no import update_serial_nos_after_submit
 		update_serial_nos_after_submit(self, "items")
-		self.update_production_order()
+		self.update_work_order()
 		self.validate_purchase_order()
 		if self.purchase_order and self.purpose == "Subcontract":
 			self.update_purchase_order_supplied_items()
@@ -80,7 +80,7 @@
 
 	def on_cancel(self):
 		self.update_stock_ledger()
-		self.update_production_order()
+		self.update_work_order()
 		if self.purchase_order and self.purpose == "Subcontract":
 			self.update_purchase_order_supplied_items()
 		self.make_gl_entries_on_cancel()
@@ -172,7 +172,7 @@
 							frappe.throw(_("Target warehouse is mandatory for row {0}").format(d.idx))
 
 						elif self.pro_doc and (cstr(d.t_warehouse) != self.pro_doc.fg_warehouse and cstr(d.t_warehouse) != self.pro_doc.scrap_warehouse):
-							frappe.throw(_("Target warehouse in row {0} must be same as Production Order").format(d.idx))
+							frappe.throw(_("Target warehouse in row {0} must be same as Work Order").format(d.idx))
 
 					else:
 						d.t_warehouse = None
@@ -182,39 +182,39 @@
 			if cstr(d.s_warehouse) == cstr(d.t_warehouse) and not self.purpose == "Material Transfer for Manufacture":
 				frappe.throw(_("Source and target warehouse cannot be same for row {0}").format(d.idx))
 
-	def validate_production_order(self):
+	def validate_work_order(self):
 		if self.purpose in ("Manufacture", "Material Transfer for Manufacture"):
-			# check if production order is entered
+			# check if work order is entered
 
-			if self.purpose=="Manufacture" and self.production_order:
+			if self.purpose=="Manufacture" and self.work_order:
 				if not self.fg_completed_qty:
 					frappe.throw(_("For Quantity (Manufactured Qty) is mandatory"))
 				self.check_if_operations_completed()
-				self.check_duplicate_entry_for_production_order()
+				self.check_duplicate_entry_for_work_order()
 		elif self.purpose != "Material Transfer":
-			self.production_order = None
+			self.work_order = None
 
 	def check_if_operations_completed(self):
 		"""Check if Time Sheets are completed against before manufacturing to capture operating costs."""
-		prod_order = frappe.get_doc("Production Order", self.production_order)
+		prod_order = frappe.get_doc("Work Order", self.work_order)
 
 		for d in prod_order.get("operations"):
 			total_completed_qty = flt(self.fg_completed_qty) + flt(prod_order.produced_qty)
 			if total_completed_qty > flt(d.completed_qty):
-				frappe.throw(_("Row #{0}: Operation {1} is not completed for {2} qty of finished goods in Production Order # {3}. Please update operation status via Time Logs")
-					.format(d.idx, d.operation, total_completed_qty, self.production_order), OperationsNotCompleteError)
+				frappe.throw(_("Row #{0}: Operation {1} is not completed for {2} qty of finished goods in Work Order # {3}. Please update operation status via Time Logs")
+					.format(d.idx, d.operation, total_completed_qty, self.work_order), OperationsNotCompleteError)
 
-	def check_duplicate_entry_for_production_order(self):
+	def check_duplicate_entry_for_work_order(self):
 		other_ste = [t[0] for t in frappe.db.get_values("Stock Entry",  {
-			"production_order": self.production_order,
+			"work_order": self.work_order,
 			"purpose": self.purpose,
 			"docstatus": ["!=", 2],
 			"name": ["!=", self.name]
 		}, "name")]
 
 		if other_ste:
-			production_item, qty = frappe.db.get_value("Production Order",
-				self.production_order, ["production_item", "qty"])
+			production_item, qty = frappe.db.get_value("Work Order",
+				self.work_order, ["production_item", "qty"])
 			args = other_ste + [production_item]
 			fg_qty_already_entered = frappe.db.sql("""select sum(transfer_qty)
 				from `tabStock Entry Detail`
@@ -223,8 +223,8 @@
 					and ifnull(s_warehouse,'')='' """ % (", ".join(["%s" * len(other_ste)]), "%s"), args)[0][0]
 
 			if fg_qty_already_entered >= qty:
-				frappe.throw(_("Stock Entries already created for Production Order ")
-					+ self.production_order + ":" + ", ".join(other_ste), DuplicateEntryForProductionOrderError)
+				frappe.throw(_("Stock Entries already created for Work Order ")
+					+ self.work_order + ":" + ", ".join(other_ste), DuplicateEntryForWorkOrderError)
 
 	def set_incoming_rate(self):
 		for d in self.items:
@@ -261,8 +261,8 @@
 						frappe.bold(d.transfer_qty)),
 					NegativeStockError, title=_('Insufficient Stock'))
 
-	def set_serial_nos(self, production_order):
-		previous_se = frappe.db.get_value("Stock Entry", {"production_order": production_order,
+	def set_serial_nos(self, work_order):
+		previous_se = frappe.db.get_value("Stock Entry", {"work_order": work_order,
 				"purpose": "Material Transfer for Manufacture"}, "name")
 
 		for d in self.get('items'):
@@ -273,7 +273,7 @@
 				d.serial_no = transferred_serial_no
 
 	def get_stock_and_rate(self):
-		self.set_production_order_details()
+		self.set_work_order_details()
 		self.set_transfer_qty()
 		self.set_actual_qty()
 		self.calculate_rate_and_amount()
@@ -418,12 +418,12 @@
 				frappe.throw(_("Quantity in row {0} ({1}) must be same as manufactured quantity {2}"). \
 					format(d.idx, d.transfer_qty, self.fg_completed_qty))
 
-			if self.production_order and self.purpose == "Manufacture" and d.t_warehouse:
+			if self.work_order and self.purpose == "Manufacture" and d.t_warehouse:
 				items_with_target_warehouse.append(d.item_code)
 
-		if self.production_order and self.purpose == "Manufacture":
-			production_item = frappe.db.get_value("Production Order",
-				self.production_order, "production_item")
+		if self.work_order and self.purpose == "Manufacture":
+			production_item = frappe.db.get_value("Work Order",
+				self.work_order, "production_item")
 			if production_item not in items_with_target_warehouse:
 				frappe.throw(_("Finished Item {0} must be entered for Manufacture type entry")
 					.format(production_item))
@@ -489,20 +489,20 @@
 
 		return gl_entries
 
-	def update_production_order(self):
-		def _validate_production_order(pro_doc):
+	def update_work_order(self):
+		def _validate_work_order(pro_doc):
 			if flt(pro_doc.docstatus) != 1:
-				frappe.throw(_("Production Order {0} must be submitted").format(self.production_order))
+				frappe.throw(_("Work Order {0} must be submitted").format(self.work_order))
 
 			if pro_doc.status == 'Stopped':
-				frappe.throw(_("Transaction not allowed against stopped Production Order {0}").format(self.production_order))
+				frappe.throw(_("Transaction not allowed against stopped Work Order {0}").format(self.work_order))
 
-		if self.production_order:
-			pro_doc = frappe.get_doc("Production Order", self.production_order)
-			_validate_production_order(pro_doc)
+		if self.work_order:
+			pro_doc = frappe.get_doc("Work Order", self.work_order)
+			_validate_work_order(pro_doc)
 			pro_doc.run_method("update_status")
 			if self.fg_completed_qty:
-				pro_doc.run_method("update_production_order_qty")
+				pro_doc.run_method("update_work_order_qty")
 				if self.purpose == "Manufacture":
 					pro_doc.run_method("update_planned_qty")
 
@@ -567,24 +567,24 @@
 
 	def get_items(self):
 		self.set('items', [])
-		self.validate_production_order()
+		self.validate_work_order()
 
 		if not self.posting_date or not self.posting_time:
 			frappe.throw(_("Posting date and posting time is mandatory"))
 
-		self.set_production_order_details()
+		self.set_work_order_details()
 
 		if self.bom_no:
 			if self.purpose in ["Material Issue", "Material Transfer", "Manufacture", "Repack",
 					"Subcontract", "Material Transfer for Manufacture"]:
-				if self.production_order and self.purpose == "Material Transfer for Manufacture":
+				if self.work_order and self.purpose == "Material Transfer for Manufacture":
 					item_dict = self.get_pending_raw_materials()
 					if self.to_warehouse and self.pro_doc:
 						for item in item_dict.values():
 							item["to_warehouse"] = self.pro_doc.wip_warehouse
 					self.add_to_stock_entry_detail(item_dict)
 
-				elif self.production_order and self.purpose == "Manufacture" and \
+				elif self.work_order and self.purpose == "Manufacture" and \
 					frappe.db.get_single_value("Manufacturing Settings", "backflush_raw_materials_based_on")== "Material Transferred for Manufacture":
 					self.get_transfered_raw_materials()
 
@@ -595,6 +595,7 @@
 					item_dict = self.get_bom_raw_materials(self.fg_completed_qty)
 
 					#Get PO Supplied Items Details
+					print('Purchase Order', self.purchase_order, self.purpose)
 					if self.purchase_order and self.purpose == "Subcontract":
 						#Get PO Supplied Items Details
 						item_wh = frappe._dict(frappe.db.sql("""
@@ -621,8 +622,8 @@
 						self.add_to_stock_entry_detail(scrap_item_dict, bom_no=self.bom_no)
 
 			# fetch the serial_no of the first stock entry for the second stock entry
-			if self.production_order and self.purpose == "Manufacture":
-				self.set_serial_nos(self.production_order)
+			if self.work_order and self.purpose == "Manufacture":
+				self.set_serial_nos(self.work_order)
 
 			# add finished goods item
 			if self.purpose in ("Manufacture", "Repack"):
@@ -631,23 +632,23 @@
 		self.set_actual_qty()
 		self.calculate_rate_and_amount(raise_error_if_no_rate=False)
 
-	def set_production_order_details(self):
+	def set_work_order_details(self):
 		if not getattr(self, "pro_doc", None):
 			self.pro_doc = frappe._dict()
 
-		if self.production_order:
+		if self.work_order:
 			# common validations
 			if not self.pro_doc:
-				self.pro_doc = frappe.get_doc('Production Order', self.production_order)
+				self.pro_doc = frappe.get_doc('Work Order', self.work_order)
 
 			if self.pro_doc:
 				self.bom_no = self.pro_doc.bom_no
 			else:
-				# invalid production order
-				self.production_order = None
+				# invalid work order
+				self.work_order = None
 
 	def load_items_from_bom(self):
-		if self.production_order:
+		if self.work_order:
 			item_code = self.pro_doc.production_item
 			to_warehouse = self.pro_doc.fg_warehouse
 		else:
@@ -657,7 +658,7 @@
 		item = frappe.db.get_value("Item", item_code, ["item_name",
 			"description", "stock_uom", "expense_account", "buying_cost_center", "name", "default_warehouse"], as_dict=1)
 
-		if not self.production_order and not to_warehouse:
+		if not self.work_order and not to_warehouse:
 			# in case of BOM
 			to_warehouse = item.default_warehouse
 
@@ -705,9 +706,9 @@
 			from `tabStock Entry` se,`tabStock Entry Detail` sed
 			where
 				se.name = sed.parent and se.docstatus=1 and se.purpose='Material Transfer for Manufacture'
-				and se.production_order= %s and ifnull(sed.t_warehouse, '') != ''
+				and se.work_order= %s and ifnull(sed.t_warehouse, '') != ''
 			group by sed.item_code, sed.t_warehouse
-		""", self.production_order, as_dict=1)
+		""", self.work_order, as_dict=1)
 
 		materials_already_backflushed = frappe.db.sql("""
 			select
@@ -716,16 +717,16 @@
 				`tabStock Entry` se, `tabStock Entry Detail` sed
 			where
 				se.name = sed.parent and se.docstatus=1 and se.purpose='Manufacture'
-				and se.production_order= %s and ifnull(sed.s_warehouse, '') != ''
+				and se.work_order= %s and ifnull(sed.s_warehouse, '') != ''
 			group by sed.item_code, sed.s_warehouse
-		""", self.production_order, as_dict=1)
+		""", self.work_order, as_dict=1)
 
 		backflushed_materials= {}
 		for d in materials_already_backflushed:
 			backflushed_materials.setdefault(d.item_code,[]).append({d.warehouse: d.qty})
 
 		po_qty = frappe.db.sql("""select qty, produced_qty, material_transferred_for_manufacturing from
-			`tabProduction Order` where name=%s""", self.production_order, as_dict=1)[0]
+			`tabWork Order` where name=%s""", self.work_order, as_dict=1)[0]
 		manufacturing_qty = flt(po_qty.qty)
 		produced_qty = flt(po_qty.produced_qty)
 		trans_qty = flt(po_qty.material_transferred_for_manufacturing)
@@ -780,13 +781,13 @@
 
 		# show some message
 		if not len(item_dict):
-			frappe.msgprint(_("""All items have already been transferred for this Production Order."""))
+			frappe.msgprint(_("""All items have already been transferred for this Work Order."""))
 
 		return item_dict
 
 	def get_pro_order_required_items(self):
 		item_dict = frappe._dict()
-		pro_order = frappe.get_doc("Production Order", self.production_order)
+		pro_order = frappe.get_doc("Work Order", self.work_order)
 		if not frappe.db.get_value("Warehouse", pro_order.wip_warehouse, "is_group"):
 			wip_warehouse = pro_order.wip_warehouse
 		else:
@@ -908,32 +909,32 @@
 		return stock_entry.as_dict()
 
 @frappe.whitelist()
-def get_production_order_details(production_order):
-	production_order = frappe.get_doc("Production Order", production_order)
-	pending_qty_to_produce = flt(production_order.qty) - flt(production_order.produced_qty)
+def get_work_order_details(work_order):
+	work_order = frappe.get_doc("Work Order", work_order)
+	pending_qty_to_produce = flt(work_order.qty) - flt(work_order.produced_qty)
 
 	return {
 		"from_bom": 1,
-		"bom_no": production_order.bom_no,
-		"use_multi_level_bom": production_order.use_multi_level_bom,
-		"wip_warehouse": production_order.wip_warehouse,
-		"fg_warehouse": production_order.fg_warehouse,
+		"bom_no": work_order.bom_no,
+		"use_multi_level_bom": work_order.use_multi_level_bom,
+		"wip_warehouse": work_order.wip_warehouse,
+		"fg_warehouse": work_order.fg_warehouse,
 		"fg_completed_qty": pending_qty_to_produce,
-		"additional_costs": get_additional_costs(production_order, fg_qty=pending_qty_to_produce)
+		"additional_costs": get_additional_costs(work_order, fg_qty=pending_qty_to_produce)
 	}
 
-def get_additional_costs(production_order=None, bom_no=None, fg_qty=None):
+def get_additional_costs(work_order=None, bom_no=None, fg_qty=None):
 	additional_costs = []
-	operating_cost_per_unit = get_operating_cost_per_unit(production_order, bom_no)
+	operating_cost_per_unit = get_operating_cost_per_unit(work_order, bom_no)
 	if operating_cost_per_unit:
 		additional_costs.append({
-			"description": "Operating Cost as per Production Order / BOM",
+			"description": "Operating Cost as per Work Order / BOM",
 			"amount": operating_cost_per_unit * flt(fg_qty)
 		})
 
-	if production_order and production_order.additional_operating_cost and production_order.qty:
+	if work_order and work_order.additional_operating_cost and work_order.qty:
 		additional_operating_cost_per_unit = \
-			flt(production_order.additional_operating_cost) / flt(production_order.qty)
+			flt(work_order.additional_operating_cost) / flt(work_order.qty)
 
 		additional_costs.append({
 			"description": "Additional Operating Cost",
@@ -942,19 +943,19 @@
 
 	return additional_costs
 
-def get_operating_cost_per_unit(production_order=None, bom_no=None):
+def get_operating_cost_per_unit(work_order=None, bom_no=None):
 	operating_cost_per_unit = 0
-	if production_order:
+	if work_order:
 		if not bom_no:
-			bom_no = production_order.bom_no
+			bom_no = work_order.bom_no
 
-		for d in production_order.get("operations"):
+		for d in work_order.get("operations"):
 			if flt(d.completed_qty):
 				operating_cost_per_unit += flt(d.actual_operating_cost) / flt(d.completed_qty)
-			elif production_order.qty:
-				operating_cost_per_unit += flt(d.planned_operating_cost) / flt(production_order.qty)
+			elif work_order.qty:
+				operating_cost_per_unit += flt(d.planned_operating_cost) / flt(work_order.qty)
 
-	# Get operating cost from BOM if not found in production_order.
+	# Get operating cost from BOM if not found in work_order.
 	if not operating_cost_per_unit and bom_no:
 		bom = frappe.db.get_value("BOM", bom_no, ["operating_cost", "quantity"], as_dict=1)
 		if bom.quantity:
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry_list.js b/erpnext/stock/doctype/stock_entry/stock_entry_list.js
index db06209..0f84b6d 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry_list.js
+++ b/erpnext/stock/doctype/stock_entry/stock_entry_list.js
@@ -1,6 +1,6 @@
 frappe.listview_settings['Stock Entry'] = {
 	add_fields: ["`tabStock Entry`.`from_warehouse`", "`tabStock Entry`.`to_warehouse`",
-		"`tabStock Entry`.`purpose`", "`tabStock Entry`.`production_order`", "`tabStock Entry`.`bom_no`"],
+		"`tabStock Entry`.`purpose`", "`tabStock Entry`.`work_order`", "`tabStock Entry`.`bom_no`"],
 	column_render: {
 		"from_warehouse": function(doc) {
 			var html = "";
diff --git a/erpnext/stock/doctype/stock_entry/test_stock_entry.py b/erpnext/stock/doctype/stock_entry/test_stock_entry.py
index d4b015a..7f98a0c 100644
--- a/erpnext/stock/doctype/stock_entry/test_stock_entry.py
+++ b/erpnext/stock/doctype/stock_entry/test_stock_entry.py
@@ -538,14 +538,14 @@
 		self.assertRaises(StockFreezeError, se.submit)
 		frappe.db.set_value("Stock Settings", None, "stock_frozen_upto_days", 0)
 
-	def test_production_order(self):
-		from erpnext.manufacturing.doctype.production_order.production_order \
+	def test_work_order(self):
+		from erpnext.manufacturing.doctype.work_order.work_order \
 			import make_stock_entry as _make_stock_entry
 		bom_no, bom_operation_cost = frappe.db.get_value("BOM", {"item": "_Test FG Item 2",
 			"is_default": 1, "docstatus": 1}, ["name", "operating_cost"])
 
-		production_order = frappe.new_doc("Production Order")
-		production_order.update({
+		work_order = frappe.new_doc("Work Order")
+		work_order.update({
 			"company": "_Test Company",
 			"fg_warehouse": "_Test Warehouse 1 - _TC",
 			"production_item": "_Test FG Item 2",
@@ -555,13 +555,13 @@
 			"wip_warehouse": "_Test Warehouse - _TC",
 			"additional_operating_cost": 1000
 		})
-		production_order.insert()
-		production_order.submit()
+		work_order.insert()
+		work_order.submit()
 
 		make_stock_entry(item_code="_Test Item", target="_Test Warehouse - _TC", qty=50, basic_rate=100)
 		make_stock_entry(item_code="_Test Item 2", target="_Test Warehouse - _TC", qty=50, basic_rate=20)
 
-		stock_entry = _make_stock_entry(production_order.name, "Manufacture", 1)
+		stock_entry = _make_stock_entry(work_order.name, "Manufacture", 1)
 
 		rm_cost = 0
 		for d in stock_entry.get("items"):
@@ -569,15 +569,15 @@
 				rm_cost += flt(d.amount)
 		fg_cost = filter(lambda x: x.item_code=="_Test FG Item 2", stock_entry.get("items"))[0].amount
 		self.assertEqual(fg_cost,
-			flt(rm_cost + bom_operation_cost + production_order.additional_operating_cost, 2))
+			flt(rm_cost + bom_operation_cost + work_order.additional_operating_cost, 2))
 
 
-	def test_variant_production_order(self):
+	def test_variant_work_order(self):
 		bom_no = frappe.db.get_value("BOM", {"item": "_Test Variant Item",
 			"is_default": 1, "docstatus": 1})
 
-		production_order = frappe.new_doc("Production Order")
-		production_order.update({
+		work_order = frappe.new_doc("Work Order")
+		work_order.update({
 			"company": "_Test Company",
 			"fg_warehouse": "_Test Warehouse 1 - _TC",
 			"production_item": "_Test Variant Item-S",
@@ -586,12 +586,12 @@
 			"stock_uom": "_Test UOM",
 			"wip_warehouse": "_Test Warehouse - _TC"
 		})
-		production_order.insert()
-		production_order.submit()
+		work_order.insert()
+		work_order.submit()
 
-		from erpnext.manufacturing.doctype.production_order.production_order import make_stock_entry
+		from erpnext.manufacturing.doctype.work_order.work_order import make_stock_entry
 
-		stock_entry = frappe.get_doc(make_stock_entry(production_order.name, "Manufacture", 1))
+		stock_entry = frappe.get_doc(make_stock_entry(work_order.name, "Manufacture", 1))
 		stock_entry.insert()
 		self.assertTrue("_Test Variant Item-S" in [d.item_code for d in stock_entry.items])
 
diff --git a/erpnext/stock/stock_balance.py b/erpnext/stock/stock_balance.py
index 49909d9..90c82c4 100644
--- a/erpnext/stock/stock_balance.py
+++ b/erpnext/stock/stock_balance.py
@@ -131,7 +131,7 @@
 
 def get_planned_qty(item_code, warehouse):
 	planned_qty = frappe.db.sql("""
-		select sum(qty - produced_qty) from `tabProduction Order`
+		select sum(qty - produced_qty) from `tabWork Order`
 		where production_item = %s and fg_warehouse = %s and status not in ("Stopped", "Completed")
 		and docstatus=1 and qty > produced_qty""", (item_code, warehouse))
 
diff --git a/erpnext/tests/ui/tests.txt b/erpnext/tests/ui/tests.txt
index 37885f3..e13795c 100644
--- a/erpnext/tests/ui/tests.txt
+++ b/erpnext/tests/ui/tests.txt
@@ -40,7 +40,7 @@
 erpnext/hr/doctype/leave_allocation/test_leave_allocation.js
 erpnext/hr/doctype/leave_application/test_leave_application.js
 erpnext/stock/doctype/warehouse/test_warehouse.js
-erpnext/manufacturing/doctype/production_order/test_production_order.js #long
+erpnext/manufacturing/doctype/work_order/test_work_order.js #long
 erpnext/accounts/page/pos/test_pos.js
 erpnext/selling/page/point_of_sale/tests/test_point_of_sale.js
 erpnext/selling/doctype/product_bundle/test_product_bundle.js
