Merge branch 'develop' into FIX-34354
diff --git a/.github/helper/install.sh b/.github/helper/install.sh
index 0c71b41..48337ce 100644
--- a/.github/helper/install.sh
+++ b/.github/helper/install.sh
@@ -8,8 +8,9 @@
 
 pip install frappe-bench
 
+githubbranch=${GITHUB_BASE_REF:-${GITHUB_REF##*/}}
 frappeuser=${FRAPPE_USER:-"frappe"}
-frappebranch=${FRAPPE_BRANCH:-${GITHUB_BASE_REF:-${GITHUB_REF##*/}}}
+frappebranch=${FRAPPE_BRANCH:-$githubbranch}
 
 git clone "https://github.com/${frappeuser}/frappe" --branch "${frappebranch}" --depth 1
 bench init --skip-assets --frappe-path ~/frappe --python "$(which python)" frappe-bench
@@ -60,7 +61,7 @@
 sed -i 's/socketio:/# socketio:/g' Procfile
 sed -i 's/redis_socketio:/# redis_socketio:/g' Procfile
 
-bench get-app payments
+bench get-app payments --branch ${githubbranch%"-hotfix"}
 bench get-app erpnext "${GITHUB_WORKSPACE}"
 
 if [ "$TYPE" == "server" ]; then bench setup requirements --dev; fi
diff --git a/erpnext/assets/doctype/asset/test_asset.py b/erpnext/assets/doctype/asset/test_asset.py
index 9a15263..2c9772d 100644
--- a/erpnext/assets/doctype/asset/test_asset.py
+++ b/erpnext/assets/doctype/asset/test_asset.py
@@ -828,8 +828,8 @@
 		expected_schedules = [
 			["2030-12-31", 28630.14, 28630.14],
 			["2031-12-31", 35684.93, 64315.07],
-			["2032-12-31", 17842.47, 82157.54],
-			["2033-06-06", 5342.46, 87500.0],
+			["2032-12-31", 17842.46, 82157.53],
+			["2033-06-06", 5342.47, 87500.0],
 		]
 
 		schedules = [
diff --git a/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py b/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py
index b75fbcb..5912329 100644
--- a/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py
+++ b/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py
@@ -140,8 +140,8 @@
 		self.asset = asset_doc.name
 		self.finance_book = row.finance_book
 		self.finance_book_id = row.idx
-		self.opening_accumulated_depreciation = asset_doc.opening_accumulated_depreciation
-		self.number_of_depreciations_booked = asset_doc.number_of_depreciations_booked
+		self.opening_accumulated_depreciation = asset_doc.opening_accumulated_depreciation or 0
+		self.number_of_depreciations_booked = asset_doc.number_of_depreciations_booked or 0
 		self.gross_purchase_amount = asset_doc.gross_purchase_amount
 		self.depreciation_method = row.depreciation_method
 		self.total_number_of_depreciations = row.total_number_of_depreciations
@@ -185,14 +185,14 @@
 	):
 		asset_doc.validate_asset_finance_books(row)
 
-		value_after_depreciation = _get_value_after_depreciation_for_making_schedule(asset_doc, row)
+		value_after_depreciation = self._get_value_after_depreciation_for_making_schedule(asset_doc, row)
 		row.value_after_depreciation = value_after_depreciation
 
 		if update_asset_finance_book_row:
 			row.db_update()
 
 		number_of_pending_depreciations = cint(row.total_number_of_depreciations) - cint(
-			asset_doc.number_of_depreciations_booked
+			self.number_of_depreciations_booked
 		)
 
 		has_pro_rata = asset_doc.check_is_pro_rata(row)
@@ -235,13 +235,12 @@
 					self.add_depr_schedule_row(
 						date_of_disposal,
 						depreciation_amount,
-						row.depreciation_method,
 					)
 
 				break
 
 			# For first row
-			if has_pro_rata and not asset_doc.opening_accumulated_depreciation and n == 0:
+			if has_pro_rata and not self.opening_accumulated_depreciation and n == 0:
 				from_date = add_days(
 					asset_doc.available_for_use_date, -1
 				)  # needed to calc depr amount for available_for_use_date too
@@ -260,7 +259,7 @@
 					# In case of increase_in_asset_life, the asset.to_date is already set on asset_repair submission
 					asset_doc.to_date = add_months(
 						asset_doc.available_for_use_date,
-						(n + asset_doc.number_of_depreciations_booked) * cint(row.frequency_of_depreciation),
+						(n + self.number_of_depreciations_booked) * cint(row.frequency_of_depreciation),
 					)
 
 				depreciation_amount_without_pro_rata = depreciation_amount
@@ -298,7 +297,6 @@
 				self.add_depr_schedule_row(
 					schedule_date,
 					depreciation_amount,
-					row.depreciation_method,
 				)
 
 	# to ensure that final accumulated depreciation amount is accurate
@@ -325,14 +323,12 @@
 		self,
 		schedule_date,
 		depreciation_amount,
-		depreciation_method,
 	):
 		self.append(
 			"depreciation_schedule",
 			{
 				"schedule_date": schedule_date,
 				"depreciation_amount": depreciation_amount,
-				"depreciation_method": depreciation_method,
 			},
 		)
 
@@ -346,7 +342,7 @@
 		straight_line_idx = [
 			d.idx
 			for d in self.get("depreciation_schedule")
-			if d.depreciation_method == "Straight Line" or d.depreciation_method == "Manual"
+			if self.depreciation_method == "Straight Line" or self.depreciation_method == "Manual"
 		]
 
 		accumulated_depreciation = flt(self.opening_accumulated_depreciation)
@@ -377,16 +373,15 @@
 				accumulated_depreciation, d.precision("accumulated_depreciation_amount")
 			)
 
+	def _get_value_after_depreciation_for_making_schedule(self, asset_doc, fb_row):
+		if asset_doc.docstatus == 1 and fb_row.value_after_depreciation:
+			value_after_depreciation = flt(fb_row.value_after_depreciation)
+		else:
+			value_after_depreciation = flt(self.gross_purchase_amount) - flt(
+				self.opening_accumulated_depreciation
+			)
 
-def _get_value_after_depreciation_for_making_schedule(asset_doc, fb_row):
-	if asset_doc.docstatus == 1 and fb_row.value_after_depreciation:
-		value_after_depreciation = flt(fb_row.value_after_depreciation)
-	else:
-		value_after_depreciation = flt(asset_doc.gross_purchase_amount) - flt(
-			asset_doc.opening_accumulated_depreciation
-		)
-
-	return value_after_depreciation
+		return value_after_depreciation
 
 
 def make_draft_asset_depr_schedules_if_not_present(asset_doc):
diff --git a/erpnext/assets/doctype/depreciation_schedule/depreciation_schedule.json b/erpnext/assets/doctype/depreciation_schedule/depreciation_schedule.json
index 882c4bf..abe295c 100644
--- a/erpnext/assets/doctype/depreciation_schedule/depreciation_schedule.json
+++ b/erpnext/assets/doctype/depreciation_schedule/depreciation_schedule.json
@@ -12,8 +12,7 @@
   "column_break_3",
   "accumulated_depreciation_amount",
   "journal_entry",
-  "make_depreciation_entry",
-  "depreciation_method"
+  "make_depreciation_entry"
  ],
  "fields": [
   {
@@ -58,20 +57,11 @@
    "fieldname": "make_depreciation_entry",
    "fieldtype": "Button",
    "label": "Make Depreciation Entry"
-  },
-  {
-   "fieldname": "depreciation_method",
-   "fieldtype": "Select",
-   "hidden": 1,
-   "label": "Depreciation Method",
-   "options": "\nStraight Line\nDouble Declining Balance\nWritten Down Value\nManual",
-   "print_hide": 1,
-   "read_only": 1
   }
  ],
  "istable": 1,
  "links": [],
- "modified": "2022-12-06 20:35:50.264281",
+ "modified": "2023-03-13 23:17:15.849950",
  "modified_by": "Administrator",
  "module": "Assets",
  "name": "Depreciation Schedule",
diff --git a/erpnext/e_commerce/doctype/website_item/test_website_item.py b/erpnext/e_commerce/doctype/website_item/test_website_item.py
index bbe04d5..e41c9da 100644
--- a/erpnext/e_commerce/doctype/website_item/test_website_item.py
+++ b/erpnext/e_commerce/doctype/website_item/test_website_item.py
@@ -226,11 +226,11 @@
 		self.assertTrue(bool(data.product_info["price"]))
 
 		price_object = data.product_info["price"]
-		self.assertEqual(price_object.get("discount_percent"), 25)
+		self.assertEqual(price_object.get("discount_percent"), 25.0)
 		self.assertEqual(price_object.get("price_list_rate"), 750)
 		self.assertEqual(price_object.get("formatted_mrp"), "₹ 1,000.00")
 		self.assertEqual(price_object.get("formatted_price"), "₹ 750.00")
-		self.assertEqual(price_object.get("formatted_discount_percent"), "25%")
+		self.assertEqual(price_object.get("formatted_discount_percent"), "25.0%")
 
 		# switch to admin and disable show price
 		frappe.set_user("Administrator")