SmartExpressions : Différence entre versions
Ligne 187 : | Ligne 187 : | ||
''La fonction enregistre le premier nombre, puis l'arrondit en fonction du deuxième paramètre'' | ''La fonction enregistre le premier nombre, puis l'arrondit en fonction du deuxième paramètre'' | ||
− | La méthode utilisée est celle de l'arrondi [ | + | La méthode utilisée est celle de l'arrondi [https://fr.wikipedia.org/wiki/Arrondi_(math%C3%A9matiques)#Arrondi_au_plus_proche_ou_arrondi_arithm%C3%A9tique MediaWiki]. |
<p>Par exemple :</p> | <p>Par exemple :</p> |
Version du 23 novembre 2020 à 14:27
Cette page est en cours de construction
Sommaire
- 1 Introduction
- 2 Paramétrage
- 2.1 Bases de la syntaxe
- 2.2 Les fonctions
- 2.2.1 Principes
- 2.2.1.1 Fonctions sur les Dates
- 2.2.1.1.1 Opération sur une date
- 2.2.1.1.2 savoir si une date est avant une autre date
- 2.2.1.1.3 calcul de la différence entre deux dates
- 2.2.1.1.4 renvoyer automatiquement la date du jour
- 2.2.1.1.5 trouver automatiquement l'âge d'un individu
- 2.2.1.1.6 isoler le jour, le mois, l'année d'une date
- 2.2.1.1.7 changer le format d'une date
- 2.2.1.2 Fonctions sur les Nombres
- 2.2.1.3 Fonctions sur les Chaînes de caractères
- 2.2.1.4 Fonctions sur les repeaters
- 2.2.1.1 Fonctions sur les Dates
- 2.2.1 Principes
Introduction
On désigne par "SmartExpressions" la syntaxe permettant de paramétrer les Dynvars et les Visible If.
Paramétrage
Pour mémoire : la syntaxe est basée sur PHP : https://www.php.net/manual/fr/funcref.php
Bases de la syntaxe
Cette page est encore en cours de construction
Principes
La syntaxe SmartExpressions permet d'effectuer des enchaînements logiques de type SI ... ALORS
afin de déterminer des règles d'applications, ainsi que des calculs mathématiques
?
: Alors
:
: Sinon
or, and
: OU, ET
~
: Concaténation (entre plusieurs chaînes de caractères)
*
+
-
/
=
!=
: opérateurs mathématiques
Illustration
Ici la SmartExpression utilisée signifie :
Si la variable TYPE_SOCIETE
est égale à "Entreprise unipersonnelle à responsabilité limitée" OU si la variable TYPE_SOCIETE
est égale à "Société à responsabilité limitée" OU si la variable TYPE_SOCIETE
est égale à "Société civile", ALORS la Dynvar ACTIONS_PARTS
devra valoir "parts sociales", sinon SI si la variable TYPE_SOCIETE
est égale à "Société par actions simplifiée" OU si la variable TYPE_SOCIETE
est égale à "Société par actions simplifiée unipersonnelle", alors la la Dynvar ACTIONS_PARTS
devra valoir "actions"
Décomposition @LEO TODO
Exemples d'application
Opérations mathématiques
Les Dynvars peuvent servir à effectuer des opérations mathématiques, en utilisant les opérateurs basiques, comme par exemple :
Il est possible d'effectuer des opérations mathématiques entre plusieurs variables, et aussi entre plusieurs Dynvars.
Liste des opérateurs mathématiques pouvant être utilisés : *
+
-
/
Factorisation du raisonnement
Factorisation simple
On peut aussi prévoir qu'une Dynvar prenne pour valeur TRUE
ou FALSE
en fonction de la valeur d'autres variables
Par exemple :
Cette formule signifie : la Dynvar nommée FISCALITE_FR
vaudra TRUE
si NATIONALITE_ACHETEUR
ou NATIONALITE_VENDEUR
est égal à "france"
Il sera donc possible d'utiliser la Dynvar FISCALITE_FR
dans des Visible Ifs, ou même dans les formules d'autres Dynvars.
Pour utiliser la dynvar FISCALITE_FR
, on utilisera donc la SmartExpression suivante : FISCALITE_FR = true
ou FISCALITE_FR = false
Factorisation et chaînes de caractères
Dans l'exemple ci-dessus, la SmartExpression signifie : "Si la variable SOCIETE_RESULTAT
est supérieure à 0, Alors la Dynvar BENEFICE_PERTE
doit valoir "bénéfice", sinon si la variable SOCIETE_RESULTAT
est inférieure à 0, Alors la Dynvar BENEFICE_PERTE
doit valoir "perte".
Dynvars et chaînes de caractères
Une Dynvar peut avoir pour formule plusieurs chaînes de caractères, par exemple pour reconstruire un nom complet ou une phrase en utilisant plusieurs variables.
Les fonctions
Principes
Une fonction prend toujours la forme suivante : MA_FONCTION( xxx )
Une fonction est donc toujours composée de trois éléments :
MA_FONCTION
: on commence toujours par nommer la fonction souhaitée.
( )
: ces parenthèses dites "d'exécution" peuvent contenir plusieurs paramètres, séparés chacun par une virgule. Chaque fonction pourra avoir plus ou moins de paramètres.
xxx
: les paramètres de la fonction. Ce sont les paramètres qui vont permettre à la fonction de s'exécuter.
Fonctions sur les Dates
Opération sur une date
Cette fonction permet de réaliser des opérations (somme et soustraction) sur une date. C'est à dire que pour une date donnée, la fonction permet d'obtenir une date antérieur ou postérieure de N jours / années / heures (etc.). Cette fonction est utile pour calculer une date d'échéance (ex : "3 mois après la date de signature…"), ou parler d'une date en fonction d'une autre (Ex : "12 jours avant la date…").
- Nom de la fonction :
date_sum
- Nombre de paramètres :
3
- 1 - Date à traiter (variable provenant d'un DateInput, ou chaîne format "d-m-Y H:i")
- 2 - Un nombre entier (positif ou négatif)
- 3 - L'unité sous forme d'une chaîne de caractères parmi : "year"; "month"; "day"; "hour"; "minute"; "second"
Par exemple :
▷ date_sum(DATE_SIGNATURE, 3, "day")
=> renvoie 15/05/2020
Ou avec une valeur négative, pour soustraire 3 ans par exemple :
▷ date_sum(DATE_SIGNATURE, -3, "year")
=> renvoie 12/05/2017
savoir si une date est avant une autre date
- Fonction :
date_before
- Nombre de paramètres :
2
- Paramètres attendus :
Date 1
,Date 2
Renvoie VRAI si la Date 1 est antérieure à la Date 2. Renvoie FAUX sinon.
Notez que la Date 1 ou la Date 2 peuvent provenir d'une variable complétée par la valeur d'un champ "date-input" d'un SmartForm, ou correspondre à une date fixe fournie sous la forme d'une chaîne de caractère au format j-m-A
(la précision peut aller jusqu'à la seconde : j-m-A h:m:s
)
Par exemple :
Soit une date de signature (DATE_SIGNATURE) ayant pour valeur le 12/05/2020, et l'on veut vérifier que la signature soit antérieure à la date du 1er Janvier 2020 :
▷ date_before(DATE_SIGNATURE,"01-01-2020")
=> renvoie FAUX
▷ Alors que date_before(DATE_SIGNATURE,"01-01-2021")
=> renvoie VRAI
calcul de la différence entre deux dates
- Fonction :
date_diff
- Nombre de paramètres :
3
- Paramètres attendus : Date de début, Date de fin, Une chaîne de caractères parmi : year; month; day; hour; minute; second
Renvoie un nombre (valeur absolue) correspondant à la différence, entre la Date de début et la Date de fin, dans l'unité spécifiée.
Par exemple :
Soit une date de signature (DATE_SIGNATURE) ayant pour valeur le 31/05/2020, et l'on veut savoir combien d'années de différence entre les 2 dates :
▷ date_diff(DATE_SIGNATURE,"20-09-2004","year")
=> renvoie 15
car 15 années se sont écoulées
▷ date_diff("20-09-2004",DATE_SIGNATURE, "year")
=> renvoie aussi 15
(la valeur est absolue, peu importe l'ordre des dates)
▷ date_diff("20-09-2004",DATE_SIGNATURE, "day")
=> renvoie 5732
(le nombre total de jour entre les deux dates)
renvoyer automatiquement la date du jour
Spécificité : fonction unaire, ne possède pas de paramètres
- Fonction :
now()
- Nombre de paramètres :
0
- Paramètres attendus : N/A
Par exemple :
trouver automatiquement l'âge d'un individu
- Fonction :
years_old
- Nombre de paramètres :
1
- Paramètres attendus : Une date
Par exemple :
years_old(DATE_NAISSANCE)
isoler le jour, le mois, l'année d'une date
- Fonction :
date_day
date_month
date_year
- Nombre de paramètres :
1
- Paramètres attendus : Une date
Par exemple : date_month(DATE_SIGNATURE)
changer le format d'une date
- Fonction :
date_format
- Nombre de paramètres :
2
- Paramètres attendus : Une date, Un format de date
Par exemple :
Passer d'une date complète à un format jour/mois
date_format(DATE_NAISSANCE, "d/m")
Fonctions sur les Nombres
Introduction : notez bien que les traitements sur les nombres peuvent être effectués aussi bien sur des variables que sur d'autres dynvars
arrondir un nombre en choisissant le nombre de chiffres souhaités après la virgule
- Fonction :
round
- Nombre de paramètres :
2
- Paramètres attendus : Un nombre, Un autre nombre
La fonction enregistre le premier nombre, puis l'arrondit en fonction du deuxième paramètre La méthode utilisée est celle de l'arrondi MediaWiki.
Par exemple :
Pour arrondir un prix d'achat à 3 chiffres après la virgule
round(PRIX_ACHAT, 3)
arrondir un nombre entier à l'entier inférieur
- Fonction :
floor
- Nombre de paramètres :
1
- Paramètres attendus : Un nombre
La fonction attend un nombre et lui retire ses décimales en arrondissant à l'entier inférieur
Par exemple :
Pour arrondir un prix d'achat à l'entier inférieur
floor(PRIX_ACHAT)
arrondir un nombre entier à l'entier supérieur
- Fonction :
ceil
- Nombre de paramètres :
1
- Paramètres attendus : Un nombre
La fonction attend un nombre et lui retire ses décimales en arrondissant à l'entier supérieur
Par exemple :
Pour arrondir un prix d'achat à l'entier supérieur
ceil(PRIX_ACHAT)
Fonctions sur les Chaînes de caractères
Comparer deux chaînes de caractères
- Fonction :
contains
- Nombre de paramètres :
2
- Paramètres attendus : Une Chaîne de caractères (string), une autre Chaîne de caractères
La première chaîne de caractères est la chaîne dans laquelle rechercher, la deuxième chaîne de caractère est la chaîne à rechercher
La Dynvar paramétrée avec cette fonction vaudra TRUE si la chaîne du second paramètre est incluse dans la chaîne du 1er paramètre
Par exemple :
contains(PRENOM,NOM)
Trouver si une chaîne de caractères commence par une autre chaîne de caractères
- Fonction :
begins_with
- Nombre de paramètres :
2
- Paramètres attendus : Une Chaîne de caractères (string), une autre Chaîne de caractères
La première chaîne de caractères est la chaîne dans laquelle rechercher, la deuxième chaîne de caractère est la chaîne à rechercher
La Dynvar paramétrée avec cette fonction vaudra TRUE si la chaîne du premier paramètre commence par la chaîne du second paramètre
Trouver si une chaîne de caractères se finit par une autre chaîne de caractères
- Fonction :
ends_with
- Nombre de paramètres :
2
- Paramètres attendus : Une Chaîne de caractères (string), une autre Chaîne de caractères
La première chaîne de caractères est la chaîne dans laquelle rechercher, la deuxième chaîne de caractère est la chaîne à rechercher
La Dynvar paramétrée avec cette fonction vaudra TRUE si la chaîne du premier paramètre se finit par la chaîne du second paramètre
Tronquer une chaîne de caractères
- Fonction :
substring
- Nombre de paramètres :
3
- Paramètres attendus : Une Chaîne de caractères (string), le nombre à partir duquel la fonction doit tronquer, le nombre de caractères à prendre en compte après la troncation
À noter : le troisième paramètre est facultatif. S'il n'est pas présent, la fonction renverra tous les caractères situés après la troncation
Par exemple :
Pour une dynvar paramétrée de la manière suivante : substring(DENOMINATION, 2, 3)
;
Si la variable DENOMINATION vaut "Hercule";
La Dynvar ainsi paramétrée vaudra "rcu"
Ou encore :
Pour une dynvar paramétrée de la manière suivante : substring(DENOMINATION, 0, 4)
;
Si la variable DENOMINATION vaut "Hercule";
La Dynvar ainsi paramétrée vaudra "Herc"
Ou enfin :
Pour une dynvar paramétrée de la manière suivante : substring(DENOMINATION, 2)
;
Si la variable DENOMINATION vaut "Hercule";
La Dynvar ainsi paramétrée vaudra "rcule"
Fonctions sur les repeaters
Additionner les répétitions d'une sous-variable d'un repeater
- Fonction :
list_sum
- Nombre de paramètres :
2
- Paramètres attendus : Une variable de type List utilisée pour un Repeater, une sous-variable du même Repeater
Contexte
Il est parfois nécessaire d'additionner les différentes répétitions d'une même sous-variable d'un repeater.
Par exemple, dans cette situation :
Paramétrage
Le paramétrage prend la forme suivante :
list_sum(VARIABLE_LISTE,"SOUS_VARIABLE")
Pour obtenir le prix de toutes les Chemises dans l'exemple ci-dessus, il faudra paramétrer une Dynvar dont la formule sera list_sum(CHEMISES,"prix")