From 80642edf4f5021ae7a56fef08ff9b72e0e18ca15 Mon Sep 17 00:00:00 2001 From: Navin S R Date: Fri, 28 Nov 2025 12:54:27 +0530 Subject: [PATCH 1/4] 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 093af05fd2f..6f8d729bf5d 100644 --- a/erpnext/assets/doctype/asset_repair/asset_repair.py +++ b/erpnext/assets/doctype/asset_repair/asset_repair.py @@ -315,7 +315,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 3a22d29d7b15ade4f0097e56e9de2ee0da144d81 Mon Sep 17 00:00:00 2001 From: Navin-S-R Date: Mon, 1 Dec 2025 23:48:14 +0530 Subject: [PATCH 2/4] test: add unit test to validate capitalized asset repair gl entries being booked against the asset (cherry picked from commit bcf6deec9a73c43d68e13890cb445d5dd5433ec5) # Conflicts: # erpnext/assets/doctype/asset_repair/test_asset_repair.py --- .../doctype/asset_repair/test_asset_repair.py | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/erpnext/assets/doctype/asset_repair/test_asset_repair.py b/erpnext/assets/doctype/asset_repair/test_asset_repair.py index f5630b48d64..54fb624d2df 100644 --- a/erpnext/assets/doctype/asset_repair/test_asset_repair.py +++ b/erpnext/assets/doctype/asset_repair/test_asset_repair.py @@ -4,6 +4,12 @@ import unittest import frappe +<<<<<<< HEAD +======= +from frappe import qb +from frappe.query_builder.functions import Sum +from frappe.tests import IntegrationTestCase +>>>>>>> bcf6deec9a (test: add unit test to validate capitalized asset repair gl entries being booked against the asset) from frappe.utils import add_days, add_months, flt, get_first_day, nowdate, nowtime, today from erpnext.assets.doctype.asset.asset import ( @@ -294,6 +300,30 @@ class TestAssetRepair(unittest.TestCase): 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 f38fb68d629a3d874e8fd1aafb947277ed719179 Mon Sep 17 00:00:00 2001 From: Navin-S-R Date: Tue, 2 Dec 2025 00:43:15 +0530 Subject: [PATCH 3/4] 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 54fb624d2df..5fd00ccf36e 100644 --- a/erpnext/assets/doctype/asset_repair/test_asset_repair.py +++ b/erpnext/assets/doctype/asset_repair/test_asset_repair.py @@ -305,6 +305,7 @@ class TestAssetRepair(unittest.TestCase): 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 = ( From 199e25ec063aecfbd95ec348b8c22834c7869720 Mon Sep 17 00:00:00 2001 From: Khushi Rawat <142375893+khushi8112@users.noreply.github.com> Date: Tue, 2 Dec 2025 12:20:48 +0530 Subject: [PATCH 4/4] fix: conflicts --- erpnext/assets/doctype/asset_repair/test_asset_repair.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/erpnext/assets/doctype/asset_repair/test_asset_repair.py b/erpnext/assets/doctype/asset_repair/test_asset_repair.py index 5fd00ccf36e..4cd304fbfd0 100644 --- a/erpnext/assets/doctype/asset_repair/test_asset_repair.py +++ b/erpnext/assets/doctype/asset_repair/test_asset_repair.py @@ -4,12 +4,8 @@ import unittest import frappe -<<<<<<< HEAD -======= from frappe import qb from frappe.query_builder.functions import Sum -from frappe.tests import IntegrationTestCase ->>>>>>> bcf6deec9a (test: add unit test to validate capitalized asset repair gl entries being booked against the asset) from frappe.utils import add_days, add_months, flt, get_first_day, nowdate, nowtime, today from erpnext.assets.doctype.asset.asset import (