Merge pull request #14117 from shreyashah115/fixes

Fix patch
diff --git a/erpnext/__init__.py b/erpnext/__init__.py
index e388601..786ade1 100644
--- a/erpnext/__init__.py
+++ b/erpnext/__init__.py
@@ -79,6 +79,19 @@
 
 	return frappe.local.enable_perpetual_inventory[company]
 
+def get_default_finance_book(company=None):
+	if not company:
+		company = get_default_company()
+
+	if not hasattr(frappe.local, 'default_finance_book'):
+		frappe.local.default_finance_book = {}
+
+	if not company in frappe.local.default_finance_book:
+		frappe.local.default_finance_book[company] = frappe.db.get_value("Company",
+			company, "default_finance_book")
+
+	return frappe.local.default_finance_book[company]
+
 def get_party_account_type(party_type):
 	if not hasattr(frappe.local, 'party_account_types'):
 		frappe.local.party_account_types = {}
diff --git a/erpnext/accounts/report/accounts_receivable/accounts_receivable.py b/erpnext/accounts/report/accounts_receivable/accounts_receivable.py
index 8581a25..bf906ce 100644
--- a/erpnext/accounts/report/accounts_receivable/accounts_receivable.py
+++ b/erpnext/accounts/report/accounts_receivable/accounts_receivable.py
@@ -2,7 +2,7 @@
 # License: GNU General Public License v3. See license.txt
 
 from __future__ import unicode_literals
-import frappe
+import frappe, erpnext
 from frappe import _, scrub
 from frappe.utils import getdate, nowdate, flt, cint
 
@@ -332,12 +332,14 @@
 			conditions.append("company=%s")
 			values.append(self.filters.company)
 
-		if self.filters.finance_book:
-			conditions.append("finance_book in (%s, '')")
+		company_finance_book = erpnext.get_default_finance_book(self.filters.company)
+
+		if not self.filters.finance_book or (self.filters.finance_book == company_finance_book):
+			conditions.append("ifnull(finance_book,'') in (%s, '')")
+			values.append(company_finance_book)
+		elif self.filters.finance_book:
+			conditions.append("ifnull(finance_book,'') = %s")
 			values.append(self.filters.finance_book)
-		else:
-			conditions.append("ifnull(finance_book,'')=%s")
-			values.append('')
 
 		if self.filters.get(party_type_field):
 			conditions.append("party=%s")
