feat: added date filter based on billing date and based date (#18936)

diff --git a/erpnext/controllers/trends.py b/erpnext/controllers/trends.py
index 28a8fdd..0404a1e 100644
--- a/erpnext/controllers/trends.py
+++ b/erpnext/controllers/trends.py
@@ -39,7 +39,6 @@
 		frappe.throw(_("'Based On' and 'Group By' can not be same"))
 
 def get_data(filters, conditions):
-	
 	data = []
 	inc, cond= '',''
 	query_details =  conditions["based_on_select"] + conditions["period_wise_select"]
@@ -47,10 +46,11 @@
 	posting_date = 't1.transaction_date'
 	if conditions.get('trans') in ['Sales Invoice', 'Purchase Invoice', 'Purchase Receipt', 'Delivery Note']:
 		posting_date = 't1.posting_date'
+		if filters.period_based_on:
+			posting_date = 't1.'+filters.period_based_on
 
 	if conditions["based_on_select"] in ["t1.project,", "t2.project,"]:
 		cond = ' and '+ conditions["based_on_select"][:-1] +' IS Not NULL'
-	
 	if conditions.get('trans') in ['Sales Order', 'Purchase Order']:
 		cond += " and t1.status != 'Closed'"
 
diff --git a/erpnext/public/js/purchase_trends_filters.js b/erpnext/public/js/purchase_trends_filters.js
index 595a138..cd767f5 100644
--- a/erpnext/public/js/purchase_trends_filters.js
+++ b/erpnext/public/js/purchase_trends_filters.js
@@ -4,6 +4,14 @@
 erpnext.get_purchase_trends_filters = function() {
 	return [
 		{
+			"fieldname":"company",
+			"label": __("Company"),
+			"fieldtype": "Link",
+			"options": "Company",
+			"reqd": 1,
+			"default": frappe.defaults.get_user_default("Company")
+		},
+		{
 			"fieldname":"period",
 			"label": __("Period"),
 			"fieldtype": "Select",
@@ -16,6 +24,23 @@
 			"default": "Monthly"
 		},
 		{
+			"fieldname":"fiscal_year",
+			"label": __("Fiscal Year"),
+			"fieldtype": "Link",
+			"options":'Fiscal Year',
+			"default": frappe.sys_defaults.fiscal_year
+		},
+		{
+			"fieldname":"period_based_on",
+			"label": __("Period based On"),
+			"fieldtype": "Select",
+			"options": [
+				{ "value": "posting_date", "label": __("Posting Date") },
+				{ "value": "bill_date", "label": __("Billing Date") },
+			],
+			"default": "posting_date"
+		},
+		{
 			"fieldname":"based_on",
 			"label": __("Based On"),
 			"fieldtype": "Select",
@@ -39,19 +64,5 @@
 			],
 			"default": ""
 		},
-		{
-			"fieldname":"fiscal_year",
-			"label": __("Fiscal Year"),
-			"fieldtype": "Link",
-			"options":'Fiscal Year',
-			"default": frappe.sys_defaults.fiscal_year
-		},
-		{
-			"fieldname":"company",
-			"label": __("Company"),
-			"fieldtype": "Link",
-			"options": "Company",
-			"default": frappe.defaults.get_user_default("Company")
-		},
 	];
 }