refac: filters and columns of fixed asset register report (#20332)

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 8c737d0..91ce9ce 100644
--- a/erpnext/assets/report/fixed_asset_register/fixed_asset_register.js
+++ b/erpnext/assets/report/fixed_asset_register/fixed_asset_register.js
@@ -21,16 +21,31 @@
 			reqd: 1
 		},
 		{
+			fieldname:"purchase_date",
+			label: __("Purchase Date"),
+			fieldtype: "Date"
+		},
+		{
+			fieldname:"available_for_use_date",
+			label: __("Available For Use Date"),
+			fieldtype: "Date"
+		},
+		{
 			fieldname:"finance_book",
 			label: __("Finance Book"),
 			fieldtype: "Link",
 			options: "Finance Book"
 		},
 		{
-			fieldname:"date",
-			label: __("Date"),
-			fieldtype: "Date",
-			default: frappe.datetime.get_today()
+			fieldname:"asset_category",
+			label: __("Asset Category"),
+			fieldtype: "Link",
+			options: "Asset Category"
+		},
+		{
+			fieldname:"is_existing_asset",
+			label: __("Is Existing Asset"),
+			fieldtype: "Check"
 		},
 	]
 };
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 1498444..fa2fe7b 100644
--- a/erpnext/assets/report/fixed_asset_register/fixed_asset_register.py
+++ b/erpnext/assets/report/fixed_asset_register/fixed_asset_register.py
@@ -41,6 +41,42 @@
 			"width": 90
 		},
 		{
+			"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",
+			"options": "Currency",
+			"width": 90
+		},
+		{
+			"label": _("Asset Value"),
+			"fieldname": "asset_value",
+			"options": "Currency",
+			"width": 90
+		},
+		{
+			"label": _("Opening Accumulated Depreciation"),
+			"fieldname": "opening_accumulated_depreciation",
+			"options": "Currency",
+			"width": 90
+		},
+		{
+			"label": _("Depreciated Amount"),
+			"fieldname": "depreciated_amount",
+			"options": "Currency",
+			"width": 90
+		},
+		{
 			"label": _("Cost Center"),
 			"fieldtype": "Link",
 			"fieldname": "cost_center",
@@ -55,50 +91,35 @@
 			"width": 100
 		},
 		{
-			"label": _("Location"),
-			"fieldtype": "Link",
-			"fieldname": "location",
-			"options": "Location",
-			"width": 100
-		},
-		{
-			"label": _("Purchase Date"),
-			"fieldtype": "Date",
-			"fieldname": "purchase_date",
-			"width": 90
-		},
-		{
-			"label": _("Gross Purchase Amount"),
-			"fieldname": "gross_purchase_amount",
-			"options": "Currency",
-			"width": 90
-		},
-		{
 			"label": _("Vendor Name"),
 			"fieldtype": "Data",
 			"fieldname": "vendor_name",
 			"width": 100
 		},
 		{
-			"label": _("Available For Use Date"),
-			"fieldtype": "Date",
-			"fieldname": "available_for_use_date",
-			"width": 90
-		},
-		{
-			"label": _("Asset Value"),
-			"fieldname": "asset_value",
-			"options": "Currency",
-			"width": 90
+			"label": _("Location"),
+			"fieldtype": "Link",
+			"fieldname": "location",
+			"options": "Location",
+			"width": 100
 		},
 	]
 
 def get_conditions(filters):
-	conditions = {'docstatus': 1}
+	conditions = { 'docstatus': 1 }
 	status = filters.status
+	date = filters.date
 
-	if filters.company:
+	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('asset_category'):
+		conditions["asset_category"] = filters.get('asset_category')
 
 	# In Store assets are those that are not sold or scrapped
 	operand = 'not in'
@@ -114,7 +135,7 @@
 	data = []
 
 	conditions = get_conditions(filters)
-	depreciation_amount_map = get_finance_book_value_map(filters.date, filters.finance_book)
+	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()
 
@@ -136,6 +157,8 @@
 				"cost_center": asset.cost_center,
 				"vendor_name": pr_supplier_map.get(asset.purchase_receipt) or pi_supplier_map.get(asset.purchase_invoice),
 				"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,
 				"available_for_use_date": asset.available_for_use_date,
 				"location": asset.location,
 				"asset_category": asset.asset_category,
@@ -146,9 +169,9 @@
 
 	return data
 
-def get_finance_book_value_map(date, finance_book=''):
-	if not date:
-		date = today()
+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`
@@ -157,7 +180,7 @@
 			AND schedule_date<=%s
 			AND journal_entry IS NOT NULL
 			AND ifnull(finance_book, '')=%s
-		GROUP BY parent''', (date, cstr(finance_book))))
+		GROUP BY parent''', (date, cstr(filters.finance_book or ''))))
 
 def get_purchase_receipt_supplier_map():
 	return frappe._dict(frappe.db.sql(''' Select