Merge pull request #3358 from nabinhait/develop

General ledger, _idx and FY in Material request
diff --git a/erpnext/accounts/report/general_ledger/general_ledger.html b/erpnext/accounts/report/general_ledger/general_ledger.html
index 5c6b0f1..0d3170a 100644
--- a/erpnext/accounts/report/general_ledger/general_ledger.html
+++ b/erpnext/accounts/report/general_ledger/general_ledger.html
@@ -2,7 +2,7 @@
 	{%= frappe.boot.letter_heads[frappe.defaults.get_default("letter_head")] %}
 </div>
 <h2 class="text-center">{%= __("Statement of Account") %}</h2>
-<h4 class="text-center">{%= filters.account && (filters.account + ", ")  || "" %} {%= filters.company %}</h4>
+<h4 class="text-center">{%= (filters.party || filters.account) && ((filters.party || filters.account) + ", ")  || "" %} {%= filters.company %}</h4>
 <h5 class="text-center">
 	{%= dateutil.str_to_user(filters.from_date) %}
 	{%= __("to") %}
@@ -26,15 +26,20 @@
 				<td>{%= dateutil.str_to_user(data[i][__("Posting Date")]) %}</td>
 				<td>{%= data[i][__("Voucher Type")] %}
 					<br>{%= data[i][__("Voucher No")] %}</td>
-				<td>{%= data[i][__("Account")] %}
-					<br>{%= __("Against") %}: {%= data[i][__("Against Account")] %}
+				<td>
+					{% if(!(filters.party || filters.account)) { %}
+						{%= data[i][__("Party")] || data[i][__("Account")] %}
+						<br>
+					{% } %}
+
+					{{ __("Against") }}: {%= data[i][__("Against Account")] %}
 					<br>{%= __("Remarks") %}: {%= data[i][__("Remarks")] %}</td>
 				<td style="text-align: right">{%= format_currency(data[i][__("Debit")]) %}</td>
 				<td style="text-align: right">{%= format_currency(data[i][__("Credit")]) %}</td>
 			{% } else { %}
 				<td></td>
 				<td></td>
-				<td><b>{%= data[i][__("Account")] || "&nbsp;" %}</b></td>
+				<td><b>{%= frappe.format(data[i][__("Account")], {fieldtype: "Link"}) || "&nbsp;" %}</b></td>
 				<td style="text-align: right">
 					{%= data[i][__("Account")] && format_currency(data[i][__("Debit")]) %}</td>
 				<td style="text-align: right">
diff --git a/erpnext/accounts/report/general_ledger/general_ledger.py b/erpnext/accounts/report/general_ledger/general_ledger.py
index 8e34cdb..fcce345 100644
--- a/erpnext/accounts/report/general_ledger/general_ledger.py
+++ b/erpnext/accounts/report/general_ledger/general_ledger.py
@@ -9,7 +9,7 @@
 def execute(filters=None):
 	account_details = {}
 	for acc in frappe.db.sql("""select name, is_group from tabAccount""", as_dict=1):
-			account_details.setdefault(acc.name, acc)
+		account_details.setdefault(acc.name, acc)
 
 	validate_filters(filters, account_details)
 	validate_party(filters)
@@ -82,8 +82,6 @@
 		lft, rgt = frappe.db.get_value("Account", filters["account"], ["lft", "rgt"])
 		conditions.append("""account in (select name from tabAccount
 			where lft>=%s and rgt<=%s and docstatus<2)""" % (lft, rgt))
-	else:
-		conditions.append("posting_date between %(from_date)s and %(to_date)s")
 
 	if filters.get("voucher_no"):
 		conditions.append("voucher_no=%(voucher_no)s")
@@ -107,7 +105,7 @@
 	opening, total_debit, total_credit, gle_map = get_accountwise_gle(filters, gl_entries, gle_map)
 
 	# Opening for filtered account
-	if filters.get("account"):
+	if filters.get("account") or filters.get("party"):
 		data += [get_balance_row(_("Opening"), opening), {}]
 
 	for acc, acc_dict in gle_map.items():
