From 5986d59b0102141544c12c9a3bf436ca7e756155 Mon Sep 17 00:00:00 2001 From: Faris Ansari Date: Fri, 20 Jul 2018 15:11:55 +0530 Subject: [PATCH 1/4] Financial Reports - Update formatter for use with DataTable - Fetch Currency from filters and fallback to company currency --- .../report/balance_sheet/balance_sheet.py | 10 ++++++---- .../profitability_analysis.js | 19 +++++++++--------- erpnext/public/js/financial_statements.js | 20 ++++++++++--------- 3 files changed, 27 insertions(+), 22 deletions(-) diff --git a/erpnext/accounts/report/balance_sheet/balance_sheet.py b/erpnext/accounts/report/balance_sheet/balance_sheet.py index c71ecf45f6..204eceb4f4 100644 --- a/erpnext/accounts/report/balance_sheet/balance_sheet.py +++ b/erpnext/accounts/report/balance_sheet/balance_sheet.py @@ -11,6 +11,8 @@ def execute(filters=None): period_list = get_period_list(filters.from_fiscal_year, filters.to_fiscal_year, filters.periodicity, company=filters.company) + currency = filters.presentation_currency or frappe.db.get_value("Company", filters.company, "default_currency") + asset = get_data(filters.company, "Asset", "Debit", period_list, only_current_fiscal_year=False, filters=filters, accumulated_values=filters.accumulated_values) @@ -24,7 +26,7 @@ def execute(filters=None): accumulated_values=filters.accumulated_values) provisional_profit_loss, total_credit = get_provisional_profit_loss(asset, liability, equity, - period_list, filters.company) + period_list, filters.company, currency) message, opening_balance = check_opening_balance(asset, liability, equity) @@ -37,7 +39,7 @@ def execute(filters=None): "account_name": "'" + _("Unclosed Fiscal Years Profit / Loss (Credit)") + "'", "account": "'" + _("Unclosed Fiscal Years Profit / Loss (Credit)") + "'", "warn_if_negative": True, - "currency": frappe.db.get_value("Company", filters.company, "default_currency") + "currency": currency } for period in period_list: unclosed[period.key] = opening_balance @@ -58,12 +60,12 @@ def execute(filters=None): return columns, data, message, chart -def get_provisional_profit_loss(asset, liability, equity, period_list, company, consolidated=False): +def get_provisional_profit_loss(asset, liability, equity, period_list, company, currency=None, consolidated=False): provisional_profit_loss = {} total_row = {} if asset and (liability or equity): total = total_row_total=0 - currency = frappe.db.get_value("Company", company, "default_currency") + currency = currency or frappe.db.get_value("Company", company, "default_currency") total_row = { "account_name": "'" + _("Total (Credit)") + "'", "account": "'" + _("Total (Credit)") + "'", diff --git a/erpnext/accounts/report/profitability_analysis/profitability_analysis.js b/erpnext/accounts/report/profitability_analysis/profitability_analysis.js index 33a2948429..4711225c50 100644 --- a/erpnext/accounts/report/profitability_analysis/profitability_analysis.js +++ b/erpnext/accounts/report/profitability_analysis/profitability_analysis.js @@ -59,20 +59,21 @@ frappe.require("assets/erpnext/js/financial_statements.js", function() { "fieldtype": "Check" } ], - "formatter": function(row, cell, value, columnDef, dataContext, default_formatter) { - if (columnDef.df.fieldname=="account") { - value = dataContext.account_name; + "formatter": function(value, row, column, data, default_formatter) { + if (column.fieldname=="account") { + value = data.account_name; - columnDef.df.link_onclick = - "frappe.query_reports['Profitability Analysis'].open_profit_and_loss_statement(" + JSON.stringify(dataContext) + ")"; - columnDef.df.is_tree = true; + column.link_onclick = + "frappe.query_reports['Profitability Analysis'].open_profit_and_loss_statement(" + JSON.stringify(data) + ")"; + column.is_tree = true; } - value = default_formatter(row, cell, value, columnDef, dataContext); + value = default_formatter(value, row, column, data); - if (!dataContext.parent_account && dataContext.based_on != 'project') { + if (!data.parent_account && data.based_on != 'project') { + value = $(`${value}`); var $value = $(value).css("font-weight", "bold"); - if (dataContext.warn_if_negative && dataContext[columnDef.df.fieldname] < 0) { + if (data.warn_if_negative && data[columnDef.df.fieldname] < 0) { $value.addClass("text-danger"); } diff --git a/erpnext/public/js/financial_statements.js b/erpnext/public/js/financial_statements.js index b7bb77e5ed..2fcdbb45e7 100644 --- a/erpnext/public/js/financial_statements.js +++ b/erpnext/public/js/financial_statements.js @@ -2,20 +2,22 @@ frappe.provide("erpnext.financial_statements"); erpnext.financial_statements = { "filters": get_filters(), - "formatter": function(row, cell, value, columnDef, dataContext, default_formatter) { - if (columnDef.df.fieldname=="account") { - value = dataContext.account_name; + "formatter": function(value, row, column, data, default_formatter) { + if (column.fieldname=="account") { + value = data.account_name; - columnDef.df.link_onclick = - "erpnext.financial_statements.open_general_ledger(" + JSON.stringify(dataContext) + ")"; - columnDef.df.is_tree = true; + column.link_onclick = + "erpnext.financial_statements.open_general_ledger(" + JSON.stringify(data) + ")"; + column.is_tree = true; } - value = default_formatter(row, cell, value, columnDef, dataContext); + value = default_formatter(value, row, column, data); + + if (!data.parent_account) { + value = $(`${value}`); - if (!dataContext.parent_account) { var $value = $(value).css("font-weight", "bold"); - if (dataContext.warn_if_negative && dataContext[columnDef.df.fieldname] < 0) { + if (data.warn_if_negative && data[column.fieldname] < 0) { $value.addClass("text-danger"); } From e7f864a4dd9697ad8690a131f0e4725eb2669618 Mon Sep 17 00:00:00 2001 From: Faris Ansari Date: Fri, 20 Jul 2018 16:31:01 +0530 Subject: [PATCH 2/4] Return early if filters not initialized --- erpnext/accounts/report/general_ledger/general_ledger.js | 1 + 1 file changed, 1 insertion(+) diff --git a/erpnext/accounts/report/general_ledger/general_ledger.js b/erpnext/accounts/report/general_ledger/general_ledger.js index 0663228b56..5ba0bde773 100644 --- a/erpnext/accounts/report/general_ledger/general_ledger.js +++ b/erpnext/accounts/report/general_ledger/general_ledger.js @@ -80,6 +80,7 @@ frappe.query_reports["General Ledger"] = { "label": __("Party"), "fieldtype": "MultiSelect", get_data: function() { + if (!frappe.query_report.filters) return; var party_type = frappe.query_report.get_filter_value('party_type'); var parties = frappe.query_report.get_filter_value('party'); if(!party_type) return; From 5e096df5ae88994fe99ee231943f188b45fc9828 Mon Sep 17 00:00:00 2001 From: Faris Ansari Date: Fri, 20 Jul 2018 16:35:51 +0530 Subject: [PATCH 3/4] columnDef => column --- .../report/profitability_analysis/profitability_analysis.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/accounts/report/profitability_analysis/profitability_analysis.js b/erpnext/accounts/report/profitability_analysis/profitability_analysis.js index 4711225c50..80b50b92c3 100644 --- a/erpnext/accounts/report/profitability_analysis/profitability_analysis.js +++ b/erpnext/accounts/report/profitability_analysis/profitability_analysis.js @@ -73,7 +73,7 @@ frappe.require("assets/erpnext/js/financial_statements.js", function() { if (!data.parent_account && data.based_on != 'project') { value = $(`${value}`); var $value = $(value).css("font-weight", "bold"); - if (data.warn_if_negative && data[columnDef.df.fieldname] < 0) { + if (data.warn_if_negative && data[column.fieldname] < 0) { $value.addClass("text-danger"); } From b23d15fba99bc1d5c2ba962757d3b3fdf220b2d6 Mon Sep 17 00:00:00 2001 From: Faris Ansari Date: Fri, 20 Jul 2018 18:16:31 +0530 Subject: [PATCH 4/4] Fix typo --- erpnext/regional/india/setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/regional/india/setup.py b/erpnext/regional/india/setup.py index cd0bc9a01c..c95d0cf7f1 100644 --- a/erpnext/regional/india/setup.py +++ b/erpnext/regional/india/setup.py @@ -271,7 +271,7 @@ def set_salary_components(docs): def set_tax_withholding_category(docs, company): accounts = [] - tds_account = frappe.db.get_value("Account", filter={"account_type": "Payable", + tds_account = frappe.db.get_value("Account", filters={"account_type": "Payable", "account_name": "TDS", "company": company}) if company and tds_account: