From c150e5795e9fbcf4132ac1c64f9d11c9c7a0a0c2 Mon Sep 17 00:00:00 2001 From: ljain112 Date: Wed, 12 Nov 2025 18:59:45 +0530 Subject: [PATCH] fix: improve precision in tax amount calculations in tax withholding details report (cherry picked from commit 7c5f5405cc17ff1a56e55777af29507dbc512168) --- .../tax_withholding_details/tax_withholding_details.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/erpnext/accounts/report/tax_withholding_details/tax_withholding_details.py b/erpnext/accounts/report/tax_withholding_details/tax_withholding_details.py index c96510aa497..169de9cd801 100644 --- a/erpnext/accounts/report/tax_withholding_details/tax_withholding_details.py +++ b/erpnext/accounts/report/tax_withholding_details/tax_withholding_details.py @@ -4,7 +4,9 @@ import frappe from frappe import _ -from frappe.utils import getdate +from frappe.utils import flt, getdate + +from erpnext.accounts.utils import get_currency_precision def execute(filters=None): @@ -43,6 +45,7 @@ def get_result(filters, tds_docs, tds_accounts, tax_category_map, journal_entry_ party_map = get_party_pan_map(filters.get("party_type")) tax_rate_map = get_tax_rate_map(filters) gle_map = get_gle_map(tds_docs) + precision = get_currency_precision() out = [] entries = {} @@ -78,13 +81,13 @@ def get_result(filters, tds_docs, tds_accounts, tax_category_map, journal_entry_ if values: if voucher_type == "Journal Entry" and tax_amount and rate: # back calcalute total amount from rate and tax_amount - base_total = min(tax_amount / (rate / 100), values[0]) + base_total = min(flt(tax_amount / (rate / 100), precision=precision), values[0]) total_amount = grand_total = base_total else: if tax_amount and rate: # back calcalute total amount from rate and tax_amount - total_amount = (tax_amount * 100) / rate + total_amount = flt((tax_amount * 100) / rate, precision=precision) else: total_amount = values[0]