153 lines
6.3 KiB
YAML
153 lines
6.3 KiB
YAML
# Liste et description des différents mécanismes compris par le moteur.
|
|
# La description peut être rédigée en markdown :-)
|
|
|
|
sélection:
|
|
type: numeric
|
|
description: |
|
|
C'est tout simplement une valeur numérique exprimée en pourcentage.
|
|
|
|
une possibilité:
|
|
type: enum
|
|
|
|
inversion:
|
|
type: numeric
|
|
description: |
|
|
La formule de calcul de cette variable n'est pas connue, souvent elle n'a même pas de sens. Mais le mécanisme `inversion` indique qu'elle peut être _estimée_ à partir de l'un des _objectifs_ listés sous l'attribut `avec`. Il faut alors renseigner une valeur cible pour cet objectif.
|
|
|
|
Voilà comment ça marche : on va donner à la variable une valeur au hasard, calculer _l'objectif_, puis grâce à des calculs savants améliorer notre choix jusqu'à ce que l'écart entre le calcul et la valeur cible devienne satisfaisant.
|
|
|
|
Concrètement, si l'on demande au moteur (même indirectement) la valeur d'une variable qui a pour formule une inversion, il va vérifier qu'une des possibilités d'inversion a bien une valeur calculée ou saisie, et procéder à l'inversion décrite plus haut à partir de celle-ci. Sinon, ces possibilités d'inversions seront listées comme manquantes.
|
|
|
|
une de ces conditions:
|
|
type: boolean
|
|
description: |
|
|
C'est un `ou` logique.
|
|
|
|
Contient une liste de conditions.
|
|
|
|
Renvoie vrai si l'une des conditions est vraie.
|
|
toutes ces conditions:
|
|
type: boolean
|
|
description: |
|
|
C'est un `et` logique.
|
|
|
|
Contient une liste de conditions.
|
|
|
|
Renvoie vrai si toutes les conditions vraies.
|
|
|
|
aiguillage numérique:
|
|
type: numeric
|
|
description: |
|
|
Contient une liste de couples condition-conséquence.
|
|
|
|
Couple par couple, si la condition est vraie, alors on choisit la conséquence.
|
|
|
|
Cette conséquence peut elle-même être un mécanisme `aiguillage numérique` ou plus simplement un `taux`.
|
|
|
|
Si aucune condition n'est vraie, alors ce mécanisme renvoie implicitement `non applicable` (ce qui peut se traduire par la valeur `0` si nous sommes dans un contexte numérique).
|
|
|
|
|
|
variations:
|
|
type: numeric
|
|
description: |
|
|
Contient une liste de couples condition-conséquence, sous une forme plus explicite que l'aiguillage numérique :
|
|
|
|
```
|
|
si: condition
|
|
alors
|
|
```
|
|
|
|
`condition` est booléen, `alors` contient les attributs d'un mécanisme numérique, comme `barème` ou `multiplication`.
|
|
|
|
multiplication:
|
|
type: numeric
|
|
description: |
|
|
C'est une multiplication un peu améliorée, très utile pour exprimer les cotisations.
|
|
|
|
Sa propriété `assiette` est multipliée par un pourcentage, `taux`, ou par un `facteur` quand ce nom est plus approprié.
|
|
|
|
La multiplication peut être plafonnée : ce plafond sépare l'assiette en deux, et la partie au-dessus du plafond est tout simplement ignorée. Dans ce cas, elle se comporte comme une barème en taux marginaux à deux tranches, la deuxième au taux nul et allant de `plafond` à l'infini.
|
|
|
|
le maximum de:
|
|
type: numeric
|
|
description: |
|
|
Renvoie la valeur numérique de la liste de propositions fournie qui est la plus grande.
|
|
|
|
Il est conseillé de renseigner une description de chaque proposition par exemple quand elles représentent des méthodes de calcul alternatives.
|
|
|
|
le minimum de:
|
|
type: numeric
|
|
description: |
|
|
Renvoie l'élément de la liste de propositions fournie qui a la plus petite valeur.
|
|
|
|
Ces propositions doivent avoir un mécanisme de calcul ou être une valeur numérique.
|
|
|
|
Il est conseillé de renseigner une description de chaque proposition par exemple quand elles représentent des méthodes de calcul alternatives parmi lesquelles il faut en choisir une.
|
|
|
|
somme:
|
|
type: numeric
|
|
description: |
|
|
C'est tout simplement la somme de chaque terme de la liste.
|
|
|
|
|
|
##########################################
|
|
# Ce qu'on appelle aujourd'hui des RuleProp
|
|
# Et qui deviendront des mécanismes classiques normalement par la suite #TODO
|
|
|
|
formule:
|
|
description: |
|
|
C'est la formule de calcul d'une variable. Elle renvoie une valeur numérique ou un 'non', exprimant le fait que la variable n'est pas applicable, ce qui vaut implicitement 0.
|
|
|
|
Cette doit faire appel à fera appel à des mécanismes de calcul : par exemple `multiplication`, le plus commun pour les variables de type `Cotisation`.
|
|
|
|
|
|
applicable si:
|
|
description: |
|
|
Décide si la règle est applicable pour la situation saisie.
|
|
|
|
> Une cotisation sociale peut ne concerner que les salariés au statut cadre. Elle ne sera pas à verser pour un non cadre
|
|
|
|
La formule de calcul peut donc être ignorée, quel que soit son montant.
|
|
|
|
Peut être accompagnée du mécanisme 'non applicable si'.
|
|
|
|
non applicable si:
|
|
description: |
|
|
Décide si la règle n'est applicable pour la situation saisie.
|
|
|
|
> Un contrat CDD peut entraîner une majoration spécifique. Cette majoration est 'non applicable si' le contrat est un CDI.
|
|
|
|
La formule de calcul peut donc être ignorée, quel que soit son montant.
|
|
|
|
Peut être accompagnée du mécanisme 'applicable si'.
|
|
|
|
barème:
|
|
type: numeric
|
|
description: |
|
|
C'est un barème en taux marginaux, mécanisme de calcul connu son utilisation dans le calcul de l'impôt sur le revenu.
|
|
L'assiette est décomposée en plusieurs tranches, qui sont multipliées par un taux spécifique.
|
|
Les tranches sont très souvent exprimées sous forme de facteurs (par exemple [1, 2, 4]) d'une variable que l'on appelle multiplicateur, par exemple le plafond de la sécurité sociale.
|
|
|
|
complément:
|
|
type: numeric
|
|
description: |
|
|
Complète une base pour atteindre un seuil minimal
|
|
|
|
composantes:
|
|
type: numeric
|
|
description: |
|
|
Beaucoup de cotisations sont composées de deux parties qui partage la méthode de calcul mais diffèrent par des paramètres différents.
|
|
|
|
Pour ne pas définir deux variables presque redondantes, on utilise le mécanisme de composante. Il se comportera comme une somme dans les calculs, mais son affichage sur les pages /règle sera adapté.
|
|
|
|
Il est même possible, pour les mécanismes `barème` et `multiplication` de garder en commun un paramètre comme l'assiette, puis de déclarer des composantes pour le taux.
|
|
|
|
> L'example le plus courant de composantes, c'est la distinction part employeur, part salarié (ex. retraite AGIRC).
|
|
|
|
allègement:
|
|
type: numeric
|
|
description: |
|
|
Permet de réduire le montant d'une variable.
|
|
Très utilisé dans le contexte des impôts.
|
|
|