@@ -130,7 +128,7 @@
 		data.append({"account": "'" + _("Totals") + "'", "debit": total_debit, "credit": total_credit})
 
 	# Closing for filtered account
-	if filters.get("account"):
+	if filters.get("account") or filters.get("party"):
 		data.append(get_balance_row(_("Closing (Opening + Totals)"),
 			(opening + total_debit - total_credit)))
 
@@ -153,9 +151,10 @@
 
 	for gle in gl_entries:
 		amount = flt(gle.debit, 3) - flt(gle.credit, 3)
-		if filters.get("account") and gle.posting_date < getdate(filters.from_date):
+		if gle.posting_date < getdate(filters.from_date):
 			gle_map[gle.account].opening += amount
-			opening += amount
+			if filters.get("account") or filters.get("party"):
+				opening += amount
 		elif gle.posting_date <= getdate(filters.to_date):
 			gle_map[gle.account].entries.append(gle)
 			gle_map[gle.account].total_debit += flt(gle.debit, 3)
diff --git a/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.py b/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.py
index 1298790..e11863a 100644
--- a/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.py
+++ b/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.py
@@ -359,10 +359,7 @@
 
 	def insert_purchase_request(self):
 		items_to_be_requested = self.get_requested_items()
-
-		from erpnext.accounts.utils import get_fiscal_year
-		fiscal_year = get_fiscal_year(nowdate())[0]
-
+		
 		purchase_request_list = []
 		if items_to_be_requested:
 			for item in items_to_be_requested:
@@ -372,7 +369,6 @@
 					"transaction_date": nowdate(),
 					"status": "Draft",
 					"company": self.company,
-					"fiscal_year": fiscal_year,
 					"requested_by": frappe.session.user,
 					"material_request_type": "Purchase"
 				})
diff --git a/erpnext/patches/v5_0/replace_renamed_fields_in_custom_scripts_and_print_formats.py b/erpnext/patches/v5_0/replace_renamed_fields_in_custom_scripts_and_print_formats.py
index 31747b8..1500690 100644
--- a/erpnext/patches/v5_0/replace_renamed_fields_in_custom_scripts_and_print_formats.py
+++ b/erpnext/patches/v5_0/replace_renamed_fields_in_custom_scripts_and_print_formats.py
@@ -16,6 +16,9 @@
 
 		for name, script in frappe.db.sql("select name, {0} as script from `tab{1}` where ({2}) {3}".format(script_field, dt, cond1, cond2)):
 			update_script(dt, name, script_field, script, renamed_fields)
+			
+	# update fieldnames in property setter for idx
+	update_idx_property(renamed_fields)
 
 def get_all_renamed_fields():
 	from erpnext.patches.v5_0.rename_table_fieldnames import rename_map
@@ -63,3 +66,20 @@
 		script = re.sub(r"\bentries\b", "items", script)
 
 	frappe.db.set_value(dt, name, script_field, script)
+
+def update_idx_property(renamed_fields):
+	for ps, ordered_fields, dt in frappe.db.sql("select name, value, doc_type from `tabProperty Setter` where property = '_idx'"):
+		for from_field, to_field in renamed_fields:
+			if from_field in ordered_fields:	
+				ordered_fields[ordered_fields.index(from_field)] = to_field
+			
+		# remove invalid fields
+		valid_fields = [f.fieldname for f in frappe.get_meta(dt).fields]
+		for fld in ordered_fields:
+			if fld not in valid_fields:
+				ordered_fields.pop(fld)
+		
+		frappe.db.set_value("Property Setter", ps, "value", ordered_fields)
+		
+	
+	frappe.db.sql("delete from `tabProperty Setter` where `property` = 'idx'")
\ No newline at end of file
diff --git a/erpnext/patches/v5_0/set_footer_address.py b/erpnext/patches/v5_0/set_footer_address.py
index 2779e48..a3324a0 100644
--- a/erpnext/patches/v5_0/set_footer_address.py
+++ b/erpnext/patches/v5_0/set_footer_address.py
@@ -4,4 +4,5 @@
 	frappe.reload_doctype("System Settings")
 	ss = frappe.get_doc("System Settings", "System Settings")
 	ss.email_footer_address = frappe.db.get_default("company")
