diff --git a/erpnext/assets/doctype/asset_repair/asset_repair.js b/erpnext/assets/doctype/asset_repair/asset_repair.js
index a5fda53..9d06cae 100644
--- a/erpnext/assets/doctype/asset_repair/asset_repair.js
+++ b/erpnext/assets/doctype/asset_repair/asset_repair.js
@@ -28,7 +28,7 @@
 
 	refresh: function(frm) {
 		frm.toggle_display(['completion_date', 'repair_status', 'accounting_details', 'accounting_dimensions_section'], !(frm.doc.__islocal));
-		frm.toggle_display(['stock_consumption_details_section'], frm.doc.stock_consumption)
+		frm.toggle_display(['stock_consumption_details_section', 'total_repair_cost'], frm.doc.stock_consumption)
 
 		if (frm.doc.docstatus) {
 			frm.add_custom_button("View General Ledger", function() {
diff --git a/erpnext/assets/doctype/asset_repair/asset_repair.json b/erpnext/assets/doctype/asset_repair/asset_repair.json
index 9ab9271..df9ab7d 100644
--- a/erpnext/assets/doctype/asset_repair/asset_repair.json
+++ b/erpnext/assets/doctype/asset_repair/asset_repair.json
@@ -26,6 +26,7 @@
   "stock_consumption",
   "column_break_8",
   "payable_account",
+  "total_repair_cost",
   "stock_consumption_details_section",
   "stock_items",
   "section_break_9",
@@ -205,12 +206,17 @@
    "fieldname": "stock_consumption_details_section",
    "fieldtype": "Section Break",
    "label": "Stock Consumption Details"
+  },
+  {
+   "fieldname": "total_repair_cost",
+   "fieldtype": "Currency",
+   "label": "Total Repair Cost"
   }
  ],
  "index_web_pages_for_search": 1,
  "is_submittable": 1,
  "links": [],
- "modified": "2021-05-12 21:20:18.276755",
+ "modified": "2021-05-13 02:40:57.953076",
  "modified_by": "Administrator",
  "module": "Assets",
  "name": "Asset Repair",
diff --git a/erpnext/assets/doctype/asset_repair/asset_repair.py b/erpnext/assets/doctype/asset_repair/asset_repair.py
index 9c3d880..2b69b5b 100644
--- a/erpnext/assets/doctype/asset_repair/asset_repair.py
+++ b/erpnext/assets/doctype/asset_repair/asset_repair.py
@@ -16,18 +16,31 @@
 			frappe.throw(_("Please select Completion Date for Completed Repair"))
 
 		self.update_status()
-		self.set_total_value()
-
-	def set_total_value(self):
-		for item in self.stock_items:
-			item.total_value = flt(item.valuation_rate) * flt(item.consumed_quantity)
-
+		self.set_total_value()		# change later
+		self.check_stock_items()
+		self.calculate_total_repair_cost()
+		
 	def update_status(self):
 		if self.repair_status == 'Pending':
 			frappe.db.set_value('Asset', self.asset, 'status', 'Out of Order')
 		else:
 			frappe.db.set_value('Asset', self.asset, 'status', 'Submitted')
 
+	def set_total_value(self):
+		for item in self.stock_items:
+			item.total_value = flt(item.valuation_rate) * flt(item.consumed_quantity)
+
+	def check_stock_items(self):
+		if self.stock_consumption:
+			if not self.stock_items:
+				frappe.throw(_("Please enter Stock Items consumed during Asset Repair."))
+
+	def calculate_total_repair_cost(self):
+		self.total_repair_cost = self.repair_cost
+		if self.stock_consumption:
+			for item in self.stock_items:
+				self.total_repair_cost += item.total_value
+
 	def on_submit(self):
 		if self.repair_status == "Pending":
 			frappe.throw(_("Please update Repair Status."))
@@ -81,6 +94,41 @@
 			"posting_date": getdate()
 		})
 		gl_entry.insert()
+
+	# 	if self.capitalize_repair_cost:
+	# 		fixed_asset_account = self.get_fixed_asset_account()
+	# 		gl_entry = frappe.get_doc({
+	# 			"doctype": "GL Entry",
+	# 			"account": self.payable_account,
+	# 			"credit": self.total_repair_cost,
+	# 			"credit_in_account_currency": self.repair_cost,
+	# 			"against": repair_and_maintenance_account,
+	# 			"voucher_type": self.doctype,
+	# 			"voucher_no": self.name,
+	# 			"cost_center": self.cost_center,
+	# 			"posting_date": getdate()
+	# 		})
+	# 		gl_entry.insert()
+	# 		gl_entry = frappe.get_doc({
+	# 			"doctype": "GL Entry",
+	# 			"account": fixed_asset_account,
+	# 			"debit": self.total_repair_cost,
+	# 			"debit_in_account_currency": self.repair_cost,
+	# 			"against": self.payable_account,
+	# 			"voucher_type": self.doctype,
+	# 			"voucher_no": self.name,
+	# 			"cost_center": self.cost_center,
+	# 			"posting_date": getdate()
+	# 		})
+	# 		gl_entry.insert()
+
+	# def get_fixed_asset_account(self):
+	# 	asset_category = frappe.get_doc('Asset Category', frappe.db.get_value('Asset', self.asset, 'asset_category'))
+	# 	company = frappe.db.get_value('Asset', self.asset, 'company')
+	# 	for account in asset_category.accounts:
+	# 		if account.company_name == company:
+	# 			return account.fixed_asset_account
+			
 	
 @frappe.whitelist()
 def get_downtime(failure_date, completion_date):
