From 845d3464b4feaf8d059ffd226e83a6a0bad4b058 Mon Sep 17 00:00:00 2001 From: khushi8112 Date: Fri, 5 Sep 2025 01:54:56 +0530 Subject: [PATCH 1/2] fix: depreciate asset with remaining amount when depreciation amount exceeds current asset value --- .../asset_depreciation_schedule.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py b/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py index 1e3c1ffc598..9e8bab0721a 100644 --- a/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py +++ b/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py @@ -369,6 +369,10 @@ class AssetDepreciationSchedule(Document): original_schedule_date=schedule_date, ) depreciation_amount = flt(depreciation_amount, asset_doc.precision("gross_purchase_amount")) + + if depreciation_amount > row.value_after_depreciation - row.expected_value_after_useful_life: + depreciation_amount = row.value_after_depreciation - row.expected_value_after_useful_life + if depreciation_amount > 0: self.add_depr_schedule_row(date_of_disposal, depreciation_amount, n) @@ -654,6 +658,7 @@ def _get_pro_rata_amt( total_days = get_total_days(original_schedule_date or to_date, 12) else: total_days = get_total_days(original_schedule_date or to_date, row.frequency_of_depreciation) + print(total_days, days, depreciation_amount) return (depreciation_amount * flt(days)) / flt(total_days), days, months From da039e5bf0c3de29d9cd1e3a9a781946a457a124 Mon Sep 17 00:00:00 2001 From: khushi8112 Date: Fri, 5 Sep 2025 01:58:20 +0530 Subject: [PATCH 2/2] chore: remove print statement --- .../asset_depreciation_schedule.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py b/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py index 9e8bab0721a..26d3f93856f 100644 --- a/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py +++ b/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py @@ -369,7 +369,7 @@ class AssetDepreciationSchedule(Document): original_schedule_date=schedule_date, ) depreciation_amount = flt(depreciation_amount, asset_doc.precision("gross_purchase_amount")) - + if depreciation_amount > row.value_after_depreciation - row.expected_value_after_useful_life: depreciation_amount = row.value_after_depreciation - row.expected_value_after_useful_life @@ -658,7 +658,7 @@ def _get_pro_rata_amt( total_days = get_total_days(original_schedule_date or to_date, 12) else: total_days = get_total_days(original_schedule_date or to_date, row.frequency_of_depreciation) - print(total_days, days, depreciation_amount) + return (depreciation_amount * flt(days)) / flt(total_days), days, months