fix: tcs chargable amount
diff --git a/erpnext/accounts/doctype/tax_withholding_category/tax_withholding_category.py b/erpnext/accounts/doctype/tax_withholding_category/tax_withholding_category.py
index 36ed6de..f2c4973 100644
--- a/erpnext/accounts/doctype/tax_withholding_category/tax_withholding_category.py
+++ b/erpnext/accounts/doctype/tax_withholding_category/tax_withholding_category.py
@@ -53,6 +53,10 @@
frappe.throw(_('Please set associated account in Tax Withholding Category {0} against Company {1}')
.format(tax_withholding_category, ref_doc.company))
+ if party_type == 'Customer' and not tax_details.cumulative_threshold:
+ frappe.throw(_('Tax Withholding Category {} against Company {} for Customer {} should have Cumulative Threshold value.')
+ .format(tax_withholding_category, ref_doc.company, party))
+
tax_amount = get_tax_amount(
party_type, parties,
ref_doc, tax_details,
@@ -145,7 +149,7 @@
tax_amount = grand_total * tax_details.rate / 100 if grand_total > 0 else 0
else:
# if no tcs has been charged in FY,
- # then (prev invoices + advances) value crossing the threshold are chargeable
+ # then chargeable value is "prev invoices + advances" value which cross the threshold
tax_amount = get_tcs_amount(
parties, ref_doc, tax_details,
fiscal_year_details, vouchers, advance_vouchers
@@ -253,13 +257,13 @@
'voucher_type': 'Sales Invoice',
}, 'sum(credit)') or 0.0
- current_invoice_total = get_invoice_total_without_tcs(ref_doc, tax_details)
- chargeable_amt = current_invoice_total + invoiced_amt + advance_amt - credit_note_amt
-
- threshold = tax_details.get('threshold', 0)
cumulative_threshold = tax_details.get('cumulative_threshold', 0)
- if ((threshold and chargeable_amt >= threshold) or (cumulative_threshold and chargeable_amt >= cumulative_threshold)):
+ current_invoice_total = get_invoice_total_without_tcs(ref_doc, tax_details)
+ total_invoiced_amt = current_invoice_total + invoiced_amt + advance_amt - credit_note_amt
+
+ if ((cumulative_threshold and total_invoiced_amt >= cumulative_threshold)):
+ chargeable_amt = total_invoiced_amt - cumulative_threshold
tcs_amount = chargeable_amt * tax_details.rate / 100 if chargeable_amt > 0 else 0
return tcs_amount
diff --git a/erpnext/accounts/doctype/tax_withholding_category/test_tax_withholding_category.py b/erpnext/accounts/doctype/tax_withholding_category/test_tax_withholding_category.py
index c8bd083..1d8fa45 100644
--- a/erpnext/accounts/doctype/tax_withholding_category/test_tax_withholding_category.py
+++ b/erpnext/accounts/doctype/tax_withholding_category/test_tax_withholding_category.py
@@ -140,13 +140,13 @@
# create another invoice whose total when added to previously created invoice,
# surpasses cumulative threshhold
- si = create_sales_invoice(customer = "Test TCS Customer")
+ si = create_sales_invoice(customer = "Test TCS Customer", rate=12000)
si.submit()
# assert tax collection on total invoice amount created until now
tcs_charged = sum([d.base_tax_amount for d in si.taxes if d.account_head == 'TCS - _TC'])
- self.assertEqual(tcs_charged, 3000)
- self.assertEqual(si.grand_total, 13000)
+ self.assertEqual(tcs_charged, 200)
+ self.assertEqual(si.grand_total, 12200)
invoices.append(si)
# TCS is already collected once, so going forward system will collect TCS on every invoice