515 lines
15 KiB
YAML
515 lines
15 KiB
YAML
une de ces conditions:
|
||
description: >-
|
||
C'est un `ou` logique.
|
||
Contient une liste de conditions.
|
||
Renvoie `oui` si l'une des conditions est applicable.
|
||
retourne: Booléen
|
||
exemples:
|
||
base: >-
|
||
âge:
|
||
formule: 17 ans
|
||
|
||
mineur émancipé:
|
||
formule: oui
|
||
|
||
peut voter:
|
||
formule:
|
||
une de ces conditions:
|
||
- âge >= 18 ans
|
||
- mineur émancipé
|
||
|
||
toutes ces conditions:
|
||
description: >-
|
||
C'est un `et` logique.
|
||
Contient une liste de conditions.
|
||
Renvoie `oui` si toutes les conditions sont applicables.
|
||
argument:
|
||
- '*'
|
||
- ...
|
||
exemples:
|
||
base: >-
|
||
âge:
|
||
formule: 17 ans
|
||
|
||
citoyenneté française:
|
||
formule: oui
|
||
|
||
peut voter:
|
||
formule:
|
||
toutes ces conditions:
|
||
- citoyenneté française
|
||
- âge >= 18 ans
|
||
|
||
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: >-
|
||
exemple:
|
||
formule:
|
||
somme:
|
||
- 15.89 €
|
||
- 12% * 14 €
|
||
- (-20 €)
|
||
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`.
|
||
exemples:
|
||
base: >-
|
||
max:
|
||
formule:
|
||
le maximum de:
|
||
- 50
|
||
- 100
|
||
|
||
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`.
|
||
exemples:
|
||
base: >-
|
||
min:
|
||
formule:
|
||
le minimum de:
|
||
- 50
|
||
- 100
|
||
|
||
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 du
|
||
cumul de variables numériques mensuelles.
|
||
|
||
Ce mécanisme spécifique est utilisé pour le calcul des cotisations
|
||
mensuelles, afin de "lisser" un plafond ou un calcul sur plusieurs mois.
|
||
|
||
La régularisation progressive s'opère le long d'une année civile complète.
|
||
|
||
## Explication du calcul
|
||
|
||
Pour chaque mois, on évalue la valeur à régulariser en faisant le cumul des
|
||
éléments nécessaires au calcul sur la période écoulée depuis le premier
|
||
jour de l’année.
|
||
|
||
Par exemple, pour la cotisation suivante :
|
||
|
||
```yaml
|
||
cotisation:
|
||
formule:
|
||
produit:
|
||
assiette: brut
|
||
plafond: 2000 €/mois
|
||
taux: 10%
|
||
```
|
||
|
||
Avec un brut de 1000 € en janvier et 3500 € en février et 1000€ en mars, le cumul sera le
|
||
suivant :
|
||
|
||
| | brut | plafond | cotisation |
|
||
| --- | ------ | ------- |------------------- |
|
||
| JAN | 1000 € | 2000 € | 1000 × 10% = 100 € |
|
||
| FEV | 4500 € | 4000 € | 4000 × 10% = 400 € |
|
||
| MAR | 5500 € | 6000 € | 5500 × 10% = 550 € |
|
||
|
||
|
||
On regarde ensuite le cumul des valeurs déjà versées les mois précédents, pour
|
||
ne garder que la différence entre les deux montants. Dans notre exemple, on
|
||
aboutit aux valeurs suivantes :
|
||
|
||
| | cotisation cumul | cotisation régularisée |
|
||
| --- | ---------------- | ---------------------- |
|
||
| JAN | 100 € | 100 € |
|
||
| FEV | 400 € | 400 € - 100 € = 300 € |
|
||
| MAR | 550 € | 550 € - 300 € = 150 € |
|
||
|
||
arguments:
|
||
règle: règle à régulariser
|
||
valeurs cumulées:
|
||
- liste de variables cumulée mensuellement pour calculer la régularisation. Doivent être
|
||
numérique, et avoir une unité `/mois`
|
||
|
||
exemples:
|
||
base: >-
|
||
brut:
|
||
formule:
|
||
somme:
|
||
- 1000 €/mois | du 01/01/2020 | au 31/01/2020
|
||
- 3500 €/mois | du 01/02/2020 | au 29/02/2020
|
||
- 1000 €/mois | du 01/03/2020 | au 31/03/2020
|
||
|
||
cotisation:
|
||
formule:
|
||
régularisation:
|
||
règle:
|
||
produit:
|
||
assiette: brut
|
||
plafond [ref]: 2000 €/mois
|
||
taux: 10%
|
||
valeurs cumulées:
|
||
- brut
|
||
- plafond
|
||
|
||
valeur cumulée à partir d'une date: >-
|
||
SMIC: 1521.22 €/mois
|
||
|
||
primes:
|
||
formule:
|
||
somme:
|
||
- 2470 €/mois | du 01/01/2019 | au 31/01/2019
|
||
- 1470 €/mois | du 01/05/2019 | au 31/05/2019
|
||
|
||
rémunération:
|
||
formule:
|
||
somme:
|
||
- 1530 €/mois | du 01/01/2019 | au 31/12/2019
|
||
- primes
|
||
|
||
réduction sur AC au 1er janvier:
|
||
formule: non
|
||
|
||
réduction générale chômage . coefficient:
|
||
formule:
|
||
arrondi:
|
||
valeur: (0.0405 / 0.60 ) * (1.60 * SMIC / rémunération - 1)
|
||
décimales: 4
|
||
|
||
réduction générale chômage . réduction sans régularisation:
|
||
formule:
|
||
encadrement:
|
||
plancher: 0
|
||
valeur:
|
||
arrondi:
|
||
valeur:
|
||
multiplication:
|
||
assiette: rémunération
|
||
taux: coefficient
|
||
décimales: 2
|
||
|
||
réduction générale chômage:
|
||
formule:
|
||
régularisation:
|
||
règle: réduction sans régularisation
|
||
valeurs cumulées:
|
||
- 'SMIC | à partir du 01/10/2019'
|
||
- 'rémunération | à partir du 01/10/2019'
|
||
|
||
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.
|
||
|
||
exemples:
|
||
base: >-
|
||
brut:
|
||
formule: 2000€
|
||
|
||
cotisations:
|
||
formule:
|
||
produit:
|
||
assiette: brut
|
||
taux: 20%
|
||
|
||
cotisations pour un SMIC:
|
||
formule:
|
||
recalcul:
|
||
règle: cotisations
|
||
avec:
|
||
brut: 1500 €
|
||
|
||
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`.
|
||
exemples:
|
||
base: >-
|
||
revenu imposable:
|
||
formule: 54126 €
|
||
|
||
impôt sur le revenu:
|
||
formule:
|
||
barème:
|
||
assiette: revenu imposable
|
||
tranches:
|
||
- taux: 0%
|
||
plafond: 9807 €
|
||
- taux: 14%
|
||
plafond: 27086 €
|
||
- taux: 30%
|
||
plafond: 72617 €
|
||
- taux: 41%
|
||
plafond: 153783 €
|
||
- taux: 45%
|
||
|
||
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.
|
||
exemples:
|
||
grille avec multiplicateur et unité: >-
|
||
SMIC horaire:
|
||
formule: 10 €/heure
|
||
|
||
revenu moyen:
|
||
formule:
|
||
250 €/mois
|
||
|
||
trimestres validés:
|
||
formule:
|
||
grille:
|
||
unité: trimestres validés/an
|
||
assiette: revenu moyen
|
||
multiplicateur: SMIC horaire
|
||
tranches:
|
||
- montant: 0
|
||
plafond: 150 heures/an
|
||
- montant: 1
|
||
plafond: 300 heures/an
|
||
- montant: 2
|
||
plafond: 450 heures/an
|
||
- montant: 3
|
||
plafond: 600 heures/an
|
||
- montant: 4
|
||
|
||
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.
|
||
exemples:
|
||
base: >-
|
||
chiffre d'affaires:
|
||
formule: 30000 €/an
|
||
|
||
plafond:
|
||
formule: 3000 €/mois
|
||
|
||
taux réduction de cotisation:
|
||
formule:
|
||
taux progressif:
|
||
assiette: chiffre d'affaires
|
||
multiplicateur: plafond
|
||
tranches:
|
||
- taux: 100%
|
||
plafond: 75%
|
||
- taux: 0%
|
||
plafond: 100%
|
||
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.
|
||
exemples:
|
||
base: >-
|
||
assiette plafonnée:
|
||
formule:
|
||
encadrement:
|
||
plancher: 0 €
|
||
valeur: 2000 €
|
||
plafond: 1500 €
|
||
|
||
durée:
|
||
description: Permet d'obtenir le nombre de jours entre deux dates
|
||
exemples:
|
||
base: >-
|
||
date d'embauche:
|
||
formule: 14/04/2008
|
||
|
||
ancienneté en fin d'année:
|
||
unité: an
|
||
formule:
|
||
durée:
|
||
depuis: date d'embauche
|
||
jusqu'à: 31/12/2020
|
||
|
||
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.
|