diff --git a/source/components/Mecanisms.tsx b/source/components/Mecanisms.tsx deleted file mode 100644 index 6293fc3e1..000000000 --- a/source/components/Mecanisms.tsx +++ /dev/null @@ -1,51 +0,0 @@ -// Page listing the engine's currently implemented mecanisms and their tests -import mécanismes from 'Engine/mecanisms.yaml' -import { fromPairs, has, toPairs } from 'ramda' -import React from 'react' -import './Mecanisms.css' - -let directoryLoader = require.context('../../test/mécanismes/', true, /.yaml$/), - suites = fromPairs( - directoryLoader - .keys() - .map(key => [ - key.replace(/\/|\.|(yaml)/g, '').replace(/-/g, ' '), - directoryLoader(key) - ]) - ) - -export default function Mecanisms() { - return ( -
-

- Cette page liste les mécanismes et indique en rouge ceux qui n'ont pas - de tests. La commande "yarn test" permet de voir ceux qui passent. Ce - serait bien de pouvoir les faire tourner dans le navigateur en - partageant le code de mecanisms.test.js -

- -
- ) -} - -function Tests({ suites, name }) { - let suite = suites[name], - tests = suite.filter(has('test')) - - return ( -

- {tests.length} {tests.length == 1 ? 'test' : 'tests'} -

- ) -} diff --git a/source/engine/README.md b/source/engine/README.md index fdfdbba10..ea6895eb1 100644 --- a/source/engine/README.md +++ b/source/engine/README.md @@ -21,7 +21,7 @@ progressivement le résultat affiché, et explorer une documentation du calcul. [bibliothèque de calcul autonome](https://mon-entreprise.fr/intégration/bibliothèque-de-calcul), libre de droit. - [futur.eco](https://futur.eco/) utilise publicode pour calculer les bilans - carbone d'un grand nombre d'activité, plats, transport ou biens. + carbone d'un grand nombre d'activités, plats, transports ou biens. ## Principe de base @@ -31,7 +31,7 @@ liste de règles identifiées par leur nom et possédant une formule de calcul : ```yaml prix d'un repas: - formule: 10 + formule: 10 € ``` Une formule de calcul peut référencer d'autres variables. Dans l'exemple suivant @@ -39,7 +39,7 @@ la règle `prix total` aura pour valeur 50 (= 5 \* 10) ```yaml prix d'un repas: - formule: 10 + formule: 10 € prix total: formule: 5 * prix d'un repas @@ -104,7 +104,7 @@ prix total: ### Conversion -Publicode converti automatiquement les unités si besoin. +Publicode convertit automatiquement les unités si besoin. ```yaml salaire: @@ -222,7 +222,7 @@ prime: taux: taux du bonus ``` -> **[Voir la description des mécanismes existants](./mécanismes)** +> **[Aller à la liste des mécanismes existants](./mécanismes)** ## Applicabilité diff --git a/source/engine/mecanisms.yaml b/source/engine/mecanisms.yaml index 83c94c7a0..46725ce62 100644 --- a/source/engine/mecanisms.yaml +++ b/source/engine/mecanisms.yaml @@ -2,11 +2,11 @@ une de ces conditions: description: >- C'est un `ou` logique. Contient une liste de conditions. - Renvoie vrai si l'une des conditions est applicable. + Renvoie `oui` si l'une des conditions est applicable. retourne: Booléen exemples: base: >- - age: + âge: formule: 17 ans mineur émancipé: @@ -15,17 +15,30 @@ une de ces conditions: peut voter: formule: une de ces conditions: - - age > 18 ans + - âge > 18 ans - mineur émancipé toutes ces conditions: description: >- C'est un `et` logique. Contient une liste de conditions. - Renvoie vrai si toutes les conditions sont applicables. + 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: >- @@ -133,7 +146,7 @@ somme: terme non applicable: >- a: formule: 50 € - + b: applicable si: non formule: 20 € @@ -152,6 +165,13 @@ le maximum de: 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: >- @@ -159,6 +179,13 @@ le minimum de: 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: >- @@ -222,6 +249,23 @@ recalcul: 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: + 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. @@ -232,6 +276,25 @@ barème: 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: >- @@ -241,6 +304,31 @@ grille: 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: + 2000 €/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: >- @@ -256,7 +344,24 @@ taux progressif: > 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 @@ -280,9 +385,27 @@ allègement: 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: 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 diff --git a/source/sites/publi.codes/Header.js b/source/sites/publi.codes/Header.js index 93300b655..affa0f307 100644 --- a/source/sites/publi.codes/Header.js +++ b/source/sites/publi.codes/Header.js @@ -1,6 +1,6 @@ import React from 'react' import { Link } from 'react-router-dom' -export const Header = ({ noSubtitle, sectionName = '' }) => ( +export const Header = ({ noSubtitle = false, sectionName = '' }) => (

diff --git a/source/sites/publi.codes/Mécanismes.tsx b/source/sites/publi.codes/Mécanismes.tsx index 59531c525..65db9d5ca 100644 --- a/source/sites/publi.codes/Mécanismes.tsx +++ b/source/sites/publi.codes/Mécanismes.tsx @@ -8,10 +8,9 @@ import { capitalise0 } from '../../utils' import { Header } from './Header' type MecanismProp = { - name: string exemples: { base: string } description: string - arguments: any + name: string } const Mecanism = ({ name, description, exemples }: MecanismProp) => ( @@ -52,14 +51,14 @@ export default function Landing() {

Mécanismes existants

    - {Object.entries(mecanisms).map(([name, data]) => ( + {Object.keys(mecanisms).map(name => (
  • {name}
  • ))}
{Object.entries(mecanisms).map(([name, data]) => ( - + ))} )