From 516a325a31d48d5833b285e78cd5dd2f7e2f91c9 Mon Sep 17 00:00:00 2001 From: Khushi Rawat <142375893+khushi8112@users.noreply.github.com> Date: Mon, 23 Dec 2024 15:42:18 +0530 Subject: [PATCH 1/2] fix: asset field precision check (cherry picked from commit 92b8768ae2e6327b68e723113529f5ee529a18d6) --- erpnext/assets/doctype/asset/asset.py | 12 +++++------- .../asset_depreciation_schedule.py | 14 +++++++++----- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/erpnext/assets/doctype/asset/asset.py b/erpnext/assets/doctype/asset/asset.py index 243ad009050..e499b5e0faa 100644 --- a/erpnext/assets/doctype/asset/asset.py +++ b/erpnext/assets/doctype/asset/asset.py @@ -308,12 +308,14 @@ class Asset(AccountsController): ) def validate_precision(self): - float_precision = cint(frappe.db.get_default("float_precision")) or 2 if self.gross_purchase_amount: - self.gross_purchase_amount = flt(self.gross_purchase_amount, float_precision) + self.gross_purchase_amount = flt( + self.gross_purchase_amount, self.precision("gross_purchase_amount") + ) + if self.opening_accumulated_depreciation: self.opening_accumulated_depreciation = flt( - self.opening_accumulated_depreciation, float_precision + self.opening_accumulated_depreciation, self.precision("opening_accumulated_depreciation") ) def validate_asset_values(self): @@ -487,11 +489,7 @@ class Asset(AccountsController): def validate_expected_value_after_useful_life(self): for row in self.get("finance_books"): - row.expected_value_after_useful_life = flt( - row.expected_value_after_useful_life, self.precision("gross_purchase_amount") - ) depr_schedule = get_depr_schedule(self.name, "Draft", row.finance_book) - if not depr_schedule: continue 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 679fbfe2e58..fe9fa870e0a 100644 --- a/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py +++ b/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py @@ -430,6 +430,7 @@ class AssetDepreciationSchedule(Document): if not depreciation_amount: continue + depreciation_amount = flt(depreciation_amount, asset_doc.precision("gross_purchase_amount")) value_after_depreciation = flt( value_after_depreciation - flt(depreciation_amount), asset_doc.precision("gross_purchase_amount"), @@ -443,6 +444,7 @@ class AssetDepreciationSchedule(Document): depreciation_amount += flt(value_after_depreciation) - flt( row.expected_value_after_useful_life ) + depreciation_amount = flt(depreciation_amount, asset_doc.precision("gross_purchase_amount")) skip_row = True if flt(depreciation_amount, asset_doc.precision("gross_purchase_amount")) > 0: @@ -517,10 +519,13 @@ class AssetDepreciationSchedule(Document): i - 1 ].accumulated_depreciation_amount else: - accumulated_depreciation = flt(self.opening_accumulated_depreciation) + accumulated_depreciation = flt( + self.opening_accumulated_depreciation, + asset_doc.precision("opening_accumulated_depreciation"), + ) - depreciation_amount = flt(d.depreciation_amount, d.precision("depreciation_amount")) - value_after_depreciation -= flt(depreciation_amount) + value_after_depreciation -= flt(d.depreciation_amount) + value_after_depreciation = flt(value_after_depreciation, d.precision("depreciation_amount")) # for the last row, if depreciation method = Straight Line if ( @@ -530,12 +535,11 @@ class AssetDepreciationSchedule(Document): and not date_of_return and not row.shift_based ): - depreciation_amount += flt( + d.depreciation_amount += flt( value_after_depreciation - flt(row.expected_value_after_useful_life), d.precision("depreciation_amount"), ) - d.depreciation_amount = depreciation_amount accumulated_depreciation += d.depreciation_amount d.accumulated_depreciation_amount = flt( accumulated_depreciation, d.precision("accumulated_depreciation_amount") From ddfead2cde3a25c95bb1bff79680a41365ebf8de Mon Sep 17 00:00:00 2001 From: Khushi Rawat <142375893+khushi8112@users.noreply.github.com> Date: Mon, 23 Dec 2024 23:37:51 +0530 Subject: [PATCH 2/2] fix: test case correction (cherry picked from commit 2f7e6230a6c15885e291902c509e36a2017ec8b4) --- erpnext/assets/doctype/asset/test_asset.py | 2 +- .../asset_depreciation_schedule/asset_depreciation_schedule.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/erpnext/assets/doctype/asset/test_asset.py b/erpnext/assets/doctype/asset/test_asset.py index 06f170200a8..8a320d617ff 100644 --- a/erpnext/assets/doctype/asset/test_asset.py +++ b/erpnext/assets/doctype/asset/test_asset.py @@ -889,7 +889,7 @@ class TestDepreciationMethods(AssetSetup): ["2030-12-31", 28630.14, 28630.14], ["2031-12-31", 35684.93, 64315.07], ["2032-12-31", 17842.46, 82157.53], - ["2033-06-06", 5342.46, 87499.99], + ["2033-06-06", 5342.47, 87500.00], ] 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 fe9fa870e0a..a60478ac8a1 100644 --- a/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py +++ b/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py @@ -344,7 +344,7 @@ class AssetDepreciationSchedule(Document): date_of_disposal, original_schedule_date=schedule_date, ) - + depreciation_amount = flt(depreciation_amount, asset_doc.precision("gross_purchase_amount")) if depreciation_amount > 0: self.add_depr_schedule_row(date_of_disposal, depreciation_amount, n)