+	ss.flags.ignore_mandatory = True
 	ss.save()
diff --git a/erpnext/public/js/utils.js b/erpnext/public/js/utils.js
index 5476d14..3dfd7e1 100644
--- a/erpnext/public/js/utils.js
+++ b/erpnext/public/js/utils.js
@@ -14,19 +14,21 @@
 	},
 
 	get_fiscal_year: function(company, date, fn) {
-		frappe.call({
-			type:"GET",
-			method: "erpnext.accounts.utils.get_fiscal_year",
-			args: {
-				"company": company,
-				"date": date,
-				"verbose": 0
-			},
-			callback: function(r) {
-				if (r.message)	cur_frm.set_value("fiscal_year", r.message[0]);
-				if (fn) fn();
-			}
-		});
+		if(frappe.meta.get_docfield(cur_frm.doctype, "fiscal_year")) {
+			frappe.call({
+				type:"GET",
+				method: "erpnext.accounts.utils.get_fiscal_year",
+				args: {
+					"company": company,
+					"date": date,
+					"verbose": 0
+				},
+				callback: function(r) {
+					if (r.message)	cur_frm.set_value("fiscal_year", r.message[0]);
+					if (fn) fn();
+				}
+			});
+		}
 	},
 
 	toggle_naming_series: function() {
diff --git a/erpnext/stock/doctype/material_request/material_request.json b/erpnext/stock/doctype/material_request/material_request.json
index 9734512..894b9e1 100644
--- a/erpnext/stock/doctype/material_request/material_request.json
+++ b/erpnext/stock/doctype/material_request/material_request.json
@@ -132,21 +132,6 @@
    "width": "100px"
   }, 
   {
-   "fieldname": "fiscal_year", 
-   "fieldtype": "Link", 
-   "in_filter": 1, 
-   "label": "Fiscal Year", 
-   "oldfieldname": "fiscal_year", 
-   "oldfieldtype": "Select", 
-   "options": "Fiscal Year", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "print_width": "150px", 
-   "reqd": 1, 
-   "search_index": 1, 
-   "width": "150px"
-  }, 
-  {
    "fieldname": "column_break2", 
    "fieldtype": "Column Break", 
    "oldfieldtype": "Column Break", 
@@ -236,7 +221,7 @@
  "icon": "icon-ticket", 
  "idx": 1, 
  "is_submittable": 1, 
- "modified": "2015-02-20 05:07:33.215371", 
+ "modified": "2015-05-27 15:36:06.818491", 
  "modified_by": "Administrator", 
  "module": "Stock", 
  "name": "Material Request", 
diff --git a/erpnext/stock/reorder_item.py b/erpnext/stock/reorder_item.py
index 30fe755..cab419f 100644
--- a/erpnext/stock/reorder_item.py
+++ b/erpnext/stock/reorder_item.py
@@ -3,7 +3,6 @@
 
 import frappe
 from frappe.utils import flt, cstr, nowdate, add_days, cint
-from erpnext.accounts.utils import get_fiscal_year, FiscalYearError
 
 def reorder_item():
 	""" Reorder item if stock reaches reorder level"""
@@ -83,7 +82,6 @@
 def create_material_request(material_requests):
 	"""	Create indent on reaching reorder level	"""
 	mr_list = []
-	defaults = frappe.defaults.get_defaults()
 	exceptions_list = []
 
 	def _log_exception():
@@ -93,14 +91,6 @@
 		else:
 			exceptions_list.append(frappe.get_traceback())
 
-	try:
-		current_fiscal_year = get_fiscal_year(nowdate())[0] or defaults.fiscal_year
-
-	except FiscalYearError:
-		_log_exception()
-		notify_errors(exceptions_list)
-		return
-
 	for request_type in material_requests:
 		for company in material_requests[request_type]:
 			try:
@@ -111,7 +101,6 @@
 				mr = frappe.new_doc("Material Request")
 				mr.update({
 					"company": company,
-					"fiscal_year": current_fiscal_year,
 					"transaction_date": nowdate(),
 					"material_request_type": request_type
 				})