mirror of
https://github.com/frappe/erpnext.git
synced 2026-06-05 05:09:11 +00:00
fix: Report summary showing inflated values when values are accumulated in Group Company (#25577)
* fix: Report summary showing inflated values when values are accumullated in Group Company * fix: Remove extra space * fix: Translate strings * fix: Remove unintended changes
This commit is contained in:
@@ -5,7 +5,8 @@ from __future__ import unicode_literals
|
|||||||
import frappe
|
import frappe
|
||||||
from frappe import _
|
from frappe import _
|
||||||
from frappe.utils import flt, cint
|
from frappe.utils import flt, cint
|
||||||
from erpnext.accounts.report.financial_statements import (get_period_list, get_columns, get_data)
|
from erpnext.accounts.report.financial_statements import (get_period_list, get_columns, get_data,
|
||||||
|
get_filtered_list_for_consolidated_report)
|
||||||
|
|
||||||
def execute(filters=None):
|
def execute(filters=None):
|
||||||
period_list = get_period_list(filters.from_fiscal_year, filters.to_fiscal_year,
|
period_list = get_period_list(filters.from_fiscal_year, filters.to_fiscal_year,
|
||||||
@@ -132,6 +133,10 @@ def get_report_summary(period_list, asset, liability, equity, provisional_profit
|
|||||||
if filters.get('accumulated_values'):
|
if filters.get('accumulated_values'):
|
||||||
period_list = [period_list[-1]]
|
period_list = [period_list[-1]]
|
||||||
|
|
||||||
|
# from consolidated financial statement
|
||||||
|
if filters.get('accumulated_in_group_company'):
|
||||||
|
period_list = get_filtered_list_for_consolidated_report(period_list)
|
||||||
|
|
||||||
for period in period_list:
|
for period in period_list:
|
||||||
key = period if consolidated else period.key
|
key = period if consolidated else period.key
|
||||||
if asset:
|
if asset:
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ from __future__ import unicode_literals
|
|||||||
import frappe
|
import frappe
|
||||||
from frappe import _
|
from frappe import _
|
||||||
from frappe.utils import cint, cstr
|
from frappe.utils import cint, cstr
|
||||||
from erpnext.accounts.report.financial_statements import (get_period_list, get_columns, get_data)
|
from erpnext.accounts.report.financial_statements import (get_period_list, get_columns, get_data, get_filtered_list_for_consolidated_report)
|
||||||
from erpnext.accounts.report.profit_and_loss_statement.profit_and_loss_statement import get_net_profit_loss
|
from erpnext.accounts.report.profit_and_loss_statement.profit_and_loss_statement import get_net_profit_loss
|
||||||
from erpnext.accounts.utils import get_fiscal_year
|
from erpnext.accounts.utils import get_fiscal_year
|
||||||
from six import iteritems
|
from six import iteritems
|
||||||
@@ -67,9 +67,9 @@ def execute(filters=None):
|
|||||||
section_data.append(account_data)
|
section_data.append(account_data)
|
||||||
|
|
||||||
add_total_row_account(data, section_data, cash_flow_account['section_footer'],
|
add_total_row_account(data, section_data, cash_flow_account['section_footer'],
|
||||||
period_list, company_currency, summary_data)
|
period_list, company_currency, summary_data, filters)
|
||||||
|
|
||||||
add_total_row_account(data, data, _("Net Change in Cash"), period_list, company_currency, summary_data)
|
add_total_row_account(data, data, _("Net Change in Cash"), period_list, company_currency, summary_data, filters)
|
||||||
columns = get_columns(filters.periodicity, period_list, filters.accumulated_values, filters.company)
|
columns = get_columns(filters.periodicity, period_list, filters.accumulated_values, filters.company)
|
||||||
|
|
||||||
chart = get_chart_data(columns, data)
|
chart = get_chart_data(columns, data)
|
||||||
@@ -162,18 +162,26 @@ def get_start_date(period, accumulated_values, company):
|
|||||||
|
|
||||||
return start_date
|
return start_date
|
||||||
|
|
||||||
def add_total_row_account(out, data, label, period_list, currency, summary_data, consolidated = False):
|
def add_total_row_account(out, data, label, period_list, currency, summary_data, filters, consolidated=False):
|
||||||
total_row = {
|
total_row = {
|
||||||
"account_name": "'" + _("{0}").format(label) + "'",
|
"account_name": "'" + _("{0}").format(label) + "'",
|
||||||
"account": "'" + _("{0}").format(label) + "'",
|
"account": "'" + _("{0}").format(label) + "'",
|
||||||
"currency": currency
|
"currency": currency
|
||||||
}
|
}
|
||||||
|
|
||||||
|
summary_data[label] = 0
|
||||||
|
|
||||||
|
# from consolidated financial statement
|
||||||
|
if filters.get('accumulated_in_group_company'):
|
||||||
|
period_list = get_filtered_list_for_consolidated_report(filters, period_list)
|
||||||
|
|
||||||
for row in data:
|
for row in data:
|
||||||
if row.get("parent_account"):
|
if row.get("parent_account"):
|
||||||
for period in period_list:
|
for period in period_list:
|
||||||
key = period if consolidated else period['key']
|
key = period if consolidated else period['key']
|
||||||
total_row.setdefault(key, 0.0)
|
total_row.setdefault(key, 0.0)
|
||||||
total_row[key] += row.get(key, 0.0)
|
total_row[key] += row.get(key, 0.0)
|
||||||
|
summary_data[label] += row.get(key)
|
||||||
|
|
||||||
total_row.setdefault("total", 0.0)
|
total_row.setdefault("total", 0.0)
|
||||||
total_row["total"] += row["total"]
|
total_row["total"] += row["total"]
|
||||||
@@ -181,7 +189,6 @@ def add_total_row_account(out, data, label, period_list, currency, summary_data,
|
|||||||
out.append(total_row)
|
out.append(total_row)
|
||||||
out.append({})
|
out.append({})
|
||||||
|
|
||||||
summary_data[label] = total_row["total"]
|
|
||||||
|
|
||||||
def get_report_summary(summary_data, currency):
|
def get_report_summary(summary_data, currency):
|
||||||
report_summary = []
|
report_summary = []
|
||||||
|
|||||||
@@ -94,7 +94,7 @@ def get_profit_loss_data(fiscal_year, companies, columns, filters):
|
|||||||
|
|
||||||
chart = get_pl_chart_data(filters, columns, income, expense, net_profit_loss)
|
chart = get_pl_chart_data(filters, columns, income, expense, net_profit_loss)
|
||||||
|
|
||||||
report_summary = get_pl_summary(companies, '', income, expense, net_profit_loss, company_currency, True)
|
report_summary = get_pl_summary(companies, '', income, expense, net_profit_loss, company_currency, filters, True)
|
||||||
|
|
||||||
return data, None, chart, report_summary
|
return data, None, chart, report_summary
|
||||||
|
|
||||||
@@ -149,9 +149,9 @@ def get_cash_flow_data(fiscal_year, companies, filters):
|
|||||||
section_data.append(account_data)
|
section_data.append(account_data)
|
||||||
|
|
||||||
add_total_row_account(data, section_data, cash_flow_account['section_footer'],
|
add_total_row_account(data, section_data, cash_flow_account['section_footer'],
|
||||||
companies, company_currency, summary_data, True)
|
companies, company_currency, summary_data, filters, True)
|
||||||
|
|
||||||
add_total_row_account(data, data, _("Net Change in Cash"), companies, company_currency, summary_data, True)
|
add_total_row_account(data, data, _("Net Change in Cash"), companies, company_currency, summary_data, filters, True)
|
||||||
|
|
||||||
report_summary = get_cash_flow_summary(summary_data, company_currency)
|
report_summary = get_cash_flow_summary(summary_data, company_currency)
|
||||||
|
|
||||||
|
|||||||
@@ -119,10 +119,10 @@ def validate_fiscal_year(fiscal_year, from_fiscal_year, to_fiscal_year):
|
|||||||
|
|
||||||
def validate_dates(from_date, to_date):
|
def validate_dates(from_date, to_date):
|
||||||
if not from_date or not to_date:
|
if not from_date or not to_date:
|
||||||
frappe.throw("From Date and To Date are mandatory")
|
frappe.throw(_("From Date and To Date are mandatory"))
|
||||||
|
|
||||||
if to_date < from_date:
|
if to_date < from_date:
|
||||||
frappe.throw("To Date cannot be less than From Date")
|
frappe.throw(_("To Date cannot be less than From Date"))
|
||||||
|
|
||||||
def get_months(start_date, end_date):
|
def get_months(start_date, end_date):
|
||||||
diff = (12 * end_date.year + end_date.month) - (12 * start_date.year + start_date.month)
|
diff = (12 * end_date.year + end_date.month) - (12 * start_date.year + start_date.month)
|
||||||
@@ -523,3 +523,11 @@ def get_columns(periodicity, period_list, accumulated_values=1, company=None):
|
|||||||
})
|
})
|
||||||
|
|
||||||
return columns
|
return columns
|
||||||
|
|
||||||
|
def get_filtered_list_for_consolidated_report(filters, period_list):
|
||||||
|
filtered_summary_list = []
|
||||||
|
for period in period_list:
|
||||||
|
if period == filters.get('company'):
|
||||||
|
filtered_summary_list.append(period)
|
||||||
|
|
||||||
|
return filtered_summary_list
|
||||||
|
|||||||
@@ -5,7 +5,8 @@ from __future__ import unicode_literals
|
|||||||
import frappe
|
import frappe
|
||||||
from frappe import _
|
from frappe import _
|
||||||
from frappe.utils import flt
|
from frappe.utils import flt
|
||||||
from erpnext.accounts.report.financial_statements import (get_period_list, get_columns, get_data)
|
from erpnext.accounts.report.financial_statements import (get_period_list, get_columns, get_data,
|
||||||
|
get_filtered_list_for_consolidated_report)
|
||||||
|
|
||||||
def execute(filters=None):
|
def execute(filters=None):
|
||||||
period_list = get_period_list(filters.from_fiscal_year, filters.to_fiscal_year,
|
period_list = get_period_list(filters.from_fiscal_year, filters.to_fiscal_year,
|
||||||
@@ -33,13 +34,17 @@ def execute(filters=None):
|
|||||||
chart = get_chart_data(filters, columns, income, expense, net_profit_loss)
|
chart = get_chart_data(filters, columns, income, expense, net_profit_loss)
|
||||||
|
|
||||||
currency = filters.presentation_currency or frappe.get_cached_value('Company', filters.company, "default_currency")
|
currency = filters.presentation_currency or frappe.get_cached_value('Company', filters.company, "default_currency")
|
||||||
report_summary = get_report_summary(period_list, filters.periodicity, income, expense, net_profit_loss, currency)
|
report_summary = get_report_summary(period_list, filters.periodicity, income, expense, net_profit_loss, currency, filters)
|
||||||
|
|
||||||
return columns, data, None, chart, report_summary
|
return columns, data, None, chart, report_summary
|
||||||
|
|
||||||
def get_report_summary(period_list, periodicity, income, expense, net_profit_loss, currency, consolidated=False):
|
def get_report_summary(period_list, periodicity, income, expense, net_profit_loss, currency, filters, consolidated=False):
|
||||||
net_income, net_expense, net_profit = 0.0, 0.0, 0.0
|
net_income, net_expense, net_profit = 0.0, 0.0, 0.0
|
||||||
|
|
||||||
|
# from consolidated financial statement
|
||||||
|
if filters.get('accumulated_in_group_company'):
|
||||||
|
period_list = get_filtered_list_for_consolidated_report(filters, period_list)
|
||||||
|
|
||||||
for period in period_list:
|
for period in period_list:
|
||||||
key = period if consolidated else period.key
|
key = period if consolidated else period.key
|
||||||
if income:
|
if income:
|
||||||
|
|||||||
Reference in New Issue
Block a user