Skip to content

Commit

Permalink
fix: handle post depr entries fail and fix asset repair link
Browse files Browse the repository at this point in the history
  • Loading branch information
anandbaburajan committed Jan 16, 2023
1 parent 2f81f15 commit 5f7dc8a
Show file tree
Hide file tree
Showing 4 changed files with 87 additions and 6 deletions.
17 changes: 17 additions & 0 deletions erpnext/assets/doctype/asset/asset.js
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,10 @@ frappe.ui.form.on('Asset', {
}, __("Manage"));
}

if (frm.doc.depr_entry_posting_status === "Failed") {
frm.trigger("set_depr_posting_failure_alert");
}

frm.trigger("setup_chart");
}

Expand All @@ -142,6 +146,19 @@ frappe.ui.form.on('Asset', {
}
},

set_depr_posting_failure_alert: function (frm) {
const alert = `
<div class="row">
<div class="col-xs-12 col-sm-6">
<span class="indicator whitespace-nowrap red">
<span>Failed to post depreciation entries</span>
</span>
</div>
</div>`;

frm.dashboard.set_headline_alert(alert);
},

toggle_reference_doc: function(frm) {
if (frm.doc.purchase_receipt && frm.doc.purchase_invoice && frm.doc.docstatus === 1) {
frm.set_df_property('purchase_invoice', 'read_only', 1);
Expand Down
15 changes: 13 additions & 2 deletions erpnext/assets/doctype/asset/asset.json
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@
"column_break_51",
"purchase_receipt_amount",
"default_finance_book",
"depr_entry_posting_status",
"amended_from"
],
"fields": [
Expand Down Expand Up @@ -473,6 +474,16 @@
"fieldname": "section_break_36",
"fieldtype": "Section Break",
"label": "Finance Books"
},
{
"fieldname": "depr_entry_posting_status",
"fieldtype": "Select",
"hidden": 1,
"label": "Depreciation Entry Posting Status",
"no_copy": 1,
"options": "\nSuccessful\nFailed",
"print_hide": 1,
"read_only": 1
}
],
"idx": 72,
Expand All @@ -487,15 +498,15 @@
{
"group": "Repair",
"link_doctype": "Asset Repair",
"link_fieldname": "asset_name"
"link_fieldname": "asset"
},
{
"group": "Value",
"link_doctype": "Asset Value Adjustment",
"link_fieldname": "asset"
}
],
"modified": "2022-07-20 16:22:44.437579",
"modified": "2023-01-17 00:28:37.789345",
"modified_by": "Administrator",
"module": "Assets",
"name": "Asset",
Expand Down
60 changes: 56 additions & 4 deletions erpnext/assets/doctype/asset/depreciation.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@

import frappe
from frappe import _
from frappe.utils import cint, flt, getdate, today
from frappe.utils import cint, flt, get_link_to_form, getdate, today
from frappe.utils.user import get_users_with_role

from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import (
get_checks_for_pl_and_bs_accounts,
Expand All @@ -20,9 +21,22 @@ def post_depreciation_entries(date=None):

if not date:
date = today()
for asset in get_depreciable_assets(date):
make_depreciation_entry(asset, date)
frappe.db.commit()

failed_asset_names = []

for asset_name in get_depreciable_assets(date):
try:
make_depreciation_entry(asset_name, date)
frappe.db.commit()
except Exception as e:
frappe.db.rollback()
failed_asset_names.append(asset_name)

if failed_asset_names:
set_depr_entry_posting_status_for_failed_assets(failed_asset_names)
notify_depr_entry_posting_error(failed_asset_names)

frappe.db.commit()


def get_depreciable_assets(date):
Expand Down Expand Up @@ -121,6 +135,8 @@ def make_depreciation_entry(asset_name, date=None):
finance_books.value_after_depreciation -= d.depreciation_amount
finance_books.db_update()

frappe.db.set_value("Asset", asset_name, "depr_entry_posting_status", "Successful")

asset.set_status()

return asset
Expand Down Expand Up @@ -184,6 +200,42 @@ def get_credit_and_debit_accounts(accumulated_depreciation_account, depreciation
return credit_account, debit_account


def set_depr_entry_posting_status_for_failed_assets(failed_asset_names):
for asset_name in failed_asset_names:
frappe.db.set_value("Asset", asset_name, "depr_entry_posting_status", "Failed")


def notify_depr_entry_posting_error(failed_asset_names):
recipients = get_users_with_role("Accounts Manager")

if not recipients:
recipients = get_users_with_role("System Manager")

subject = _("Error while posting depreciation entries")

asset_links = get_comma_separated_asset_links(failed_asset_names)

message = (
_("Hi,")
+ "<br>"
+ _("The following assets have failed to post depreciation entries: {0}").format(asset_links)
+ "."
)

frappe.sendmail(recipients=recipients, subject=subject, message=message)


def get_comma_separated_asset_links(asset_names):
asset_links = []

for asset_name in asset_names:
asset_links.append(get_link_to_form("Asset", asset_name))

asset_links = ", ".join(asset_links)

return asset_links


@frappe.whitelist()
def scrap_asset(asset_name):
asset = frappe.get_doc("Asset", asset_name)
Expand Down
1 change: 1 addition & 0 deletions erpnext/assets/doctype/asset/test_asset.py
Original file line number Diff line number Diff line change
Expand Up @@ -1387,6 +1387,7 @@ def create_asset(**args):
"location": args.location or "Test Location",
"asset_owner": args.asset_owner or "Company",
"is_existing_asset": args.is_existing_asset or 1,
"depr_entry_posting_status": args.depr_entry_posting_status or "",
}
)

Expand Down

0 comments on commit 5f7dc8a

Please sign in to comment.