fix: Fetch valuation rate

(cherry picked from commit df71907be453a481a43d2c62a5c076602ab8af07)
diff --git a/erpnext/assets/doctype/asset_repair/asset_repair.js b/erpnext/assets/doctype/asset_repair/asset_repair.js
index d554d52..7bd3a72 100644
--- a/erpnext/assets/doctype/asset_repair/asset_repair.js
+++ b/erpnext/assets/doctype/asset_repair/asset_repair.js
@@ -68,6 +68,23 @@
 });
 
 frappe.ui.form.on('Asset Repair Consumed Item', {
+	item_code: function(frm, cdt, cdn) {
+		var row = locals[cdt][cdn];
+
+		frappe.call ({
+			method: "erpnext.assets.doctype.asset_repair.asset_repair.get_valuation_rate",
+			args: {
+				"item_code": row.item_code,
+				"warehouse": frm.doc.warehouse
+			},
+			callback: function(r) {
+				if(r.message) {
+					frappe.model.set_value(cdt, cdn, 'valuation_rate', r.message[0]);
+				}
+			}
+		});
+	},
+
 	consumed_quantity: function(frm, cdt, cdn) {
 		var row = locals[cdt][cdn];
 		frappe.model.set_value(cdt, cdn, 'total_value', row.consumed_quantity * row.valuation_rate);
diff --git a/erpnext/assets/doctype/asset_repair/asset_repair.py b/erpnext/assets/doctype/asset_repair/asset_repair.py
index 36848e9..86a63fd 100644
--- a/erpnext/assets/doctype/asset_repair/asset_repair.py
+++ b/erpnext/assets/doctype/asset_repair/asset_repair.py
@@ -256,3 +256,36 @@
 def get_downtime(failure_date, completion_date):
 	downtime = time_diff_in_hours(completion_date, failure_date)
 	return round(downtime, 2)
+
+@frappe.whitelist()
+def get_valuation_rate(item_code, warehouse):
+	last_valuation_rate = frappe.get_all(
+		"Stock Ledger Entry",
+		filters = {
+			"item_code": item_code,
+			"warehouse": warehouse,
+			"valuation_rate": [">=", 0],
+			"docstatus": ["<", 2]
+		},
+		pluck = "valuation_rate",
+		order_by = "posting_date desc, posting_time desc, name desc"
+	)
+
+	if last_valuation_rate:
+		return last_valuation_rate
+	else:
+		valuation_rate = frappe.db.get_value("Item", item_code, "valuation_rate")
+
+		if not valuation_rate:
+			# try Item Standard rate
+			valuation_rate = frappe.db.get_value("Item", item_code, "standard_rate")
+
+			if not valuation_rate:
+				# try in price list
+				valuation_rate = frappe.db.get_value(
+					"Item Price",
+					dict(item_code=item_code, buying=1),
+					"price_list_rate"
+				)
+
+		return valuation_rate
diff --git a/erpnext/assets/doctype/asset_repair_consumed_item/asset_repair_consumed_item.json b/erpnext/assets/doctype/asset_repair_consumed_item/asset_repair_consumed_item.json
index f63add1..3c850c8 100644
--- a/erpnext/assets/doctype/asset_repair_consumed_item/asset_repair_consumed_item.json
+++ b/erpnext/assets/doctype/asset_repair_consumed_item/asset_repair_consumed_item.json
@@ -13,7 +13,6 @@
  ],
  "fields": [
   {
-   "fetch_from": "item.valuation_rate",
    "fieldname": "valuation_rate",
    "fieldtype": "Currency",
    "in_list_view": 1,
@@ -49,7 +48,7 @@
  "index_web_pages_for_search": 1,
  "istable": 1,
  "links": [],
- "modified": "2021-11-11 18:23:00.492483",
+ "modified": "2022-02-08 17:37:20.028290",
  "modified_by": "Administrator",
  "module": "Assets",
  "name": "Asset Repair Consumed Item",