mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-13 02:01:21 +00:00
refactor: handle rounding diff for trx currency dr and cr
(cherry picked from commit 455a55b2ce)
This commit is contained in:
@@ -430,7 +430,7 @@ def process_debit_credit_difference(gl_map):
|
|||||||
voucher_no = gl_map[0].voucher_no
|
voucher_no = gl_map[0].voucher_no
|
||||||
allowance = get_debit_credit_allowance(voucher_type, precision)
|
allowance = get_debit_credit_allowance(voucher_type, precision)
|
||||||
|
|
||||||
debit_credit_diff = get_debit_credit_difference(gl_map, precision)
|
debit_credit_diff, trx_cur_debit_credit_diff = get_debit_credit_difference(gl_map, precision)
|
||||||
|
|
||||||
if abs(debit_credit_diff) > allowance:
|
if abs(debit_credit_diff) > allowance:
|
||||||
if not (
|
if not (
|
||||||
@@ -441,9 +441,9 @@ def process_debit_credit_difference(gl_map):
|
|||||||
raise_debit_credit_not_equal_error(debit_credit_diff, voucher_type, voucher_no)
|
raise_debit_credit_not_equal_error(debit_credit_diff, voucher_type, voucher_no)
|
||||||
|
|
||||||
elif abs(debit_credit_diff) >= (1.0 / (10**precision)):
|
elif abs(debit_credit_diff) >= (1.0 / (10**precision)):
|
||||||
make_round_off_gle(gl_map, debit_credit_diff, precision)
|
make_round_off_gle(gl_map, debit_credit_diff, trx_cur_debit_credit_diff, precision)
|
||||||
|
|
||||||
debit_credit_diff = get_debit_credit_difference(gl_map, precision)
|
debit_credit_diff, trx_cur_debit_credit_diff = get_debit_credit_difference(gl_map, precision)
|
||||||
if abs(debit_credit_diff) > allowance:
|
if abs(debit_credit_diff) > allowance:
|
||||||
if not (
|
if not (
|
||||||
voucher_type == "Journal Entry"
|
voucher_type == "Journal Entry"
|
||||||
@@ -455,14 +455,23 @@ def process_debit_credit_difference(gl_map):
|
|||||||
|
|
||||||
def get_debit_credit_difference(gl_map, precision):
|
def get_debit_credit_difference(gl_map, precision):
|
||||||
debit_credit_diff = 0.0
|
debit_credit_diff = 0.0
|
||||||
|
trx_cur_debit_credit_diff = 0
|
||||||
|
|
||||||
for entry in gl_map:
|
for entry in gl_map:
|
||||||
entry.debit = flt(entry.debit, precision)
|
entry.debit = flt(entry.debit, precision)
|
||||||
entry.credit = flt(entry.credit, precision)
|
entry.credit = flt(entry.credit, precision)
|
||||||
debit_credit_diff += entry.debit - entry.credit
|
debit_credit_diff += entry.debit - entry.credit
|
||||||
|
|
||||||
debit_credit_diff = flt(debit_credit_diff, precision)
|
entry.debit_in_transaction_currency = flt(entry.debit_in_transaction_currency, precision)
|
||||||
|
entry.credit_in_transaction_currency = flt(entry.credit_in_transaction_currency, precision)
|
||||||
|
trx_cur_debit_credit_diff += (
|
||||||
|
entry.debit_in_transaction_currency - entry.credit_in_transaction_currency
|
||||||
|
)
|
||||||
|
|
||||||
return debit_credit_diff
|
debit_credit_diff = flt(debit_credit_diff, precision)
|
||||||
|
trx_cur_debit_credit_diff = flt(trx_cur_debit_credit_diff, precision)
|
||||||
|
|
||||||
|
return debit_credit_diff, trx_cur_debit_credit_diff
|
||||||
|
|
||||||
|
|
||||||
def get_debit_credit_allowance(voucher_type, precision):
|
def get_debit_credit_allowance(voucher_type, precision):
|
||||||
@@ -489,7 +498,7 @@ def has_opening_entries(gl_map: list) -> bool:
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
def make_round_off_gle(gl_map, debit_credit_diff, precision):
|
def make_round_off_gle(gl_map, debit_credit_diff, trx_cur_debit_credit_diff, precision):
|
||||||
round_off_account, round_off_cost_center, round_off_for_opening = get_round_off_account_and_cost_center(
|
round_off_account, round_off_cost_center, round_off_for_opening = get_round_off_account_and_cost_center(
|
||||||
gl_map[0].company, gl_map[0].voucher_type, gl_map[0].voucher_no
|
gl_map[0].company, gl_map[0].voucher_type, gl_map[0].voucher_no
|
||||||
)
|
)
|
||||||
@@ -534,6 +543,12 @@ def make_round_off_gle(gl_map, debit_credit_diff, precision):
|
|||||||
"credit_in_account_currency": debit_credit_diff if debit_credit_diff > 0 else 0,
|
"credit_in_account_currency": debit_credit_diff if debit_credit_diff > 0 else 0,
|
||||||
"debit": abs(debit_credit_diff) if debit_credit_diff < 0 else 0,
|
"debit": abs(debit_credit_diff) if debit_credit_diff < 0 else 0,
|
||||||
"credit": debit_credit_diff if debit_credit_diff > 0 else 0,
|
"credit": debit_credit_diff if debit_credit_diff > 0 else 0,
|
||||||
|
"debit_in_transaction_currency": abs(trx_cur_debit_credit_diff)
|
||||||
|
if trx_cur_debit_credit_diff < 0
|
||||||
|
else 0,
|
||||||
|
"credit_in_transaction_currency": trx_cur_debit_credit_diff
|
||||||
|
if trx_cur_debit_credit_diff > 0
|
||||||
|
else 0,
|
||||||
"cost_center": round_off_cost_center,
|
"cost_center": round_off_cost_center,
|
||||||
"party_type": None,
|
"party_type": None,
|
||||||
"party": None,
|
"party": None,
|
||||||
|
|||||||
Reference in New Issue
Block a user