Merge pull request #3484 from rmehta/bom-search-report

[report] BOM Search
diff --git a/erpnext/accounts/report/financial_statements.py b/erpnext/accounts/report/financial_statements.py
index b4fec98..be2e968 100644
--- a/erpnext/accounts/report/financial_statements.py
+++ b/erpnext/accounts/report/financial_statements.py
@@ -210,7 +210,7 @@
 	if from_date:
 		additional_conditions.append("and posting_date >= %(from_date)s")
 
-	gl_entries = frappe.db.sql("""select posting_date, account, debit, credit from `tabGL Entry`
+	gl_entries = frappe.db.sql("""select posting_date, account, debit, credit, is_opening from `tabGL Entry`
 		where company=%(company)s
 		{additional_conditions}
 		and posting_date <= %(to_date)s
diff --git a/erpnext/accounts/report/general_ledger/general_ledger.py b/erpnext/accounts/report/general_ledger/general_ledger.py
index b268156..9f1f560 100644
--- a/erpnext/accounts/report/general_ledger/general_ledger.py
+++ b/erpnext/accounts/report/general_ledger/general_ledger.py
@@ -3,7 +3,7 @@
 
 from __future__ import unicode_literals
 import frappe
-from frappe.utils import flt, getdate
+from frappe.utils import flt, getdate, cstr
 from frappe import _
 
 def execute(filters=None):
@@ -155,7 +155,7 @@
 	for gle in gl_entries:
 		amount = flt(gle.debit, 3) - flt(gle.credit, 3)
 		if (filters.get("account") or filters.get("party") or filters.get("group_by_account")) \
-				and gle.posting_date < from_date:
+				and (gle.posting_date < from_date or cstr(gle.is_opening) == "Yes"):
 			gle_map[gle.account].opening += amount
 			if filters.get("account") or filters.get("party"):
 				opening += amount
diff --git a/erpnext/accounts/report/trial_balance/trial_balance.py b/erpnext/accounts/report/trial_balance/trial_balance.py
index 8187601..2571751 100644
--- a/erpnext/accounts/report/trial_balance/trial_balance.py
+++ b/erpnext/accounts/report/trial_balance/trial_balance.py
@@ -90,7 +90,7 @@
 		where 
 			company=%(company)s
 			{additional_conditions}
-			and posting_date < %(from_date)s
+			and (posting_date < %(from_date)s or ifnull(is_opening, 'No') = 'Yes')
 			and account in (select name from `tabAccount` where report_type=%(report_type)s)
 		group by account""".format(additional_conditions=additional_conditions),
 		{
@@ -128,16 +128,21 @@
 	for d in accounts:
 		d.update(init.copy())
 
+		# add opening
+		d["opening_debit"] = opening_balances.get(d.name, {}).get("opening_debit", 0)
+		d["opening_credit"] = opening_balances.get(d.name, {}).get("opening_credit", 0)
+
 		for entry in gl_entries_by_account.get(d.name, []):
-			d["debit"] += flt(entry.debit)
-			d["credit"] += flt(entry.credit)
+			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:
+				d["debit"] += flt(entry.debit)
+				d["credit"] += flt(entry.credit)
 
 		total_row["debit"] += d["debit"]
 		total_row["credit"] += d["credit"]
 		
-		# add opening
-		d["opening_debit"] = opening_balances.get(d.name, {}).get("opening_debit", 0)
-		d["opening_credit"] = opening_balances.get(d.name, {}).get("opening_credit", 0)
 
 	return total_row
 
diff --git a/erpnext/setup/doctype/naming_series/naming_series.py b/erpnext/setup/doctype/naming_series/naming_series.py
index dc7a90c..81a4c4e 100644
--- a/erpnext/setup/doctype/naming_series/naming_series.py
+++ b/erpnext/setup/doctype/naming_series/naming_series.py
@@ -26,7 +26,8 @@
 			except frappe.DoesNotExistError:
 				continue
 
-			prefixes = prefixes + "\n" + options
+			if options:
+				prefixes = prefixes + "\n" + options
 
 		prefixes.replace("\n\n", "\n")
 		prefixes = "\n".join(sorted(prefixes.split()))