Documentation Frappe Framework

Frappe Framework

Script client (Client Script)

On choisit le DocType, on adapte le modèle et on enregistre. Le script peut valider, calculer, filtrer les e-mails et proposer des destinataires.

2 min de lectureMis à jour le Source : docs.frappe.io

Créer

Un Client Script est un script de formulaire exécuté dans le navigateur. Une bibliothèque non standard doit être essayée sur plusieurs navigateurs. En version 13, Custom Script a été renommé Client Script.

Il faut le rôle System Manager. AwesomeBar : New Client Script. Choisir le DocType, adapter le modèle, enregistrer, puis ouvrir le formulaire.

Contrairement au script serveur, tout JavaScript est permis, ainsi que les API Frappe et les bibliothèques déjà ajoutées au bureau : le frontal est considéré sûr par conception.

Attention

Une validation de Client Script ne s’applique qu’à la vue formulaire du navigateur. Pour l’API ou la console système, il faut un script serveur.

Exemples

Validation : sur Task, validate, si from_date est avant get_today(), msgprint refuse une date passée. Le snippet publié n’interrompt pas l’enregistrement au-delà du message.

cur_frm.add_fetch('customer', 'local_tax_no', 'local_tax_no') copie le numéro fiscal local quand le client change.

Sur Task, refresh rend ibsn en lecture seule dès que le document n’est plus nouveau : frm.set_df_property('ibsn', 'read_only', !frm.is_new()). Le nom publié est ibsn.

Sur Sales Invoice, validate parcourt sales_team. Le pourcentage d’incentive est 2, ou 4 si base_grand_total dépasse 400. d.incentives est le total de base fois ce pourcentage, via flt. La somme va dans frm.doc.total_incentive.

E-mails

CommunicationComposer interroge le formulaire. get_email_recipient_filters(frm, field) renvoie des filtres pour recipients, cc ou bcc. L’exemple Quotation, pour recipients, filtre Dynamic Link sur link_doctype égal à quotation_to et link_name égal à party_name. Ces filtres visent le DocType Contact et sa table Links. Coller une adresse quelconque reste possible.

get_email_recipients fournit des destinataires par défaut. Si le champ custom_bcc existe, le cas bcc renvoie [frm.doc.custom_bcc]. Les snippets publiés se ferment par }; après le commentaire // ....

Point d’attention

Le filtre d’e-mail ne bloque pas un collage. La validation de date affichée ne contient pas de return ni d’exception : elle se limite au message publié.