fix: Tax withholding net total for PI in reports
diff --git a/erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.json b/erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.json
index 5c1cb0d..1fa7e7f 100644
--- a/erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.json
+++ b/erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.json
@@ -40,7 +40,6 @@
"discount_amount",
"base_rate_with_margin",
"sec_break2",
- "apply_tds",
"rate",
"amount",
"item_tax_template",
@@ -50,6 +49,7 @@
"pricing_rules",
"stock_uom_rate",
"is_free_item",
+ "apply_tds",
"section_break_22",
"net_rate",
"net_amount",
@@ -871,16 +871,16 @@
"read_only": 1
},
{
- "default": "1",
- "fieldname": "apply_tds",
- "fieldtype": "Check",
- "label": "Apply TDS"
+ "default": "1",
+ "fieldname": "apply_tds",
+ "fieldtype": "Check",
+ "label": "Apply TDS"
}
],
"idx": 1,
"istable": 1,
"links": [],
- "modified": "2022-10-26 16:05:37.304788",
+ "modified": "2022-11-29 13:01:20.438217",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Purchase Invoice Item",
diff --git a/erpnext/accounts/report/tds_computation_summary/tds_computation_summary.py b/erpnext/accounts/report/tds_computation_summary/tds_computation_summary.py
index db3d5d4..c6aa21c 100644
--- a/erpnext/accounts/report/tds_computation_summary/tds_computation_summary.py
+++ b/erpnext/accounts/report/tds_computation_summary/tds_computation_summary.py
@@ -14,9 +14,17 @@
filters.naming_series = frappe.db.get_single_value("Buying Settings", "supp_master_name")
columns = get_columns(filters)
- tds_docs, tds_accounts, tax_category_map, journal_entry_party_map = get_tds_docs(filters)
+ (
+ tds_docs,
+ tds_accounts,
+ tax_category_map,
+ journal_entry_party_map,
+ invoice_total_map,
+ ) = get_tds_docs(filters)
- res = get_result(filters, tds_docs, tds_accounts, tax_category_map, journal_entry_party_map)
+ res = get_result(
+ filters, tds_docs, tds_accounts, tax_category_map, journal_entry_party_map, invoice_total_map
+ )
final_result = group_by_supplier_and_category(res)
return columns, final_result
diff --git a/erpnext/accounts/report/tds_payable_monthly/tds_payable_monthly.py b/erpnext/accounts/report/tds_payable_monthly/tds_payable_monthly.py
index f2809a9..9883890 100644
--- a/erpnext/accounts/report/tds_payable_monthly/tds_payable_monthly.py
+++ b/erpnext/accounts/report/tds_payable_monthly/tds_payable_monthly.py
@@ -8,11 +8,19 @@
def execute(filters=None):
validate_filters(filters)
- tds_docs, tds_accounts, tax_category_map, journal_entry_party_map = get_tds_docs(filters)
+ (
+ tds_docs,
+ tds_accounts,
+ tax_category_map,
+ journal_entry_party_map,
+ invoice_net_total_map,
+ ) = get_tds_docs(filters)
columns = get_columns(filters)
- res = get_result(filters, tds_docs, tds_accounts, tax_category_map, journal_entry_party_map)
+ res = get_result(
+ filters, tds_docs, tds_accounts, tax_category_map, journal_entry_party_map, invoice_net_total_map
+ )
return columns, res
@@ -22,7 +30,9 @@
frappe.throw(_("From Date must be before To Date"))
-def get_result(filters, tds_docs, tds_accounts, tax_category_map, journal_entry_party_map):
+def get_result(
+ filters, tds_docs, tds_accounts, tax_category_map, journal_entry_party_map, invoice_net_total_map
+):
supplier_map = get_supplier_pan_map()
tax_rate_map = get_tax_rate_map(filters)
gle_map = get_gle_map(tds_docs)
@@ -50,7 +60,10 @@
if entry.account in tds_accounts:
tds_deducted += entry.credit - entry.debit
- total_amount_credited += entry.credit
+ if invoice_net_total_map.get(name):
+ total_amount_credited = invoice_net_total_map.get(name)
+ else:
+ total_amount_credited += entry.credit
if tds_deducted:
row = {
@@ -179,9 +192,10 @@
purchase_invoices = []
payment_entries = []
journal_entries = []
- tax_category_map = {}
- or_filters = {}
- journal_entry_party_map = {}
+ tax_category_map = frappe._dict()
+ invoice_net_total_map = frappe._dict()
+ or_filters = frappe._dict()
+ journal_entry_party_map = frappe._dict()
bank_accounts = frappe.get_all("Account", {"is_group": 0, "account_type": "Bank"}, pluck="name")
tds_accounts = frappe.get_all(
@@ -218,16 +232,22 @@
tds_documents.append(d.voucher_no)
if purchase_invoices:
- get_tax_category_map(purchase_invoices, "Purchase Invoice", tax_category_map)
+ get_doc_info(purchase_invoices, "Purchase Invoice", tax_category_map, invoice_net_total_map)
if payment_entries:
- get_tax_category_map(payment_entries, "Payment Entry", tax_category_map)
+ get_doc_info(payment_entries, "Payment Entry", tax_category_map)
if journal_entries:
journal_entry_party_map = get_journal_entry_party_map(journal_entries)
- get_tax_category_map(journal_entries, "Journal Entry", tax_category_map)
+ get_doc_info(journal_entries, "Journal Entry", tax_category_map)
- return tds_documents, tds_accounts, tax_category_map, journal_entry_party_map
+ return (
+ tds_documents,
+ tds_accounts,
+ tax_category_map,
+ journal_entry_party_map,
+ invoice_net_total_map,
+ )
def get_journal_entry_party_map(journal_entries):
@@ -244,17 +264,18 @@
return journal_entry_party_map
-def get_tax_category_map(vouchers, doctype, tax_category_map):
- tax_category_map.update(
- frappe._dict(
- frappe.get_all(
- doctype,
- filters={"name": ("in", vouchers)},
- fields=["name", "tax_withholding_category"],
- as_list=1,
- )
- )
- )
+def get_doc_info(vouchers, doctype, tax_category_map, invoice_net_total_map=None):
+ if doctype == "Purchase Invoice":
+ fields = ["name", "tax_withholding_category", "base_tax_withholding_net_total"]
+ else:
+ fields = ["name", "tax_withholding_category"]
+
+ entries = frappe.get_all(doctype, filters={"name": ("in", vouchers)}, fields=fields)
+
+ for entry in entries:
+ tax_category_map.update({entry.name: entry.tax_withholding_category})
+ if doctype == "Purchase Invoice":
+ invoice_net_total_map.update({entry.name: entry.base_tax_withholding_net_total})
def get_tax_rate_map(filters):
diff --git a/erpnext/buying/doctype/purchase_order_item/purchase_order_item.json b/erpnext/buying/doctype/purchase_order_item/purchase_order_item.json
index d471783..c645b04 100644
--- a/erpnext/buying/doctype/purchase_order_item/purchase_order_item.json
+++ b/erpnext/buying/doctype/purchase_order_item/purchase_order_item.json
@@ -44,7 +44,6 @@
"discount_amount",
"base_rate_with_margin",
"sec_break2",
- "apply_tds",
"rate",
"amount",
"item_tax_template",
@@ -54,6 +53,7 @@
"pricing_rules",
"stock_uom_rate",
"is_free_item",
+ "apply_tds",
"section_break_29",
"net_rate",
"net_amount",
@@ -902,7 +902,7 @@
"index_web_pages_for_search": 1,
"istable": 1,
"links": [],
- "modified": "2022-10-26 16:47:41.364387",
+ "modified": "2022-11-29 16:47:41.364387",
"modified_by": "Administrator",
"module": "Buying",
"name": "Purchase Order Item",