Les scripts client permettent d'interagir directement avec l'interface utilisateur et de modifier son comportement.
Vérifier qu'une pièce jointe a bien été ajoutée à un document de type Note de frais avant son enregistrement ou sa validation
frappe.ui.form.on('Expense Claim', {
before_save(frm) {
validate_attachments(frm)
},
before_submit(frm) {
validate_attachments(frm)
}
})
const validate_attachments = (frm) => {
// On vérifie que le document a déjà été enregistré, car l'ajout d'une pièce jointe n'est possible qu'après le premier enregistrement
// On vérifie également si une pièce jointe a déjà été ajoutée au document
if (!frm.is_new() && !frm.attachments.get_attachments().length) {
frappe.show_alert({
message:"Veuillez ajouter des justificatifs pour votre note de frais",
indicator: "orange"
})
// Variante: On peut également afficher un popup au lieu d'une alerte
// Dans ce cas remplacez frappe.show_alert... par le code ci-dessous
/*
const dialog = new frappe.ui.Dialog({
title: "Justificatifs manquants",
minimizable: false,
size: 'large'
});
dialog.msg_area = $('<div class="msgprint">').appendTo(dialog.body);
const msg = "Veuillez ajouter des justificatifs pour votre note de frais";
dialog.msg_area.append(msg);
dialog.show()
*/
// frappe.validated permet d'indiquer au framework que la validation a échoué. Le document ne pourra pas être enregistré
frappe.validated = false;
};
}