mirror of
https://github.com/frappe/erpnext.git
synced 2026-03-20 18:54:55 +00:00
fix: incorrectly applying TDS when Advance is in previous FY
(cherry picked from commit b195f519e2)
This commit is contained in:
@@ -282,6 +282,14 @@ def get_tax_amount(party_type, parties, inv, tax_details, posting_date, pan_no=N
|
|||||||
if taxable_vouchers:
|
if taxable_vouchers:
|
||||||
tax_deducted = get_deducted_tax(taxable_vouchers, tax_details)
|
tax_deducted = get_deducted_tax(taxable_vouchers, tax_details)
|
||||||
|
|
||||||
|
# If advance is outside the current tax withholding period (usually a fiscal year), `get_deducted_tax` won't fetch it.
|
||||||
|
# updating `tax_deducted` with correct advance tax value (from current and previous previous withholding periods), will allow the
|
||||||
|
# rest of the below logic to function properly
|
||||||
|
# ---FY 2023-------------||---------------------FY 2024-----------------------||--
|
||||||
|
# ---Advance-------------||---------Inv_1--------Inv_2------------------------||--
|
||||||
|
if tax_deducted_on_advances:
|
||||||
|
tax_deducted += get_advance_tax_across_fiscal_year(tax_deducted_on_advances, tax_details)
|
||||||
|
|
||||||
tax_amount = 0
|
tax_amount = 0
|
||||||
|
|
||||||
if party_type == "Supplier":
|
if party_type == "Supplier":
|
||||||
@@ -418,7 +426,7 @@ def get_taxes_deducted_on_advances_allocated(inv, tax_details):
|
|||||||
frappe.qb.from_(at)
|
frappe.qb.from_(at)
|
||||||
.inner_join(pe)
|
.inner_join(pe)
|
||||||
.on(pe.name == at.parent)
|
.on(pe.name == at.parent)
|
||||||
.select(at.parent, at.name, at.tax_amount, at.allocated_amount)
|
.select(pe.posting_date, at.parent, at.name, at.tax_amount, at.allocated_amount)
|
||||||
.where(pe.tax_withholding_category == tax_details.get("tax_withholding_category"))
|
.where(pe.tax_withholding_category == tax_details.get("tax_withholding_category"))
|
||||||
.where(at.parent.isin(advances))
|
.where(at.parent.isin(advances))
|
||||||
.where(at.account_head == tax_details.account_head)
|
.where(at.account_head == tax_details.account_head)
|
||||||
@@ -443,6 +451,16 @@ def get_deducted_tax(taxable_vouchers, tax_details):
|
|||||||
return sum(entries)
|
return sum(entries)
|
||||||
|
|
||||||
|
|
||||||
|
def get_advance_tax_across_fiscal_year(tax_deducted_on_advances, tax_details):
|
||||||
|
"""
|
||||||
|
Only applies for Taxes deducted on Advance Payments
|
||||||
|
"""
|
||||||
|
advance_tax_from_across_fiscal_year = sum(
|
||||||
|
[adv.tax_amount for adv in tax_deducted_on_advances if adv.posting_date < tax_details.from_date]
|
||||||
|
)
|
||||||
|
return advance_tax_from_across_fiscal_year
|
||||||
|
|
||||||
|
|
||||||
def get_tds_amount(ldc, parties, inv, tax_details, vouchers):
|
def get_tds_amount(ldc, parties, inv, tax_details, vouchers):
|
||||||
tds_amount = 0
|
tds_amount = 0
|
||||||
invoice_filters = {"name": ("in", vouchers), "docstatus": 1, "apply_tds": 1}
|
invoice_filters = {"name": ("in", vouchers), "docstatus": 1, "apply_tds": 1}
|
||||||
|
|||||||
Reference in New Issue
Block a user