diff --git a/erpnext/assets/doctype/asset/asset.py b/erpnext/assets/doctype/asset/asset.py index 9df5728fd3e..7ae8b10d9f5 100644 --- a/erpnext/assets/doctype/asset/asset.py +++ b/erpnext/assets/doctype/asset/asset.py @@ -446,12 +446,15 @@ class Asset(AccountsController): Asset = frappe.qb.DocType("Asset") if doctype == "Purchase Invoice": - asset_filter = (Asset.purchase_invoice == purchase_doc) & (Asset.name != self.name) + asset_filter = Asset.purchase_invoice == purchase_doc else: - asset_filter = (Asset.purchase_receipt == purchase_doc) & (Asset.name != self.name) + asset_filter = Asset.purchase_receipt == purchase_doc existing_asset_qty = ( - frappe.qb.from_(Asset).select(IfNull(Sum(Asset.asset_quantity), 0)).where(asset_filter) + frappe.qb.from_(Asset) + .select(IfNull(Sum(Asset.asset_quantity), 0)) + .where((Asset.item_code == self.item_code) & (Asset.name != self.name)) + .where(asset_filter) ).run()[0][0] PurchaseDoc = frappe.qb.DocType(doctype) @@ -468,12 +471,17 @@ class Asset(AccountsController): if (existing_asset_qty + self.asset_quantity) > purchased_qty: frappe.throw( - _("Created assets {0} exceed the purchased quantity {1} for item {2} " "in {3} {4}").format( - (existing_asset_qty + self.asset_quantity), + _( + "Cannot create asset.

" + "You're trying to create {0} asset(s) from {2} {3}.
" + "However, only {1} item(s) were purchased and {4} asset(s) already exist against {5}." + ).format( + self.asset_quantity, purchased_qty, - self.item_code, doctype, get_link_to_form(doctype, purchase_doc), + existing_asset_qty, + purchase_doc, ) )