Merge pull request #50964 from aerele/daily-prorata-depr-amount-calculation

fix(asset): prorata daily depr amount calculation
This commit is contained in:
Khushi Rawat
2025-12-10 14:22:17 +05:30
committed by GitHub
2 changed files with 11 additions and 13 deletions

View File

@@ -1532,11 +1532,7 @@ def get_straight_line_or_manual_depr_amount(asset, row, schedule_idx, number_of_
# if the Depreciation Schedule is being prepared for the first time # if the Depreciation Schedule is being prepared for the first time
else: else:
if row.daily_prorata_based: if row.daily_prorata_based:
amount = ( amount = flt(asset.gross_purchase_amount) - flt(row.expected_value_after_useful_life)
flt(asset.gross_purchase_amount)
- flt(asset.opening_accumulated_depreciation)
- flt(row.expected_value_after_useful_life)
)
total_days = ( total_days = (
date_diff( date_diff(
get_last_day( get_last_day(
@@ -1548,7 +1544,11 @@ def get_straight_line_or_manual_depr_amount(asset, row, schedule_idx, number_of_
), ),
add_days( add_days(
get_last_day( get_last_day(
add_months(row.depreciation_start_date, -1 * row.frequency_of_depreciation) add_months(
row.depreciation_start_date,
(row.frequency_of_depreciation * (asset.number_of_depreciations_booked + 1))
* -1,
),
), ),
1, 1,
), ),
@@ -1571,11 +1571,9 @@ def get_straight_line_or_manual_depr_amount(asset, row, schedule_idx, number_of_
return daily_depr_amount * (date_diff(to_date, from_date) + 1) return daily_depr_amount * (date_diff(to_date, from_date) + 1)
else: else:
return ( return (flt(asset.gross_purchase_amount) - flt(row.expected_value_after_useful_life)) / flt(
flt(asset.gross_purchase_amount) row.total_number_of_depreciations
- flt(asset.opening_accumulated_depreciation) )
- flt(row.expected_value_after_useful_life)
) / flt(row.total_number_of_depreciations - asset.number_of_depreciations_booked)
def get_shift_depr_amount(asset, row, schedule_idx): def get_shift_depr_amount(asset, row, schedule_idx):

View File

@@ -660,7 +660,7 @@ class TestDepreciationMethods(AssetSetup):
available_for_use_date="2030-06-06", available_for_use_date="2030-06-06",
is_existing_asset=1, is_existing_asset=1,
number_of_depreciations_booked=2, number_of_depreciations_booked=2,
opening_accumulated_depreciation=47095.89, opening_accumulated_depreciation=47178.08,
expected_value_after_useful_life=10000, expected_value_after_useful_life=10000,
depreciation_start_date="2032-12-31", depreciation_start_date="2032-12-31",
total_number_of_depreciations=3, total_number_of_depreciations=3,
@@ -668,7 +668,7 @@ class TestDepreciationMethods(AssetSetup):
) )
self.assertEqual(asset.status, "Draft") self.assertEqual(asset.status, "Draft")
expected_schedules = [["2032-12-31", 42904.11, 90000.0]] expected_schedules = [["2032-12-31", 30000.0, 77178.08], ["2033-06-06", 12821.92, 90000.0]]
schedules = [ schedules = [
[cstr(d.schedule_date), flt(d.depreciation_amount, 2), d.accumulated_depreciation_amount] [cstr(d.schedule_date), flt(d.depreciation_amount, 2), d.accumulated_depreciation_amount]
for d in asset.get("schedules") for d in asset.get("schedules")