Merge branch 'develop' of github.com:frappe/erpnext into develop
diff --git a/erpnext/accounts/doctype/mode_of_payment/mode_of_payment.py b/erpnext/accounts/doctype/mode_of_payment/mode_of_payment.py
index ddabf89..f07c42b 100644
--- a/erpnext/accounts/doctype/mode_of_payment/mode_of_payment.py
+++ b/erpnext/accounts/doctype/mode_of_payment/mode_of_payment.py
@@ -6,5 +6,5 @@
 
 from frappe.model.document import Document
 
-class ModeOfPayment(Document):
-	pass
\ No newline at end of file
+class ModeofPayment(Document):
+	pass
diff --git a/erpnext/hr/doctype/employee/employee.py b/erpnext/hr/doctype/employee/employee.py
index 44c1752..f5be944 100644
--- a/erpnext/hr/doctype/employee/employee.py
+++ b/erpnext/hr/doctype/employee/employee.py
@@ -17,8 +17,8 @@
 		self.salary_structure_exists = frappe.db.get_value("Salary Structure",
 			{"employee": self.name, "is_active": "Yes", "docstatus": ["!=", 2]})
 
-	def as_dict(self):
-		doc = super(Employee, self).as_dict()
+	def as_dict(self, no_nulls=False):
+		doc = super(Employee, self).as_dict(no_nulls)
 
 		if hasattr(self, "salary_structure_exists"):
 			doc["salary_structure_exists"] = self.salary_structure_exists
diff --git a/erpnext/manufacturing/doctype/production_order/production_order.js b/erpnext/manufacturing/doctype/production_order/production_order.js
index 07e6e11..d5fb1c9 100644
--- a/erpnext/manufacturing/doctype/production_order/production_order.js
+++ b/erpnext/manufacturing/doctype/production_order/production_order.js
@@ -10,6 +10,10 @@
 		this.frm.add_fetch("sales_order", "delivery_date", "expected_delivery_date");
 	},
 
+	before_submit: function() {
+		cur_frm.toggle_reqd(["fg_warehouse", "wip_warehouse"], true);
+	},
+
 	refresh: function(doc, dt, dn) {
 		this.frm.dashboard.reset();
 		erpnext.toggle_naming_series();
diff --git a/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.js b/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.js
index 54aa9a2..0415c91 100644
--- a/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.js
+++ b/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.js
@@ -33,7 +33,7 @@
 
 cur_frm.fields_dict['pp_details'].grid.get_field('item_code').get_query = function(doc) {
  	return erpnext.queries.item({
-		'ifnull(tabItem.is_pro_applicable, "No")': 'Yes'
+		'is_pro_applicable': 'Yes'
 	});
 }
 
@@ -54,4 +54,4 @@
 }
 
 cur_frm.fields_dict.pp_so_details.grid.get_field("customer").get_query =
