refactor: support list view filters
diff --git a/erpnext/bulk_transaction/doctype/bulk_transaction_log/bulk_transaction_log.json b/erpnext/bulk_transaction/doctype/bulk_transaction_log/bulk_transaction_log.json
index a874b79..75cb358 100644
--- a/erpnext/bulk_transaction/doctype/bulk_transaction_log/bulk_transaction_log.json
+++ b/erpnext/bulk_transaction/doctype/bulk_transaction_log/bulk_transaction_log.json
@@ -2,6 +2,7 @@
"actions": [],
"allow_copy": 1,
"creation": "2023-11-09 20:14:45.139593",
+ "default_view": "List",
"doctype": "DocType",
"engine": "InnoDB",
"field_order": [
@@ -17,6 +18,8 @@
{
"fieldname": "date",
"fieldtype": "Date",
+ "in_list_view": 1,
+ "in_standard_filter": 1,
"label": "Date",
"read_only": 1
},
@@ -55,7 +58,7 @@
"in_create": 1,
"is_virtual": 1,
"links": [],
- "modified": "2023-11-10 11:13:52.733076",
+ "modified": "2023-11-11 04:52:49.347376",
"modified_by": "Administrator",
"module": "Bulk Transaction",
"name": "Bulk Transaction Log",
@@ -76,5 +79,6 @@
],
"sort_field": "modified",
"sort_order": "DESC",
- "states": []
+ "states": [],
+ "title_field": "date"
}
\ No newline at end of file
diff --git a/erpnext/bulk_transaction/doctype/bulk_transaction_log/bulk_transaction_log.py b/erpnext/bulk_transaction/doctype/bulk_transaction_log/bulk_transaction_log.py
index 1a078b5..8ae54dd 100644
--- a/erpnext/bulk_transaction/doctype/bulk_transaction_log/bulk_transaction_log.py
+++ b/erpnext/bulk_transaction/doctype/bulk_transaction_log/bulk_transaction_log.py
@@ -40,26 +40,33 @@
@staticmethod
def get_list(args):
- log_detail = qb.DocType("Bulk Transaction Log Detail")
+ filter_date = parse_list_filters(args)
limit = cint(args.get("page_length")) or 20
- dates = (
+ log_detail = qb.DocType("Bulk Transaction Log Detail")
+
+ dates_query = (
qb.from_(log_detail)
.select(log_detail.date)
.distinct()
.orderby(log_detail.date, order=Order.desc)
.limit(limit)
- .run()
)
+ if filter_date:
+ dates_query = dates_query.where(log_detail.date == filter_date)
+ dates = dates_query.run()
- transaction_logs = (
- qb.from_(log_detail)
- .select(log_detail.date.as_("date"), Count(log_detail.date).as_("count"))
- .where(log_detail.date.isin(dates))
- .orderby(log_detail.date, order=Order.desc)
- .groupby(log_detail.date)
- .limit(limit)
- .run(as_dict=True)
- )
+ transaction_logs = []
+ if dates:
+ transaction_logs_query = (
+ qb.from_(log_detail)
+ .select(log_detail.date.as_("date"), Count(log_detail.date).as_("count"))
+ .where(log_detail.date.isin(dates))
+ .orderby(log_detail.date, order=Order.desc)
+ .groupby(log_detail.date)
+ .limit(limit)
+ )
+ transaction_logs = transaction_logs_query.run(as_dict=True)
+
return [serialize_transaction_log(x) for x in transaction_logs]
@staticmethod
@@ -85,3 +92,14 @@
succeeded=data.succeeded,
failed=data.failed,
)
+
+
+def parse_list_filters(args):
+ # parse date filter
+ filter_date = None
+ for fil in args.get("filters"):
+ if isinstance(fil, list):
+ for elem in fil:
+ if elem == "date":
+ filter_date = fil[3]
+ return filter_date