Merge pull request #19576 from marination/cwip-patch-fix

fix(patch): Enable CWIP Accounting
diff --git a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js
index 9ad06f9..2f0cfa6 100644
--- a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js
+++ b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js
@@ -134,7 +134,7 @@
 			if (args.search_type === "Tag" && args.tag) {
 				return frappe.call({
 					type: "GET",
-					method: "frappe.desk.tags.get_tagged_docs",
+					method: "frappe.desk.doctype.tag.tag.get_tagged_docs",
 					args: {
 						"doctype": "Supplier",
 						"tag": args.tag
diff --git a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py
index a10ce46..95db33b 100644
--- a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py
+++ b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py
@@ -344,13 +344,9 @@
 
 @frappe.whitelist()
 def get_supplier_tag():
-	data = frappe.db.sql("select _user_tags from `tabSupplier`")
+	if not frappe.cache().hget("Supplier", "Tags"):
+		filters = {"document_type": "Supplier"}
+		tags = list(set([tag.tag for tag in frappe.get_all("Tag Link", filters=filters, fields=["tag"]) if tag]))
+		frappe.cache().hset("Supplier", "Tags", tags)
 
-	tags = []
-	for tag in data:
-		tags += filter(bool, tag[0].split(","))
-
-	tags = list(set(tags))
-
-	return tags
-
+	return frappe.cache().hget("Supplier", "Tags")
diff --git a/erpnext/hr/doctype/department_approver/department_approver.py b/erpnext/hr/doctype/department_approver/department_approver.py
index 9f2f201..7bf9905 100644
--- a/erpnext/hr/doctype/department_approver/department_approver.py
+++ b/erpnext/hr/doctype/department_approver/department_approver.py
@@ -19,14 +19,20 @@
 	approvers = []
 	department_details = {}
 	department_list = []
-	employee_department = filters.get("department") or frappe.get_value("Employee", filters.get("employee"), "department")
+	employee = frappe.get_value("Employee", filters.get("employee"), ["department", "leave_approver"], as_dict=True)
+	if employee.leave_approver:
+		approver = frappe.db.get_value("User", leave_approver, ['name', 'first_name', 'last_name'])
+		approvers.append(approver)
+		return approvers
+
+	employee_department = filters.get("department") or employee.department
 	if employee_department:
 		department_details = frappe.db.get_value("Department", {"name": employee_department}, ["lft", "rgt"], as_dict=True)
 	if department_details:
 		department_list = frappe.db.sql("""select name from `tabDepartment` where lft <= %s
 			and rgt >= %s
 			and disabled=0
-			order by lft desc""", (department_details.lft, department_details.rgt), as_list = True)
+			order by lft desc""", (department_details.lft, department_details.rgt), as_list=True)
 
 	if filters.get("doctype") == "Leave Application":
 		parentfield = "leave_approvers"
@@ -41,4 +47,4 @@
 				and approver.parentfield = %s
 				and approver.approver=user.name""",(d, "%" + txt + "%", parentfield), as_list=True)
 
-	return approvers
\ No newline at end of file
+	return approvers