2022-02-23 11:42:19 +00:00
# Covid : exonération de cotisation sociale pour les indépendants
2022-01-27 17:28:48 +00:00
Ce paquet contient les règles [publicodes ](https://publi.codes ) utilisées sur https://mon-entreprise.urssaf.fr pour le calcul de l'exonération covid 2021.
### Installation
```
npm install publicodes exoneration-covid
```
2022-02-14 13:10:09 +00:00
### Exemple
2022-01-27 17:28:48 +00:00
```js
import Engine, { formatValue } from 'publicodes'
import rules from 'exoneration-covid'
const engine = new Engine(rules)
engine.setSituation({
"lieu d'exercice": "'métropole'",
"début d'activité": "'mai 2021'",
2022-02-23 12:33:30 +00:00
secteur: "'S1bis'",
2022-01-27 17:28:48 +00:00
2022-02-23 11:42:19 +00:00
'mois . mai 2021': "'LFSS 600'",
'mois . juin 2021': "'LFR1'",
'mois . juillet 2021': "'LFSS 600'",
'mois . août 2021': 'non',
2022-02-22 11:47:25 +00:00
'mois . décembre 2021': "'LFSS 300'",
2022-02-23 11:42:19 +00:00
'mois . janvier 2022': "'LFSS 600'",
'mois . février 2022': "'LFSS 300'",
2022-01-27 17:28:48 +00:00
})
2022-03-02 16:13:56 +00:00
console.log(formatValue(engine.evaluate('montant total'))) // "2 650 €"
console.log(engine.evaluate('code').nodeValue) // "S1B;O;3;2;O;1"
2022-01-27 17:28:48 +00:00
```
👉 ** [Voir l'exemple complet ](https://codesandbox.io/s/covidform-rxweh?file=/src/index.js )**
2022-02-14 13:10:09 +00:00
### Utilisation
#### 1. Récuperer la liste des mois à afficher
2022-03-14 09:53:29 +00:00
La première étape est de savoir quels sont les mois à afficher en fonction des données d'entrée (secteur, lieu et date de début d'activité). Pour cela, il suffit de récuperer la liste de tous les mois applicables :
2022-02-14 13:10:09 +00:00
```js
import Engine from 'publicodes'
import rules from 'exoneration-covid'
const engine = new Engine(rules)
// 1. On met à jour les valeurs de la première étape du formulaire
const step1Situation = {
"lieu d'exercice": "'métropole'",
2022-03-14 09:53:29 +00:00
"début d'activité": "'mai 2021'", // peut prendre les valeurs "< mois > < ann é e > " ou "avant 2021"
2022-02-14 13:10:09 +00:00
secteur: "'S1'",
}
engine.setSituation(step1Situation)
2022-03-14 09:53:29 +00:00
// 2. On récupère la liste des mois applicables
2022-02-14 13:10:09 +00:00
2022-03-14 09:53:29 +00:00
const montantTotal = engine.evaluate('montant total')
const months = Object.keys(engine.getParsedRules()).filter(
(name) =>
// On veut les règles mois (de la forme `mois . janvier 2021` )...
name.match(/^mois \. [^.]*$/) &&
// ... qui sont applicables dans la situation donnée en entrée
engine.evaluate(name).nodeValue !== null
)
2022-02-14 13:10:09 +00:00
```
2022-03-14 09:53:29 +00:00
Ci-dessus, `months` contiendra la liste des mois qui sont applicables par rapport à la situation en entrée.
2022-02-14 13:10:09 +00:00
```json
[
"mois . mai 2021",
"mois . juin 2021",
"mois . juillet 2021",
"mois . août 2021",
"mois . décembre 2021",
"mois . janvier 2022",
"mois . février 2022"
]
```
#### 2. Obtenir les exonérations possibles pour un mois en particulier
```js
2022-03-14 09:53:29 +00:00
import Engine from 'publicodes'
2022-02-14 13:10:09 +00:00
import rules from 'exoneration-covid'
const engine = new Engine(rules)
2022-03-14 09:53:29 +00:00
// 1. On met à jour les valeurs avec la situation courante
2022-02-14 13:10:09 +00:00
const step1Situation = {
"lieu d'exercice": "'métropole'",
"début d'activité": "'mai 2021'",
secteur: "'S1'",
}
2022-03-14 09:53:29 +00:00
const currentFormSituation = {
'mois . mai 2021': 'non',
}
2022-02-14 13:10:09 +00:00
2022-03-14 09:53:29 +00:00
engine.setSituation({
2022-02-14 13:10:09 +00:00
...step1Situation,
2022-03-14 09:53:29 +00:00
...currentFormSituation,
})
2022-02-14 13:10:09 +00:00
2022-03-14 09:53:29 +00:00
// Fonction pour obtenir la liste des options disponibles pour chaque mois (`mois . janvier 2021`)
function getValidOptions(month) {
// On liste les options possibles pour ce mois (règles de la forme `mois . janvier 2021 . LFSS600` )
const options = Object.keys(engine.getParsedRules()).filter((name) =>
name.startsWith(month + ' . ')
)
// On elimine les options non applicables dans la situation présente
const validOptions = options.filter(
(name) => engine.evaluate(name).nodeValue !== null
)
return validOptions
}
2022-02-14 13:10:09 +00:00
```
#### 3. Calculer le montant de l'exonération en temps réel
Pour calculer l'exonération en fonction des entrées de l'utilisateur, il suffit de mettre à jour la situation avec les informations saisies par ce dernier.
```js
import Engine, { formatValue } from 'publicodes'
import rules from 'exoneration-covid'
const engine = new Engine(rules)
const step1Situation = {
"lieu d'exercice": "'métropole'",
"début d'activité": "'mai 2021'",
secteur: "'S1'",
}
const currentSituation = {
'mois éligibles . mai 2021': "'LFSS 600'",
'mois éligibles . juin 2021': "'LFR1'",
'mois éligibles . juillet 2021': "'LFSS 600'",
'mois éligibles . août 2021': "'LFR1'",
'mois éligibles . décembre 2021': "'LFSS 300'",
'mois éligibles . janvier 2022': "'non'",
'mois éligibles . février 2022': "'LFSS 300'",
}
const montantTotal = engine
.setSituation({
...step1situation,
...currentSituation,
})
.evaluate('montant total')
console.log(montantTotal.nodeValue) // 3300
console.log(formatValue(montantTotal)) // "3 300 €"
```
2022-03-14 09:53:29 +00:00
A noter : on peut mettre à jour la situation pour enlever certains mois qui deviennent non applicables