diff --git a/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.js b/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.js
index 9fa99c7..126cd03 100644
--- a/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.js
+++ b/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.js
@@ -32,6 +32,12 @@
 			"options": "Asset"
 		},
 		{
+			"fieldname":"finance_book",
+			"label": __("Finance Book"),
+			"fieldtype": "Link",
+			"options": "Finance Book"
+		},
+		{
 			"fieldname":"asset_category",
 			"label": __("Asset Category"),
 			"fieldtype": "Link",
diff --git a/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py b/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py
index 5497384..fb59882 100644
--- a/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py
+++ b/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py
@@ -2,7 +2,7 @@
 # For license information, please see license.txt
 
 from __future__ import unicode_literals
-import frappe
+import frappe, erpnext
 from frappe import _
 
 def execute(filters=None):
@@ -13,7 +13,7 @@
 	data = frappe.db.sql("""
 		select 
 			a.name as asset, a.asset_category, a.status, 
-			a.depreciation_method, a.purchase_date, a.gross_purchase_amount,
+			ds.depreciation_method, a.purchase_date, a.gross_purchase_amount,
 			ds.schedule_date as depreciation_date, ds.depreciation_amount, 
 			ds.accumulated_depreciation_amount, 
 			(a.gross_purchase_amount - ds.accumulated_depreciation_amount) as amount_after_depreciation,
@@ -30,9 +30,9 @@
 		order by
 			a.name asc, ds.schedule_date asc
 	""".format(conditions=get_filter_conditions(filters)), filters, as_dict=1)
-		
+
 	return data
-	
+
 def get_filter_conditions(filters):
 	conditions = ""
 	
@@ -42,6 +42,14 @@
 	if filters.get("asset_category"):
 		conditions += " and a.asset_category = %(asset_category)s"
 		
+	company_finance_book = erpnext.get_default_finance_book(filters.get("company"))
+
+	if (not filters.get('finance_book') or (filters.get('finance_book') == company_finance_book)):
+		filters['finance_book'] = company_finance_book
+		conditions += " and ifnull(ds.finance_book, '') in (%(finance_book)s, '') "
+	elif filters.get("finance_book"):
+		conditions += " and ifnull(ds.finance_book, '') = %(finance_book)s"
+
 	return conditions
 	
 def get_columns():
diff --git a/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.js b/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.js
index 63f263f..91a06f4 100644
--- a/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.js
+++ b/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.js
@@ -29,6 +29,12 @@
 			"reqd": 1
 		},
 		{
+			"fieldname":"finance_book",
+			"label": __("Finance Book"),
+			"fieldtype": "Link",
+			"options": "Finance Book"
+		},
+		{
 			"fieldname":"report",
 			"label": __("Report"),
 			"fieldtype": "Select",
diff --git a/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py b/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py
index 750120b..39f4771 100644
--- a/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py
+++ b/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py
@@ -2,7 +2,7 @@
 # For license information, please see license.txt
 
 from __future__ import unicode_literals
-import frappe
+import frappe, erpnext
 from frappe import _
 from frappe.utils import flt, cint
 from erpnext.accounts.report.financial_statements import get_fiscal_year_data, sort_accounts
@@ -322,7 +322,7 @@
 	company_lft, company_rgt = frappe.db.get_value('Company',
 		filters.get('company'), ["lft", "rgt"])
 
-	additional_conditions = get_additional_conditions(from_date, ignore_closing_entries)
+	additional_conditions = get_additional_conditions(from_date, ignore_closing_entries, filters)
 
 	gl_entries = frappe.db.sql("""select gl.posting_date, gl.account, gl.debit, gl.credit, gl.is_opening, gl.company,
 		gl.fiscal_year, gl.debit_in_account_currency, gl.credit_in_account_currency, gl.account_currency,
@@ -353,7 +353,7 @@
 		field = "Account number" if entry.account_number else "Account name"
 		frappe.throw(_("{0} {1} is not present in the parent company").format(field, key))
 
-def get_additional_conditions(from_date, ignore_closing_entries):
+def get_additional_conditions(from_date, ignore_closing_entries, filters):
 	additional_conditions = []
 
 	if ignore_closing_entries:
@@ -362,6 +362,15 @@
 	if from_date:
 		additional_conditions.append("gl.posting_date >= %(from_date)s")
 
+	company_finance_book = erpnext.get_default_finance_book(filters.get("company"))
+
+	if not filters.get('finance_book') or (filters.get('finance_book') == company_finance_book):
+		additional_conditions.append("finance_book in ('%s', '')" %
+			frappe.db.escape(company_finance_book))
+	elif filters.get("finance_book"):
+		additional_conditions.append("finance_book = '%s' " %
+			frappe.db.escape(filters.get("finance_book")))
+
 	return " and {}".format(" and ".join(additional_conditions)) if additional_conditions else ""
 
 def add_total_row(out, root_type, balance_must_be, companies, company_currency):
diff --git a/erpnext/accounts/report/financial_statements.py b/erpnext/accounts/report/financial_statements.py
index ea22bac..41abc3f 100644
--- a/erpnext/accounts/report/financial_statements.py
+++ b/erpnext/accounts/report/financial_statements.py
@@ -7,7 +7,7 @@
 from past.builtins import cmp
 import functools
 
-import frappe
+import frappe, erpnext
 from erpnext.accounts.report.utils import get_currency, convert_to_presentation_currency
 from erpnext.accounts.utils import get_fiscal_year
 from frappe import _
@@ -375,12 +375,15 @@
 			additional_conditions.append("project = '%s'" % (frappe.db.escape(filters.get("project"))))
 		if filters.get("cost_center"):
 			additional_conditions.append(get_cost_center_cond(filters.get("cost_center")))
-		if filters.get("finance_book"):
-			additional_conditions.append("finance_book in ('%s', '')" %
-				frappe.db.escape(filters.get("finance_book")))
-		else:
-			additional_conditions.append("ifnull(finance_book, '') = ''")
 
+		company_finance_book = erpnext.get_default_finance_book(filters.get("company"))
+
+		if not filters.get('finance_book') or (filters.get('finance_book') == company_finance_book):
+			additional_conditions.append("finance_book in ('%s', '')" %
+				frappe.db.escape(company_finance_book))
+		elif filters.get("finance_book"):
+			additional_conditions.append("finance_book = '%s' " %
+				frappe.db.escape(filters.get("finance_book")))
 
 	return " and {}".format(" and ".join(additional_conditions)) if additional_conditions else ""
 
diff --git a/erpnext/accounts/report/general_ledger/general_ledger.py b/erpnext/accounts/report/general_ledger/general_ledger.py
index 7134b91..6aecab9 100644
--- a/erpnext/accounts/report/general_ledger/general_ledger.py
+++ b/erpnext/accounts/report/general_ledger/general_ledger.py
@@ -2,7 +2,7 @@
 # License: GNU General Public License v3. See license.txt
 
 from __future__ import unicode_literals
-import frappe
+import frappe, erpnext
 from erpnext import get_company_currency, get_default_company
 from erpnext.accounts.report.utils import get_currency, convert_to_presentation_currency
 from frappe.utils import getdate, cstr, flt, fmt_money
@@ -167,10 +167,12 @@
 	if filters.get("project"):
 		conditions.append("project=%(project)s")
 
-	if filters.get("finance_book"):
-		conditions.append("finance_book in (%(finance_book)s, '')")
-	else:
-		conditions.append("ifnull(finance_book, '')=''")
+	company_finance_book = erpnext.get_default_finance_book(filters.get("company"))
+	if not filters.get("finance_book") or (filters.get("finance_book") == company_finance_book):
+		filters['finance_book'] = company_finance_book
+		conditions.append("ifnull(finance_book, '') in (%(finance_book)s, '')")
+	elif filters.get("finance_book"):
+		conditions.append("ifnull(finance_book, '') = %(finance_book)s")
 
 	from frappe.desk.reportview import build_match_conditions
 	match_conditions = build_match_conditions("GL Entry")
diff --git a/erpnext/assets/doctype/asset/asset.py b/erpnext/assets/doctype/asset/asset.py
index 1069db6..84094ce 100644
--- a/erpnext/assets/doctype/asset/asset.py
+++ b/erpnext/assets/doctype/asset/asset.py
@@ -140,6 +140,8 @@
 
 							if d.depreciation_method in ("Straight Line", "Manual"):
 								days = date_diff(schedule_date, from_date)
+								if n == 0: days += 1
+
 								depreciation_amount = days * rate_per_day
 								from_date = schedule_date
 							else:
diff --git a/erpnext/setup/doctype/company/company.json b/erpnext/setup/doctype/company/company.json
index e2f6adf..8501dc2 100644
--- a/erpnext/setup/doctype/company/company.json
+++ b/erpnext/setup/doctype/company/company.json
@@ -178,6 +178,38 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
+   "fieldname": "default_finance_book", 
+   "fieldtype": "Link", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_global_search": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Default Finance Book", 
+   "length": 0, 
+   "no_copy": 0, 
+   "options": "Finance Book", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "translatable": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_bulk_edit": 0, 
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "cb0", 
    "fieldtype": "Column Break", 
    "hidden": 0, 
@@ -456,26 +488,26 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "fieldname": "default_currency",
+   "fieldname": "default_currency", 
    "fieldtype": "Link", 
    "hidden": 0, 
-   "ignore_user_permissions": 1,
+   "ignore_user_permissions": 1, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
-   "label": "Default Currency",
+   "label": "Default Currency", 
    "length": 0, 
    "no_copy": 0, 
-   "options": "Currency",
+   "options": "Currency", 
    "permlevel": 0, 
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
    "remember_last_selected_value": 0, 
    "report_hide": 0, 
-   "reqd": 1,
+   "reqd": 1, 
    "search_index": 0, 
    "set_only_once": 0, 
    "translatable": 0, 
@@ -487,7 +519,7 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "fieldname": "default_letter_head",
+   "fieldname": "default_letter_head", 
    "fieldtype": "Link", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
@@ -496,10 +528,10 @@
    "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
-   "label": "Default Letter Head",
+   "label": "Default Letter Head", 
    "length": 0, 
    "no_copy": 0, 
-   "options": "Letter Head",
+   "options": "Letter Head", 
    "permlevel": 0, 
    "precision": "", 
    "print_hide": 0, 
@@ -519,7 +551,7 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "fieldname": "default_holiday_list",
+   "fieldname": "default_holiday_list", 
    "fieldtype": "Link", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
@@ -528,12 +560,12 @@
    "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
-   "label": "Default Holiday List",
+   "label": "Default Holiday List", 
    "length": 0, 
    "no_copy": 0, 
-   "options": "Holiday List",
+   "options": "Holiday List", 
    "permlevel": 0, 
-   "precision": "",
+   "precision": "", 
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
@@ -551,26 +583,26 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "fieldname": "default_terms",
+   "fieldname": "default_terms", 
    "fieldtype": "Link", 
    "hidden": 0, 
-   "ignore_user_permissions": 0,
+   "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
-   "label": "Default Terms",
+   "label": "Default Terms", 
    "length": 0, 
    "no_copy": 0, 
-   "options": "Terms and Conditions",
+   "options": "Terms and Conditions", 
    "permlevel": 0, 
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
    "remember_last_selected_value": 0, 
    "report_hide": 0, 
-   "reqd": 0,
+   "reqd": 0, 
    "search_index": 0, 
    "set_only_once": 0, 
    "translatable": 0, 
@@ -2529,7 +2561,7 @@
  "istable": 0, 
  "max_attachments": 0, 
  "menu_index": 0, 
- "modified": "2018-05-14 06:02:22.105952", 
+ "modified": "2018-05-17 21:59:33.594245", 
  "modified_by": "Administrator", 
  "module": "Setup", 
  "name": "Company", 
diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js
index 1a73ae5..9289d69 100644
--- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js
+++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js
@@ -35,6 +35,10 @@
 
 	},
 
+	onload_post_render: function(frm) {
+		frm.get_field("items").grid.set_multiple_add("item_code", "qty");
+	},
+
 	refresh: function(frm) {
 		if(frm.doc.company) {
 			frm.trigger("toggle_display_account_head");