fix: Cancel asset capitalisation record on cancellation of asset and vice-versa
diff --git a/erpnext/assets/doctype/asset/asset.json b/erpnext/assets/doctype/asset/asset.json
index d0c9350..39a0867 100644
--- a/erpnext/assets/doctype/asset/asset.json
+++ b/erpnext/assets/doctype/asset/asset.json
@@ -202,8 +202,7 @@
"fieldname": "purchase_date",
"fieldtype": "Date",
"label": "Purchase Date",
- "mandatory_depends_on": "eval:!doc.is_existing_asset",
- "read_only": 1,
+ "mandatory_depends_on": "eval:!doc.is_existing_asset && !doc.is_composite_asset",
"read_only_depends_on": "eval:!doc.is_existing_asset && !doc.is_composite_asset"
},
{
@@ -590,7 +589,7 @@
"link_fieldname": "target_asset"
}
],
- "modified": "2024-01-05 17:36:53.131512",
+ "modified": "2024-01-15 17:35:49.226603",
"modified_by": "Administrator",
"module": "Assets",
"name": "Asset",
diff --git a/erpnext/assets/doctype/asset/asset.py b/erpnext/assets/doctype/asset/asset.py
index 5f44898..652c75f 100644
--- a/erpnext/assets/doctype/asset/asset.py
+++ b/erpnext/assets/doctype/asset/asset.py
@@ -162,6 +162,7 @@
def on_cancel(self):
self.validate_cancellation()
self.cancel_movement_entries()
+ self.cancel_capitalization()
self.delete_depreciation_entries()
cancel_asset_depr_schedules(self)
self.set_status()
@@ -517,6 +518,16 @@
movement = frappe.get_doc("Asset Movement", movement.get("name"))
movement.cancel()
+ def cancel_capitalization(self):
+ asset_capitalization = frappe.db.get_value(
+ "Asset Capitalization",
+ {"target_asset": self.name, "docstatus": 1, "entry_type": "Capitalization"},
+ )
+
+ if asset_capitalization:
+ asset_capitalization = frappe.get_doc("Asset Capitalization", asset_capitalization)
+ asset_capitalization.cancel()
+
def delete_depreciation_entries(self):
if self.calculate_depreciation:
for row in self.get("finance_books"):
diff --git a/erpnext/assets/doctype/asset_capitalization/asset_capitalization.py b/erpnext/assets/doctype/asset_capitalization/asset_capitalization.py
index de75841..5e5b628 100644
--- a/erpnext/assets/doctype/asset_capitalization/asset_capitalization.py
+++ b/erpnext/assets/doctype/asset_capitalization/asset_capitalization.py
@@ -136,11 +136,19 @@
"Stock Ledger Entry",
"Repost Item Valuation",
"Serial and Batch Bundle",
+ "Asset",
)
+ self.cancel_target_asset()
self.update_stock_ledger()
self.make_gl_entries()
self.restore_consumed_asset_items()
+ def cancel_target_asset(self):
+ if self.entry_type == "Capitalization" and self.target_asset:
+ asset_doc = frappe.get_doc("Asset", self.target_asset)
+ if asset_doc.docstatus == 1:
+ asset_doc.cancel()
+
def set_title(self):
self.title = self.target_asset_name or self.target_item_name or self.target_item_code