fixes #9098: don't skip calculation if income or expense is [] (#9267)
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 95085b9..6729d67 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
@@ -34,28 +34,31 @@
return columns, data, None, chart
def get_net_profit_loss(income, expense, period_list, company):
- if income and expense:
- total = 0
- net_profit_loss = {
- "account_name": "'" + _("Net Profit / Loss") + "'",
- "account": "'" + _("Net Profit / Loss") + "'",
- "warn_if_negative": True,
- "currency": frappe.db.get_value("Company", company, "default_currency")
- }
+ total = 0
+ net_profit_loss = {
+ "account_name": "'" + _("Net Profit / Loss") + "'",
+ "account": "'" + _("Net Profit / Loss") + "'",
+ "warn_if_negative": True,
+ "currency": frappe.db.get_value("Company", company, "default_currency")
+ }
- has_value = False
+ has_value = False
- for period in period_list:
- net_profit_loss[period.key] = flt(income[-2][period.key] - expense[-2][period.key], 3)
+ for period in period_list:
+ total_income = flt(income[-2][period.key], 3) if income else 0
+ total_expense = flt(expense[-2][period.key], 3) if expense else 0
- if net_profit_loss[period.key]:
- has_value=True
+ net_profit_loss[period.key] = total_income - total_expense
- total += flt(net_profit_loss[period.key])
- net_profit_loss["total"] = total
+ if net_profit_loss[period.key]:
+ has_value=True
- if has_value:
- return net_profit_loss
+ total += flt(net_profit_loss[period.key])
+ net_profit_loss["total"] = total
+
+ if has_value:
+ return net_profit_loss
+
def get_chart_data(filters, columns, income, expense, net_profit_loss):
x_intervals = ['x'] + [d.get("label") for d in columns[2:]]