diff --git a/mon-entreprise/package.json b/mon-entreprise/package.json index f605435cc..28aa60047 100644 --- a/mon-entreprise/package.json +++ b/mon-entreprise/package.json @@ -36,7 +36,7 @@ "js-yaml": "^3.13.1", "moo": "^0.5.0", "nearley": "^2.19.0", - "publicodes": "^1.0.0-beta.1", + "publicodes": "^1.0.0-beta.2", "ramda": "^0.27.0", "react": "^16.13.1", "react-color": "^2.14.0", diff --git a/mon-entreprise/source/sites/mon-entreprise.fr/pages/integration/Library.tsx b/mon-entreprise/source/sites/mon-entreprise.fr/pages/integration/Library.tsx index ea60ddc8d..1e8dda926 100644 --- a/mon-entreprise/source/sites/mon-entreprise.fr/pages/integration/Library.tsx +++ b/mon-entreprise/source/sites/mon-entreprise.fr/pages/integration/Library.tsx @@ -13,96 +13,142 @@ export default function Library() { Si vous pensez que votre site ou service gagnerait à afficher des calculs de salaire, par exemple passer du salaire brut au salaire net, bonne nouvelle : tous les calculs de cotisations et impôts qui sont - derrière mon-entreprise.fr sont libres et{' '} - - intégrables sous forme d'une{' '} - - bibliothèque NPM - - + derrière mon-entreprise.fr sont libres et facilement réutilisable + grâce à la{' '} + + bibliothèque NPM publicodes + .

+

Comment utiliser cette librairie ?

- Dit plus simplement, les développeurs de votre équipe sont en mesure - d'intégrer le calcul dans votre interface en 5 minutes - {emoji('⌚')}, sans avoir à gérer la complexité de la paie et la mise - à jour régulière des règles de calcul. + Toutes nos règles de calculs sont écrite en `publicodes`, un language + déclaratif développé par beta.gouv.fr et l'Urssaf pour encoder des + algorithme d'intérêt public.{' '} + En savoir plus sur publicodes

- Cette bibliothèque est un commun numérique développé par l'Etat et - l'ACOSS. Elle repose sur un nouveau langage de programmation,{' '} - publicodes. + Pour effectuer vos propre calcul, il suffit donc d'installer + l'interpreteur publicode, de télécharger les règles de mon-entreprise, + et d'appeler la fonction d'évaluation.

-

Comment l'utiliser ?

+

1) Installer publicodes

+ Dans votre projet : +
+					$ npm install --save publicodes
+				
+

2) Télécharger les règles mon-entreprise

- Les exemples suivants vous montrent comment utiliser la bibliothèque - sur un site ReactJs très simple. + Les règles de calculs de mon-entreprise ne sont pas (encore) + disponible sous forme de paquet npm. Il faudra donc les télécharger + manuellement.

-

1) Faire un calcul très simple : du brut au net

-
+ + Voir les fichiers de règles publicodes de mon-entreprise + +

+ Pour le faire rapidement, vous pouvez copier coller la commande + suivante : +

+
+ + wget + https://raw.githubusercontent.com/betagouv/mon-entreprise/master/mon-entreprise/source/rules/base.yaml + & wget + https://raw.githubusercontent.com/betagouv/mon-entreprise/master/mon-entreprise/source/rules/dirigeant.yaml + & wget + https://raw.githubusercontent.com/betagouv/mon-entreprise/master/mon-entreprise/source/rules/salarié.yaml + & wget + https://raw.githubusercontent.com/betagouv/mon-entreprise/master/mon-entreprise/source/rules/protection-sociale.yaml + & wget + https://raw.githubusercontent.com/betagouv/mon-entreprise/master/mon-entreprise/source/rules/entreprise-établissement.yaml + & wget + https://raw.githubusercontent.com/betagouv/mon-entreprise/master/mon-entreprise/source/rules/impôt.yaml + & wget + https://raw.githubusercontent.com/betagouv/mon-entreprise/master/mon-entreprise/source/rules/situation-personelle.yaml + +
+

