feat(Asset): Modify depreciation schedule
diff --git a/erpnext/assets/doctype/asset/asset.py b/erpnext/assets/doctype/asset/asset.py
index 350220b..f837c5e 100644
--- a/erpnext/assets/doctype/asset/asset.py
+++ b/erpnext/assets/doctype/asset/asset.py
@@ -171,15 +171,23 @@
 				d.precision("rate_of_depreciation"))
 
 	def make_depreciation_schedule(self):
-		if 'Manual' not in [d.depreciation_method for d in self.finance_books]:
+		if 'Manual' not in [d.depreciation_method for d in self.finance_books] and not self.schedules:
 			self.schedules = []
 
-		if self.get("schedules") or not self.available_for_use_date:
+		if not self.available_for_use_date:
 			return
 
 		for d in self.get('finance_books'):
 			self.validate_asset_finance_books(d)
 
+			start = 0
+			for n in range (len(self.schedules)):
+				if not self.schedules[n].journal_entry:
+					print("*"*100)
+					del self.schedules[n:]
+					start = n
+					break
+
 			value_after_depreciation = (flt(self.gross_purchase_amount) -
 				flt(self.opening_accumulated_depreciation))
 
@@ -192,9 +200,9 @@
 
 			if has_pro_rata:
 				number_of_pending_depreciations += 1
-
+			
 			skip_row = False
-			for n in range(number_of_pending_depreciations):
+			for n in range(start, number_of_pending_depreciations):
 				# If depreciation is already completed (for double declining balance)
 				if skip_row: continue
 
@@ -350,11 +358,12 @@
 			if d.finance_book_id not in finance_books:
 				accumulated_depreciation = flt(self.opening_accumulated_depreciation)
 				value_after_depreciation = flt(self.get_value_after_depreciation(d.finance_book_id))
-				finance_books.append(d.finance_book_id)
+				finance_books.append(int(d.finance_book_id))
 
 			depreciation_amount = flt(d.depreciation_amount, d.precision("depreciation_amount"))
 			value_after_depreciation -= flt(depreciation_amount)
 
+			# for the last row, if depreciation method = Straight Line
 			if straight_line_idx and i == max(straight_line_idx) - 1:
 				book = self.get('finance_books')[cint(d.finance_book_id) - 1]
 				depreciation_amount += flt(value_after_depreciation -
diff --git a/erpnext/assets/doctype/asset_repair/asset_repair.js b/erpnext/assets/doctype/asset_repair/asset_repair.js
index 9d06cae..3328e66 100644
--- a/erpnext/assets/doctype/asset_repair/asset_repair.js
+++ b/erpnext/assets/doctype/asset_repair/asset_repair.js
@@ -28,7 +28,8 @@
 
 	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', 'total_repair_cost'], frm.doc.stock_consumption)
+		frm.toggle_display(['stock_consumption_details_section', 'total_repair_cost'], frm.doc.stock_consumption);
+		frm.toggle_display('asset_depreciation_details_section', frm.doc.capitalize_repair_cost);
 
 		if (frm.doc.docstatus) {
 			frm.add_custom_button("View General Ledger", function() {
diff --git a/erpnext/assets/doctype/asset_repair/asset_repair.py b/erpnext/assets/doctype/asset_repair/asset_repair.py
index 74d3114..95abbd3 100644
--- a/erpnext/assets/doctype/asset_repair/asset_repair.py
+++ b/erpnext/assets/doctype/asset_repair/asset_repair.py
@@ -48,6 +48,7 @@
 		if self.capitalize_repair_cost:
 			self.check_for_purchase_invoice()
 			self.make_gl_entries()
+			self.modify_depreciation_schedule()
 
 	def check_repair_status(self):
 		if self.repair_status == "Pending":
@@ -140,8 +141,16 @@
 		for account in asset_category.accounts:
 			if account.company_name == company:
 				return account.fixed_asset_account
+
+	def modify_depreciation_schedule(self):
+		if self.increase_in_asset_life:
+			asset = frappe.get_doc('Asset', self.asset)
+			asset.flags.ignore_validate_update_after_submit = True
+			for row in asset.finance_books:
+				row.total_number_of_depreciations += self.increase_in_asset_life/row.frequency_of_depreciation
+			asset.prepare_depreciation_data()
+			asset.save()
 			
-	
 @frappe.whitelist()
 def get_downtime(failure_date, completion_date):
 	downtime = time_diff_in_hours(completion_date, failure_date)