diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
index 619776c..dc201b0 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
@@ -237,7 +237,7 @@
 					"customer": this.frm.doc.customer
 				},
 				callback: function(r) {
-					if(r.message) {
+					if(r.message && r.message.length) {
 						select_loyalty_program(me.frm, r.message);
 					}
 				}
diff --git a/erpnext/public/js/utils/party.js b/erpnext/public/js/utils/party.js
index 3a5a062..eab0400 100644
--- a/erpnext/public/js/utils/party.js
+++ b/erpnext/public/js/utils/party.js
@@ -27,7 +27,7 @@
 			args.posting_date = frm.doc.posting_date || frm.doc.transaction_date;
 		}
 	}
-	if(!args) return;
+	if(!args || !args.party) return;
 
 	if(frappe.meta.get_docfield(frm.doc.doctype, "taxes")) {
 		if(!erpnext.utils.validate_mandatory(frm, "Posting/Transaction Date",
diff --git a/erpnext/setup/doctype/email_digest/email_digest.py b/erpnext/setup/doctype/email_digest/email_digest.py
index e6027c2..e2189a1 100644
--- a/erpnext/setup/doctype/email_digest/email_digest.py
+++ b/erpnext/setup/doctype/email_digest/email_digest.py
@@ -5,12 +5,12 @@
 import frappe
 from frappe import _
 from frappe.utils import fmt_money, formatdate, format_time, now_datetime, \
-	get_url_to_form, get_url_to_list, flt
+	get_url_to_form, get_url_to_list, flt, getdate
 from datetime import timedelta
 from dateutil.relativedelta import relativedelta
 from frappe.core.doctype.user.user import STANDARD_USERS
 import frappe.desk.notifications
-from erpnext.accounts.utils import get_balance_on, get_count_on
+from erpnext.accounts.utils import get_balance_on, get_count_on, get_fiscal_year
 
 user_specific_content = ["calendar_events", "todo_list"]
 
@@ -279,7 +279,7 @@
 
 	def get_income(self):
 		"""Get income for given period"""
-		income, past_income, count = self.get_period_amounts(self.get_root_type_accounts("income"),'income')
+		income, past_income, count = self.get_period_amounts(self.get_roots("income"),'income')
 
 		return {
 			"label": self.meta.get_label("income"),
@@ -326,12 +326,12 @@
 		return self.get_type_balance('invoiced_amount', 'Receivable')
 
 	def get_expenses_booked(self):
-		expense, past_expense, count = self.get_period_amounts(self.get_root_type_accounts("expense"), 'expenses_booked')
+		expenses, past_expenses, count = self.get_period_amounts(self.get_roots("expense"), 'expenses_booked')
 
 		return {
 			"label": self.meta.get_label("expenses_booked"),
-			"value": expense,
-			"last_value": past_expense,
+			"value": expenses,
+			"last_value": past_expenses,
 			"count": count
 		}
 
@@ -340,14 +340,9 @@
 		balance = past_balance = 0.0
 		count = 0
 		for account in accounts:
-			balance += (get_balance_on(account, date = self.future_to_date)
-				- get_balance_on(account, date = self.future_from_date - timedelta(days=1)))
-
-			count += (get_count_on(account,fieldname, date = self.future_to_date )
-				- get_count_on(account,fieldname, date = self.future_from_date - timedelta(days=1)))
-
-			past_balance += (get_balance_on(account, date = self.past_to_date)
-				- get_balance_on(account, date = self.past_from_date - timedelta(days=1)))
+			balance += get_incomes_expenses_for_period(account, self.future_from_date, self.future_to_date)
+			past_balance += get_incomes_expenses_for_period(account, self.past_from_date, self.past_to_date)
+			count += get_count_for_period(account, fieldname, self.future_from_date, self.future_to_date)
 
 		return balance, past_balance, count
 
@@ -382,6 +377,10 @@
 				'count': count
 			}
 
+	def get_roots(self, root_type):
+		return [d.name for d in frappe.db.get_all("Account",
+			filters={"root_type": root_type.title(), "company": self.company,
+				"is_group": 1, "parent_account": ["in", ("", None)]})]
 
 	def get_root_type_accounts(self, root_type):
 		if not root_type in self._accounts:
@@ -445,9 +444,9 @@
 
 		return {
 			"label": self.meta.get_label(fieldname),
-            		"value": value,
+            "value": value,
 			"last_value": last_value,
-            		"count": count
+            "count": count
 		}
 
 	def get_summary_of_doc(self, doc_type, fieldname):
@@ -459,8 +458,8 @@
 
 		return {
 			"label": self.meta.get_label(fieldname),
-            		"value": value,
-            		"last_value": last_value,
+            "value": value,
+            "last_value": last_value,
 			"count": count
 		}
 
@@ -542,3 +541,39 @@
 @frappe.whitelist()
 def get_digest_msg(name):
 	return frappe.get_doc("Email Digest", name).get_msg_html()
+
+def get_incomes_expenses_for_period(account, from_date, to_date):
+		"""Get amounts for current and past periods"""
+		
+		val = 0.0
+		balance_on_to_date = get_balance_on(account, date = to_date)
+		balance_before_from_date = get_balance_on(account, date = from_date - timedelta(days=1))
+	
+		fy_start_date = get_fiscal_year(to_date)[1]
+
+		if from_date == fy_start_date:
+			val = balance_on_to_date
+		elif from_date > fy_start_date:
+			val = balance_on_to_date - balance_before_from_date
+		else:
+			last_year_closing_balance = get_balance_on(account, date=fy_start_date - timedelta(days=1))
+			print(fy_start_date - timedelta(days=1), last_year_closing_balance)
+			val = balance_on_to_date + (last_year_closing_balance - balance_before_from_date)
+
+		return val
+
+def get_count_for_period(account, fieldname, from_date, to_date):
+	count = 0.0
+	count_on_to_date = get_count_on(account, fieldname, to_date)
+	count_before_from_date = get_count_on(account, fieldname, from_date - timedelta(days=1))
+
+	fy_start_date = get_fiscal_year(to_date)[1]
+	if from_date == fy_start_date:
+		count = count_on_to_date
+	elif from_date > fy_start_date:
+		count = count_on_to_date - count_before_from_date
+	else:
+		last_year_closing_count = get_count_on(account, fieldname, fy_start_date - timedelta(days=1))
+		count = count_on_to_date + (last_year_closing_count - count_before_from_date)
+
+	return count
\ No newline at end of file