-	cur_frm.fields_dict.customer.get_query;
\ No newline at end of file
+	cur_frm.fields_dict.customer.get_query;
diff --git a/erpnext/selling/doctype/sales_order/sales_order.js b/erpnext/selling/doctype/sales_order/sales_order.js
index 96b7105..75a2c39 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.js
+++ b/erpnext/selling/doctype/sales_order/sales_order.js
@@ -17,40 +17,40 @@
 	refresh: function(doc, dt, dn) {
 		this._super();
 		this.frm.dashboard.reset();
-		
+
 		if(doc.docstatus==1) {
 			if(doc.status != 'Stopped') {
-				
-				cur_frm.dashboard.add_progress(cint(doc.per_delivered) + __("% Delivered"), 
+
+				cur_frm.dashboard.add_progress(cint(doc.per_delivered) + __("% Delivered"),
 					doc.per_delivered);
-				cur_frm.dashboard.add_progress(cint(doc.per_billed) + __("% Billed"), 
+				cur_frm.dashboard.add_progress(cint(doc.per_billed) + __("% Billed"),
 					doc.per_billed);
 
 				cur_frm.add_custom_button(__('Send SMS'), cur_frm.cscript.send_sms, "icon-mobile-phone");
 				// delivery note
-				if(flt(doc.per_delivered, 2) < 100 && doc.order_type=='Sales')
+				if(flt(doc.per_delivered, 2) < 100 && ["Sales", "Shopping Cart"].indexOf(doc.order_type)!==-1)
 					cur_frm.add_custom_button(__('Make Delivery'), this.make_delivery_note);
-			
+
 				// maintenance
-				if(flt(doc.per_delivered, 2) < 100 && (doc.order_type !='Sales')) {
+				if(flt(doc.per_delivered, 2) < 100 && ["Sales", "Shopping Cart"].indexOf(doc.order_type)===-1) {
 					cur_frm.add_custom_button(__('Make Maint. Visit'), this.make_maintenance_visit);
-					cur_frm.add_custom_button(__('Make Maint. Schedule'), 
+					cur_frm.add_custom_button(__('Make Maint. Schedule'),
 						this.make_maintenance_schedule);
 				}
 
 				// indent
-				if(!doc.order_type || (doc.order_type == 'Sales'))
-					cur_frm.add_custom_button(__('Make ') + __('Material Request'), 
+				if(!doc.order_type || ["Sales", "Shopping Cart"].indexOf(doc.order_type)!==-1)
+					cur_frm.add_custom_button(__('Make ') + __('Material Request'),
 						this.make_material_request);
-			
+
 				// sales invoice
 				if(flt(doc.per_billed, 2) < 100)
 					cur_frm.add_custom_button(__('Make Invoice'), this.make_sales_invoice);
-			
+
 				// stop
 				if(flt(doc.per_delivered, 2) < 100 || doc.per_billed < 100)
 					cur_frm.add_custom_button(__('Stop!'), cur_frm.cscript['Stop Sales Order'],"icon-exclamation");
-			} else {	
+			} else {
 				// un-stop
 				cur_frm.dashboard.set_headline_alert(__("Stopped"), "alert-danger", "icon-stop");
 				cur_frm.add_custom_button(__('Unstop'), cur_frm.cscript['Unstop Sales Order'], "icon-check");
@@ -58,7 +58,7 @@
 		}
 
 		if (this.frm.doc.docstatus===0) {
-			cur_frm.add_custom_button(__('From Quotation'), 
+			cur_frm.add_custom_button(__('From Quotation'),
 				function() {
 					frappe.model.map_current_doc({
 						method: "erpnext.selling.doctype.quotation.quotation.make_sales_order",
@@ -76,7 +76,7 @@
 
 		this.order_type(doc);
 	},
-	
+
 	order_type: function() {
 		this.frm.toggle_reqd("delivery_date", this.frm.doc.order_type == "Sales");
 	},
@@ -84,7 +84,7 @@
 	tc_name: function() {
 		this.get_terms();
 	},
-	
+
 	warehouse: function(doc, cdt, cdn) {
 		var item = frappe.get_doc(cdt, cdn);
 		if(item.item_code && item.warehouse) {
@@ -119,14 +119,14 @@
 			source_name: cur_frm.doc.name
 		})
 	},
-	
+
 	make_maintenance_schedule: function() {
 		frappe.model.open_mapped_doc({
 			method: "erpnext.selling.doctype.sales_order.sales_order.make_maintenance_schedule",
 			source_name: cur_frm.doc.name
 		})
-	}, 
-	
+	},
+
 	make_maintenance_visit: function() {
 		frappe.model.open_mapped_doc({
 			method: "erpnext.selling.doctype.sales_order.sales_order.make_maintenance_visit",
@@ -161,7 +161,7 @@
 
 	if (check) {
 		return $c('runserverobj', {
-			'method':'stop_sales_order', 
+			'method':'stop_sales_order',
 			'docs': doc
 			}, function(r,rt) {
 			cur_frm.refresh();
@@ -176,7 +176,7 @@
 
 	if (check) {
 		return $c('runserverobj', {
-			'method':'unstop_sales_order', 
+			'method':'unstop_sales_order',
 			'docs': doc
 		}, function(r,rt) {
 			cur_frm.refresh();
diff --git a/erpnext/stock/doctype/stock_uom_replace_utility/stock_uom_replace_utility.js b/erpnext/stock/doctype/stock_uom_replace_utility/stock_uom_replace_utility.js
index 77e8dcf..c0dfe1f 100644
--- a/erpnext/stock/doctype/stock_uom_replace_utility/stock_uom_replace_utility.js
+++ b/erpnext/stock/doctype/stock_uom_replace_utility/stock_uom_replace_utility.js
@@ -3,9 +3,11 @@
 
 $.extend(cur_frm.cscript, {
 	onload: function() {
-		cur_frm.set_query("item_code", erpnext.queries.item);
+		cur_frm.set_query("item_code", function() {
+			return erpnext.queries.item({"is_stock_item": "Yes"});
+		});
 	},
-	
+
 	item_code: function() {
 		if(cur_frm.doc.item_code) {
 			return cur_frm.call({
@@ -14,4 +16,4 @@
 			});
 		}
 	}
-});
\ No newline at end of file
+});