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",