Merge pull request #4815 from makeen/fix_add_subscribers

[fix] add subscribers even though some emails are invalid
diff --git a/erpnext/accounts/report/trial_balance/trial_balance.py b/erpnext/accounts/report/trial_balance/trial_balance.py
index f0524c0..822702b 100644
--- a/erpnext/accounts/report/trial_balance/trial_balance.py
+++ b/erpnext/accounts/report/trial_balance/trial_balance.py
@@ -17,11 +17,14 @@
 
 def validate_filters(filters):
 	if not filters.fiscal_year:
-		frappe.throw(_("Fiscal Year {0} is required"))
-	filters.year_start_date, filters.year_end_date = frappe.db.get_value("Fiscal Year", filters.fiscal_year,
-		["year_start_date", "year_end_date"])
-	filters.year_start_date = getdate(filters.year_start_date)
-	filters.year_end_date = getdate(filters.year_end_date)
+		frappe.throw(_("Fiscal Year {0} is required").format(filters.fiscal_year))
+
+	fiscal_year = frappe.db.get_value("Fiscal Year", filters.fiscal_year, ["year_start_date", "year_end_date"], as_dict=True)
+	if not fiscal_year:
+		frappe.throw(_("Fiscal Year {0} does not exist").format(filters.fiscal_year))
+	else:
+		filters.year_start_date = getdate(fiscal_year.year_start_date)
+		filters.year_end_date = getdate(fiscal_year.year_end_date)
 
 	if not filters.from_date:
 		filters.from_date = filters.year_start_date
diff --git a/erpnext/docs/user/manual/en/accounts/payment-request.md b/erpnext/docs/user/manual/en/accounts/payment-request.md
index 68d4397..1b71f2f 100644
--- a/erpnext/docs/user/manual/en/accounts/payment-request.md
+++ b/erpnext/docs/user/manual/en/accounts/payment-request.md
@@ -11,7 +11,7 @@
 Select appropriate Payment Gateway Account on Payment Request. Account head specified on payment gateway will 
 considered to create journal entry. 
 
-Note: Invoice/Order Currency and Payment Gateway Account corruncy should be same.
+Note: Invoice/Order currency and Payment Gateway Account currency should be same.
 
 <img class="screenshot" alt="Payment Request" src="{{docs_base_url}}/assets/img/accounts/pr-details-1.png">
 
diff --git a/erpnext/hr/doctype/expense_claim/expense_claim.js b/erpnext/hr/doctype/expense_claim/expense_claim.js
index c486391..16e78a6 100644
--- a/erpnext/hr/doctype/expense_claim/expense_claim.js
+++ b/erpnext/hr/doctype/expense_claim/expense_claim.js
@@ -92,14 +92,26 @@
 		cur_frm.toggle_enable("exp_approver", doc.approval_status=="Draft");
 		cur_frm.toggle_enable("approval_status", (doc.exp_approver==user && doc.docstatus==0));
 
-		if(doc.docstatus==0 && doc.exp_approver==user && doc.approval_status=="Approved")
+		if (doc.docstatus==0 && doc.exp_approver==user && doc.approval_status=="Approved")
 			 cur_frm.savesubmit();
 
-		if(doc.docstatus==1 && frappe.model.can_create("Journal Entry") && doc.approval_status=="Approved" &&
-			cint(doc.total_amount_reimbursed) < cint(doc.total_sanctioned_amount))
-				cur_frm.add_custom_button(__("Bank Entry"),
-				 	cur_frm.cscript.make_bank_entry, __("Make"));
+		if (doc.docstatus===1 && doc.approval_status=="Approved") {
+			if (cint(doc.total_amount_reimbursed) < cint(doc.total_sanctioned_amount) && frappe.model.can_create("Journal Entry")) {
+				cur_frm.add_custom_button(__("Bank Entry"), cur_frm.cscript.make_bank_entry, __("Make"));
 				cur_frm.page.set_inner_btn_group_as_primary(__("Make"));
+			}
+
+			if (cint(doc.total_amount_reimbursed) > 0 && frappe.model.can_read("Journal Entry")) {
+				cur_frm.add_custom_button(__('Bank Entries'), function() {
+					frappe.route_options = {
+						"Journal Entry Account.reference_type": me.frm.doc.doctype,
+						"Journal Entry Account.reference_name": me.frm.doc.name,
+						company: me.frm.doc.company
+					};
+					frappe.set_route("List", "Journal Entry");
+				}, __("View"));
+			}
+		}
 	}
 }
 
