mon-entreprise/source/engine/mecanisms.yaml

315 lines
9.6 KiB
YAML

une de ces conditions:
description: >-
C'est un `ou` logique.
Contient une liste de conditions.
Renvoie vrai si l'une des conditions est applicable.
retourne: Booléen
exemples:
base: >-
age:
formule: 17 ans
mineur émancipé:
formule: oui
peut voter:
formule:
une de ces conditions:
- age > 18 ans
- mineur émancipé
toutes ces conditions:
description: >-
C'est un `et` logique.
Contient une liste de conditions.
Renvoie vrai si toutes les conditions sont applicables.
argument:
- '*'
- ...
produit:
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.
argument:
assiette: Valeur à multiplier
taux: Taux à appliquer
facteur: Facteur multiplicatif
plafond: Plafond au dessus duquel le taux appliqué est nul
exemples:
base: >-
cotisation:
formule:
produit:
assiette: 2000 €/mois
taux: 5%
assiette plafonnée: >-
plafond sécurité sociale:
formule: 3000 €/mois
assiette cotisation:
formule: 15000 €/mois
chômage:
formule:
produit:
assiette: assiette cotisation
plafond: 400% * plafond sécurité sociale
taux: 4%
variations:
description: >-
Contient une liste de conditions (`si`) et leurs conséquences associées
(`alors`).
Pour la première condition vraie dans la liste, on retient la valeur qui lui
est associée.
Si aucune condition n'est vraie, alors ce mécanisme renvoie implicitement
`non applicable`
Ce mécanisme peut aussi être utilisé au sein d'un mécanisme compatible, tel qu'un produit ou un barème.
arguments:
- si: condition à vérifier
alors: consequence évaluée si la condition est vrai
- ...
- sinon: consequence évaluée si aucune des conditions précédente n'était applicable
exemples:
base: >-
taux réduit:
formule: oui
taux allocation familiales:
formule:
variations:
- si: taux réduit
alors: 3.45%
- sinon: 5.25%
dans un produit: >-
assiette cotisation:
formule: 2300 €/mois
taux réduit:
formule: oui
allocation familiales:
formule:
produit:
assiette: assiette cotisation
variations:
- si: taux réduit
alors:
taux: 3.45%
- sinon:
taux: 5.25%
somme:
description: >-
C'est tout simplement la somme de chaque terme de la liste. Si un des terme
n'est pas applicable, il vaut zéro.
On peut aussi retrancher des valeurs avec l'opérateur unaire `-`
arguments:
- '*'
- ...
exemples:
base: >-
somme:
- 15.89 €
- 12% * 14 €
- (-30 €)
terme non applicable: >-
a:
formule: 50 €
b:
applicable si: non
formule: 20 €
somme:
formule:
somme:
- a
- b
- 40 €
le maximum de:
description: >-
Renvoie la valeur numérique de la liste de propositions fournie qui est la
plus grande.
Pour ajouter un plancher à une valeur, préférer l'utilisation du
mécanisme `encadrement`.
le minimum de:
description: >-
Renvoie la valeur numérique de la liste de propositions fournie qui est la
plus petite.
Pour plafonner une valeur, préférer l'utilisation du mécanisme `encadrement`.
arrondi:
description: >-
Arrondi à l'entier le plus proche, ou à une précision donnée.
exemples:
base: >-
arrondi:
formule:
arrondi:
valeur: 12.45
décimales: 1
régularisation:
description: >-
Permet de régulariser progressivement un calcul de cotisation en fonction de
variables numérique mensuelle cumulée.
Ce mécanisme spécifique est utilisé pour le calcul des cotisations
mensuelles.
arguments:
règle: règle à régulariser
valeurs cumulées:
- liste de variables cumulée mensuellement pour calculer la régularisation. Doit être
numérique, et avoir une unité `/mois`
exemples:
base: >-
brut:
formule:
somme:
- 2000 €/mois | du 01/01/2020 | au 31/05/2020
- 4000 €/mois | du 01/06/2020 | au 31/12/2020
plafond:
formule: 3000 €/mois
cotisation:
formule:
régularisation:
règle:
produit:
assiette: brut
plafond: plafond
taux: 10%
valeurs cumulées:
- brut
- plafond
cotisation en mai:
formule: cotisation | du 01/05/2020 | au 31/05/2020
cotisation en juin:
formule: cotisation | du 01/06/2020 | au 30/06/2020
cotisation en novembre:
formule: cotisation | du 01/11/2020 | au 30/11/2020
recalcul:
description: >-
Relance le calcul d'une règle dans une situation différente de la situation
courante. Permet par exemple de calculer le montant des cotisations au niveau du
SMIC, même si le salaire est plus élevé dans la situation actuelle.
barème:
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 souvent exprimées sous forme de facteurs d'une variable
que l'on appelle `multiplicateur`, par exemple `1 x le plafond de la
sécurité sociale`.
grille:
description: >-
C'est un barème sous la forme d'une grille de correspondance. C'est le
mécanisme de calcul de l'impôt neutre, aussi appelé impôt non personnalisé.
Il est composé de tranches qui se suivent. Il suffit de trouver l'assiette
qui correspond à la tranche, et de selectionner le montant associé à
l'assiette.
taux progressif:
description: >-
Ce mécanisme permet de calculer un taux progressif. On spécifie pour chaque
tranche le plafond et le taux associé. Le taux effectif renvoyé est calculé
en lissant la différence de taux entre la borne inférieure et supérieure de
l'assiette
> Par exemple, si nous nous avons les tranches suivantes :
- taux: 50% / plafond: 0
- taux: 100% / plafond: 1000
> Pour une assiette de 500, le taux retourné sera 75%, car il correspond au
> taux situé à la moitié de la tranche correspondante.
composantes:
description: >-
Beaucoup de cotisations sont composées de deux parties qui partagent 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 `produit` de garder en
commun un paramètre comme l'assiette, puis de déclarer des composantes pour
le taux.
> L'exemple le plus courant de composantes, c'est la distinction part
employeur, part salarié (ex. retraite AGIRC).
allègement:
description: >-
Permet de réduire le montant d'une variable.
Très utilisé dans le contexte des impôts.
encadrement:
description: Permet d'ajouter un plafond et/ou un plancher à une valeur.
durée:
description: Permet d'obtenir le nombre de jours entre deux dates
synchronisation:
description: Pour éviter trop de saisies à l'utilisateur, certaines informations sont
récupérées à partir de ce que l'on appelle des API. Ce sont des services
auxquels ont fait appel pour obtenir des informations sur un sujet précis.
Par exemple, l'État français fournit gratuitement l'API géo, qui permet à
partir du nom d'une ville, d'obtenir son code postal, son département, la
population etc.
Ce mécanismes `synchronisation` permet de faire le lien entre les règles de
notre système et les réponses de ces API.
inversion numérique:
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.