fix: allow fully depreciated existing assets (copy #36378) (#36379)

* fix: allow fully depreciated existing assets

(cherry picked from commit 9489cba275525a93d92c00f62569888a219a8912)

# Conflicts:
#	erpnext/assets/doctype/asset/asset.json
#	erpnext/assets/doctype/asset/depreciation.py

* chore: fix conflicts in asset.json

* chore: fix conflicts in depreciation.py

---------

Co-authored-by: anandbaburajan <anandbaburajan@gmail.com>
diff --git a/erpnext/assets/doctype/asset/asset.json b/erpnext/assets/doctype/asset/asset.json
index 698fc78..2eb5f3d 100644
--- a/erpnext/assets/doctype/asset/asset.json
+++ b/erpnext/assets/doctype/asset/asset.json
@@ -43,6 +43,7 @@
   "column_break_33",
   "opening_accumulated_depreciation",
   "number_of_depreciations_booked",
+  "is_fully_depreciated",
   "section_break_36",
   "finance_books",
   "section_break_33",
@@ -205,6 +206,7 @@
    "fieldname": "disposal_date",
    "fieldtype": "Date",
    "label": "Disposal Date",
+   "no_copy": 1,
    "read_only": 1
   },
   {
@@ -244,19 +246,17 @@
    "label": "Is Existing Asset"
   },
   {
-   "depends_on": "is_existing_asset",
+   "depends_on": "eval:(doc.is_existing_asset)",
    "fieldname": "opening_accumulated_depreciation",
    "fieldtype": "Currency",
    "label": "Opening Accumulated Depreciation",
-   "no_copy": 1,
    "options": "Company:company:default_currency"
   },
   {
-   "depends_on": "eval:(doc.is_existing_asset && doc.opening_accumulated_depreciation)",
+   "depends_on": "eval:(doc.is_existing_asset)",
    "fieldname": "number_of_depreciations_booked",
    "fieldtype": "Int",
-   "label": "Number of Depreciations Booked",
-   "no_copy": 1
+   "label": "Number of Depreciations Booked"
   },
   {
    "collapsible": 1,
@@ -500,6 +500,13 @@
    "fieldtype": "HTML",
    "hidden": 1,
    "label": "Depreciation Schedule View"
+  },
+  {
+   "default": "0",
+   "depends_on": "eval:(doc.is_existing_asset)",
+   "fieldname": "is_fully_depreciated",
+   "fieldtype": "Check",
+   "label": "Is Fully Depreciated"
   }
  ],
  "idx": 72,
@@ -533,7 +540,7 @@
    "table_fieldname": "accounts"
   }
  ],
- "modified": "2023-07-26 13:33:36.821534",
+ "modified": "2023-07-28 15:47:01.137996",
  "modified_by": "Administrator",
  "module": "Assets",
  "name": "Asset",
@@ -577,4 +584,4 @@
  "states": [],
  "title_field": "asset_name",
  "track_changes": 1
-}
\ No newline at end of file
+}
diff --git a/erpnext/assets/doctype/asset/asset.py b/erpnext/assets/doctype/asset/asset.py
index 5d35808..9efa18b 100644
--- a/erpnext/assets/doctype/asset/asset.py
+++ b/erpnext/assets/doctype/asset/asset.py
@@ -194,8 +194,11 @@
 
 		if not self.calculate_depreciation:
 			return
-		elif not self.finance_books:
-			frappe.throw(_("Enter depreciation details"))
+		else:
+			if not self.finance_books:
+				frappe.throw(_("Enter depreciation details"))
+			if self.is_fully_depreciated:
+				frappe.throw(_("Depreciation cannot be calculated for fully depreciated assets"))
 
 		if self.is_existing_asset:
 			return
@@ -276,7 +279,7 @@
 			depreciable_amount = flt(self.gross_purchase_amount) - flt(row.expected_value_after_useful_life)
 			if flt(self.opening_accumulated_depreciation) > depreciable_amount:
 				frappe.throw(
-					_("Opening Accumulated Depreciation must be less than equal to {0}").format(
+					_("Opening Accumulated Depreciation must be less than or equal to {0}").format(
 						depreciable_amount
 					)
 				)
@@ -412,7 +415,9 @@
 					expected_value_after_useful_life = self.finance_books[idx].expected_value_after_useful_life
 					value_after_depreciation = self.finance_books[idx].value_after_depreciation
 
-				if flt(value_after_depreciation) <= expected_value_after_useful_life:
+				if (
+					flt(value_after_depreciation) <= expected_value_after_useful_life or self.is_fully_depreciated
+				):
 					status = "Fully Depreciated"
 				elif flt(value_after_depreciation) < flt(self.gross_purchase_amount):
 					status = "Partially Depreciated"
diff --git a/erpnext/assets/doctype/asset/depreciation.py b/erpnext/assets/doctype/asset/depreciation.py
index e1431ea..a311bc6 100644
--- a/erpnext/assets/doctype/asset/depreciation.py
+++ b/erpnext/assets/doctype/asset/depreciation.py
@@ -398,6 +398,15 @@
 
 					reverse_journal_entry = make_reverse_journal_entry(schedule.journal_entry)
 					reverse_journal_entry.posting_date = nowdate()
+
+					for account in reverse_journal_entry.accounts:
+						account.update(
+							{
+								"reference_type": "Asset",
+								"reference_name": asset.name,
+							}
+						)
+
 					frappe.flags.is_reverse_depr_entry = True
 					reverse_journal_entry.submit()