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.
|