+ Attention : bien que les règles soient décomposées en + fichier séparé, les dépendances ne sont pas encore bien gérées avec + publicode. Il vous faudra donc veiller à bien télécharger et importer + les fichiers "socles" pour être sûr de ne pas avoir de dépendances non + satisfaite. +

+

3) Lancer le calcul

+

+ Il ne vous reste plus qu'à paramètrer le moteur avec les règles + téléchargées et à appeler la fonction `evaluate` sur la règle que dont + vous souhaitez la valeur. Voici un exemple pour le calcul brut / net +

+
-

2) Parcourir la documentation en ligne

+

Paramétrer le calcul

Vous l'aurez constaté dans l'exemple précédent, la recette d'un calcul est simple : des variables d'entrée (le salaire brut), une ou plusieurs variables de sorties (le salaire net).

- Toutes ces variables sont listées et expliquées sur notre{' '} + Le calcul est cependant paramétrable avec toutes les possibilités + permise dans la legislation. +

+

+ Toutes ces variables sont listées et expliquées sur la{' '} documentation en ligne - . -

- -

- Utilisez le moteur de recherche pour trouver la bonne variable, puis - cliquez sur "Voir le code source" pour obtenir l'ensemble de la - documentation : valeur par défaut, valeurs possibles quand c'est une - énumération de choix, unité quand c'est un nombre, description, - question utilisateur associée, etc. + . Cette documentation est auto-générée depuis les fichiers de règles + publicode, elle est donc constament à jour.

Lançons un calcul plus proche d'une fiche de paie : voici une description de la situation d'entrée annotée de liens vers les pages correspondantes de la documentation :

- -

- {' '} - Un{' '} - - cadre - {' '} - gagnant{' '} - - 3 400€ bruts - {' '} - , qui bénéficie de l' - - indemnité kilométrique vélo - {' '} - et qui travaille dans une entreprise de{' '} - - 12 salariés - - . -

+
+

+ {' '} + Un{' '} + + cadre + {' '} + gagnant{' '} + + 3 400€ bruts + {' '} + , qui bénéficie de{' '} + + titres-restaurant + {' '} + et qui travaille dans une entreprise de{' '} + + 22 salariés + + . +

+

Voici ce que donne le calcul pour cet exemple plus complet :

-
+

@@ -140,23 +186,16 @@ export default function Library() { dit, les hauts salaires paient une partie des cotisations sociales des bas salaires.

-

- {emoji('⚠️ ')}Attention, cet exemple fait pas mal de calculs d'un - coup, ce qui peut bloquer votre navigateur quelques secondes. Pour - palier à ce problème, il faudrait faire l'appel à la bibliothèque dans - un Web Worker, mais ça n'est pas possible{' '} - - pour l'instant - {' '} - dans ces démos. -

-
+
diff --git a/publicodes/package.json b/publicodes/package.json index d6ca1ee26..3c9e410cb 100644 --- a/publicodes/package.json +++ b/publicodes/package.json @@ -1,6 +1,6 @@ { "name": "publicodes", - "version": "1.0.0-beta.1", + "version": "1.0.0-beta.2", "description": "A declarative language for encoding public algorithm", "main": "dist/index.js", "types": "dist/types/index.d.ts", @@ -20,6 +20,7 @@ "private": false, "dependencies": { "classnames": "^2.2.6", + "i18next": "^19.4.4", "moo": "^0.5.1", "nearley": "^2.19.2", "ramda": "^0.27.0", diff --git a/yarn.lock b/yarn.lock index 7887ed7cd..48de1eaaa 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5878,7 +5878,7 @@ i18next-parser@^1.0.6: vue-template-compiler "^2.6.11" yamljs "^0.3.0" -i18next@^19.0.1: +i18next@^19.0.1, i18next@^19.4.4: version "19.4.4" resolved "https://registry.yarnpkg.com/i18next/-/i18next-19.4.4.tgz#c0a18bc2f2be554da636e67bfbf5200c7948b60d" integrity sha512-ofaHtdsDdX3A5nYur1HWblB7J4hIcjr2ACdnwTAJgc8hTfPbyzZfGX0hVkKpI3vzDIgO6Uzc4v1ffW2W6gG6zw==