Merge pull request #54451 from vorasmit/tds-reports-refactor-backport

This commit is contained in:
Smit Vora
2026-04-23 15:25:46 +05:30
committed by GitHub
3 changed files with 27 additions and 20 deletions

View File

@@ -119,8 +119,8 @@ def get_result(filters, tds_accounts, tax_category_map, net_total_map):
row.update( row.update(
{ {
"section_code": tax_withholding_category or "", "tax_withholding_category": tax_withholding_category or "",
"entity_type": party_map.get(party, {}).get(party_type), "party_entity_type": party_map.get(party, {}).get(party_type),
"rate": rate, "rate": rate,
"total_amount": total_amount, "total_amount": total_amount,
"grand_total": grand_total, "grand_total": grand_total,
@@ -141,7 +141,7 @@ def get_result(filters, tds_accounts, tax_category_map, net_total_map):
else: else:
entries[key] = row entries[key] = row
out = list(entries.values()) out = list(entries.values())
out.sort(key=lambda x: (x["section_code"], x["transaction_date"], x["ref_no"])) out.sort(key=lambda x: (x["tax_withholding_category"], x["transaction_date"], x["ref_no"]))
return out return out
@@ -205,9 +205,9 @@ def get_columns(filters):
pan = "pan" if frappe.db.has_column(filters.party_type, "pan") else "tax_id" pan = "pan" if frappe.db.has_column(filters.party_type, "pan") else "tax_id"
columns = [ columns = [
{ {
"label": _("Section Code"), "label": _("Tax Withholding Category"),
"options": "Tax Withholding Category", "options": "Tax Withholding Category",
"fieldname": "section_code", "fieldname": "tax_withholding_category",
"fieldtype": "Link", "fieldtype": "Link",
"width": 90, "width": 90,
}, },
@@ -236,7 +236,12 @@ def get_columns(filters):
columns.extend( columns.extend(
[ [
{"label": _("Entity Type"), "fieldname": "entity_type", "fieldtype": "Data", "width": 100}, {
"label": _(f"{filters.get('party_type', 'Party')} Type"),
"fieldname": "party_entity_type",
"fieldtype": "Data",
"width": 100,
},
] ]
) )
if filters.party_type == "Supplier": if filters.party_type == "Supplier":

View File

@@ -118,7 +118,7 @@ class TestTaxWithholdingDetails(AccountsTestMixin, FrappeTestCase):
voucher_expected_values = expected_values[i] voucher_expected_values = expected_values[i]
voucher_actual_values = ( voucher_actual_values = (
voucher.ref_no, voucher.ref_no,
voucher.section_code, voucher.tax_withholding_category,
voucher.rate, voucher.rate,
voucher.base_tax_withholding_net_total, voucher.base_tax_withholding_net_total,
voucher.base_total, voucher.base_total,

View File

@@ -48,28 +48,25 @@ def group_by_party_and_category(data, filters):
party_category_wise_map = {} party_category_wise_map = {}
for row in data: for row in data:
key = (row.get("party_type"), row.get("party"), row.get("tax_withholding_category"))
party_category_wise_map.setdefault( party_category_wise_map.setdefault(
(row.get("party"), row.get("section_code")), key,
{ {
"pan": row.get("pan"), "pan": row.get("pan"),
"tax_id": row.get("tax_id"), "tax_id": row.get("tax_id"),
"party": row.get("party"), "party": row.get("party"),
"party_type": row.get("party_type"),
"party_name": row.get("party_name"), "party_name": row.get("party_name"),
"section_code": row.get("section_code"), "tax_withholding_category": row.get("tax_withholding_category"),
"entity_type": row.get("entity_type"), "party_entity_type": row.get("party_entity_type"),
"rate": row.get("rate"), "rate": row.get("rate"),
"total_amount": 0.0, "total_amount": 0.0,
"tax_amount": 0.0, "tax_amount": 0.0,
}, },
) )
party_category_wise_map.get((row.get("party"), row.get("section_code")))["total_amount"] += row.get( party_category_wise_map.get(key)["total_amount"] += row.get("total_amount", 0.0)
"total_amount", 0.0 party_category_wise_map.get(key)["tax_amount"] += row.get("tax_amount", 0.0)
)
party_category_wise_map.get((row.get("party"), row.get("section_code")))["tax_amount"] += row.get(
"tax_amount", 0.0
)
final_result = get_final_result(party_category_wise_map) final_result = get_final_result(party_category_wise_map)
@@ -110,13 +107,18 @@ def get_columns(filters):
columns.extend( columns.extend(
[ [
{ {
"label": _("Section Code"), "label": _("Tax Withholding Category"),
"options": "Tax Withholding Category", "options": "Tax Withholding Category",
"fieldname": "section_code", "fieldname": "tax_withholding_category",
"fieldtype": "Link", "fieldtype": "Link",
"width": 180, "width": 180,
}, },
{"label": _("Entity Type"), "fieldname": "entity_type", "fieldtype": "Data", "width": 180}, {
"label": _(f"{filters.get('party_type', 'Party')} Type"),
"fieldname": "party_entity_type",
"fieldtype": "Data",
"width": 180,
},
{ {
"label": _("TDS Rate %") if filters.get("party_type") == "Supplier" else _("TCS Rate %"), "label": _("TDS Rate %") if filters.get("party_type") == "Supplier" else _("TCS Rate %"),
"fieldname": "rate", "fieldname": "rate",