diff --git a/erpnext/public/js/financial_statements.js b/erpnext/public/js/financial_statements.js
index 07d494a..557a392 100644
--- a/erpnext/public/js/financial_statements.js
+++ b/erpnext/public/js/financial_statements.js
@@ -36,7 +36,7 @@
 		if (columnDef.df.fieldname=="account") {
 			value = dataContext.account_name;
 
-			columnDef.df.link_onclick = 
+			columnDef.df.link_onclick =
 				"erpnext.financial_statements.open_general_ledger(" + JSON.stringify(dataContext) + ")";
 			columnDef.df.is_tree = true;
 		}
@@ -60,8 +60,8 @@
 		frappe.route_options = {
 			"account": data.account,
 			"company": frappe.query_report.filters_by_name.company.get_value(),
-			"from_date": data.year_start_date,
-			"to_date": data.year_end_date
+			"from_date": data.from_date || data.year_start_date,
+			"to_date": data.to_date || data.year_end_date
 		};
 		frappe.set_route("query-report", "General Ledger");
 	},
diff --git a/erpnext/setup/doctype/company/delete_company_transactions.py b/erpnext/setup/doctype/company/delete_company_transactions.py
index 506ccff..00ac76c 100644
--- a/erpnext/setup/doctype/company/delete_company_transactions.py
+++ b/erpnext/setup/doctype/company/delete_company_transactions.py
@@ -24,9 +24,13 @@
 		tabDocField where fieldtype='Link' and options='Company'"""):
 		if doctype not in ("Account", "Cost Center", "Warehouse", "Budget Detail",
 			"Party Account", "Employee", "Sales Taxes and Charges Template",
-			"Purchase Taxes and Charges Template", "POS Profile"):
+			"Purchase Taxes and Charges Template", "POS Profile", 'BOM'):
 				delete_for_doctype(doctype, company_name)
 
+		else:
+			# un-set company
+			frappe.db.sql('update `tab{0}` set company="" where company=%s', company_name)
+
 	# Clear notification counts
 	clear_notifications()
 
diff --git a/erpnext/setup/setup_wizard/setup_wizard.py b/erpnext/setup/setup_wizard/setup_wizard.py
index 8b0189f..890f317 100644
--- a/erpnext/setup/setup_wizard/setup_wizard.py
+++ b/erpnext/setup/setup_wizard/setup_wizard.py
@@ -372,7 +372,7 @@
 		customer = args.get("customer_" + str(i))
 		if customer:
 			try:
-				frappe.get_doc({
+				doc = frappe.get_doc({
 					"doctype":"Customer",
 					"customer_name": customer,
 					"customer_type": "Company",
@@ -383,7 +383,7 @@
 
 				if args.get("customer_contact_" + str(i)):
 					create_contact(args.get("customer_contact_" + str(i)),
-						"customer", customer)
+						"customer", doc.name)
 			except frappe.NameError:
 				pass
 
@@ -392,7 +392,7 @@
 		supplier = args.get("supplier_" + str(i))
 		if supplier:
 			try:
-				frappe.get_doc({
+				doc = frappe.get_doc({
 					"doctype":"Supplier",
 					"supplier_name": supplier,
 					"supplier_type": _("Local"),
@@ -401,7 +401,7 @@
 
 				if args.get("supplier_contact_" + str(i)):
 					create_contact(args.get("supplier_contact_" + str(i)),
-						"supplier", supplier)
+						"supplier", doc.name)
 			except frappe.NameError:
 				pass