From e69048db3e6b233113c21c6c5910e7573cb731df Mon Sep 17 00:00:00 2001 From: Mael Date: Mon, 9 Jul 2018 12:13:38 +0000 Subject: [PATCH] =?UTF-8?q?Erreur=20plus=20explicite=20en=20cas=20de=20m?= =?UTF-8?q?=C3=A9canisme=20non=20trouv=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/engine/known-mecanisms.yaml | 7 +++++++ source/engine/mecanisms.js | 2 +- source/engine/treat.js | 15 ++++++++------- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/source/engine/known-mecanisms.yaml b/source/engine/known-mecanisms.yaml index 49d31421a..ba9416617 100644 --- a/source/engine/known-mecanisms.yaml +++ b/source/engine/known-mecanisms.yaml @@ -128,6 +128,13 @@ barème: L'assiette est décomposée en plusieurs tranches, qui sont multipliées par un taux spécifique. Les tranches sont très souvent exprimées sous forme de facteurs (par exemple [1, 2, 4]) d'une variable que l'on appelle multiplicateur, par exemple le plafond de la sécurité sociale. + +barème linéaire: + type: numeric + description: | + C'est un barème en taux non marginaux, très simple. 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 multiplier le taux associé avec l'assiette. + complément: type: numeric description: | diff --git a/source/engine/mecanisms.js b/source/engine/mecanisms.js index 841a4ea00..6e33d39ac 100644 --- a/source/engine/mecanisms.js +++ b/source/engine/mecanisms.js @@ -702,7 +702,7 @@ export let mecanismProduct = (recurse, k, v) => { à: 1 ``` */ -let desugarScale = recurse => ({ tranches }) => +let desugarScale = recurse => tranches => tranches .map( t => diff --git a/source/engine/treat.js b/source/engine/treat.js index d6ed57c39..9e633e21d 100644 --- a/source/engine/treat.js +++ b/source/engine/treat.js @@ -38,6 +38,7 @@ import { mecanismSum, mecanismProduct, mecanismScale, + mecanismLinearScale, mecanismMax, mecanismMin, mecanismError, @@ -223,13 +224,12 @@ export let treatObject = (rules, rule) => rawNode => { let mecanisms = intersection(keys(rawNode), keys(knownMecanisms)) if (mecanisms.length != 1) { - // eslint-disable-next-line no-console - console.log( - 'Erreur : On ne devrait reconnaître que un et un seul mécanisme dans cet objet', - mecanisms, - rawNode - ) - throw new Error('OUPS !') + throw new Error(`OUPS : On ne devrait reconnaître que un et un seul mécanisme dans cet objet + Objet YAML : ${JSON.stringify(rawNode)} + Mécanismes implémentés correspondants : ${JSON.stringify(mecanisms)} + Cette liste doit avoir un et un seul élément. + Vérifier que le mécanisme est dans l'objet 'dispatch' et dans les'knownMecanisms.yaml' + `) } let k = head(mecanisms), @@ -242,6 +242,7 @@ export let treatObject = (rules, rule) => rawNode => { somme: mecanismSum, multiplication: mecanismProduct, barème: mecanismScale, + 'barème linéaire': mecanismLinearScale, 'le maximum de': mecanismMax, 'le minimum de': mecanismMin, complément: mecanismComplement,