refactor: add basic functionalities

This commit is contained in:
ruthra kumar 2023-11-09 21:07:01 +05:30
parent a248b13cc3
commit af35590549
2 changed files with 75 additions and 11 deletions

View File

@ -1,8 +1,13 @@
// Copyright (c) 2023, Frappe Technologies Pvt. Ltd. and contributors
// For license information, please see license.txt
// frappe.ui.form.on("Bulk Transaction Log", {
// refresh(frm) {
// },
// });
frappe.ui.form.on("Bulk Transaction Log", {
refresh(frm) {
frm.add_custom_button(__('Succeeded Entries'), function() {
frappe.set_route('List', 'Bulk Transaction Log Detail', {'date': frm.doc.date, 'transaction_status': "Success"});
}, __("View"));
frm.add_custom_button(__('Failed Entries'), function() {
frappe.set_route('List', 'Bulk Transaction Log Detail', {'date': frm.doc.date, 'transaction_status': "Failed"});
}, __("View"));
},
});

View File

@ -1,8 +1,14 @@
# Copyright (c) 2023, Frappe Technologies Pvt. Ltd. and contributors
# For license information, please see license.txt
# import frappe
import frappe
from frappe import qb
from frappe.model.document import Document
from frappe.query_builder.functions import Count
from frappe.utils import cint
from pypika import Order
log_detail = qb.DocType("Bulk Transaction Log Detail")
class BulkTransactionLog(Document):
@ -10,14 +16,51 @@ class BulkTransactionLog(Document):
pass
def load_from_db(self):
pass
def db_update(self):
pass
succeeded_logs = (
qb.from_(log_detail)
.select(Count(log_detail.date).as_("count"))
.where((log_detail.date == self.name) & (log_detail.transaction_status == "Success"))
.run()
)[0][0] or 0
failed_logs = (
qb.from_(log_detail)
.select(Count(log_detail.date).as_("count"))
.where((log_detail.date == self.name) & (log_detail.transaction_status == "Failed"))
.run()
)[0][0] or 0
total_logs = succeeded_logs + failed_logs
transaction_log = frappe._dict(
{
"date": self.name,
"count": total_logs,
"succeeded": succeeded_logs,
"failed": failed_logs,
}
)
super(Document, self).__init__(serialize_transaction_log(transaction_log))
@staticmethod
def get_list(args):
pass
limit = cint(args.get("page_length")) or 20
dates = (
qb.from_(log_detail)
.select(log_detail.date)
.distinct()
.orderby(log_detail.date, order=Order.desc)
.limit(limit)
.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)
)
return [serialize_transaction_log(x) for x in transaction_logs]
@staticmethod
def get_count(args):
@ -26,3 +69,19 @@ class BulkTransactionLog(Document):
@staticmethod
def get_stats(args):
pass
def db_update(self, *args, **kwargs):
pass
def delete(self):
pass
def serialize_transaction_log(data):
return frappe._dict(
name=data.date,
date=data.date,
log_entries=data.count,
succeeded=data.succeeded,
failed=data.failed,
)