Skip to content

Commit

Permalink
Adding growth and margin views for P&L and balance sheet financial re…
Browse files Browse the repository at this point in the history
…ports in collaboration with Sapcon Instruments Pvt Ltd
  • Loading branch information
nitmit committed Dec 30, 2023
1 parent 6e479f9 commit 7cd9b8c
Show file tree
Hide file tree
Showing 3 changed files with 76 additions and 0 deletions.
14 changes: 14 additions & 0 deletions erpnext/accounts/report/balance_sheet/balance_sheet.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,20 @@ frappe.require("assets/erpnext/js/financial_statements.js", function() {

erpnext.utils.add_dimensions('Balance Sheet', 10);

frappe.query_reports["Balance Sheet"]["filters"].push(
{
"fieldname": "selectedView",
"label": __("Select View"),
"fieldtype": "Select",
"options": [
{ "value": "Report", "label": __("Report View") },
{ "value": "Growth", "label": __("Growth View") }
],
"default": "Report",
"reqd": 1
},
);

frappe.query_reports["Balance Sheet"]["filters"].push({
"fieldname": "accumulated_values",
"label": __("Accumulated Values"),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,21 @@ frappe.require("assets/erpnext/js/financial_statements.js", function() {

erpnext.utils.add_dimensions('Profit and Loss Statement', 10);

frappe.query_reports["Profit and Loss Statement"]["filters"].push(
{
"fieldname": "selectedView",
"label": __("Select View"),
"fieldtype": "Select",
"options": [
{ "value": "Report", "label": __("Report View") },
{ "value": "Growth", "label": __("Growth View") },
{ "value": "Margin", "label": __("Margin View") },
],
"default": "Report",
"reqd": 1
},
);

frappe.query_reports["Profit and Loss Statement"]["filters"].push(
{
"fieldname": "include_default_book_entries",
Expand Down
47 changes: 47 additions & 0 deletions erpnext/public/js/financial_statements.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,54 @@ frappe.provide("erpnext.financial_statements");

erpnext.financial_statements = {
"filters": get_filters(),
"baseData": null,
"formatter": function(value, row, column, data, default_formatter, filter) {
if(frappe.query_report.get_filter_value("selectedView") == "Growth" && data && column.colIndex >= 3){
const lastAnnualValue = row[column.colIndex - 1].content;
let currentAnnualvalue = data[column.fieldname];
if(currentAnnualvalue == undefined) return 'NA';
let diff = (currentAnnualvalue - lastAnnualValue);
let annualGrowth = 0;
console.log(lastAnnualValue);
if(lastAnnualValue == 0 && currentAnnualvalue > 0){
console.log("inside condition")
annualGrowth = 1;
}
else if(lastAnnualValue > 0){
annualGrowth = (currentAnnualvalue - lastAnnualValue) / lastAnnualValue;
}
console.log(annualGrowth);

growthPercent = (Math.round(annualGrowth*10000)/100);

value = $(`<span>${((growthPercent >=0)? '+':'' )+growthPercent+'%'}</span>`);
if(growthPercent < 0)
value = $(value).addClass("text-danger");
else
value = $(value).addClass("text-success");
value = $(value).wrap("<p></p>").parent().html();
return value;
}
else if(frappe.query_report.get_filter_value("selectedView") == "Margin" && data){
if(column.fieldname=="account" && data.account_name == "Income"){
this.baseData = row;
console.log(this.baseData);
}
if(column.colIndex >= 2){
let currentAnnualvalue = data[column.fieldname];
let baseValue = this.baseData[column.colIndex].content;
if(currentAnnualvalue == undefined) return 'NA';
let marginPercent = Math.round((currentAnnualvalue/baseValue)*10000)/100;
value = $(`<span>${marginPercent+'%'}</span>`);
if(marginPercent < 0)
value = $(value).addClass("text-danger");
else
value = $(value).addClass("text-success");
value = $(value).wrap("<p></p>").parent().html();
return value;
}

}
if (data && column.fieldname=="account") {
value = data.account_name || value;

Expand Down

0 comments on commit 7cd9b8c

Please sign in to comment.