Personnalisations
Scripts Client
Les scripts client permettent d'interagir directement avec l'interface utilisateur et de modifier son comportement.
Les scripts client permettent d'interagir directement avec l'interface utilisateur et de modifier son comportement.
Exemples
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;
};
}
Scripts Python
Un script python vous permet d'écrire un script exécuté sur le server et généré via un événement de document ou via l'API
Modèles Jinja
Le langage Jinja est utilisé dans Dokos pour créer des modèles d'email, des notifications et des formats d'impression personnalisés complexes en y intégrant des variables. Il permet de mélanger du language HTML avec des variables en Python.