Merge branch 'develop' of https://github.com/frappe/erpnext into dev_remove_regional_france
diff --git a/erpnext/assets/doctype/asset/test_asset.py b/erpnext/assets/doctype/asset/test_asset.py
index 90eae2d..39fcb21 100644
--- a/erpnext/assets/doctype/asset/test_asset.py
+++ b/erpnext/assets/doctype/asset/test_asset.py
@@ -768,18 +768,18 @@
)
expected_schedules = [
- ["2023-01-31", 1019.18, 1019.18],
- ["2023-02-28", 920.55, 1939.73],
- ["2023-03-31", 1019.18, 2958.91],
- ["2023-04-30", 986.3, 3945.21],
- ["2023-05-31", 1019.18, 4964.39],
- ["2023-06-30", 986.3, 5950.69],
- ["2023-07-31", 1019.18, 6969.87],
- ["2023-08-31", 1019.18, 7989.05],
- ["2023-09-30", 986.3, 8975.35],
- ["2023-10-31", 1019.18, 9994.53],
- ["2023-11-30", 986.3, 10980.83],
- ["2023-12-31", 1019.17, 12000.0],
+ ["2023-01-31", 1021.98, 1021.98],
+ ["2023-02-28", 923.08, 1945.06],
+ ["2023-03-31", 1021.98, 2967.04],
+ ["2023-04-30", 989.01, 3956.05],
+ ["2023-05-31", 1021.98, 4978.03],
+ ["2023-06-30", 989.01, 5967.04],
+ ["2023-07-31", 1021.98, 6989.02],
+ ["2023-08-31", 1021.98, 8011.0],
+ ["2023-09-30", 989.01, 9000.01],
+ ["2023-10-31", 1021.98, 10021.99],
+ ["2023-11-30", 989.01, 11011.0],
+ ["2023-12-31", 989.0, 12000.0],
]
schedules = [
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 83350aa..7a88ffc 100644
--- a/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py
+++ b/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py
@@ -577,26 +577,41 @@
daily_depr_amount = (
flt(row.value_after_depreciation) - flt(row.expected_value_after_useful_life)
) / date_diff(
- add_months(
- row.depreciation_start_date,
- flt(row.total_number_of_depreciations - asset.number_of_depreciations_booked)
- * row.frequency_of_depreciation,
- ),
- add_months(
- row.depreciation_start_date,
- flt(
- row.total_number_of_depreciations
- - asset.number_of_depreciations_booked
- - number_of_pending_depreciations
+ get_last_day(
+ add_months(
+ row.depreciation_start_date,
+ flt(row.total_number_of_depreciations - asset.number_of_depreciations_booked - 1)
+ * row.frequency_of_depreciation,
)
- * row.frequency_of_depreciation,
+ ),
+ add_days(
+ get_last_day(
+ add_months(
+ row.depreciation_start_date,
+ flt(
+ row.total_number_of_depreciations
+ - asset.number_of_depreciations_booked
+ - number_of_pending_depreciations
+ - 1
+ )
+ * row.frequency_of_depreciation,
+ )
+ ),
+ 1,
),
)
- to_date = add_months(row.depreciation_start_date, schedule_idx * row.frequency_of_depreciation)
- from_date = add_months(
- row.depreciation_start_date, (schedule_idx - 1) * row.frequency_of_depreciation
+
+ to_date = get_last_day(
+ add_months(row.depreciation_start_date, schedule_idx * row.frequency_of_depreciation)
)
- return daily_depr_amount * date_diff(to_date, from_date)
+ from_date = add_days(
+ get_last_day(
+ add_months(row.depreciation_start_date, (schedule_idx - 1) * row.frequency_of_depreciation)
+ ),
+ 1,
+ )
+
+ return daily_depr_amount * (date_diff(to_date, from_date) + 1)
else:
return (
flt(row.value_after_depreciation) - flt(row.expected_value_after_useful_life)
@@ -609,18 +624,29 @@
- flt(asset.opening_accumulated_depreciation)
- flt(row.expected_value_after_useful_life)
) / date_diff(
- add_months(
- row.depreciation_start_date,
- flt(row.total_number_of_depreciations - asset.number_of_depreciations_booked)
- * row.frequency_of_depreciation,
+ get_last_day(
+ add_months(
+ row.depreciation_start_date,
+ flt(row.total_number_of_depreciations - asset.number_of_depreciations_booked - 1)
+ * row.frequency_of_depreciation,
+ )
),
- row.depreciation_start_date,
+ add_days(
+ get_last_day(add_months(row.depreciation_start_date, -1 * row.frequency_of_depreciation)), 1
+ ),
)
- to_date = add_months(row.depreciation_start_date, schedule_idx * row.frequency_of_depreciation)
- from_date = add_months(
- row.depreciation_start_date, (schedule_idx - 1) * row.frequency_of_depreciation
+
+ to_date = get_last_day(
+ add_months(row.depreciation_start_date, schedule_idx * row.frequency_of_depreciation)
)
- return daily_depr_amount * date_diff(to_date, from_date)
+ from_date = add_days(
+ get_last_day(
+ add_months(row.depreciation_start_date, (schedule_idx - 1) * row.frequency_of_depreciation)
+ ),
+ 1,
+ )
+
+ return daily_depr_amount * (date_diff(to_date, from_date) + 1)
else:
return (
flt(asset.gross_purchase_amount)