From a6b7985eb2a0bba2dec7276e7271d3d6175a39d1 Mon Sep 17 00:00:00 2001 From: Navin S R Date: Fri, 28 Nov 2025 12:54:27 +0530 Subject: [PATCH 1/3] fix: use asset in against_voucher while posting gl entries for capitalized asset repairs (cherry picked from commit a7e43eddad96f2c7b01614d6c536342662041dd7) --- erpnext/assets/doctype/asset_repair/asset_repair.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/erpnext/assets/doctype/asset_repair/asset_repair.py b/erpnext/assets/doctype/asset_repair/asset_repair.py index dc74da28db4..afe17410e01 100644 --- a/erpnext/assets/doctype/asset_repair/asset_repair.py +++ b/erpnext/assets/doctype/asset_repair/asset_repair.py @@ -320,7 +320,8 @@ class AssetRepair(AccountsController): "voucher_no": self.name, "cost_center": self.cost_center, "posting_date": self.completion_date, - "against_voucher_type": "Purchase Invoice", + "against_voucher_type": "Asset", + "against_voucher": self.asset, "company": self.company, }, item=self, From 665a092cd0837b9e8f5dcb58534c77602d4799cf Mon Sep 17 00:00:00 2001 From: Navin-S-R Date: Mon, 1 Dec 2025 23:48:14 +0530 Subject: [PATCH 2/3] test: add unit test to validate capitalized asset repair gl entries being booked against the asset (cherry picked from commit bcf6deec9a73c43d68e13890cb445d5dd5433ec5) --- .../doctype/asset_repair/test_asset_repair.py | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/erpnext/assets/doctype/asset_repair/test_asset_repair.py b/erpnext/assets/doctype/asset_repair/test_asset_repair.py index 0e4ea84df86..41affd64dc6 100644 --- a/erpnext/assets/doctype/asset_repair/test_asset_repair.py +++ b/erpnext/assets/doctype/asset_repair/test_asset_repair.py @@ -3,6 +3,8 @@ import unittest import frappe +from frappe import qb +from frappe.query_builder.functions import Sum from frappe.tests import IntegrationTestCase from frappe.utils import add_days, add_months, flt, get_first_day, nowdate, nowtime, today @@ -322,6 +324,30 @@ class TestAssetRepair(IntegrationTestCase): stock_entry = frappe.get_last_doc("Stock Entry") self.assertEqual(stock_entry.asset_repair, asset_repair.name) + def test_gl_entries_with_capitalized_asset_repair(self): + asset = create_asset(is_existing_asset=1, calculate_depreciation=1, submit=1) + asset_repair = create_asset_repair( + asset=asset, capitalize_repair_cost=1, item="_Test Non Stock Item", submit=1 + ) + + GLEntry = qb.DocType("GL Entry") + res = ( + qb.from_(GLEntry) + .select(Sum(GLEntry.debit_in_account_currency).as_("total_debit")) + .where( + (GLEntry.voucher_type == "Asset Repair") + & (GLEntry.voucher_no == asset_repair.name) + & (GLEntry.against_voucher_type == "Asset") + & (GLEntry.against_voucher == asset.name) + & (GLEntry.company == asset.company) + & (GLEntry.is_cancelled == 0) + ) + ).run(as_dict=True) + booked_value = res[0].total_debit if res else 0 + + self.assertEqual(asset.additional_asset_cost, asset_repair.repair_cost) + self.assertEqual(booked_value, asset_repair.repair_cost) + def num_of_depreciations(asset): return asset.finance_books[0].total_number_of_depreciations + ( From 8440a5c68d76c3dc103c1617615609460a27204b Mon Sep 17 00:00:00 2001 From: Navin-S-R Date: Tue, 2 Dec 2025 00:43:15 +0530 Subject: [PATCH 3/3] chore: reload asset doc before assertEqual (cherry picked from commit 8c35a6ecddf141e3cf928f06ecffee086ec9553d) --- erpnext/assets/doctype/asset_repair/test_asset_repair.py | 1 + 1 file changed, 1 insertion(+) diff --git a/erpnext/assets/doctype/asset_repair/test_asset_repair.py b/erpnext/assets/doctype/asset_repair/test_asset_repair.py index 41affd64dc6..e9d603e2267 100644 --- a/erpnext/assets/doctype/asset_repair/test_asset_repair.py +++ b/erpnext/assets/doctype/asset_repair/test_asset_repair.py @@ -329,6 +329,7 @@ class TestAssetRepair(IntegrationTestCase): asset_repair = create_asset_repair( asset=asset, capitalize_repair_cost=1, item="_Test Non Stock Item", submit=1 ) + asset.reload() GLEntry = qb.DocType("GL Entry") res = (