mirror of
https://github.com/frappe/erpnext.git
synced 2026-03-26 06:31:13 +01:00
fix: validate if no matching item found
(cherry picked from commit 44c1425e73)
This commit is contained in:
@@ -660,9 +660,9 @@ frappe.ui.form.on("Asset", {
|
|||||||
frm.set_value("purchase_invoice_item", data.purchase_invoice_item);
|
frm.set_value("purchase_invoice_item", data.purchase_invoice_item);
|
||||||
}
|
}
|
||||||
|
|
||||||
let is_editable = !data.is_multiple_items; // if multiple items, then fields should not be read-only
|
let is_editable = !data.is_multiple_items; // if multiple items, then fields should be read-only
|
||||||
frm.set_df_property("gross_purchase_amount", "read_only", is_editable);
|
frm.set_df_property("gross_purchase_amount", "read_only", is_editable);
|
||||||
frm.set_df_property("asset_quantity", "read_only", !is_editable);
|
frm.set_df_property("asset_quantity", "read_only", is_editable);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -205,29 +205,40 @@ class Asset(AccountsController):
|
|||||||
return
|
return
|
||||||
|
|
||||||
self.purchase_amount = self.gross_purchase_amount
|
self.purchase_amount = self.gross_purchase_amount
|
||||||
purchase_type = "Purchase Receipt" if self.purchase_receipt else "Purchase Invoice"
|
purchase_doc_type = "Purchase Receipt" if self.purchase_receipt else "Purchase Invoice"
|
||||||
purchase_doc = self.purchase_receipt or self.purchase_invoice
|
purchase_doc = self.purchase_receipt or self.purchase_invoice
|
||||||
|
|
||||||
if not purchase_doc:
|
if not purchase_doc:
|
||||||
return
|
return
|
||||||
|
|
||||||
purchase_doc = frappe.get_doc(purchase_type, purchase_doc)
|
linked_item = self.get_linked_item(purchase_doc_type, purchase_doc)
|
||||||
|
|
||||||
|
if linked_item:
|
||||||
|
if purchase_doc_type == "Purchase Receipt":
|
||||||
|
self.purchase_receipt_item = linked_item
|
||||||
|
else:
|
||||||
|
self.purchase_invoice_item = linked_item
|
||||||
|
|
||||||
|
def get_linked_item(self, purchase_doc_type, purchase_doc):
|
||||||
|
purchase_doc = frappe.get_doc(purchase_doc_type, purchase_doc)
|
||||||
|
|
||||||
for item in purchase_doc.items:
|
for item in purchase_doc.items:
|
||||||
if self.asset_quantity > 1:
|
if self.asset_quantity > 1:
|
||||||
if item.base_net_amount == self.gross_purchase_amount and item.qty == self.asset_quantity:
|
if item.base_net_amount == self.gross_purchase_amount and item.qty == self.asset_quantity:
|
||||||
self.purchase_receipt_item = item.name if purchase_type == "Purchase Receipt" else None
|
return item.name
|
||||||
self.purchase_invoice_item = item.name if purchase_type == "Purchase Invoice" else None
|
|
||||||
return
|
|
||||||
elif item.qty == self.asset_quantity:
|
elif item.qty == self.asset_quantity:
|
||||||
self.purchase_receipt_item = item.name if purchase_type == "Purchase Receipt" else None
|
return item.name
|
||||||
self.purchase_invoice_item = item.name if purchase_type == "Purchase Invoice" else None
|
|
||||||
return
|
|
||||||
else:
|
else:
|
||||||
if item.base_net_rate == self.gross_purchase_amount:
|
if item.base_net_rate == self.gross_purchase_amount and item.qty == self.asset_quantity:
|
||||||
self.purchase_receipt_item = item.name if purchase_type == "Purchase Receipt" else None
|
return item.name
|
||||||
self.purchase_invoice_item = item.name if purchase_type == "Purchase Invoice" else None
|
|
||||||
return
|
# If no matching item found, raise validation error
|
||||||
|
frappe.throw(
|
||||||
|
_(
|
||||||
|
"No matching item found in {0} with item code {1}. "
|
||||||
|
"Please verify the purchase details and ensure the correct amount and quantity is recorded."
|
||||||
|
).format(purchase_doc_type, self.item_code)
|
||||||
|
)
|
||||||
|
|
||||||
def validate_asset_and_reference(self):
|
def validate_asset_and_reference(self):
|
||||||
if self.purchase_invoice or self.purchase_receipt:
|
if self.purchase_invoice or self.purchase_receipt:
|
||||||
|
|||||||
Reference in New Issue
Block a user