Sélectionner une page

Création d’un fonction qui calcule les lignes d’un devis suivant le taux de TVA


Un client a un champ intitulé “taux de TVA” qui lui permet de modifier le taux de TVA suivant que son devis ou facture est pour un de ses clients intra ou extérieur à l’Union européenne. Dans ce cas là, le taux de TVA passe de 20% à 0%. Il souhaite que par défaut le taux soit de TVA soit 20%.


Pour mettre par défaut le champ “taux de TVA” à 20%, j’ai à priori deux options : la dépendance de champ ou la règle de workflow.


Mais comme ce client veut pouvoir modifier manuellement le taux de TVA, je ne peux pas utiliser la dépendance de champs qui ne permet plus la modification. Reste la règle de Workflow qui a comme avantage de laisser le champ modifiable et comme inconvénient de ne pas voir la modification avant l’enregistrement de la fiche.


Ces deux méthodes ne permettent pas le recalcul des lignes du devis ou de la facture lorsqu’il y a une modification du champ “taux de Tva”.


Je n’ai pas le choix il me faut créer une fonction.

Je choisis une fonction dans les automatisations et non dans l’Espace Développeur. Celui-ci ne permettant pas d’associer une fonction à un module, je suis obligé de passer par “Actions” dans “Automatisation”.


Dans la création de cette fonction associé ici au module Devis, je choisis deux arguments : un le numéro unique interne Zoho du Devis : l’ID et la valeur du champ “Taux de TVA”. Je prends alors l’habitude de préfixer les arguments avec “arg_”, ce qui me permet en lecture de code de savoir tout de suite à quoi je fais appel.


Idem pour les variables dans le code que préfixe : var_.



Voici le code de la fonction


////  ———————————————————————–

// Name  : Devis_recalculTVA

// version  : v1.0 12/06/2018

// Module  : Devis

// WorkFlow : WF3_Maj_TauxTVA-Calcul

// Trigger  : changement de valeur de Taux TVA

// Criteria : Taux TVA

// Action  :

// ID Test  :

// Auteur : jmu@specialisteinternet.fr

// ————————————————————————–

// récupération de la valeur du champ Taux de TVA et suivant celle-ci renseignement de la variable correspondante.

if(arg_tauxTVA == “—“)

{

var_taxvalue = 0.0;

}

else

{

var_taxvalue = arg_tauxTVA;

}

// construction d’un MAP en prenant en compte les valeurs de la taxe de chaque ligne

// “Line_tax” puis de la valeur du pourcentage à formater en chiffre.

mp = Map();

mp.put(“line_tax”,{{“percentage”:var_taxvalue.toDecimal(),”name”:”Vat”}});

update = zoho.crm.update(“Quotes”,arg_IDDevis.toLong(),mp);

info update;


Il me reste à créer le workflow qui permet d’appeler cette fonction.



Voici le POC (Proof of concept) que cela fonctionne :