From 37dffa72738133dcbccbb8e3ec8cfcf5c1a9ed97 Mon Sep 17 00:00:00 2001 From: vorasmit Date: Thu, 18 Jun 2026 20:15:03 +0530 Subject: [PATCH] fix: tax.base_tax_amount as none when payment entry created using API (cherry picked from commit b9b402f2eca1fca77451fa860bc55b7a65cd8496) --- .../doctype/payment_entry/payment_entry.py | 4 ++-- .../payment_entry/test_payment_entry.py | 21 +++++++++++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.py b/erpnext/accounts/doctype/payment_entry/payment_entry.py index 26c980a1946..148dd4edcc5 100644 --- a/erpnext/accounts/doctype/payment_entry/payment_entry.py +++ b/erpnext/accounts/doctype/payment_entry/payment_entry.py @@ -1197,9 +1197,9 @@ class PaymentEntry(AccountsController): continue if tax.add_deduct_tax == "Add": - included_taxes += tax.base_tax_amount + included_taxes += flt(tax.base_tax_amount) else: - included_taxes -= tax.base_tax_amount + included_taxes -= flt(tax.base_tax_amount) return included_taxes diff --git a/erpnext/accounts/doctype/payment_entry/test_payment_entry.py b/erpnext/accounts/doctype/payment_entry/test_payment_entry.py index 79bd66f735a..c52193cc469 100644 --- a/erpnext/accounts/doctype/payment_entry/test_payment_entry.py +++ b/erpnext/accounts/doctype/payment_entry/test_payment_entry.py @@ -1118,6 +1118,27 @@ class TestPaymentEntry(FrappeTestCase): self.assertEqual(gl_entries, expected_gl_entries) + def test_payment_entry_with_inclusive_tax(self): + # inclusive tax built server-side: base_tax_amount is None until apply_taxes() + payment_entry = create_payment_entry(paid_amount=1180) + payment_entry.append( + "taxes", + { + "account_head": "_Test Account Service Tax - _TC", + "charge_type": "On Paid Amount", + "rate": 18, + "included_in_paid_amount": 1, + "add_deduct_tax": "Add", + "description": "Service Tax", + }, + ) + payment_entry.save() + payment_entry.submit() + + # 1180 incl 18% => 1000 base + 180 tax + self.assertEqual(flt(payment_entry.total_taxes_and_charges, 2), 180.0) + self.assertEqual(flt(payment_entry.unallocated_amount, 2), 1000.0) + def test_payment_entry_against_onhold_purchase_invoice(self): pi = make_purchase_invoice()