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 d7dcfac3aab8..bad89e93259a 100644 --- a/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py +++ b/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py @@ -509,7 +509,10 @@ def set_accumulated_depreciation( continue if not accumulated_depreciation: - if i > 0 and asset_doc.flags.decrease_in_asset_value_due_to_value_adjustment: + if i > 0 and ( + asset_doc.flags.decrease_in_asset_value_due_to_value_adjustment + or asset_doc.flags.increase_in_asset_value_due_to_repair + ): accumulated_depreciation = self.get("depreciation_schedule")[ i - 1 ].accumulated_depreciation_amount @@ -677,7 +680,7 @@ def get_straight_line_or_manual_depr_amount( # if the Depreciation Schedule is being modified after Asset Repair due to increase in asset value elif asset.flags.increase_in_asset_value_due_to_repair: return (flt(row.value_after_depreciation) - flt(row.expected_value_after_useful_life)) / flt( - row.total_number_of_depreciations + number_of_pending_depreciations ) # if the Depreciation Schedule is being modified after Asset Value Adjustment due to decrease in asset value elif asset.flags.decrease_in_asset_value_due_to_value_adjustment: @@ -1041,6 +1044,7 @@ def make_new_active_asset_depr_schedules_and_cancel_current_ones( date_of_return=None, value_after_depreciation=None, ignore_booked_entry=False, + difference_amount=None, ): for row in asset_doc.get("finance_books"): current_asset_depr_schedule_doc = get_asset_depr_schedule_doc( @@ -1055,6 +1059,8 @@ def make_new_active_asset_depr_schedules_and_cancel_current_ones( ) new_asset_depr_schedule_doc = frappe.copy_doc(current_asset_depr_schedule_doc) + if asset_doc.flags.decrease_in_asset_value_due_to_value_adjustment and not value_after_depreciation: + value_after_depreciation = row.value_after_depreciation + difference_amount if asset_doc.flags.increase_in_asset_value_due_to_repair and row.depreciation_method in ( "Written Down Value", diff --git a/erpnext/assets/doctype/asset_repair/asset_repair.js b/erpnext/assets/doctype/asset_repair/asset_repair.js index 9284c86bd92d..67ce6e6f7efe 100644 --- a/erpnext/assets/doctype/asset_repair/asset_repair.js +++ b/erpnext/assets/doctype/asset_repair/asset_repair.js @@ -29,6 +29,15 @@ frappe.ui.form.on("Asset Repair", { }; }); + frm.set_query("purchase_invoice", function () { + return { + filters: { + company: frm.doc.company, + docstatus: 1, + }, + }; + }); + frm.set_query("warehouse", "stock_items", function () { return { filters: { diff --git a/erpnext/assets/doctype/asset_repair/asset_repair.py b/erpnext/assets/doctype/asset_repair/asset_repair.py index 903e68e32e0e..4e73148828d0 100644 --- a/erpnext/assets/doctype/asset_repair/asset_repair.py +++ b/erpnext/assets/doctype/asset_repair/asset_repair.py @@ -117,7 +117,9 @@ def before_submit(self): get_link_to_form(self.doctype, self.name), ) self.asset_doc.flags.ignore_validate_update_after_submit = True - make_new_active_asset_depr_schedules_and_cancel_current_ones(self.asset_doc, notes) + make_new_active_asset_depr_schedules_and_cancel_current_ones( + self.asset_doc, notes, ignore_booked_entry=True + ) self.asset_doc.save() add_asset_activity( @@ -154,7 +156,9 @@ def before_cancel(self): get_link_to_form(self.doctype, self.name), ) self.asset_doc.flags.ignore_validate_update_after_submit = True - make_new_active_asset_depr_schedules_and_cancel_current_ones(self.asset_doc, notes) + make_new_active_asset_depr_schedules_and_cancel_current_ones( + self.asset_doc, notes, ignore_booked_entry=True + ) self.asset_doc.save() add_asset_activity( diff --git a/erpnext/assets/doctype/asset_value_adjustment/asset_value_adjustment.py b/erpnext/assets/doctype/asset_value_adjustment/asset_value_adjustment.py index 8dfed9cba8a1..9b0212b037f3 100644 --- a/erpnext/assets/doctype/asset_value_adjustment/asset_value_adjustment.py +++ b/erpnext/assets/doctype/asset_value_adjustment/asset_value_adjustment.py @@ -57,7 +57,7 @@ def on_submit(self): def on_cancel(self): frappe.get_doc("Journal Entry", self.journal_entry).cancel() - self.update_asset(self.current_asset_value) + self.update_asset() add_asset_activity( self.asset, _("Asset's value adjusted after cancellation of Asset Value Adjustment {0}").format( @@ -145,7 +145,7 @@ def make_depreciation_entry(self): self.db_set("journal_entry", je.name) - def update_asset(self, asset_value): + def update_asset(self, asset_value=None): asset = frappe.get_doc("Asset", self.asset) if not asset.calculate_depreciation: @@ -171,7 +171,11 @@ def update_asset(self, asset_value): ) make_new_active_asset_depr_schedules_and_cancel_current_ones( - asset, notes, value_after_depreciation=asset_value, ignore_booked_entry=True + asset, + notes, + value_after_depreciation=asset_value, + ignore_booked_entry=True, + difference_amount=self.difference_amount, ) asset.flags.ignore_validate_update_after_submit = True asset.save()