From f689d01a0c5baba73712a196c07879fecccf271f Mon Sep 17 00:00:00 2001 From: Rohit Waghchaure Date: Thu, 17 May 2018 23:29:37 +0530 Subject: [PATCH] Added finance book in Asset Depreciation Ledger report, fixed asset issue --- erpnext/__init__.py | 13 ++++ .../accounts_receivable.py | 8 +-- .../asset_depreciation_ledger.js | 6 ++ .../asset_depreciation_ledger.py | 14 ++-- .../accounts/report/financial_statements.py | 5 +- .../report/general_ledger/general_ledger.py | 7 +- erpnext/assets/doctype/asset/asset.py | 2 + erpnext/setup/doctype/company/company.json | 68 ++++++++++++++----- 8 files changed, 92 insertions(+), 31 deletions(-) diff --git a/erpnext/__init__.py b/erpnext/__init__.py index e38860176f..786ade1eec 100644 --- a/erpnext/__init__.py +++ b/erpnext/__init__.py @@ -79,6 +79,19 @@ def is_perpetual_inventory_enabled(company): 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 8581a25446..017771a3a0 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 @@ -333,11 +333,11 @@ class ReceivablePayableReport(object): values.append(self.filters.company) if self.filters.finance_book: - conditions.append("finance_book in (%s, '')") + conditions.append("ifnull(finance_book,'') in (%s, '')") values.append(self.filters.finance_book) else: - conditions.append("ifnull(finance_book,'')=%s") - values.append('') + conditions.append("ifnull(finance_book,'') in (%s, '')") + values.append(erpnext.get_default_finance_book(self.filters.company)) 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 9fa99c7065..126cd03795 100644 --- a/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.js +++ b/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.js @@ -31,6 +31,12 @@ frappe.query_reports["Asset Depreciation Ledger"] = { "fieldtype": "Link", "options": "Asset" }, + { + "fieldname":"finance_book", + "label": __("Finance Book"), + "fieldtype": "Link", + "options": "Finance Book" + }, { "fieldname":"asset_category", "label": __("Asset Category"), 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 5497384233..318c590293 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 @@ def get_data(filters): 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 @@ def get_data(filters): 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,12 @@ def get_filter_conditions(filters): if filters.get("asset_category"): conditions += " and a.asset_category = %(asset_category)s" + if filters.get("finance_book"): + conditions += " and ifnull(ds.finance_book, '') in (%(finance_book)s, '') " + else: + filters['finance_book'] = erpnext.get_default_finance_book(filters.get("company")) + conditions += " and ifnull(ds.finance_book, '') in (%(finance_book)s, '') " + return conditions def get_columns(): diff --git a/erpnext/accounts/report/financial_statements.py b/erpnext/accounts/report/financial_statements.py index ea22bacf21..f7bde6c054 100644 --- a/erpnext/accounts/report/financial_statements.py +++ b/erpnext/accounts/report/financial_statements.py @@ -7,7 +7,7 @@ import re 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 _ @@ -379,7 +379,8 @@ def get_additional_conditions(from_date, ignore_closing_entries, filters): additional_conditions.append("finance_book in ('%s', '')" % frappe.db.escape(filters.get("finance_book"))) else: - additional_conditions.append("ifnull(finance_book, '') = ''") + additional_conditions.append("finance_book in ('%s', '')" % + frappe.db.escape(erpnext.get_default_finance_book(filters.get("company")))) 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 7134b91cd0..bd4dfb282d 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 @@ -168,9 +168,10 @@ def get_conditions(filters): conditions.append("project=%(project)s") if filters.get("finance_book"): - conditions.append("finance_book in (%(finance_book)s, '')") + conditions.append("ifnull(finance_book, '') in (%(finance_book)s, '')") else: - conditions.append("ifnull(finance_book, '')=''") + filters['finance_book'] = erpnext.get_default_finance_book(filters.get("company")) + conditions.append("ifnull(finance_book, '') in (%(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 1069db636a..84094ce594 100644 --- a/erpnext/assets/doctype/asset/asset.py +++ b/erpnext/assets/doctype/asset/asset.py @@ -140,6 +140,8 @@ class Asset(AccountsController): 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 e2f6adfebb..8501dc2522 100644 --- a/erpnext/setup/doctype/company/company.json +++ b/erpnext/setup/doctype/company/company.json @@ -172,6 +172,38 @@ "translatable": 0, "unique": 0 }, + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "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, @@ -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",