Hello, I am updating the per_received field in Purchase Order this will trigger before submitting the Purchase Receipt. Please help
//
def update_per_receive(doc):
data = fetch_per_receive_data(doc)
frappe.msgprint(str(data))
for d in data:
pr_total_qty = float(d.get("pr_total_qty", 0))
po_total_qty = float(d.get("po_total_qty", 0))
frappe.msgprint(f"Processing Purchase Order: {d.get('document')}")
frappe.msgprint(f"PR Total Qty: {pr_total_qty}, PO Total Qty: {po_total_qty}")
if d.get("is_cancelled"):
po_doc = frappe.get_doc("Purchase Order", d.get("document"))
if pr_total_qty == po_total_qty:
frappe.msgprint("Setting per_received to 100%")
po_doc.per_received = 100
elif po_total_qty > 0:
po_doc.per_received = (pr_total_qty / po_total_qty) * 100
else:
po_doc.per_received = 0
po_doc.save()
frappe.msgprint(f"Updated per_received: {po_doc.per_received}")
frappe.db.commit()
frappe.msgprint("SUCCESS: Purchase Order updated.")
//