Client Scripts
Een Client Script draait JavaScript in de browser wanneer een DocType-formulier open is. Gebruik voor:
- Velden tonen/verbergen op basis van waarden
- Afgeleide velden client-side berekenen
- Eigen actieknoppen toevoegen
- Invoer valideren vóór opslag
Voor de meeste gevallen zijn Client Scripts de juiste keuze — snel, geen page-reload, directe feedback.
Aanmaken
Customize → Client Script → New: kies DocType, view (Form/List), plak uw JS.
Form-events
frappe.ui.form.on("Sales Invoice", {
refresh(frm) {
// Bij elke laad/reload
if (frm.doc.status === "Paid") {
frm.add_custom_button("Print Receipt", () => {
window.open(`/api/method/erpnext.print_receipt?invoice=${frm.doc.name}`);
});
}
},
customer(frm) {
// Bij wijziging van het customer-veld
frappe.msgprint(`Geselecteerd: ${frm.doc.customer}`);
},
validate(frm) {
// Vóór opslag
if (frm.doc.grand_total > 100000) {
frappe.throw("Facturen boven 100k vereisen managergoedkeuring");
}
}
});
Child table-events
frappe.ui.form.on("Sales Invoice Item", {
qty(frm, cdt, cdn) {
const row = locals[cdt][cdn];
frappe.model.set_value(cdt, cdn, "amount", row.qty * row.rate);
}
});
Server aanroepen
frappe.call({
method: "myapp.api.check_credit_limit",
args: { customer: frm.doc.customer, amount: frm.doc.grand_total },
callback: (r) => {
if (!r.message.ok) frappe.throw("Boven kredietlimiet");
}
});
Beperkingen
- Draait in de browser — invoer hier nooit vertrouwen voor security. Altijd hervalideren op de server in een Server Script of whitelisted method.
- Fouten falen stil tenzij u de browserconsole bekijkt. Voeg
console.error()toe tijdens itereren.
Voor server-side afdwingen: zie Server Scripts.
Last updated 3 days ago
Was this helpful?