From 1dcf10339879e58dbbc4354eaa7ab8582e2c48c3 Mon Sep 17 00:00:00 2001 From: Saqib Ansari Date: Mon, 11 May 2020 14:55:38 +0530 Subject: [PATCH] chore: enhance fixed asset report and remove redundant reports --- .../category_wise_asset_value/__init__.py | 0 .../category_wise_asset_value.js | 43 ------ .../category_wise_asset_value.json | 29 ---- .../category_wise_asset_value.py | 137 ------------------ .../fixed_asset_register.js | 7 + .../fixed_asset_register.py | 61 +++++++- .../location_wise_asset_value/__init__.py | 0 .../location_wise_asset_value.js | 43 ------ .../location_wise_asset_value.json | 29 ---- .../location_wise_asset_value.py | 137 ------------------ 10 files changed, 62 insertions(+), 424 deletions(-) delete mode 100644 erpnext/assets/report/category_wise_asset_value/__init__.py delete mode 100644 erpnext/assets/report/category_wise_asset_value/category_wise_asset_value.js delete mode 100644 erpnext/assets/report/category_wise_asset_value/category_wise_asset_value.json delete mode 100644 erpnext/assets/report/category_wise_asset_value/category_wise_asset_value.py delete mode 100644 erpnext/assets/report/location_wise_asset_value/__init__.py delete mode 100644 erpnext/assets/report/location_wise_asset_value/location_wise_asset_value.js delete mode 100644 erpnext/assets/report/location_wise_asset_value/location_wise_asset_value.json delete mode 100644 erpnext/assets/report/location_wise_asset_value/location_wise_asset_value.py diff --git a/erpnext/assets/report/category_wise_asset_value/__init__.py b/erpnext/assets/report/category_wise_asset_value/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/erpnext/assets/report/category_wise_asset_value/category_wise_asset_value.js b/erpnext/assets/report/category_wise_asset_value/category_wise_asset_value.js deleted file mode 100644 index aa643efb2d..0000000000 --- a/erpnext/assets/report/category_wise_asset_value/category_wise_asset_value.js +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors -// For license information, please see license.txt -/* eslint-disable */ - -frappe.query_reports["Category-wise Asset Value"] = { - "filters": [ - { - fieldname:"company", - label: __("Company"), - fieldtype: "Link", - options: "Company", - default: frappe.defaults.get_user_default("Company"), - reqd: 1 - }, - { - fieldname:"purchase_date", - label: __("Purchase Date"), - fieldtype: "Date" - }, - { - fieldname:"available_for_use_date", - label: __("Available For Use Date"), - fieldtype: "Date" - }, - { - fieldname:"cost_center", - label: __("Cost Center"), - fieldtype: "Link", - options: "Cost Center" - }, - { - fieldname:"finance_book", - label: __("Finance Book"), - fieldtype: "Link", - options: "Finance Book" - }, - { - fieldname:"is_existing_asset", - label: __("Is Existing Asset"), - fieldtype: "Check" - }, - ] -}; diff --git a/erpnext/assets/report/category_wise_asset_value/category_wise_asset_value.json b/erpnext/assets/report/category_wise_asset_value/category_wise_asset_value.json deleted file mode 100644 index a6dbce0516..0000000000 --- a/erpnext/assets/report/category_wise_asset_value/category_wise_asset_value.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "add_total_row": 0, - "creation": "2020-05-08 15:36:02.116096", - "disable_prepared_report": 1, - "disabled": 0, - "docstatus": 0, - "doctype": "Report", - "idx": 0, - "is_standard": "Yes", - "javascript": "", - "modified": "2020-05-08 15:36:02.116096", - "modified_by": "Administrator", - "module": "Assets", - "name": "Category-wise Asset Value", - "owner": "Administrator", - "prepared_report": 0, - "query": "", - "ref_doctype": "Asset", - "report_name": "Category-wise Asset Value", - "report_type": "Script Report", - "roles": [ - { - "role": "Accounts User" - }, - { - "role": "Quality Manager" - } - ] -} \ No newline at end of file diff --git a/erpnext/assets/report/category_wise_asset_value/category_wise_asset_value.py b/erpnext/assets/report/category_wise_asset_value/category_wise_asset_value.py deleted file mode 100644 index 96131e9260..0000000000 --- a/erpnext/assets/report/category_wise_asset_value/category_wise_asset_value.py +++ /dev/null @@ -1,137 +0,0 @@ -# Copyright (c) 2013, Frappe Technologies Pvt. Ltd. and contributors -# For license information, please see license.txt - -from __future__ import unicode_literals -import frappe -from frappe import _ -from frappe.utils import cstr, today, flt - -def execute(filters=None): - filters = frappe._dict(filters or {}) - columns = get_columns(filters) - data = get_data(filters) - - return columns, data - -def get_conditions(filters): - conditions = { 'docstatus': 1 } - - if filters.get('company'): - conditions["company"] = filters.company - if filters.get('purchase_date'): - conditions["purchase_date"] = ('<=', filters.get('purchase_date')) - if filters.get('available_for_use_date'): - conditions["available_for_use_date"] = ('<=', filters.get('available_for_use_date')) - if filters.get('is_existing_asset'): - conditions["is_existing_asset"] = filters.get('is_existing_asset') - if filters.get('cost_center'): - conditions["cost_center"] = filters.get('cost_center') - - return conditions - -def get_data(filters): - - data = [] - depreciation_amount_map = get_finance_book_value_map(filters) - - assets_record = frappe.db.get_all("Asset", - filters=get_conditions(filters), - fields=["name", "asset_name", "asset_category", "gross_purchase_amount", - "opening_accumulated_depreciation", "available_for_use_date", "purchase_date"], - group_by="asset_category") - - for asset in assets_record: - asset_value = asset.gross_purchase_amount - flt(asset.opening_accumulated_depreciation) \ - - flt(depreciation_amount_map.get(asset.name)) - if asset_value: - row = { - "asset_category": asset.asset_category, - "asset_id": asset.name, - "asset_name": asset.asset_name, - "purchase_date": asset.purchase_date, - "available_for_use_date": asset.available_for_use_date, - "gross_purchase_amount": asset.gross_purchase_amount, - "opening_accumulated_depreciation": asset.opening_accumulated_depreciation, - "depreciated_amount": depreciation_amount_map.get(asset.name) or 0.0, - "asset_value": asset_value - } - data.append(row) - - return data - -def get_finance_book_value_map(filters): - date = filters.get('purchase_date') or filters.get('available_for_use_date') or today() - - return frappe._dict(frappe.db.sql(''' Select - parent, SUM(depreciation_amount) - FROM `tabDepreciation Schedule` - WHERE - parentfield='schedules' - AND schedule_date<=%s - AND journal_entry IS NOT NULL - AND ifnull(finance_book, '')=%s - GROUP BY parent''', (date, cstr(filters.finance_book or '')))) - -def get_columns(filters): - return [ - { - "label": _("Asset Category"), - "fieldtype": "Link", - "fieldname": "asset_category", - "options": "Asset Category", - "width": 120 - }, - { - "label": _("Asset Id"), - "fieldtype": "Link", - "fieldname": "asset_id", - "options": "Asset", - "width": 100 - }, - { - "label": _("Asset Name"), - "fieldtype": "Data", - "fieldname": "asset_name", - "width": 140 - }, - { - "label": _("Purchase Date"), - "fieldtype": "Date", - "fieldname": "purchase_date", - "width": 90 - }, - { - "label": _("Available For Use Date"), - "fieldtype": "Date", - "fieldname": "available_for_use_date", - "width": 90 - }, - { - "label": _("Gross Purchase Amount"), - "fieldname": "gross_purchase_amount", - "fieldtype": "Currency", - "options": "company:currency", - "width": 100 - }, - { - "label": _("Opening Accumulated Depreciation"), - "fieldname": "opening_accumulated_depreciation", - "fieldtype": "Currency", - "options": "company:currency", - "width": 90 - }, - { - "label": _("Depreciated Amount"), - "fieldname": "depreciated_amount", - "fieldtype": "Currency", - "options": "company:currency", - "width": 100 - }, - { - "label": _("Asset Value"), - "fieldname": "asset_value", - "fieldtype": "Currency", - "options": "company:currency", - "width": 100 - } - ] \ No newline at end of file diff --git a/erpnext/assets/report/fixed_asset_register/fixed_asset_register.js b/erpnext/assets/report/fixed_asset_register/fixed_asset_register.js index a88f6accb8..e886a35e5d 100644 --- a/erpnext/assets/report/fixed_asset_register/fixed_asset_register.js +++ b/erpnext/assets/report/fixed_asset_register/fixed_asset_register.js @@ -54,6 +54,13 @@ frappe.query_reports["Fixed Asset Register"] = { fieldtype: "Link", options: "Finance Book" }, + { + fieldname:"group_by", + label: __("Group By"), + fieldtype: "Select", + options: " \nAsset Category\nLocation", + default: '', + }, { fieldname:"is_existing_asset", label: __("Is Existing Asset"), diff --git a/erpnext/assets/report/fixed_asset_register/fixed_asset_register.py b/erpnext/assets/report/fixed_asset_register/fixed_asset_register.py index 64ee6a3503..c6b0c4ecf5 100644 --- a/erpnext/assets/report/fixed_asset_register/fixed_asset_register.py +++ b/erpnext/assets/report/fixed_asset_register/fixed_asset_register.py @@ -44,23 +44,33 @@ def get_data(filters): data = [] - conditions = get_conditions(filters) depreciation_amount_map = get_finance_book_value_map(filters) pr_supplier_map = get_purchase_receipt_supplier_map() pi_supplier_map = get_purchase_invoice_supplier_map() - assets_record = frappe.db.get_all("Asset", - filters=conditions, - fields=["name", "asset_name", "department", "cost_center", "purchase_receipt", + conditions = get_conditions(filters) + group_by = frappe.scrub(filters.get("group_by") or "") + + if group_by: + if group_by == "asset_category": + fields = ["asset_category", "gross_purchase_amount", "opening_accumulated_depreciation"] + else: + fields = ["location", "gross_purchase_amount", "opening_accumulated_depreciation"] + + assets_record = frappe.db.get_all("Asset", filters=conditions, fields=fields, group_by=group_by) + print(assets_record) + else: + fields = ["name as asset_id", "asset_name", "status", "department", "cost_center", "purchase_receipt", "asset_category", "purchase_date", "gross_purchase_amount", "location", - "available_for_use_date", "status", "purchase_invoice", "opening_accumulated_depreciation"]) + "available_for_use_date", "purchase_invoice", "opening_accumulated_depreciation"] + assets_record = frappe.db.get_all("Asset", filters=conditions, fields=fields) for asset in assets_record: asset_value = asset.gross_purchase_amount - flt(asset.opening_accumulated_depreciation) \ - flt(depreciation_amount_map.get(asset.name)) if asset_value: row = { - "asset_id": asset.name, + "asset_id": asset.asset_id, "asset_name": asset.asset_name, "status": asset.status, "department": asset.department, @@ -129,6 +139,45 @@ def get_purchase_invoice_supplier_map(): AND pi.is_return=0''')) def get_columns(filters): + if filters.get("group_by"): + return [ + { + "label": _("{}").format(filters.get("group_by")), + "fieldtype": "Link", + "fieldname": frappe.scrub(filters.get("group_by")), + "options": filters.get("group_by"), + "width": 120 + }, + { + "label": _("Gross Purchase Amount"), + "fieldname": "gross_purchase_amount", + "fieldtype": "Currency", + "options": "company:currency", + "width": 100 + }, + { + "label": _("Opening Accumulated Depreciation"), + "fieldname": "opening_accumulated_depreciation", + "fieldtype": "Currency", + "options": "company:currency", + "width": 90 + }, + { + "label": _("Depreciated Amount"), + "fieldname": "depreciated_amount", + "fieldtype": "Currency", + "options": "company:currency", + "width": 100 + }, + { + "label": _("Asset Value"), + "fieldname": "asset_value", + "fieldtype": "Currency", + "options": "company:currency", + "width": 100 + } + ] + return [ { "label": _("Asset Id"), diff --git a/erpnext/assets/report/location_wise_asset_value/__init__.py b/erpnext/assets/report/location_wise_asset_value/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/erpnext/assets/report/location_wise_asset_value/location_wise_asset_value.js b/erpnext/assets/report/location_wise_asset_value/location_wise_asset_value.js deleted file mode 100644 index efdafa18c5..0000000000 --- a/erpnext/assets/report/location_wise_asset_value/location_wise_asset_value.js +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors -// For license information, please see license.txt -/* eslint-disable */ - -frappe.query_reports["Location-wise Asset Value"] = { - "filters": [ - { - fieldname:"company", - label: __("Company"), - fieldtype: "Link", - options: "Company", - default: frappe.defaults.get_user_default("Company"), - reqd: 1 - }, - { - fieldname:"purchase_date", - label: __("Purchase Date"), - fieldtype: "Date" - }, - { - fieldname:"available_for_use_date", - label: __("Available For Use Date"), - fieldtype: "Date" - }, - { - fieldname:"cost_center", - label: __("Cost Center"), - fieldtype: "Link", - options: "Cost Center" - }, - { - fieldname:"finance_book", - label: __("Finance Book"), - fieldtype: "Link", - options: "Finance Book" - }, - { - fieldname:"is_existing_asset", - label: __("Is Existing Asset"), - fieldtype: "Check" - }, - ] -}; diff --git a/erpnext/assets/report/location_wise_asset_value/location_wise_asset_value.json b/erpnext/assets/report/location_wise_asset_value/location_wise_asset_value.json deleted file mode 100644 index 2a554d83d0..0000000000 --- a/erpnext/assets/report/location_wise_asset_value/location_wise_asset_value.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "add_total_row": 0, - "creation": "2020-05-08 15:47:55.036143", - "disable_prepared_report": 1, - "disabled": 0, - "docstatus": 0, - "doctype": "Report", - "idx": 0, - "is_standard": "Yes", - "javascript": "", - "modified": "2020-05-08 15:47:55.036143", - "modified_by": "Administrator", - "module": "Assets", - "name": "Location-wise Asset Value", - "owner": "Administrator", - "prepared_report": 0, - "query": "", - "ref_doctype": "Asset", - "report_name": "Location-wise Asset Value", - "report_type": "Script Report", - "roles": [ - { - "role": "Accounts User" - }, - { - "role": "Quality Manager" - } - ] -} \ No newline at end of file diff --git a/erpnext/assets/report/location_wise_asset_value/location_wise_asset_value.py b/erpnext/assets/report/location_wise_asset_value/location_wise_asset_value.py deleted file mode 100644 index 6aade0e27a..0000000000 --- a/erpnext/assets/report/location_wise_asset_value/location_wise_asset_value.py +++ /dev/null @@ -1,137 +0,0 @@ -# Copyright (c) 2013, Frappe Technologies Pvt. Ltd. and contributors -# For license information, please see license.txt - -from __future__ import unicode_literals -import frappe -from frappe import _ -from frappe.utils import cstr, today, flt - -def execute(filters=None): - filters = frappe._dict(filters or {}) - columns = get_columns(filters) - data = get_data(filters) - - return columns, data - -def get_conditions(filters): - conditions = { 'docstatus': 1 } - - if filters.get('company'): - conditions["company"] = filters.company - if filters.get('purchase_date'): - conditions["purchase_date"] = ('<=', filters.get('purchase_date')) - if filters.get('available_for_use_date'): - conditions["available_for_use_date"] = ('<=', filters.get('available_for_use_date')) - if filters.get('is_existing_asset'): - conditions["is_existing_asset"] = filters.get('is_existing_asset') - if filters.get('cost_center'): - conditions["cost_center"] = filters.get('cost_center') - - return conditions - -def get_data(filters): - - data = [] - depreciation_amount_map = get_finance_book_value_map(filters) - - assets_record = frappe.db.get_all("Asset", - filters=get_conditions(filters), - fields=["name", "asset_name", "location", "gross_purchase_amount", - "opening_accumulated_depreciation", "available_for_use_date", "purchase_date"], - group_by="location") - - for asset in assets_record: - asset_value = asset.gross_purchase_amount - flt(asset.opening_accumulated_depreciation) \ - - flt(depreciation_amount_map.get(asset.name)) - if asset_value: - row = { - "location": asset.location, - "asset_id": asset.name, - "asset_name": asset.asset_name, - "purchase_date": asset.purchase_date, - "available_for_use_date": asset.available_for_use_date, - "gross_purchase_amount": asset.gross_purchase_amount, - "opening_accumulated_depreciation": asset.opening_accumulated_depreciation, - "depreciated_amount": depreciation_amount_map.get(asset.name) or 0.0, - "asset_value": asset_value - } - data.append(row) - - return data - -def get_finance_book_value_map(filters): - date = filters.get('purchase_date') or filters.get('available_for_use_date') or today() - - return frappe._dict(frappe.db.sql(''' Select - parent, SUM(depreciation_amount) - FROM `tabDepreciation Schedule` - WHERE - parentfield='schedules' - AND schedule_date<=%s - AND journal_entry IS NOT NULL - AND ifnull(finance_book, '')=%s - GROUP BY parent''', (date, cstr(filters.finance_book or '')))) - -def get_columns(filters): - return [ - { - "label": _("Location"), - "fieldtype": "Link", - "fieldname": "location", - "options": "Location", - "width": 120 - }, - { - "label": _("Asset Id"), - "fieldtype": "Link", - "fieldname": "asset_id", - "options": "Asset", - "width": 100 - }, - { - "label": _("Asset Name"), - "fieldtype": "Data", - "fieldname": "asset_name", - "width": 140 - }, - { - "label": _("Purchase Date"), - "fieldtype": "Date", - "fieldname": "purchase_date", - "width": 90 - }, - { - "label": _("Available For Use Date"), - "fieldtype": "Date", - "fieldname": "available_for_use_date", - "width": 90 - }, - { - "label": _("Gross Purchase Amount"), - "fieldname": "gross_purchase_amount", - "fieldtype": "Currency", - "options": "company:currency", - "width": 100 - }, - { - "label": _("Opening Accumulated Depreciation"), - "fieldname": "opening_accumulated_depreciation", - "fieldtype": "Currency", - "options": "company:currency", - "width": 90 - }, - { - "label": _("Depreciated Amount"), - "fieldname": "depreciated_amount", - "fieldtype": "Currency", - "options": "company:currency", - "width": 100 - }, - { - "label": _("Asset Value"), - "fieldname": "asset_value", - "fieldtype": "Currency", - "options": "company:currency", - "width": 100 - } - ] \ No newline at end of file