rounding off fixes and conversion fix (#15140)
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
index 5d7e79b..d1ef3a6 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
@@ -865,7 +865,7 @@
self.get_gl_dict({
"account": round_off_account,
"against": self.customer,
- "credit_in_account_currency": self.rounding_adjustment,
+ "credit_in_account_currency": self.base_rounding_adjustment,
"credit": self.base_rounding_adjustment,
"cost_center": round_off_cost_center,
}
diff --git a/erpnext/accounts/general_ledger.py b/erpnext/accounts/general_ledger.py
index 1a8965e..a661c03 100644
--- a/erpnext/accounts/general_ledger.py
+++ b/erpnext/accounts/general_ledger.py
@@ -139,11 +139,21 @@
def make_round_off_gle(gl_map, debit_credit_diff):
round_off_account, round_off_cost_center = get_round_off_account_and_cost_center(gl_map[0].company)
-
+ round_off_account_exists = False
round_off_gle = frappe._dict()
- for k in ["voucher_type", "voucher_no", "company",
- "posting_date", "remarks", "is_opening"]:
- round_off_gle[k] = gl_map[0][k]
+ for d in gl_map:
+ if d.account == round_off_account:
+ round_off_gle = d
+ if d.debit_in_account_currency:
+ debit_credit_diff -= flt(d.debit_in_account_currency)
+ else:
+ debit_credit_diff += flt(d.credit_in_account_currency)
+ round_off_account_exists = True
+
+ if not round_off_gle:
+ for k in ["voucher_type", "voucher_no", "company",
+ "posting_date", "remarks", "is_opening"]:
+ round_off_gle[k] = gl_map[0][k]
round_off_gle.update({
"account": round_off_account,
@@ -158,7 +168,8 @@
"against_voucher": None
})
- gl_map.append(round_off_gle)
+ if not round_off_account_exists:
+ gl_map.append(round_off_gle)
def get_round_off_account_and_cost_center(company):
round_off_account, round_off_cost_center = frappe.get_cached_value('Company', company,
diff --git a/erpnext/accounts/report/general_ledger/general_ledger.py b/erpnext/accounts/report/general_ledger/general_ledger.py
index f199797..7e579ac 100644
--- a/erpnext/accounts/report/general_ledger/general_ledger.py
+++ b/erpnext/accounts/report/general_ledger/general_ledger.py
@@ -89,12 +89,11 @@
account_currency = gle_currency
else:
account_currency = (None if filters.party_type in ["Employee", "Student", "Shareholder", "Member"] else
- frappe.db.get_value(filters.party_type, filters.party, "default_currency"))
+ frappe.db.get_value(filters.party_type, filters.party[0], "default_currency"))
filters["account_currency"] = account_currency or filters.company_currency
-
if filters.account_currency != filters.company_currency:
- filters["show_in_account_currency"] = 1
+ filters.presentation_currency = filters.account_currency
return filters
@@ -294,15 +293,6 @@
balance = get_balance(d, balance, 'debit', 'credit')
d['balance'] = balance
- if filters.get("show_in_account_currency"):
- balance_in_account_currency = get_balance(d, balance_in_account_currency,
- 'debit_in_account_currency', 'credit_in_account_currency')
- d['balance_in_account_currency'] = balance_in_account_currency
- else:
- d['debit_in_account_currency'] = d.get('debit', 0)
- d['credit_in_account_currency'] = d.get('credit', 0)
- d['balance_in_account_currency'] = d.get('balance')
-
d['account_currency'] = filters.account_currency
d['bill_no'] = inv_details.get(d.get('against_voucher'), '')
diff --git a/erpnext/accounts/report/utils.py b/erpnext/accounts/report/utils.py
index d1995d2..e33bd83 100644
--- a/erpnext/accounts/report/utils.py
+++ b/erpnext/accounts/report/utils.py
@@ -2,7 +2,7 @@
from erpnext import get_company_currency, get_default_company
from erpnext.setup.utils import get_exchange_rate
from erpnext.accounts.doctype.fiscal_year.fiscal_year import get_from_and_to_date
-from frappe.utils import cint, get_datetime_str, formatdate
+from frappe.utils import cint, get_datetime_str, formatdate, flt
__exchange_rates = {}
P_OR_L_ACCOUNTS = list(
@@ -49,7 +49,7 @@
:return: Result of converting `value`
"""
rate = get_rate_as_at(date, from_, to)
- converted_value = value / (rate or 1)
+ converted_value = flt(value) / (rate or 1)
return converted_value
@@ -97,17 +97,16 @@
for entry in gl_entries:
account = entry['account']
- debit = cint(entry['debit'])
- credit = cint(entry['credit'])
- debit_in_account_currency = cint(entry['debit_in_account_currency'])
- credit_in_account_currency = cint(entry['credit_in_account_currency'])
+ debit = flt(entry['debit'])
+ credit = flt(entry['credit'])
+ debit_in_account_currency = flt(entry['debit_in_account_currency'])
+ credit_in_account_currency = flt(entry['credit_in_account_currency'])
account_currency = entry['account_currency']
if account_currency != presentation_currency or (account_currency == presentation_currency and not is_p_or_l_account(account)):
value = debit or credit
date = currency_info['report_date'] if not is_p_or_l_account(account) else entry['posting_date']
-
converted_value = convert(value, presentation_currency, company_currency, date)
if entry.get('debit'):