diff --git a/.vscode/settings.json b/.vscode/settings.json
index e4116c589..c138feb09 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -1,6 +1,13 @@
{
- "spellright.language": ["fr", "en"],
- "spellright.documentTypes": ["yaml", "git-commit", "markdown"],
+ "spellright.language": [
+ "fr",
+ "en"
+ ],
+ "spellright.documentTypes": [
+ "yaml",
+ "git-commit",
+ "markdown"
+ ],
"typescript.tsdk": "node_modules/typescript/lib",
"editor.tabSize": 2,
"cSpell.words": ["mycompanyinfrance", "smarttag"],
diff --git a/api/README.md b/api/README.md
index 2626424ed..9f935c74c 100644
--- a/api/README.md
+++ b/api/README.md
@@ -1 +1,7 @@
# Mon-entreprise API
+
+Vous pouvez réutiliser les calculs de mon-entreprise sur votre site ou service très facilement grâce à notre API REST ouverte et sans authentification.
+
+**[👉️ Voir la documentation sur mon-entreprise](https://mon-entreprise.urssaf.fr/d%C3%A9veloppeur/api)**
+
+**[📊 Voir les statistiques d’utilisation](https://mon-entreprise.urssaf.fr/stats?module=api-rest)**
diff --git a/api/package.json b/api/package.json
index c4833a5c3..5ea0c4cc4 100644
--- a/api/package.json
+++ b/api/package.json
@@ -30,7 +30,7 @@
"@apidevtools/swagger-cli": "^4.0.4",
"@koa/cors": "^3.3.0",
"@koa/router": "^10.1.1",
- "@publicodes/api": "^1.0.0-beta.54",
+ "@publicodes/api": "^1.0.0-beta.55",
"@sentry/node": "^7.1.1",
"@sentry/tracing": "^7.1.1",
"got": "^12.4.1",
@@ -40,7 +40,7 @@
"koa-static": "^5.0.0",
"modele-social": "workspace:^",
"nodemon": "^2.0.16",
- "publicodes": "^1.0.0-beta.54",
+ "publicodes": "^1.0.0-beta.55",
"rate-limiter-flexible": "^2.3.8",
"swagger-ui-dist": "^4.11.1"
},
diff --git a/api/source/openapi.yaml b/api/source/openapi.yaml
index 382e31456..7c14982e1 100644
--- a/api/source/openapi.yaml
+++ b/api/source/openapi.yaml
@@ -1,12 +1,12 @@
-openapi: 3.0.0
+openapi: 3.1.0
info:
title: Mon-entreprise API
- version: beta
+ version: v1
description: |
- Cet API expose les règles Publicodes de [mon-entreprise](https://mon-entreprise.urssaf.fr/).
+ Cet API expose les calculs des simulateurs de [mon-entreprise](https://mon-entreprise.urssaf.fr/).
- Pour plus d'informations, consultez [notre documentation](/d%C3%A9veloppeur/api).
+ **[📒 Voir la documentation](https://mon-entreprise.urssaf.fr/d%C3%A9veloppeur/api)**
servers:
- url: /api/v1/
@@ -18,7 +18,7 @@ paths:
content:
application/json:
examples:
- SalaireBrutEnNet:
+ 'Salaire brut en net':
value:
{
'situation':
@@ -30,7 +30,7 @@ paths:
'expressions':
['salarié . rémunération . net . à payer avant impôt'],
}
- MicroEntreprise:
+ 'Auto-entrepreneur':
value:
{
situation:
@@ -57,7 +57,7 @@ paths:
get:
parameters:
- examples:
- SalaireNet:
+ 'Salaire net':
value: 'salarié . rémunération . net . à payer avant impôt'
Impot:
value: 'impôt . méthode de calcul'
diff --git a/api/source/test-e2e/__snapshots__/index.test.ts.snap b/api/source/test-e2e/__snapshots__/index.test.ts.snap
index e75e0be81..ff656ef08 100644
--- a/api/source/test-e2e/__snapshots__/index.test.ts.snap
+++ b/api/source/test-e2e/__snapshots__/index.test.ts.snap
@@ -15,6 +15,7 @@ exports[`e2e test mon-entreprise api > Test evaluate brut => net + super brut 2`
"salarié . cotisations . prévoyances . santé . montant": 2320,
"salarié . cotisations . prévoyances . santé . taux employeur": 2320,
"salarié . régimes spécifiques . DFS": 1624,
+ "salarié . régimes spécifiques . alsace moselle": 352,
"salarié . rémunération . avantages en nature": 23027,
"salarié . rémunération . frais professionnels . titres-restaurant": 25347,
"salarié . rémunération . frais professionnels . trajets domicile travail . forfait mobilités durables . montant": 59450,
@@ -24,7 +25,8 @@ exports[`e2e test mon-entreprise api > Test evaluate brut => net + super brut 2`
"salarié . rémunération . primes . fin d'année": 23026,
"salarié . temps de travail . heures supplémentaires": 46922,
"situation personnelle . domiciliation fiscale à l'étranger": 580,
- "établissement . localisation": 880,
+ "établissement . commune . département": 2458,
+ "établissement . commune . département . outre-mer": 992,
},
"nodeValue": 2749.50805,
"traversedVariables": [
@@ -154,8 +156,7 @@ exports[`e2e test mon-entreprise api > Test evaluate brut => net + super brut 2`
"salarié . cotisations . maladie . salarié",
"salarié . cotisations . maladie . salarié . taux",
"salarié . régimes spécifiques . alsace moselle",
- "établissement . localisation . département",
- "établissement . localisation",
+ "établissement . commune . département",
"salarié . cotisations . retraite complémentaire . salarié",
"salarié . cotisations . retraite complémentaire",
"salarié . cotisations . retraite complémentaire . employeur",
@@ -178,6 +179,8 @@ exports[`e2e test mon-entreprise api > Test evaluate brut => net + super brut 2`
"salarié . cotisations . chômage . employeur . taux",
"salarié . cotisations . CSG-CRDS",
"salarié . cotisations . CSG-CRDS . CSG",
+ "établissement . commune . département . outre-mer . Mayotte",
+ "établissement . commune . département . outre-mer",
"salarié . cotisations . CSG-CRDS . CSG . déductible",
"salarié . cotisations . CSG-CRDS . CSG . déductible . taux",
"salarié . cotisations . CSG-CRDS . assiette de base",
@@ -257,32 +260,34 @@ exports[`e2e test mon-entreprise api > Test evaluate brut => net + super brut 2`
},
{
"missingVariables": {
- "dirigeant . gérant minoritaire": 814757,
+ "dirigeant . gérant minoritaire": 798729,
"entreprise . TVA": 5,
"entreprise . association non lucrative": 11,
- "entreprise . catégorie juridique": 5865649,
+ "entreprise . catégorie juridique": 5750669,
"entreprise . salariés . effectif . seuil": 515,
- "salarié . activité partielle": 24705,
- "salarié . contrat": 197257,
+ "salarié . activité partielle": 24153,
+ "salarié . contrat": 193409,
"salarié . contrat . statut cadre": 811,
- "salarié . contrat . temps de travail . temps partiel": 41573,
- "salarié . convention collective": 49065,
+ "salarié . contrat . temps de travail . temps partiel": 40733,
+ "salarié . convention collective": 47961,
"salarié . cotisations . ATMP . taux fonctions support": 11,
- "salarié . cotisations . exonérations . JEI": 611,
- "salarié . cotisations . exonérations . lodeom": 111,
+ "salarié . cotisations . exonérations . JEI": 539,
+ "salarié . cotisations . exonérations . lodeom . zone un": 111,
"salarié . cotisations . prévoyances . santé . montant": 591,
"salarié . cotisations . prévoyances . santé . taux employeur": 591,
"salarié . coût total employeur . aides . emploi franc . éligible": 45,
- "salarié . régimes spécifiques . DFS": 1051,
- "salarié . rémunération . avantages en nature": 5121,
- "salarié . rémunération . frais professionnels . titres-restaurant": 5537,
- "salarié . rémunération . frais professionnels . trajets domicile travail . forfait mobilités durables . montant": 12537,
- "salarié . rémunération . frais professionnels . trajets domicile travail . prime de transport . montant": 14201,
- "salarié . rémunération . frais professionnels . trajets domicile travail . transports publics . montant": 36865,
- "salarié . rémunération . primes . activité . base": 5121,
- "salarié . rémunération . primes . fin d'année": 5121,
- "salarié . temps de travail . heures supplémentaires": 7821,
- "établissement . localisation": 631,
+ "salarié . régimes spécifiques . DFS": 1059,
+ "salarié . régimes spécifiques . alsace moselle": 27,
+ "salarié . rémunération . avantages en nature": 4953,
+ "salarié . rémunération . frais professionnels . titres-restaurant": 5369,
+ "salarié . rémunération . frais professionnels . trajets domicile travail . forfait mobilités durables . montant": 12273,
+ "salarié . rémunération . frais professionnels . trajets domicile travail . prime de transport . montant": 13937,
+ "salarié . rémunération . frais professionnels . trajets domicile travail . transports publics . montant": 36313,
+ "salarié . rémunération . primes . activité . base": 4953,
+ "salarié . rémunération . primes . fin d'année": 4953,
+ "salarié . temps de travail . heures supplémentaires": 7605,
+ "établissement . commune . département": 2023,
+ "établissement . commune . département . outre-mer": 967,
"établissement . taux ATMP": 11,
"établissement . taux ATMP . taux collectif": 7,
},
@@ -441,8 +446,7 @@ exports[`e2e test mon-entreprise api > Test evaluate brut => net + super brut 2`
"entreprise . association non lucrative",
"salarié . cotisations . taxe d'apprentissage",
"salarié . régimes spécifiques . alsace moselle",
- "établissement . localisation . département",
- "établissement . localisation",
+ "établissement . commune . département",
"salarié . cotisations . CPF CDD",
"salarié . cotisations . forfait social",
"salarié . cotisations . exonérations . employeur",
@@ -457,6 +461,8 @@ exports[`e2e test mon-entreprise api > Test evaluate brut => net + super brut 2`
"salarié . cotisations . maladie . employeur . taux réduit",
"salarié . temps de travail . SMIC",
"SMIC . horaire",
+ "établissement . commune . département . outre-mer . Mayotte",
+ "établissement . commune . département . outre-mer",
"date",
"salarié . cotisations . allocations familiales . taux",
"salarié . cotisations . allocations familiales . taux réduit",
@@ -592,7 +598,8 @@ exports[`e2e test mon-entreprise api > Test evaluate micro entreprise 2`] = `
{
"missingVariables": {
"entreprise . activité . mixte": 278,
- "établissement . localisation": 12,
+ "établissement . commune . département": 18,
+ "établissement . commune . département . outre-mer": 7,
},
"nodeValue": 1469,
"traversedVariables": [
@@ -607,9 +614,10 @@ exports[`e2e test mon-entreprise api > Test evaluate micro entreprise 2`] = `
"impôt . méthode de calcul",
"impôt . taux neutre d'impôt sur le revenu . barème Guadeloupe Réunion Martinique",
"impôt . taux neutre d'impôt sur le revenu . barème Guyane Mayotte",
- "établissement . localisation . outre-mer . Guadeloupe Réunion Martinique",
- "établissement . localisation . département",
- "établissement . localisation",
+ "établissement . commune . département . outre-mer . Guadeloupe Réunion Martinique",
+ "établissement . commune . département . outre-mer",
+ "établissement . commune . département",
+ "établissement . commune . département . outre-mer . Mayotte",
"impôt . taux neutre d'impôt sur le revenu",
"date",
"impôt . revenu imposable",
@@ -655,7 +663,8 @@ exports[`e2e test mon-entreprise api > Test evaluate micro entreprise 2`] = `
{
"missingVariables": {
"entreprise . activité . mixte": 344,
- "établissement . localisation": 12,
+ "établissement . commune . département": 18,
+ "établissement . commune . département . outre-mer": 7,
},
"nodeValue": 31207,
"traversedVariables": [
@@ -718,9 +727,10 @@ exports[`e2e test mon-entreprise api > Test evaluate micro entreprise 2`] = `
"impôt . méthode de calcul",
"impôt . taux neutre d'impôt sur le revenu . barème Guadeloupe Réunion Martinique",
"impôt . taux neutre d'impôt sur le revenu . barème Guyane Mayotte",
- "établissement . localisation . outre-mer . Guadeloupe Réunion Martinique",
- "établissement . localisation . département",
- "établissement . localisation",
+ "établissement . commune . département . outre-mer . Guadeloupe Réunion Martinique",
+ "établissement . commune . département . outre-mer",
+ "établissement . commune . département",
+ "établissement . commune . département . outre-mer . Mayotte",
"impôt . taux neutre d'impôt sur le revenu",
"impôt . revenu imposable",
"dirigeant . rémunération . net . imposable",
@@ -744,6 +754,60 @@ exports[`e2e test mon-entreprise api > Test evaluate micro entreprise 2`] = `
{
"message": "
[ Avertissement ]
+➡️ Dans la règle \\"déclaration charge sociales . nature de l'activité\\"
+⚠️ Cette règle est tagguée comme experimentale.
+
+Cela veut dire qu'elle peut être modifiée, renommée, ou supprimée sans qu'il n'y ait de changement de version majeure dans l'API.
+",
+ },
+ {
+ "message": "
+[ Avertissement ]
+➡️ Dans la règle \\"déclaration charge sociales . nature de l'activité\\"
+⚠️ Cette règle est tagguée comme experimentale.
+
+Cela veut dire qu'elle peut être modifiée, renommée, ou supprimée sans qu'il n'y ait de changement de version majeure dans l'API.
+",
+ },
+ {
+ "message": "
+[ Avertissement ]
+➡️ Dans la règle \\"déclaration charge sociales . nature de l'activité\\"
+⚠️ Cette règle est tagguée comme experimentale.
+
+Cela veut dire qu'elle peut être modifiée, renommée, ou supprimée sans qu'il n'y ait de changement de version majeure dans l'API.
+",
+ },
+ {
+ "message": "
+[ Avertissement ]
+➡️ Dans la règle \\"déclaration charge sociales . nature de l'activité . libérale\\"
+⚠️ Cette règle est tagguée comme experimentale.
+
+Cela veut dire qu'elle peut être modifiée, renommée, ou supprimée sans qu'il n'y ait de changement de version majeure dans l'API.
+",
+ },
+ {
+ "message": "
+[ Avertissement ]
+➡️ Dans la règle \\"déclaration charge sociales . nature de l'activité\\"
+⚠️ Cette règle est tagguée comme experimentale.
+
+Cela veut dire qu'elle peut être modifiée, renommée, ou supprimée sans qu'il n'y ait de changement de version majeure dans l'API.
+",
+ },
+ {
+ "message": "
+[ Avertissement ]
+➡️ Dans la règle \\"déclaration charge sociales . nature de l'activité\\"
+⚠️ Cette règle est tagguée comme experimentale.
+
+Cela veut dire qu'elle peut être modifiée, renommée, ou supprimée sans qu'il n'y ait de changement de version majeure dans l'API.
+",
+ },
+ {
+ "message": "
+[ Avertissement ]
➡️ Dans la règle \\"impôt . méthode de calcul\\"
⚠️ Cette règle est tagguée comme experimentale.
@@ -987,14 +1051,14 @@ exports[`e2e test mon-entreprise api > Test openapi.json endpoint 2`] = `
},
},
"info": {
- "description": "Cet API expose les règles Publicodes de [mon-entreprise](https://mon-entreprise.urssaf.fr/).
+ "description": "Cet API expose les calculs des simulateurs de [mon-entreprise](https://mon-entreprise.urssaf.fr/).
-Pour plus d'informations, consultez [notre documentation](/d%C3%A9veloppeur/api).
+**[📒 Voir la documentation](https://mon-entreprise.urssaf.fr/d%C3%A9veloppeur/api)**
",
"title": "Mon-entreprise API",
- "version": "beta",
+ "version": "v1",
},
- "openapi": "3.0.0",
+ "openapi": "3.1.0",
"paths": {
"/evaluate": {
"post": {
@@ -1003,7 +1067,7 @@ Pour plus d'informations, consultez [notre documentation](/d%C3%A9veloppeur/api)
"content": {
"application/json": {
"examples": {
- "MicroEntreprise": {
+ "Auto-entrepreneur": {
"value": {
"expressions": [
{
@@ -1024,7 +1088,7 @@ Pour plus d'informations, consultez [notre documentation](/d%C3%A9veloppeur/api)
},
},
},
- "SalaireBrutEnNet": {
+ "Salaire brut en net": {
"value": {
"expressions": [
"salarié . rémunération . net . à payer avant impôt",
@@ -1115,7 +1179,7 @@ Pour plus d'informations, consultez [notre documentation](/d%C3%A9veloppeur/api)
"Impot": {
"value": "impôt . méthode de calcul",
},
- "SalaireNet": {
+ "Salaire net": {
"value": "salarié . rémunération . net . à payer avant impôt",
},
},
diff --git a/exoneration-covid/package.json b/exoneration-covid/package.json
index c9b335d14..16f3eb3e6 100644
--- a/exoneration-covid/package.json
+++ b/exoneration-covid/package.json
@@ -19,10 +19,10 @@
"devDependencies": {
"js-yaml": "^4.1.0",
"onchange": "^7.1.0",
- "publicodes": "=1.0.0-beta.54"
+ "publicodes": "=1.0.0-beta.55"
},
"peerDependencies": {
- "publicodes": "^1.0.0-beta.54"
+ "publicodes": "^1.0.0-beta.55"
},
"scripts": {
"build": "node ../scripts/build-rules.js",
diff --git a/modele-social/CHANGELOG.md b/modele-social/CHANGELOG.md
index 81cba9770..d9a01ea87 100644
--- a/modele-social/CHANGELOG.md
+++ b/modele-social/CHANGELOG.md
@@ -1,3 +1,10 @@
+## 1.0.0-beta.2
+
+- Réecrit les règles de la cotisation AT/MP
+- Supprime le recours au mécanisme synchronisation pour la localisation de l’établissement
+- Ajoute le tag experimental à de nouvelles règles
+
+
## 1.0.0-beta.1
- Passage du paquet en semver (voir le README)
@@ -6,26 +13,26 @@
Les changements suivants sont cassants :
-- renomme l'espace de nom `contrat salarié` en `salarié`
+- renomme l’espace de nom `contrat salarié` en `salarié`
- réécrit les règles liées au remboursement des frais domicile/travail
- réécrit les règles liées aux CDD
-- déplace les éléments relatif au contrat dans `salarié . contrat`. Il s'agit de `temps partiel`, `salaire brut` ou encore le `statut cadre`
+- déplace les éléments relatif au contrat dans `salarié . contrat`. Il s’agit de `temps partiel`, `salaire brut` ou encore le `statut cadre`
- tous les éléments relatifs à la rémunération sont déplacés dans `salarié . rémunération`
- `salarié . régimes spécifiques` : les règles liées aux régimes spéciaux (DFS, cadre, impatriés, etc)
- `plafond sécurité sociale temps plein` devient `plafond sécurité sociale`
-- toutes les cotisations sont déplacées dans l'espace de nom `salarié . cotisations`, et utilisent les acronymes comme nom tant que possible.
+- toutes les cotisations sont déplacées dans l’espace de nom `salarié . cotisations`, et utilisent les acronymes comme nom tant que possible.
**Corrections de bugs**
- Ajoute la limite de déduction sur la part employeur des prévoyances
-- Enlève la CSA de l'exonération JEI
+- Enlève la CSA de l’exonération JEI
- Réecrit les règles de déductions des frais de transport domicile / travail pour coller à la réglementation
- Réecrit les règles sur le CDD pour une meilleure expérience question par question
-- Précise le calcul de l'assiette de la CSG
+- Précise le calcul de l’assiette de la CSG
- Corrige le calcul de la rémunération brut avec prévoyance
-**Note sur l'upgrade**
-Pour les utilisateur des version précédente, la mise à jour risque d'être longue et fastidieuse. Nous nous en excusons. Le but de cette refacto est de prévenir les changement cassants au maximum à l'avenir.
+**Note sur l’upgrade**
+Pour les utilisateur des version précédente, la mise à jour risque d’être longue et fastidieuse. Nous nous en excusons. Le but de cette refacto est de prévenir les changement cassants au maximum à l’avenir.
Vous pouvez utiliser la fonction recherche de la documentation, et utiliser le nouveau menu de navigation des règles pour plus facilement trouver les nouvelles versions des règles utilisées.
@@ -40,4 +47,4 @@ Ajout des déclarations de type dans le paquet
## 0.6.0
-Publication du paquet sous forme d'ES modules.
+Publication du paquet sous forme d’ES modules.
diff --git a/modele-social/package.json b/modele-social/package.json
index fbf58fbd8..2b7e6c4d8 100644
--- a/modele-social/package.json
+++ b/modele-social/package.json
@@ -1,6 +1,6 @@
{
"name": "modele-social",
- "version": "1.0.0-beta.1",
+ "version": "1.0.0-beta.2",
"description": "Les règles publicodes du système social français",
"type": "module",
"main": "./dist/index.js",
@@ -21,10 +21,10 @@
"devDependencies": {
"js-yaml": "^4.1.0",
"onchange": "^7.1.0",
- "publicodes": "^1.0.0-beta.54"
+ "publicodes": "^1.0.0-beta.55"
},
"peerDependencies": {
- "publicodes": "^1.0.0-beta.54"
+ "publicodes": "^1.0.0-beta.55"
},
"scripts": {
"build": "node ../scripts/build-rules.js",
diff --git a/modele-social/règles/base.yaml b/modele-social/règles/base.yaml
index 11a31980a..9f7d0f7c0 100644
--- a/modele-social/règles/base.yaml
+++ b/modele-social/règles/base.yaml
@@ -45,7 +45,7 @@ SMIC . net imposable:
SMIC . horaire:
titre global: SMIC horaire
variations:
- - si: établissement . localisation . département = 'Mayotte'
+ - si: établissement . commune . département . outre-mer . Mayotte
alors:
variations:
- si: date >= 01/08/2022
diff --git a/modele-social/règles/declarations-indépendant/charges-sociales-formulaire.yaml b/modele-social/règles/declarations-indépendant/charges-sociales-formulaire.yaml
index 75509d95f..d93c9da4d 100644
--- a/modele-social/règles/declarations-indépendant/charges-sociales-formulaire.yaml
+++ b/modele-social/règles/declarations-indépendant/charges-sociales-formulaire.yaml
@@ -1,4 +1,5 @@
déclaration charge sociales:
+ experimental: oui
description: >-
Ces règles calculent les montants des charges sociales à reporter dans la déclaration de revenu
des indépendants et dans les déclaration de résultats.
diff --git a/modele-social/règles/dirigeant.yaml b/modele-social/règles/dirigeant.yaml
index aa1d57edc..09b37fb27 100644
--- a/modele-social/règles/dirigeant.yaml
+++ b/modele-social/règles/dirigeant.yaml
@@ -260,9 +260,10 @@ dirigeant . auto-entrepreneur . cotisations et contributions . TFC . métiers .
par: 0.65%
- règle: taux vente
par: 0.29%
+ par défaut: non
une de ces conditions:
- - établissement . localisation . département = 'Bas-Rhin'
- - établissement . localisation . département = 'Haut-Rhin'
+ - établissement . commune . département = 'Bas-Rhin'
+ - établissement . commune . département = 'Haut-Rhin'
références:
service-public.fr: https://www.service-public.fr/professionnels-entreprises/vosdroits/F32847
@@ -272,7 +273,8 @@ dirigeant . auto-entrepreneur . cotisations et contributions . TFC . métiers .
par: 0.83%
- règle: taux vente
par: 0.37%
- valeur: établissement . localisation . département = 'Moselle'
+ par défaut: non
+ valeur: établissement . commune . département = 'Moselle'
références:
service-public.fr: https://www.service-public.fr/professionnels-entreprises/vosdroits/F32847
diff --git a/modele-social/règles/entreprise/entreprise.yaml b/modele-social/règles/entreprise/entreprise.yaml
index 99dfcd32e..7866644ee 100644
--- a/modele-social/règles/entreprise/entreprise.yaml
+++ b/modele-social/règles/entreprise/entreprise.yaml
@@ -189,7 +189,7 @@ entreprise . TVA . franchise de TVA: oui
entreprise . TVA . franchise de TVA . seuil vente:
variations:
- - si: établissement . localisation . outre-mer . Guadeloupe Réunion Martinique
+ - si: établissement . commune . département . outre-mer . Guadeloupe Réunion Martinique
alors: 110000 €/an
- sinon: 94300 €/an
références:
@@ -197,7 +197,7 @@ entreprise . TVA . franchise de TVA . seuil vente:
entreprise . TVA . franchise de TVA . seuil service:
variations:
- - si: établissement . localisation . outre-mer . Guadeloupe Réunion Martinique
+ - si: établissement . commune . département . outre-mer . Guadeloupe Réunion Martinique
alors: 60000 €/an
- si: dirigeant . indépendant . PL . métier = 'avocat'
alors: 44500 €
diff --git a/modele-social/règles/entreprise/établissement.yaml b/modele-social/règles/entreprise/établissement.yaml
index 9db9dbbcc..6ad23e9fb 100644
--- a/modele-social/règles/entreprise/établissement.yaml
+++ b/modele-social/règles/entreprise/établissement.yaml
@@ -4,75 +4,40 @@
type: texte
applicable si: entreprise . SIREN
-établissement . localisation:
- experimental: oui
- icônes: 🌍
- description: |
- Lorsqu'une entreprise dispose de plusieurs établissements, certaines cotisations sont
- calculées à l'échelle de l'établissement et sont fonction de règlementations locales.
+établissement . commune:
+ icônes: 📍
question: Dans quelle commune l'établissement est-il implanté ?
API: commune
- # TODO : transform to texte
- par défaut:
- objet:
- code: 29019
- nom: Non renseignée
- departement:
- nom: Non renseigné
- taux du versement mobilité: 1.8
+ variations:
+ - si:
+ est défini: nom
+ alors:
+ texte: '{{ nom }} ({{ code postal }})'
+ - sinon: nom
avec:
- code commune:
- synchronisation:
- data: localisation
- chemin: code
-
- commune:
- description: |
- Lorsqu'une entreprise dispose de plusieurs établissements, certaines cotisations sont
- calculées à l'échelle de l'établissement et sont fonction de règlementations locales.
- synchronisation:
- data: localisation
- chemin: nom
-
+ nom:
+ taux versement mobilité:
+ par défaut: 0
+ unité: '%'
+ code postal:
département:
- synchronisation:
- data: localisation
- chemin: departement . nom
+ avec:
+ outre-mer:
+ par défaut: non
+ une de ces conditions:
+ - département = 'Guadeloupe'
+ - département = 'Martinique'
+ - département = 'Guyane'
+ - département = 'La Réunion'
+ - département . outre-mer . Mayotte
- outre-mer:
- applicable si:
- une de ces conditions:
- - département = 'Guadeloupe'
- - département = 'Martinique'
- - département = 'Guyane'
- - département = 'La Réunion'
- - département = 'Mayotte'
-
- outre-mer . Guadeloupe Réunion Martinique:
- une de ces conditions:
- - département = 'Guadeloupe'
- - département = 'Martinique'
- - département = 'La Réunion'
-
-établissement . versement mobilité:
- experimental: oui
- unité: '%'
- par défaut: oui
- synchronisation:
- data: localisation
- chemin: taux du versement mobilité
-
-établissement . ZFU:
- experimental: oui
- applicable si: entreprise . date de création < 01/2015
- question: Votre établissement bénéficie-t-il du dispositif zone franche urbaine (ZFU) ?
- par défaut: non
-
-établissement . ZFU . durée d'implantation en fin d'année:
- formule:
- durée:
- depuis: entreprise . date de création
- jusqu'à: 31/12/2019
+ avec:
+ Guadeloupe Réunion Martinique:
+ une de ces conditions:
+ - département = 'Guadeloupe'
+ - département = 'Martinique'
+ - département = 'La Réunion'
+ Mayotte: département = 'Mayotte'
établissement . taux ATMP:
description: |
@@ -106,3 +71,15 @@
si: taux ATMP < salarié . cotisations . ATMP . taux minimum
niveau: avertissement
description: Le taux renseigné est inférieur au taux minimum légal
+
+établissement . ZFU:
+ experimental: oui
+ applicable si: entreprise . date de création < 01/2015
+ question: Votre établissement bénéficie-t-il du dispositif zone franche urbaine (ZFU) ?
+ par défaut: non
+
+établissement . ZFU . durée d'implantation en fin d'année:
+ formule:
+ durée:
+ depuis: entreprise . date de création
+ jusqu'à: 31/12/2019
diff --git a/modele-social/règles/impôt.yaml b/modele-social/règles/impôt.yaml
index 85468849b..a739b6bad 100644
--- a/modele-social/règles/impôt.yaml
+++ b/modele-social/règles/impôt.yaml
@@ -97,7 +97,7 @@ impôt . revenu imposable . abattement contrat court:
impôt . taux neutre d'impôt sur le revenu . barème Guadeloupe Réunion Martinique:
icônes: 🇬🇵🇷🇪 🇲🇶
- applicable si: établissement . localisation . outre-mer . Guadeloupe Réunion Martinique
+ applicable si: établissement . commune . département . outre-mer . Guadeloupe Réunion Martinique
remplace: taux neutre d'impôt sur le revenu
grille:
assiette: revenu imposable
@@ -189,9 +189,10 @@ impôt . taux neutre d'impôt sur le revenu . barème Guadeloupe Réunion Martin
impôt . taux neutre d'impôt sur le revenu . barème Guyane Mayotte:
icônes: 🇬🇾 🇾🇹
applicable si:
+ par défaut: non
une de ces conditions:
- - établissement . localisation . département = 'Guyane'
- - établissement . localisation . département = 'Mayotte'
+ - établissement . commune . département = 'Guyane'
+ - établissement . commune . département = 'Mayotte'
remplace: taux neutre d'impôt sur le revenu
grille:
assiette: revenu imposable
diff --git a/modele-social/règles/salarié/activité-partielle.yaml b/modele-social/règles/salarié/activité-partielle.yaml
index ef7e5ed01..1b86dbc68 100644
--- a/modele-social/règles/salarié/activité-partielle.yaml
+++ b/modele-social/règles/salarié/activité-partielle.yaml
@@ -29,7 +29,7 @@ salarié . rémunération . revenus de remplacement:
assiette: revenus de remplacement
taux:
variations:
- - si: établissement . localisation . département = 'Mayotte'
+ - si: établissement . commune . département . outre-mer . Mayotte
alors: 2.35%
- si: régimes spécifiques . alsace moselle
alors: 1.5%
diff --git a/modele-social/règles/salarié/conventions-collectives/spectacle-vivant.yaml b/modele-social/règles/salarié/conventions-collectives/spectacle-vivant.yaml
index ab1943a57..df742e6a6 100644
--- a/modele-social/règles/salarié/conventions-collectives/spectacle-vivant.yaml
+++ b/modele-social/règles/salarié/conventions-collectives/spectacle-vivant.yaml
@@ -184,8 +184,8 @@ salarié . régimes spécifiques . intermittents du spectacle . artiste . réduc
par: cotisations . vieillesse . salarié . déplafonnée . taux * réduction de taux
- règle: cotisations . allocations familiales . taux
par: cotisations . allocations familiales . taux * réduction de taux
- - règle: établissement . versement mobilité
- par: établissement . versement mobilité * réduction de taux
+ - règle: cotisations . versement mobilité
+ par: cotisations . versement mobilité * réduction de taux
- règle: cotisations . FNAL . taux
par: cotisations . FNAL . taux * réduction de taux
formule: 70%
diff --git a/modele-social/règles/salarié/cotisations.yaml b/modele-social/règles/salarié/cotisations.yaml
index 65d69b0d7..7292a4369 100644
--- a/modele-social/règles/salarié/cotisations.yaml
+++ b/modele-social/règles/salarié/cotisations.yaml
@@ -99,18 +99,18 @@ salarié . cotisations . exonérations . heures supplémentaires:
urssaf.fr: https://www.urssaf.fr/portail/home/employeur/beneficier-dune-exoneration/exonerations-generales/la-deduction-forfaitaire-patrona/employeurs-concernes.html
salarié . cotisations . exonérations . lodeom:
- beta: oui
- valeur: oui
+ experimental: oui
applicable si:
+ par défaut: non
nom: zone un
titre: Zone géographique 1 (Guadeloupe, Martinique, La Réunion, Guyane)
références:
fiche Urssaf: https://www.urssaf.fr/portail/home/outre-mer/employeur/exoneration-de-cotisations-di-1/employeurs-situes-en-guadeloupe.html
une de ces conditions:
- - établissement . localisation . département = 'Guadeloupe'
- - établissement . localisation . département = 'La Réunion'
- - établissement . localisation . département = 'Martinique'
- - établissement . localisation . département = 'Guyane'
+ - établissement . commune . département = 'Guadeloupe'
+ - établissement . commune . département = 'La Réunion'
+ - établissement . commune . département = 'Martinique'
+ - établissement . commune . département = 'Guyane'
# TODO : ajouter la zone 2
description: |
Un ensemble assez complexe de réductions de cotisation est disponible pour les salariés d'outre-mer.
@@ -697,7 +697,7 @@ salarié . cotisations . CSG-CRDS . non déductible:
- revenus de remplacement . CRDS
salarié . cotisations . CSG-CRDS . CSG:
- non applicable si: établissement . localisation . département = 'Mayotte'
+ non applicable si: établissement . commune . département . outre-mer . Mayotte
description: >-
La contribution sociale généralisée (CSG) est un impôt destiné à participer
au financement de la protection sociale.
@@ -1092,7 +1092,7 @@ salarié . cotisations . taxe d'apprentissage:
valeur: cotisations . assiette
abattement:
variations:
- - si: établissement . localisation . outre-mer
+ - si: établissement . commune . département . outre-mer
alors: 20% * temps de travail . SMIC
- sinon: 11% * temps de travail . SMIC
- sinon: cotisations . assiette
@@ -1142,7 +1142,7 @@ salarié . cotisations . versement mobilité:
branche: transport
produit:
assiette: cotisations . assiette
- taux: établissement . versement mobilité
+ taux: établissement . commune . taux versement mobilité
références:
Recherchez le taux de versement mobilité applicable dans votre ville: https://www.urssaf.fr/portail/home/taux-et-baremes/versement-mobilite.html
diff --git a/modele-social/règles/salarié/salarié.yaml b/modele-social/règles/salarié/salarié.yaml
index 11e831ccb..0e814d123 100644
--- a/modele-social/règles/salarié/salarié.yaml
+++ b/modele-social/règles/salarié/salarié.yaml
@@ -38,11 +38,11 @@ salarié . régimes spécifiques . alsace moselle:
Nous considérons qu'un salarié est affilié au régime Alsace-Moselle quand l'établissement dans lequel il travaille est situé dans ces départements.
Attention : c'est une **simplification** : l'affiliation est plus compliquée que celà, voir les conditions exactes [sur le site du régime](http://regime-local.fr/salaries/).
-
+ par défaut: non
une de ces conditions:
- - établissement . localisation . département = 'Bas-Rhin'
- - établissement . localisation . département = 'Haut-Rhin'
- - établissement . localisation . département = 'Moselle'
+ - établissement . commune . département = 'Bas-Rhin'
+ - établissement . commune . département = 'Haut-Rhin'
+ - établissement . commune . département = 'Moselle'
salarié . régimes spécifiques . alsace moselle . ATMP:
avec:
@@ -188,8 +188,8 @@ salarié . régimes spécifiques . DFS . profession . journaliste . réduction d
- règle: cotisations . allocations familiales . taux
par: cotisations . allocations familiales . taux * réduction de taux
- - règle: établissement . versement mobilité
- par: établissement . versement mobilité * réduction de taux
+ - règle: cotisations . versement mobilité
+ par: cotisations . versement mobilité * réduction de taux
- règle: cotisations . ATMP . taux
par: cotisations . ATMP . taux * réduction de taux
- règle: cotisations . ATMP . taux minimum
diff --git a/site/package.json b/site/package.json
index 966d37168..b0dc1625f 100644
--- a/site/package.json
+++ b/site/package.json
@@ -79,8 +79,8 @@
"isbot": "^3.5.0",
"markdown-to-jsx": "^7.1.7",
"modele-social": "workspace:^",
- "publicodes": "^1.0.0-beta.54",
- "publicodes-react": "^1.0.0-beta.54",
+ "publicodes": "^1.0.0-beta.55",
+ "publicodes-react": "^1.0.0-beta.55",
"react": "^17.0.0",
"react-colorful": "^5.5.1",
"react-dom": "^17.0.0",
diff --git a/site/source/actions/actions.ts b/site/source/actions/actions.ts
index fe75e2b58..746094459 100644
--- a/site/source/actions/actions.ts
+++ b/site/source/actions/actions.ts
@@ -1,6 +1,7 @@
import { SimulationConfig } from '@/reducers/rootReducer'
+import { buildSituationFromObject } from '@/utils'
import { DottedName } from 'modele-social'
-import Engine from 'publicodes'
+import Engine, { PublicodesExpression } from 'publicodes'
import { CompanyActions } from './companyActions'
import { CompanyCreationAction } from './companyCreationChecklistActions'
import { CompanyStatusAction } from './companyStatusActions'
@@ -110,3 +111,25 @@ export const updateShouldFocusField = (shouldFocusField: boolean) =>
type: 'UPDATE_SHOULD_FOCUS_FIELD',
shouldFocusField,
} as const)
+
+export const answerQuestion = (
+ dottedName: DottedName,
+ value:
+ | PublicodesExpression
+ | undefined
+ | { batchUpdate: Record