Merge branch 'develop'
diff --git a/erpnext/__version__.py b/erpnext/__version__.py
index ca621e3..d886566 100644
--- a/erpnext/__version__.py
+++ b/erpnext/__version__.py
@@ -1,2 +1,2 @@
 from __future__ import unicode_literals
-__version__ = '5.0.26'
+__version__ = '5.0.27'
diff --git a/erpnext/accounts/doctype/gl_entry/gl_entry.py b/erpnext/accounts/doctype/gl_entry/gl_entry.py
index 4e7928d..138cf23 100644
--- a/erpnext/accounts/doctype/gl_entry/gl_entry.py
+++ b/erpnext/accounts/doctype/gl_entry/gl_entry.py
@@ -4,7 +4,7 @@
 from __future__ import unicode_literals
 import frappe
 
-from frappe.utils import flt, fmt_money, getdate, formatdate
+from frappe.utils import flt, fmt_money, getdate, formatdate, cstr
 from frappe import _
 
 from frappe.model.document import Document
@@ -118,7 +118,7 @@
 	bal = flt(frappe.db.sql("""select sum(ifnull(debit, 0)) - sum(ifnull(credit, 0))
 		from `tabGL Entry`
 		where against_voucher_type=%s and against_voucher=%s
-		and account = %s and party_type=%s and party=%s""",
+		and account = %s and ifnull(party_type, '')=%s and ifnull(party, '')=%s""",
 		(against_voucher_type, against_voucher, account, party_type, party))[0][0] or 0.0)
 
 	if against_voucher_type == 'Purchase Invoice':
@@ -127,8 +127,9 @@
 		against_voucher_amount = flt(frappe.db.sql("""
 			select sum(ifnull(debit, 0)) - sum(ifnull(credit, 0))
 			from `tabGL Entry` where voucher_type = 'Journal Entry' and voucher_no = %s
-			and account = %s and party_type=%s and party=%s and ifnull(against_voucher, '') = ''""",
-			(against_voucher, account, party_type, party))[0][0])
+			and account = %s and ifnull(party_type, '')=%s and ifnull(party, '')=%s 
+			and ifnull(against_voucher, '') = ''""",
+			(against_voucher, account, cstr(party_type), cstr(party)))[0][0])
 
 		if not against_voucher_amount:
 			frappe.throw(_("Against Journal Entry {0} is already adjusted against some other voucher")
diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.py b/erpnext/accounts/doctype/journal_entry/journal_entry.py
index 753fcc3..7bf6c56 100644
--- a/erpnext/accounts/doctype/journal_entry/journal_entry.py
+++ b/erpnext/accounts/doctype/journal_entry/journal_entry.py
@@ -274,30 +274,28 @@
 				r.append(_('Reference #{0} dated {1}').format(self.cheque_no, formatdate(self.cheque_date)))
 			else:
 				msgprint(_("Please enter Reference date"), raise_exception=frappe.MandatoryError)
-
+				
+		company_currency = get_company_currency(self.company)
+		
 		for d in self.get('accounts'):
 			if d.against_invoice and d.credit:
-				currency = frappe.db.get_value("Sales Invoice", d.against_invoice, "currency")
-
-				r.append(_("{0} against Sales Invoice {1}").format(fmt_money(flt(d.credit), currency = currency), \
+				r.append(_("{0} against Sales Invoice {1}").format(fmt_money(flt(d.credit), currency = company_currency), \
 					d.against_invoice))
 
 			if d.against_sales_order and d.credit:
-				currency = frappe.db.get_value("Sales Order", d.against_sales_order, "currency")
-				r.append(_("{0} against Sales Order {1}").format(fmt_money(flt(d.credit), currency = currency), \
+				r.append(_("{0} against Sales Order {1}").format(fmt_money(flt(d.credit), currency = company_currency), \
 					d.against_sales_order))
 
 			if d.against_voucher and d.debit:
-				bill_no = frappe.db.sql("""select bill_no, bill_date, currency
+				bill_no = frappe.db.sql("""select bill_no, bill_date
 					from `tabPurchase Invoice` where name=%s""", d.against_voucher)
 				if bill_no and bill_no[0][0] and bill_no[0][0].lower().strip() \
 						not in ['na', 'not applicable', 'none']:
-					r.append(_('{0} against Bill {1} dated {2}').format(fmt_money(flt(d.debit), currency=bill_no[0][2]), bill_no[0][0],
+					r.append(_('{0} against Bill {1} dated {2}').format(fmt_money(flt(d.debit), currency=company_currency), bill_no[0][0],
 						bill_no[0][1] and formatdate(bill_no[0][1].strftime('%Y-%m-%d'))))
 
 			if d.against_purchase_order and d.debit:
-				currency = frappe.db.get_value("Purchase Order", d.against_purchase_order, "currency")
-				r.append(_("{0} against Purchase Order {1}").format(fmt_money(flt(d.credit), currency = currency), \
+				r.append(_("{0} against Purchase Order {1}").format(fmt_money(flt(d.credit), currency = company_currency), \
 					d.against_purchase_order))
 
 		if self.user_remark:
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
index 8820c87..3f34020 100644
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
@@ -88,9 +88,7 @@
 			throw(_("Conversion rate cannot be 0 or 1"))
 
 	def validate_credit_to_acc(self):
-		root_type, account_type = frappe.db.get_value("Account", self.credit_to, ["root_type", "account_type"])
-		if root_type != "Liability":
-			frappe.throw(_("Credit To account must be a liability account"))
+		account_type = frappe.db.get_value("Account", self.credit_to, "account_type")
 		if account_type != "Payable":
 			frappe.throw(_("Credit To account must be a Payable account"))
 
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
index fe5954e..abe58ce 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
@@ -235,9 +235,7 @@
 			reconcile_against_document(lst)
 
 	def validate_debit_to_acc(self):
-		root_type, account_type = frappe.db.get_value("Account", self.debit_to, ["root_type", "account_type"])
-		if root_type != "Asset":
-			frappe.throw(_("Debit To account must be a liability account"))
+		account_type = frappe.db.get_value("Account", self.debit_to, "account_type")
 		if account_type != "Receivable":
 			frappe.throw(_("Debit To account must be a Receivable account"))
 
diff --git a/erpnext/accounts/general_ledger.py b/erpnext/accounts/general_ledger.py
index 8fc785c..17fe922 100644
--- a/erpnext/accounts/general_ledger.py
+++ b/erpnext/accounts/general_ledger.py
@@ -3,7 +3,7 @@
 
 from __future__ import unicode_literals
 import frappe
-from frappe.utils import flt, cstr
+from frappe.utils import flt, cstr, cint
 from frappe import _
 from frappe.model.meta import get_field_precision
 from erpnext.accounts.utils import validate_expense_against_budget
@@ -82,14 +82,15 @@
 	gle.submit()
 
 def validate_account_for_auto_accounting_for_stock(gl_map):
-	if gl_map[0].voucher_type=="Journal Entry":
-		aii_accounts = [d[0] for d in frappe.db.sql("""select name from tabAccount
-			where account_type = 'Warehouse' and ifnull(warehouse, '')!=''""")]
+	if cint(frappe.db.get_single_value("Accounts Settings", "auto_accounting_for_stock")) \
+		and gl_map[0].voucher_type=="Journal Entry":
+			aii_accounts = [d[0] for d in frappe.db.sql("""select name from tabAccount
+				where account_type = 'Warehouse' and ifnull(warehouse, '')!=''""")]
 
-		for entry in gl_map:
-			if entry.account in aii_accounts:
-				frappe.throw(_("Account: {0} can only be updated via Stock Transactions")
-					.format(entry.account), StockAccountInvalidTransaction)
+			for entry in gl_map:
+				if entry.account in aii_accounts:
+					frappe.throw(_("Account: {0} can only be updated via Stock Transactions")
+						.format(entry.account), StockAccountInvalidTransaction)
 
 def round_off_debit_credit(gl_map):
 	precision = get_field_precision(frappe.get_meta("GL Entry").get_field("debit"),
diff --git a/erpnext/accounts/report/general_ledger/general_ledger.py b/erpnext/accounts/report/general_ledger/general_ledger.py
index 9f1f560..35c839f 100644
--- a/erpnext/accounts/report/general_ledger/general_ledger.py
+++ b/erpnext/accounts/report/general_ledger/general_ledger.py
@@ -66,7 +66,7 @@
 
 	gl_entries = frappe.db.sql("""select posting_date, account, party_type, party,
 			sum(ifnull(debit, 0)) as debit, sum(ifnull(credit, 0)) as credit,
-			voucher_type, voucher_no, cost_center, remarks, against
+			voucher_type, voucher_no, cost_center, remarks, against, is_opening
 		from `tabGL Entry`
 		where company=%(company)s {conditions}
 		{group_by_condition}
diff --git a/erpnext/accounts/report/trial_balance/trial_balance.py b/erpnext/accounts/report/trial_balance/trial_balance.py
index 2571751..11af273 100644
--- a/erpnext/accounts/report/trial_balance/trial_balance.py
+++ b/erpnext/accounts/report/trial_balance/trial_balance.py
@@ -4,7 +4,7 @@
 from __future__ import unicode_literals
 import frappe
 from frappe import _
-from frappe.utils import cint, flt, getdate, formatdate
+from frappe.utils import cint, flt, getdate, formatdate, cstr
 from erpnext.accounts.report.financial_statements import filter_accounts, get_gl_entries
 
 value_fields = ("opening_debit", "opening_credit", "debit", "credit", "closing_debit", "closing_credit")
@@ -133,10 +133,7 @@
 		d["opening_credit"] = opening_balances.get(d.name, {}).get("opening_credit", 0)
 
 		for entry in gl_entries_by_account.get(d.name, []):
-			if entry.is_opening == "Yes" and d.root_type in ("Asset", "Liability", "Equity"):
-				d["opening_debit"] += flt(entry.debit)
-				d["opening_credit"] += flt(entry.credit)
-			else:
+			if cstr(entry.is_opening) != "Yes":
 				d["debit"] += flt(entry.debit)
 				d["credit"] += flt(entry.credit)
 
diff --git a/erpnext/hooks.py b/erpnext/hooks.py
index d36f269..1caf7ca 100644
--- a/erpnext/hooks.py
+++ b/erpnext/hooks.py
@@ -5,7 +5,7 @@
 app_description = "Open Source Enterprise Resource Planning for Small and Midsized Organizations"
 app_icon = "icon-th"
 app_color = "#e74c3c"
-app_version = "5.0.26"
+app_version = "5.0.27"
 
 error_report_email = "support@erpnext.com"
 
diff --git a/erpnext/hr/doctype/leave_application/leave_application.py b/erpnext/hr/doctype/leave_application/leave_application.py
index c75c2bd..44fb6fd 100755
--- a/erpnext/hr/doctype/leave_application/leave_application.py
+++ b/erpnext/hr/doctype/leave_application/leave_application.py
@@ -339,6 +339,7 @@
 		events.append({
 			"doctype": "Leave Block List Date",
 			"from_date": block_date.block_date,
+			"to_date": block_date.block_date,
 			"title": _("Leave Blocked") + ": " + block_date.reason,
 			"name": "_" + str(cnt),
 		})
@@ -355,6 +356,7 @@
 			events.append({
 				"doctype": "Holiday",
 				"from_date": holiday.holiday_date,
+				"to_date":  holiday.holiday_date,
 				"title": _("Holiday") + ": " + cstr(holiday.description),
 				"name": holiday.name
 			})
diff --git a/erpnext/patches/v4_2/party_model.py b/erpnext/patches/v4_2/party_model.py
index b1bd895..8f4fc33 100644
--- a/erpnext/patches/v4_2/party_model.py
+++ b/erpnext/patches/v4_2/party_model.py
@@ -30,8 +30,8 @@
 			
 				account_id = account.name
 			
-				frappe.db.set_value("Company", args["company"], ("default_receivable_account"
-					if args["account_type"]=="Receivable" else "default_payable_account"), account_id)
+			frappe.db.set_value("Company", args["company"], ("default_receivable_account"
+				if args["account_type"]=="Receivable" else "default_payable_account"), account_id)
 
 			receivable_payable_accounts.setdefault(args["company"], {}).setdefault(args["account_type"], account_id)
 
diff --git a/erpnext/patches/v5_0/update_frozen_accounts_permission_role.py b/erpnext/patches/v5_0/update_frozen_accounts_permission_role.py
index 2f85513..14426f5 100644
--- a/erpnext/patches/v5_0/update_frozen_accounts_permission_role.py
+++ b/erpnext/patches/v5_0/update_frozen_accounts_permission_role.py
@@ -7,6 +7,6 @@
 	account_settings = frappe.get_doc("Accounts Settings")
 
 	if not account_settings.frozen_accounts_modifier and account_settings.bde_auth_role:
-		frappe.db.set_value("Account Settings", None,
+		frappe.db.set_value("Accounts Settings", None,
 			"frozen_accounts_modifier", account_settings.bde_auth_role)
 
diff --git a/erpnext/stock/report/batch_wise_balance_history/batch_wise_balance_history.py b/erpnext/stock/report/batch_wise_balance_history/batch_wise_balance_history.py
index d911975..69e1321 100644
--- a/erpnext/stock/report/batch_wise_balance_history/batch_wise_balance_history.py
+++ b/erpnext/stock/report/batch_wise_balance_history/batch_wise_balance_history.py
@@ -54,7 +54,7 @@
 	return frappe.db.sql("""select item_code, batch_no, warehouse,
 		posting_date, actual_qty
 		from `tabStock Ledger Entry`
-		where docstatus < 2 %s order by item_code, warehouse""" %
+		where docstatus < 2 and ifnull(batch_no, '') != '' %s order by item_code, warehouse""" %
 		conditions, as_dict=1)
 
 def get_item_warehouse_batch_map(filters, float_precision):
diff --git a/setup.py b/setup.py
index 2cba2e8..315b590 100644
--- a/setup.py
+++ b/setup.py
@@ -1,6 +1,6 @@
 from setuptools import setup, find_packages
 
-version = "5.0.26"
+version = "5.0.27"
 
 with open("requirements.txt", "r") as f:
 	install_requires = f.readlines()