From 2e52a63b0df0f20ff774131623580377ce57d451 Mon Sep 17 00:00:00 2001 From: Deepesh Garg Date: Sun, 4 Jun 2023 19:20:28 +0530 Subject: [PATCH] feat: Accounting Ledger Preview --- .../doctype/sales_invoice/sales_invoice.js | 1 + erpnext/controllers/stock_controller.py | 13 +++++++ .../public/js/controllers/stock_controller.js | 36 ++++++++++++++++++- 3 files changed, 49 insertions(+), 1 deletion(-) diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js index 8cb29505eb2..1ef0c51cbac 100644 --- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js +++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js @@ -88,6 +88,7 @@ erpnext.accounts.SalesInvoiceController = class SalesInvoiceController extends e } this.show_general_ledger(); + this.show_ledger_preview(); if(doc.update_stock) this.show_stock_ledger(); diff --git a/erpnext/controllers/stock_controller.py b/erpnext/controllers/stock_controller.py index befde71775a..30dcc7ffa7f 100644 --- a/erpnext/controllers/stock_controller.py +++ b/erpnext/controllers/stock_controller.py @@ -15,6 +15,7 @@ from erpnext.accounts.general_ledger import ( make_reverse_gl_entries, process_gl_map, ) +from erpnext.accounts.report.general_ledger.general_ledger import get_columns from erpnext.accounts.utils import get_fiscal_year from erpnext.controllers.accounts_controller import AccountsController from erpnext.stock import get_warehouse_account_map @@ -824,6 +825,18 @@ class StockController(AccountsController): gl_entries.append(self.get_gl_dict(gl_entry, item=item)) +@frappe.whitelist() +def show_ledger_preview(company, doctype, docname): + filters = {"company": company} + doc = frappe.get_doc(doctype, docname) + columns = get_columns(filters) + data = doc.get_gl_entries() + return { + "columns": columns, + "data": data, + } + + def repost_required_for_queue(doc: StockController) -> bool: """check if stock document contains repeated item-warehouse with queue based valuation. diff --git a/erpnext/public/js/controllers/stock_controller.js b/erpnext/public/js/controllers/stock_controller.js index d346357a8f8..919ffda52fc 100644 --- a/erpnext/public/js/controllers/stock_controller.js +++ b/erpnext/public/js/controllers/stock_controller.js @@ -66,7 +66,7 @@ erpnext.stock.StockController = class StockController extends frappe.ui.form.Con } show_general_ledger() { - var me = this; + let me = this; if(this.frm.doc.docstatus > 0) { cur_frm.add_custom_button(__('Accounting Ledger'), function() { frappe.route_options = { @@ -81,4 +81,38 @@ erpnext.stock.StockController = class StockController extends frappe.ui.form.Con }, __("View")); } } + + show_ledger_preview() { + let me = this + if(this.frm.doc.docstatus == 0) { + cur_frm.add_custom_button(__('Accounting Ledger Preview'), function() { + frappe.call({ + "method": "erpnext.controllers.stock_controller.show_ledger_preview", + "args": { + "company": me.frm.doc.company, + "doctype": me.frm.doc.doctype, + "docname": me.frm.doc.name + }, + "callback": function(response) { + me.get_datatable(response); + } + }) + }, __("View")); + } + } + + get_datatable(response) { + const datatable_options = { + columns: response.columns, + data: response.data, + dynamicRowHeight: true, + checkboxColumn: false, + inlineFilters: true, + }; + + this.datatable = new frappe.DataTable( + this.frm.page.main.parent, + datatable_options + ); + } };