refactor: calculate summary on tree navigation
diff --git a/erpnext/accounts/doctype/bisect_accounting_statements/bisect_accounting_statements.js b/erpnext/accounts/doctype/bisect_accounting_statements/bisect_accounting_statements.js
index 4e478ee..7abe4f8 100644
--- a/erpnext/accounts/doctype/bisect_accounting_statements/bisect_accounting_statements.js
+++ b/erpnext/accounts/doctype/bisect_accounting_statements/bisect_accounting_statements.js
@@ -17,7 +17,6 @@
frm.add_custom_button(__('Build Tree'), () =>
frm.trigger("build_tree")
);
- // frm.change_custom_button_type(__('Bisect'), null, 'primary');
},
bisect_left(frm) {
frm.call({
@@ -54,5 +53,5 @@
console.log(r);
}
});
- }
+ },
});
diff --git a/erpnext/accounts/doctype/bisect_accounting_statements/bisect_accounting_statements.json b/erpnext/accounts/doctype/bisect_accounting_statements/bisect_accounting_statements.json
index 0de820a..c76ef4d 100644
--- a/erpnext/accounts/doctype/bisect_accounting_statements/bisect_accounting_statements.json
+++ b/erpnext/accounts/doctype/bisect_accounting_statements/bisect_accounting_statements.json
@@ -7,13 +7,26 @@
"editable_grid": 1,
"engine": "InnoDB",
"field_order": [
+ "company",
+ "column_break_hcam",
"from_date",
"column_break_qxbi",
"to_date",
"column_break_iwny",
"algorithm",
"section_break_zbty",
- "current_node"
+ "current_node",
+ "sandbox",
+ "section_break_hmsy",
+ "current_from_date",
+ "column_break_uqyd",
+ "current_to_date",
+ "section_break_hbyo",
+ "p_l_summary",
+ "column_break_aivo",
+ "b_s_summary",
+ "column_break_gvwx",
+ "difference"
],
"fields": [
{
@@ -50,13 +63,73 @@
"fieldtype": "Link",
"label": "Current Node",
"options": "Nodes"
+ },
+ {
+ "fieldname": "sandbox",
+ "fieldtype": "HTML",
+ "label": "sandbox"
+ },
+ {
+ "fieldname": "section_break_hmsy",
+ "fieldtype": "Section Break"
+ },
+ {
+ "fieldname": "current_from_date",
+ "fieldtype": "Datetime",
+ "label": "Current From Date"
+ },
+ {
+ "fieldname": "current_to_date",
+ "fieldtype": "Datetime",
+ "label": "Current To Date"
+ },
+ {
+ "fieldname": "column_break_uqyd",
+ "fieldtype": "Column Break"
+ },
+ {
+ "fieldname": "section_break_hbyo",
+ "fieldtype": "Section Break"
+ },
+ {
+ "fieldname": "p_l_summary",
+ "fieldtype": "Data",
+ "label": "P&L Summary"
+ },
+ {
+ "fieldname": "b_s_summary",
+ "fieldtype": "Data",
+ "label": "Balance Sheet Summary"
+ },
+ {
+ "fieldname": "difference",
+ "fieldtype": "Data",
+ "label": "Difference"
+ },
+ {
+ "fieldname": "column_break_aivo",
+ "fieldtype": "Column Break"
+ },
+ {
+ "fieldname": "column_break_gvwx",
+ "fieldtype": "Column Break"
+ },
+ {
+ "fieldname": "company",
+ "fieldtype": "Link",
+ "label": "Company",
+ "options": "Company"
+ },
+ {
+ "fieldname": "column_break_hcam",
+ "fieldtype": "Column Break"
}
],
"hide_toolbar": 1,
"index_web_pages_for_search": 1,
"issingle": 1,
"links": [],
- "modified": "2023-09-26 12:09:23.649156",
+ "modified": "2023-09-26 21:07:14.290963",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Bisect Accounting Statements",
diff --git a/erpnext/accounts/doctype/bisect_accounting_statements/bisect_accounting_statements.py b/erpnext/accounts/doctype/bisect_accounting_statements/bisect_accounting_statements.py
index 8730772e..d2b60a4 100644
--- a/erpnext/accounts/doctype/bisect_accounting_statements/bisect_accounting_statements.py
+++ b/erpnext/accounts/doctype/bisect_accounting_statements/bisect_accounting_statements.py
@@ -116,6 +116,20 @@
root = frappe.db.get_all("Nodes", filters={"root": ["is", "not set"]})[0]
frappe.db.set_single_value("Bisect Accounting Statements", "current_node", root.name)
+ def get_report_summary(self):
+ filters = {
+ "company": self.company,
+ "filter_based_on": "Date Range",
+ "period_start_date": self.current_from_date,
+ "period_end_date": self.current_to_date,
+ "periodicity": "Yearly",
+ }
+ pl_summary = frappe.get_doc("Report", "Profit and Loss Statement")
+ self.p_l_summary = pl_summary.execute_script_report(filters=filters)[5]
+ bs_summary = frappe.get_doc("Report", "Balance Sheet")
+ self.b_s_summary = bs_summary.execute_script_report(filters=filters)[5]
+ self.difference = abs(self.p_l_summary - self.b_s_summary)
+
@frappe.whitelist()
def bisect_left(self):
if self.current_node is not None:
@@ -123,8 +137,9 @@
if cur_node.left_child is not None:
lft_node = frappe.get_doc("Nodes", cur_node.left_child)
self.current_node = cur_node.left_child
- self.from_date = lft_node.period_from_date
- self.to_date = lft_node.period_to_date
+ self.current_from_date = lft_node.period_from_date
+ self.current_to_date = lft_node.period_to_date
+ self.get_report_summary()
self.save()
else:
frappe.msgprint("No more children on Left")
@@ -136,8 +151,9 @@
if cur_node.right_child is not None:
rgt_node = frappe.get_doc("Nodes", cur_node.right_child)
self.current_node = cur_node.right_child
- self.from_date = rgt_node.period_from_date
- self.to_date = rgt_node.period_to_date
+ self.current_from_date = rgt_node.period_from_date
+ self.current_to_date = rgt_node.period_to_date
+ self.get_report_summary()
self.save()
else:
frappe.msgprint("No more children on Right")
@@ -149,8 +165,9 @@
if cur_node.root is not None:
root = frappe.get_doc("Nodes", cur_node.root)
self.current_node = cur_node.root
- self.from_date = root.period_from_date
- self.to_date = root.period_to_date
+ self.current_from_date = root.period_from_date
+ self.current_to_date = root.period_to_date
+ self.get_report_summary()
self.save()
else:
frappe.msgprint("Reached Root")