From a1eab1db74b93f018b41911706885c499aaae9a5 Mon Sep 17 00:00:00 2001 From: khushi8112 Date: Sun, 29 Jun 2025 22:46:39 +0530 Subject: [PATCH] fix: validate asset before repair (cherry picked from commit c6baa34812765b1db365842ec24803c86b37f5b7) # Conflicts: # erpnext/assets/doctype/asset_repair/asset_repair.json --- .../assets/doctype/asset_repair/asset_repair.json | 12 +++++++++++- erpnext/assets/doctype/asset_repair/asset_repair.py | 9 +++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/erpnext/assets/doctype/asset_repair/asset_repair.json b/erpnext/assets/doctype/asset_repair/asset_repair.json index c98f5a8d7f4..5d7ce569fbb 100644 --- a/erpnext/assets/doctype/asset_repair/asset_repair.json +++ b/erpnext/assets/doctype/asset_repair/asset_repair.json @@ -138,6 +138,7 @@ "fieldtype": "Link", "in_list_view": 1, "label": "Asset", + "link_filters": "[[\"Asset\",\"status\",\"not in\",[\"Work In Progress\",\"Capitalized\",\"Fully Depreciated\",\"Sold\",\"Scrapped\",null]]]", "options": "Asset", "reqd": 1 }, @@ -248,7 +249,11 @@ "index_web_pages_for_search": 1, "is_submittable": 1, "links": [], +<<<<<<< HEAD "modified": "2024-06-13 16:14:14.398356", +======= + "modified": "2025-06-29 22:30:00.589597", +>>>>>>> c6baa34812 (fix: validate asset before repair) "modified_by": "Administrator", "module": "Assets", "name": "Asset Repair", @@ -286,10 +291,15 @@ "write": 1 } ], +<<<<<<< HEAD "sort_field": "modified", +======= + "row_format": "Dynamic", + "sort_field": "creation", +>>>>>>> c6baa34812 (fix: validate asset before repair) "sort_order": "DESC", "states": [], "title_field": "asset_name", "track_changes": 1, "track_seen": 1 -} \ No newline at end of file +} diff --git a/erpnext/assets/doctype/asset_repair/asset_repair.py b/erpnext/assets/doctype/asset_repair/asset_repair.py index 3938ae06b50..9fbcb0a7d50 100644 --- a/erpnext/assets/doctype/asset_repair/asset_repair.py +++ b/erpnext/assets/doctype/asset_repair/asset_repair.py @@ -53,6 +53,7 @@ class AssetRepair(AccountsController): def validate(self): self.asset_doc = frappe.get_doc("Asset", self.asset) + self.validate_asset() self.validate_dates() self.update_status() @@ -60,6 +61,14 @@ class AssetRepair(AccountsController): self.set_stock_items_cost() self.calculate_total_repair_cost() + def validate_asset(self): + if self.asset_doc.status in ("Sold", "Fully Depreciated", "Scrapped"): + frappe.throw( + _("Asset {0} is in {1} status and cannot be repaired.").format( + get_link_to_form("Asset", self.asset), self.asset_doc.status + ) + ) + def validate_dates(self): if self.completion_date and (self.failure_date > self.completion_date): frappe.throw(