From 4c8a8c3bcd9bf21918a78de244789c7de76cede9 Mon Sep 17 00:00:00 2001 From: ruthra kumar Date: Mon, 18 Sep 2023 12:35:24 +0530 Subject: [PATCH] refactor: some logic --- .../bisect_accounting_statements.js | 22 +++++++-- .../bisect_accounting_statements.json | 48 ++++++++++++++----- .../bisect_accounting_statements.py | 17 ++++++- 3 files changed, 67 insertions(+), 20 deletions(-) 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 7e1fb48fe3..96b9709bee 100644 --- a/erpnext/accounts/doctype/bisect_accounting_statements/bisect_accounting_statements.js +++ b/erpnext/accounts/doctype/bisect_accounting_statements/bisect_accounting_statements.js @@ -1,8 +1,20 @@ // Copyright (c) 2023, Frappe Technologies Pvt. Ltd. and contributors // For license information, please see license.txt -// frappe.ui.form.on("Bisect Accounting Statements", { -// refresh(frm) { - -// }, -// }); +frappe.ui.form.on("Bisect Accounting Statements", { + refresh(frm) { + frm.add_custom_button(__('Bisect'), () => + frm.trigger("bisect") + ); + frm.change_custom_button_type(__('Bisect'), null, 'primary'); + }, + bisect(frm) { + frm.call({ + doc: frm.doc, + method: 'bisect', + callback: (r) => { + 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 1ffa3adcb3..de7eba7c63 100644 --- a/erpnext/accounts/doctype/bisect_accounting_statements/bisect_accounting_statements.json +++ b/erpnext/accounts/doctype/bisect_accounting_statements/bisect_accounting_statements.json @@ -7,31 +7,53 @@ "editable_grid": 1, "engine": "InnoDB", "field_order": [ - "from", + "from_date", "column_break_qxbi", - "to" + "to_date", + "section_break_3x70", + "period_from", + "column_break_5ett", + "period_to" ], "fields": [ - { - "fieldname": "from", - "fieldtype": "Date", - "label": "From" - }, - { - "fieldname": "to", - "fieldtype": "Date", - "label": "To" - }, { "fieldname": "column_break_qxbi", "fieldtype": "Column Break" + }, + { + "fieldname": "from_date", + "fieldtype": "Date", + "label": "From Date" + }, + { + "fieldname": "to_date", + "fieldtype": "Date", + "label": "To Date" + }, + { + "fieldname": "section_break_3x70", + "fieldtype": "Section Break" + }, + { + "fieldname": "period_from", + "fieldtype": "Date", + "label": "Period From" + }, + { + "fieldname": "column_break_5ett", + "fieldtype": "Column Break" + }, + { + "fieldname": "period_to", + "fieldtype": "Date", + "label": "Period To" } ], "hide_toolbar": 1, "index_web_pages_for_search": 1, "issingle": 1, "links": [], - "modified": "2023-09-15 21:36:21.516679", + "modified": "2023-09-16 08:02:33.472406", "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 8ab97b47a8..2e209d2a63 100644 --- a/erpnext/accounts/doctype/bisect_accounting_statements/bisect_accounting_statements.py +++ b/erpnext/accounts/doctype/bisect_accounting_statements/bisect_accounting_statements.py @@ -1,9 +1,22 @@ # Copyright (c) 2023, Frappe Technologies Pvt. Ltd. and contributors # For license information, please see license.txt -# import frappe +from math import ceil, floor + +import frappe +from dateutil.relativedelta import relativedelta from frappe.model.document import Document +from frappe.utils import getdate class BisectAccountingStatements(Document): - pass + @frappe.whitelist() + def bisect(self): + cur_frm_date, cur_to_date = getdate(self.from_date), getdate(self.to_date) + while True: + delta = cur_to_date - cur_frm_date + if delta.days == 0: + return + cur_floor = floor(delta.days / 2) + cur_to_date = cur_frm_date + relativedelta(days=+cur_floor) + print((cur_frm_date, cur_to_date), delta, cur_floor)