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,
)
)