Merge branch 'master' of github.com:webnotes/erpnext
diff --git a/accounts/doctype/purchase_invoice/purchase_invoice.js b/accounts/doctype/purchase_invoice/purchase_invoice.js
index e71a408..b00cfea 100644
--- a/accounts/doctype/purchase_invoice/purchase_invoice.js
+++ b/accounts/doctype/purchase_invoice/purchase_invoice.js
@@ -172,16 +172,13 @@
 	}	
 }
 
-cur_frm.fields_dict['entries'].grid.get_field("expense_head").get_query = function(doc) {
+cur_frm.set_query("expense_head", "entries", function(doc) {
 	return{
-		filters:{
-			'debit_or_credit':'Debit',
-			'account_type': 'Expense Account',
-			'group_or_ledger': 'Ledger',
-			'company': doc.company
-		}
-	}	
-}
+		query: "accounts.doctype.purchase_invoice.purchase_invoice.get_expense_account",
+		filters: {'company': doc.company}
+	}
+});
+
 cur_frm.cscript.expense_head = function(doc, cdt, cdn){
 	var d = locals[cdt][cdn];
 	if(d.idx == 1 && d.expense_head){
diff --git a/accounts/doctype/purchase_invoice/purchase_invoice.py b/accounts/doctype/purchase_invoice/purchase_invoice.py
index 9e220fd..3f94de3 100644
--- a/accounts/doctype/purchase_invoice/purchase_invoice.py
+++ b/accounts/doctype/purchase_invoice/purchase_invoice.py
@@ -252,14 +252,14 @@
 		self.doc.against_expense_account = ",".join(against_accounts)
 
 	def po_required(self):
-		if webnotes.conn.get_single_value("Buying Settings", "po_required") == 'Yes':
+		if webnotes.conn.get_value("Buying Settings", None, "po_required") == 'Yes':
 			 for d in getlist(self.doclist,'entries'):
 				 if not d.purchase_order:
 					 msgprint("Purchse Order No. required against item %s"%d.item_code)
 					 raise Exception
 
 	def pr_required(self):
-		if webnotes.conn.get_single_value("Buying Settings", "pr_required") == 'Yes':
+		if webnotes.conn.get_value("Buying Settings", None, "pr_required") == 'Yes':
 			 for d in getlist(self.doclist,'entries'):
 				 if not d.purchase_receipt:
 					 msgprint("Purchase Receipt No. required against item %s"%d.item_code)
@@ -457,4 +457,18 @@
 					"UOM Conversion Detail", {"parent": d.item_code, "uom": d.uom}, 
 					"conversion_factor")) or 1
 		
-				d.rm_supp_cost = rm_cost * flt(d.qty) * flt(d.conversion_factor)
\ No newline at end of file
+				d.rm_supp_cost = rm_cost * flt(d.qty) * flt(d.conversion_factor)
+				
+@webnotes.whitelist()
+def get_expense_account(doctype, txt, searchfield, start, page_len, filters):
+	from controllers.queries import get_match_cond
+
+	return webnotes.conn.sql("""select tabAccount.name from `tabAccount` 
+			where (tabAccount.debit_or_credit="Debit" 
+					or tabAccount.account_type = "Expense Account") 
+				and tabAccount.group_or_ledger="Ledger" 
+				and tabAccount.docstatus!=2 
+				and tabAccount.company = '%(company)s' 
+				and tabAccount.%(key)s LIKE '%(txt)s'
+				%(mcond)s""" % {'company': filters['company'], 'key': searchfield, 
+			'txt': "%%%s%%" % txt, 'mcond':get_match_cond(doctype, searchfield)})
\ No newline at end of file
diff --git a/accounts/doctype/sales_invoice/sales_invoice.py b/accounts/doctype/sales_invoice/sales_invoice.py
index 09df5f6..adadcc8 100644
--- a/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/accounts/doctype/sales_invoice/sales_invoice.py
@@ -430,8 +430,8 @@
 	def so_dn_required(self):
 		"""check in manage account if sales order / delivery note required or not."""
 		dic = {'Sales Order':'so_required','Delivery Note':'dn_required'}
-		for i in dic:	
-			if webnotes.conn.get_single_value('Selling Settings', dic[i]) == 'Yes':
+		for i in dic:
+			if webnotes.conn.get_value('Selling Settings', None, dic[i]) == 'Yes':
 				for d in getlist(self.doclist,'entries'):
 					if webnotes.conn.get_value('Item', d.item_code, 'is_stock_item') == 'Yes' \
 						and not d.fields[i.lower().replace(' ','_')]:
@@ -979,6 +979,7 @@
 		"cash_bank_account": val
 	}
 
+@webnotes.whitelist()
 def get_income_account(doctype, txt, searchfield, start, page_len, filters):
 	from controllers.queries import get_match_cond
 
diff --git a/stock/doctype/delivery_note/delivery_note.py b/stock/doctype/delivery_note/delivery_note.py
index 25a70b6..5df531e 100644
--- a/stock/doctype/delivery_note/delivery_note.py
+++ b/stock/doctype/delivery_note/delivery_note.py
@@ -85,7 +85,7 @@
 
 	def so_required(self):
 		"""check in manage account if sales order required or not"""
-		if webnotes.conn.get_single_value("Selling Settings", 'so_required') == 'Yes':
+		if webnotes.conn.get_value("Selling Settings", None, 'so_required') == 'Yes':
 			 for d in getlist(self.doclist,'delivery_note_details'):
 				 if not d.prevdoc_docname:
 					 msgprint("Sales Order No. required against item %s"%d.item_code)
diff --git a/stock/doctype/purchase_receipt/purchase_receipt.py b/stock/doctype/purchase_receipt/purchase_receipt.py
index 703929c..9daff8f 100644
--- a/stock/doctype/purchase_receipt/purchase_receipt.py
+++ b/stock/doctype/purchase_receipt/purchase_receipt.py
@@ -118,7 +118,7 @@
 			
 
 	def po_required(self):
-		if webnotes.conn.get_single_value("Buying Settings", "po_required") == 'Yes':
+		if webnotes.conn.get_value("Buying Settings", None, "po_required") == 'Yes':
 			 for d in getlist(self.doclist,'purchase_receipt_details'):
 				 if not d.prevdoc_docname:
 					 msgprint("Purchse Order No. required against item %s"%d.item_code)