From 2fbf5b9676d0b54e0c15d60df8f432b9fd32604f Mon Sep 17 00:00:00 2001 From: Ty Reynolds Date: Mon, 12 Jan 2026 10:07:35 -0500 Subject: [PATCH] Autofill on ZIP for Customer Quick Entry --- ns_app/public/js/custom.js | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/ns_app/public/js/custom.js b/ns_app/public/js/custom.js index 366e39d..7dad7b4 100644 --- a/ns_app/public/js/custom.js +++ b/ns_app/public/js/custom.js @@ -31,14 +31,43 @@ frappe.ui.form.on("Customer", { console.log("NS App: Modifying Quick Entry Fields"); - // Remove unwanted fields + // Hide unwanted fields frm.toggle_display("customer_group", false); // Make fields required frm.set_df_property("mobile_no", "reqd", 1); - // Set default values + // Defaults frm.set_value("territory", "United States"); + }, + + pincode(frm) { + if (!frm.is_quick_entry) return; + + const zip = frm.doc.pincode; + if (!zip || zip.length < 5) return; + + // Optional: only run for US + if (frm.doc.country && frm.doc.country !== "United States") return; + + fetch(`https://api.zippopotam.us/us/${zip}`) + .then(res => { + if (!res.ok) return null; + return res.json(); + }) + .then(data => { + if (!data || !data.places || !data.places.length) return; + + const place = data.places[0]; + + frm.set_value("city", place["place name"]); + frm.set_value("state", place["state"]); + frm.set_value("country", data.country); + + console.log("NS App: ZIP auto-filled address", data); + }) + .catch(() => { + console.log("Invaild Zip!") + }); } }); -