Merge pull request #4227 from nabinhait/dn_to_wh

[fix] Label changed for Target Warehouse in Delivery Note
diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.py b/erpnext/accounts/doctype/journal_entry/journal_entry.py
index 9525a3a..9eaf1dd 100644
--- a/erpnext/accounts/doctype/journal_entry/journal_entry.py
+++ b/erpnext/accounts/doctype/journal_entry/journal_entry.py
@@ -498,14 +498,17 @@
 	if voucher_type=="Bank Entry":
 		account = frappe.db.get_value("Company", company, "default_bank_account")
 		if not account:
-			account = frappe.db.get_value("Account", {"company": company, "account_type": "Bank", "is_group": 0})
+			account = frappe.db.get_value("Account", 
+				{"company": company, "account_type": "Bank", "is_group": 0})
 	elif voucher_type=="Cash Entry":
 		account = frappe.db.get_value("Company", company, "default_cash_account")
 		if not account:
-			account = frappe.db.get_value("Account", {"company": company, "account_type": "Cash", "is_group": 0})
+			account = frappe.db.get_value("Account", 
+				{"company": company, "account_type": "Cash", "is_group": 0})
 
 	if account:
-		account_details = frappe.db.get_value("Account", account, ["account_currency", "account_type"], as_dict=1)
+		account_details = frappe.db.get_value("Account", account, 
+			["account_currency", "account_type"], as_dict=1)
 		return {
 			"account": account,
 			"balance": get_balance_on(account),
diff --git a/erpnext/accounts/doctype/tax_rule/tax_rule.py b/erpnext/accounts/doctype/tax_rule/tax_rule.py
index bff1898..7b62082 100644
--- a/erpnext/accounts/doctype/tax_rule/tax_rule.py
+++ b/erpnext/accounts/doctype/tax_rule/tax_rule.py
@@ -109,7 +109,8 @@
 def get_tax_template(posting_date, args):
 	"""Get matching tax rule"""
 	args = frappe._dict(args)
-	conditions = []
+	conditions = ["""(from_date is null  or from_date = '' or from_date <= '{0}') 
+		and (to_date is null  or to_date = '' or to_date >= '{0}')""".format(posting_date)]
 
 	for key, value in args.iteritems():
 		if key in "use_for_shopping_cart":
@@ -117,16 +118,16 @@
 		else:
 			conditions.append("ifnull({0}, '') in ('', '{1}')".format(key, frappe.db.escape(cstr(value))))
 
-	matching = frappe.db.sql("""select * from `tabTax Rule`
+	tax_rule = frappe.db.sql("""select * from `tabTax Rule`
 		where {0}""".format(" and ".join(conditions)), as_dict = True)
 
-	if not matching:
+	if not tax_rule:
 		return None
 
-	for rule in matching:
+	for rule in tax_rule:
 		rule.no_of_keys_matched = 0
 		for key in args:
 			if rule.get(key): rule.no_of_keys_matched += 1
 
-	rule = sorted(matching, lambda b, a: cmp(a.no_of_keys_matched, b.no_of_keys_matched) or cmp(a.priority, b.priority))[0]
+	rule = sorted(tax_rule, lambda b, a: cmp(a.no_of_keys_matched, b.no_of_keys_matched) or cmp(a.priority, b.priority))[0]
 	return rule.sales_tax_template or rule.purchase_tax_template
diff --git a/erpnext/hr/doctype/expense_claim/expense_claim.js b/erpnext/hr/doctype/expense_claim/expense_claim.js
index 1d405da..780cd70 100644
--- a/erpnext/hr/doctype/expense_claim/expense_claim.js
+++ b/erpnext/hr/doctype/expense_claim/expense_claim.js
@@ -18,24 +18,25 @@
 				jv.voucher_type = 'Bank Entry';
 				jv.company = cur_frm.doc.company;
 				jv.remark = 'Payment against Expense Claim: ' + cur_frm.doc.name;
-				jv.fiscal_year = cur_frm.doc.fiscal_year;
 				var expense = cur_frm.doc.expenses || [];
 				for(var i = 0; i < expense.length; i++){
 					var d1 = frappe.model.add_child(jv, 'Journal Entry Account', 'accounts');
-					d1.debit = expense[i].sanctioned_amount;
 					d1.account = expense[i].default_account;
+					d1.debit_in_account_currency = expense[i].sanctioned_amount;
 					d1.reference_type = cur_frm.doc.doctype;
 					d1.reference_name = cur_frm.doc.name;
 				}
 
 				// credit to bank
 				var d1 = frappe.model.add_child(jv, 'Journal Entry Account', 'accounts');
-				d1.credit = cur_frm.doc.total_sanctioned_amount;
+				d1.credit_in_account_currency = cur_frm.doc.total_sanctioned_amount;
 				d1.reference_type = cur_frm.doc.doctype;
 				d1.reference_name = cur_frm.doc.name;
 				if(r.message) {
 					d1.account = r.message.account;
 					d1.balance = r.message.balance;
+					d1.account_currency = r.message.account_currency;
+					d1.account_type = r.message.account_type;
 				}
 
 				loaddoc('Journal Entry', jv.name);
diff --git a/erpnext/public/js/utils/party.js b/erpnext/public/js/utils/party.js
index 9173b71..cc6f112 100644
--- a/erpnext/public/js/utils/party.js
+++ b/erpnext/public/js/utils/party.js
@@ -26,7 +26,12 @@
 		}
 	}
 	if(!args) return;
-
+	
+	if(frappe.meta.get_docfield(frm.doc.doctype, "taxes")) {
+		if(!erpnext.utils.validate_mandatory(frm, "Posting/Transaction Date", 
+			args.posting_date, args.party_type=="Customer" ? "customer": "supplier")) return;
+	}
+	
 	args.currency = frm.doc.currency;
 	args.company = frm.doc.company;
 	args.doctype = frm.doc.doctype;
@@ -64,6 +69,15 @@
 				if(r.message){
 					frm.set_value(display_field, r.message)
 				}
+				
+				if(frappe.meta.get_docfield(frm.doc.doctype, "taxes")) {
+					if(!erpnext.utils.validate_mandatory(frm, "Customer/Supplier", 
+						frm.doc.customer || frm.doc.supplier, address_field)) return;
+	
+					if(!erpnext.utils.validate_mandatory(frm, "Posting/Transaction Date", 
+						frm.doc.posting_date || frm.doc.transaction_date, address_field)) return;
+				} else return;
+				
 				frappe.call({
 					method: "erpnext.accounts.party.set_taxes",
 					args: {
@@ -99,3 +113,13 @@
 		})
 	}
 }
+
+erpnext.utils.validate_mandatory = function(frm, label, value, trigger_on) {
+	if(!value) {
+		frm.doc[trigger_on] = "";
+		refresh_field(trigger_on);
+		frappe.msgprint(__("Please enter {0} first", [label]));
+		return false;
+	}
+	return true;
+}
\ No newline at end of file