Fix tests (#14991)

* minor improv in fetching account

* pass name field while creating tds doc

* create tds fixture after creating tds account

* Inpatient Record - Test - Fix

* fix batch query
diff --git a/erpnext/healthcare/doctype/inpatient_record/test_inpatient_record.py b/erpnext/healthcare/doctype/inpatient_record/test_inpatient_record.py
index 91cc417..b192064 100644
--- a/erpnext/healthcare/doctype/inpatient_record/test_inpatient_record.py
+++ b/erpnext/healthcare/doctype/inpatient_record/test_inpatient_record.py
@@ -31,6 +31,7 @@
 		self.assertEqual(0, frappe.db.get_value("Healthcare Service Unit", service_unit, "occupied"))
 
 	def test_validate_overlap_admission(self):
+		frappe.db.sql("""delete from `tabInpatient Record`""")
 		patient = get_patient()
 
 		ip_record = create_inpatient(patient)
@@ -42,6 +43,7 @@
 		admit_patient(ip_record, service_unit, now_datetime())
 		ip_record_new = create_inpatient(patient)
 		self.assertRaises(frappe.ValidationError, ip_record_new.save)
+		frappe.db.sql("""delete from `tabInpatient Record`""")
 
 def create_inpatient(patient):
 	patient_obj = frappe.get_doc('Patient', patient)
@@ -77,6 +79,18 @@
 		service_unit.service_unit_type = get_service_unit_type()
 		service_unit.inpatient_occupancy = 1
 		service_unit.occupied = 0
+		service_unit.is_group = 0
+		service_unit_parent_name = frappe.db.exists({
+				"doctype": "Healthcare Service Unit",
+				"healthcare_service_unit_name": "All Healthcare Service Units",
+				"is_group": 1
+				})
+		if not service_unit_parent_name:
+			parent_service_unit = frappe.new_doc("Healthcare Service Unit")
+			parent_service_unit.healthcare_service_unit_name = "All Healthcare Service Units"
+			parent_service_unit.is_group = 1
+			parent_service_unit.save(ignore_permissions = True)
+		service_unit.parent_healthcare_service_unit = "All Healthcare Service Units"
 		service_unit.save(ignore_permissions = True)
 		return service_unit.name
 	return service_unit
diff --git a/erpnext/regional/india/setup.py b/erpnext/regional/india/setup.py
index 90b25c1..7bb09e9 100644
--- a/erpnext/regional/india/setup.py
+++ b/erpnext/regional/india/setup.py
@@ -248,8 +248,7 @@
 	company = company.name if company else frappe.db.get_value("Global Defaults", None, "default_company")
 
 	set_salary_components(docs)
-	# set_tds_account(docs, company)
-	# set_tax_withholding_category(docs, company)
+	set_tds_account(docs, company)
 
 	for d in docs:
 		try:
@@ -259,6 +258,9 @@
 		except frappe.NameError:
 			pass
 
+	# create tds fixtures
+	set_tax_withholding_category(company)
+
 def set_salary_components(docs):
 	docs.extend([
 		{'doctype': 'Salary Component', 'salary_component': 'Professional Tax', 'description': 'Professional Tax', 'type': 'Deduction'},
@@ -269,31 +271,33 @@
 		{'doctype': 'Salary Component', 'salary_component': 'Leave Encashment', 'description': 'Leave Encashment', 'type': 'Earning'}
 	])
 
-def set_tax_withholding_category(docs, company):
+def set_tax_withholding_category(company):
 	accounts = []
-	tds_account = frappe.db.get_value("Account", filters={"account_type": "Payable",
-		"account_name": "TDS", "company": company})
+	abbr = frappe.get_value("Company", company, "abbr")
+	tds_account = frappe.get_value("Account", 'TDS Payable - {0}'.format(abbr), 'name')
 
 	if company and tds_account:
-		accounts = [
-				{
-					'company': company,
-					'account': tds_account
-				}
-			]
+		accounts = [dict(company=company, account=tds_account)]
 
-	docs.extend([
-		{
-			'doctype': 'Tax Withholding Category', '__newname': 'TDS',
-			'percent_of_tax_withheld': 10,'threshold': 150000, 'book_on_invoice': 1,
-			'withhold_cumulative_tax_amount': 0, 'accounts': accounts
-		}
-	])
+	tds = frappe.get_doc({
+		'doctype': 'Tax Withholding Category', 'name': 'TDS',
+		'percent_of_tax_withheld': 10,'threshold': 150000, 'book_on_invoice': 1,
+		'withhold_cumulative_tax_amount': 0, 'accounts': accounts
+	})
+
+	try:
+		tds.flags.ignore_permissions = True
+		tds.insert()
+	except frappe.DuplicateEntryError:
+		tds = frappe.get_doc("Tax Withholding Category", tds.get("name"))
+		tds.append("accounts", accounts[0])
+		tds.save()
 
 def set_tds_account(docs, company):
+	abbr = frappe.get_value("Company", company, "abbr")
 	docs.extend([
 		{
-			'doctype': 'Account', 'account_name': 'TDS', 'account_type': 'Tax',
-			'parent_account': 'Duties and Taxes', 'company': company
+			"doctype": "Account", "account_name": "TDS Payable", "account_type": "Tax",
+			"parent_account": "Duties and Taxes - {0}".format(abbr), "company": company
 		}
 	])
diff --git a/erpnext/stock/doctype/batch/batch.py b/erpnext/stock/doctype/batch/batch.py
index 8be489d..ef0a317 100644
--- a/erpnext/stock/doctype/batch/batch.py
+++ b/erpnext/stock/doctype/batch/batch.py
@@ -252,7 +252,7 @@
 def get_batches(item_code, warehouse, qty=1, throw=False):
 	batches = frappe.db.sql(
 		'select batch_id, sum(actual_qty) as qty from `tabBatch` join `tabStock Ledger Entry` ignore index (item_code, warehouse) '
-		'on `(tabBatch`.batch_id = `tabStock Ledger Entry`.batch_no )'
+		'on (`tabBatch`.batch_id = `tabStock Ledger Entry`.batch_no )'
 		'where `tabStock Ledger Entry`.item_code = %s and  `tabStock Ledger Entry`.warehouse = %s '
 		'and (`tabBatch`.expiry_date >= CURDATE() or `tabBatch`.expiry_date IS NULL)'
 		'group by batch_id '