From 748c3d9e8bd5e18462e0f39a09bdc6f721f6dab1 Mon Sep 17 00:00:00 2001 From: Shivam Mishra Date: Tue, 14 Jan 2020 17:31:19 +0530 Subject: [PATCH] feat: update profit and loss for new report summary API --- .../profit_and_loss_statement.py | 47 ++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) diff --git a/erpnext/accounts/report/profit_and_loss_statement/profit_and_loss_statement.py b/erpnext/accounts/report/profit_and_loss_statement/profit_and_loss_statement.py index d500c8116e..08cabed13b 100644 --- a/erpnext/accounts/report/profit_and_loss_statement/profit_and_loss_statement.py +++ b/erpnext/accounts/report/profit_and_loss_statement/profit_and_loss_statement.py @@ -31,7 +31,52 @@ def execute(filters=None): chart = get_chart_data(filters, columns, income, expense, net_profit_loss) - return columns, data, None, chart + report_summary = get_report_summary(columns, income, expense, net_profit_loss, filters.periodicity, period_list) + + return columns, data, None, chart, report_summary + +def get_report_summary(columns, income, expense, net_profit_loss, period_list, periodicity): + income_data, expense_data, net_profit = [], [], [] + + for p in columns[2:]: + if income: + income_data.append(income[-2].get(p.get("fieldname"))) + if expense: + expense_data.append(expense[-2].get(p.get("fieldname"))) + if net_profit_loss: + net_profit.append(net_profit_loss.get(p.get("fieldname"))) + + if (len(period_list) == 1 and periodicity== 'Yearly'): + profit_label = _("Profit This Year") + income_label = _("Total Income This Year") + expense_label = _("Total Expense This Year") + else: + profit_label = _("Net Profit") + income_label = _("Total Income") + expense_label = _("Total Expense") + + return [ + { + "value": net_profit[-1], + "indicator": "Green" if income_data[-1] > 0 else "Red", + "label": profit_label, + "datatype": "Currency", + "currency": net_profit_loss.get("currency") + }, + { + "value": income_data[-1], + "label": income_label, + "datatype": "Currency", + "currency": income[-1].get('currency') + }, + { + "value": expense_data[-1], + "label": expense_label, + "datatype": "Currency", + "currency": expense[-1].get('currency') + } + ] + def get_net_profit_loss(income, expense, period_list, company, currency=None, consolidated=False): total = 0