mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-27 17:04:47 +00:00
Line/Bar chart in Balance Sheet / Profit and Loss statement
This commit is contained in:
@@ -28,7 +28,9 @@ def execute(filters=None):
|
|||||||
|
|
||||||
columns = get_columns(filters.periodicity, period_list, company=filters.company)
|
columns = get_columns(filters.periodicity, period_list, company=filters.company)
|
||||||
|
|
||||||
return columns, data, message
|
graph_data = get_graph_data(columns, asset, liability, equity)
|
||||||
|
|
||||||
|
return columns, data, message, graph_data
|
||||||
|
|
||||||
def get_provisional_profit_loss(asset, liability, equity, period_list, company):
|
def get_provisional_profit_loss(asset, liability, equity, period_list, company):
|
||||||
if asset and (liability or equity):
|
if asset and (liability or equity):
|
||||||
@@ -70,3 +72,20 @@ def check_opening_balance(asset, liability, equity):
|
|||||||
|
|
||||||
if opening_balance:
|
if opening_balance:
|
||||||
return _("Previous Financial Year is not closed")
|
return _("Previous Financial Year is not closed")
|
||||||
|
|
||||||
|
def get_graph_data(columns, asset, liability, equity):
|
||||||
|
x_intervals = ['x'] + [d.get("label") for d in columns[2:]]
|
||||||
|
|
||||||
|
asset_data, liability_data, equity_data = ["Assets"], ["Liabilities"], ["Equity"]
|
||||||
|
|
||||||
|
for p in columns[2:]:
|
||||||
|
asset_data.append(asset[-2].get(p.get("fieldname")))
|
||||||
|
liability_data.append(liability[-2].get(p.get("fieldname")))
|
||||||
|
equity_data.append(equity[-2].get(p.get("fieldname")))
|
||||||
|
|
||||||
|
return {
|
||||||
|
"data": {
|
||||||
|
'x': 'x',
|
||||||
|
'columns': [x_intervals, asset_data, liability_data, equity_data]
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -112,7 +112,7 @@ def get_data(company, root_type, balance_must_be, period_list,
|
|||||||
out = filter_out_zero_value_rows(out, parent_children_map)
|
out = filter_out_zero_value_rows(out, parent_children_map)
|
||||||
|
|
||||||
if out:
|
if out:
|
||||||
add_total_row(out, balance_must_be, period_list, company_currency)
|
add_total_row(out, root_type, balance_must_be, period_list, company_currency)
|
||||||
|
|
||||||
return out
|
return out
|
||||||
|
|
||||||
@@ -193,9 +193,9 @@ def filter_out_zero_value_rows(data, parent_children_map, show_zero_values=False
|
|||||||
|
|
||||||
return data_with_value
|
return data_with_value
|
||||||
|
|
||||||
def add_total_row(out, balance_must_be, period_list, company_currency):
|
def add_total_row(out, root_type, balance_must_be, period_list, company_currency):
|
||||||
total_row = {
|
total_row = {
|
||||||
"account_name": "'" + _("Total ({0})").format(balance_must_be) + "'",
|
"account_name": "'" + _("Total {0} ({1})").format(root_type, balance_must_be) + "'",
|
||||||
"account": None,
|
"account": None,
|
||||||
"currency": company_currency
|
"currency": company_currency
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,7 +25,9 @@ def execute(filters=None):
|
|||||||
|
|
||||||
columns = get_columns(filters.periodicity, period_list, filters.accumulated_values, filters.company)
|
columns = get_columns(filters.periodicity, period_list, filters.accumulated_values, filters.company)
|
||||||
|
|
||||||
return columns, data
|
graph_data = get_graph_data(filters, columns, income, expense, net_profit_loss)
|
||||||
|
|
||||||
|
return columns, data, None, graph_data
|
||||||
|
|
||||||
def get_net_profit_loss(income, expense, period_list, company):
|
def get_net_profit_loss(income, expense, period_list, company):
|
||||||
if income and expense:
|
if income and expense:
|
||||||
@@ -50,3 +52,25 @@ def get_net_profit_loss(income, expense, period_list, company):
|
|||||||
|
|
||||||
if has_value:
|
if has_value:
|
||||||
return net_profit_loss
|
return net_profit_loss
|
||||||
|
|
||||||
|
def get_graph_data(filters, columns, income, expense, net_profit_loss):
|
||||||
|
x_intervals = ['x'] + [d.get("label") for d in columns[2:-1]]
|
||||||
|
|
||||||
|
income_data, expense_data, net_profit = ["Income"], ["Expense"], ["Net Profit/Loss"]
|
||||||
|
|
||||||
|
for p in columns[2:]:
|
||||||
|
income_data.append(income[-2].get(p.get("fieldname")))
|
||||||
|
expense_data.append(expense[-2].get(p.get("fieldname")))
|
||||||
|
net_profit.append(net_profit_loss.get(p.get("fieldname")))
|
||||||
|
|
||||||
|
graph_data = {
|
||||||
|
"data": {
|
||||||
|
'x': 'x',
|
||||||
|
'columns': [x_intervals, income_data, expense_data, net_profit]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if not filters.accumulated_values:
|
||||||
|
graph_data["data"]["type"] = "bar"
|
||||||
|
|
||||||
|
return graph_data
|
||||||
@@ -28,7 +28,7 @@ erpnext.financial_statements = {
|
|||||||
{ "value": "Half-Yearly", "label": __("Half-Yearly") },
|
{ "value": "Half-Yearly", "label": __("Half-Yearly") },
|
||||||
{ "value": "Yearly", "label": __("Yearly") }
|
{ "value": "Yearly", "label": __("Yearly") }
|
||||||
],
|
],
|
||||||
"default": "Yearly",
|
"default": "Monthly",
|
||||||
"reqd": 1
|
"reqd": 1
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@@ -83,5 +83,5 @@ erpnext.financial_statements = {
|
|||||||
var filters = report.get_values();
|
var filters = report.get_values();
|
||||||
frappe.set_route('query-report', 'Cash Flow', {company: filters.company});
|
frappe.set_route('query-report', 'Cash Flow', {company: filters.company});
|
||||||
}, 'Financial Statements');
|
}, 'Financial Statements');
|
||||||
},
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user