diff --git a/source/engine/grammar.ne b/source/engine/grammar.ne index 37db91057..9c19a3b05 100644 --- a/source/engine/grammar.ne +++ b/source/engine/grammar.ne @@ -111,12 +111,12 @@ _ -> [\s] {% d => null %} number -> [0-9]:+ ([\.] [0-9]:+):? {% d => ({constant:{ - rawNode: d.join(''), + rawNode: d, nodeValue: parseFloat(d[0].join("")+(d[1]?(d[1][0]+d[1][1].join("")):""))}}) %} percentage -> [0-9]:+ ([\.] [0-9]:+):? [\%] {% d => ({ 'constant':{ - rawNode: d.join(''), + rawNode: d, type: 'percentage', nodeValue: parseFloat(d[0].join("")+(d[1]?(d[1][0]+d[1][1].join("")):""))/100}}) %} diff --git a/source/engine/mecanisms.js b/source/engine/mecanisms.js index cea1ad2b0..5e85d20a3 100644 --- a/source/engine/mecanisms.js +++ b/source/engine/mecanisms.js @@ -565,7 +565,7 @@ export let mecanismReduction = (recurse, k, v) => { ? montantFranchiséDécoté === 0 ? 0 : null - : abattement.category === 'percentage' + : abattement.type === 'percentage' ? max( 0, montantFranchiséDécoté - min(val(plafond), val(abattement) * montantFranchiséDécoté) @@ -904,11 +904,11 @@ export let mecanismSynchronisation = (recurse, k, v) => { export let mecanismError = (recurse, k, v) => { throw new Error("Le mécanisme '" + k + "' est inconnu !" + v) } -export let mecanismOnePossibility = (recurse, k, v) => ({ +export let mecanismOnePossibility = dottedName => (recurse, k, v) => ({ ...v, 'une possibilité': 'oui', evaluate: (cache, situationGate, parsedRules, node) => ({ ...node, - missingVariables: { [node.dottedName]: 1 } + missingVariables: { [dottedName]: 1 } }) }) diff --git a/source/engine/treat.js b/source/engine/treat.js index 5339956c2..55c26712f 100644 --- a/source/engine/treat.js +++ b/source/engine/treat.js @@ -115,7 +115,7 @@ export let treatObject = (rules, rule, treatOptions) => rawNode => { '!=': [(a, b) => !equals(a, b), '≠'] }, operationDispatch = map( - ([f, unicode]) => mecanismOperation(f, unicode), + ([f, unicode]) => mecanismOperation(f, unicode || k), knownOperations ) @@ -131,7 +131,7 @@ export let treatObject = (rules, rule, treatOptions) => rawNode => { 'le maximum de': mecanismMax, 'le minimum de': mecanismMin, complément: mecanismComplement, - 'une possibilité': mecanismOnePossibility, + 'une possibilité': mecanismOnePossibility(rule.dottedName), 'inversion numérique': mecanismInversion(rule.dottedName), allègement: mecanismReduction, variations: mecanismVariations, @@ -141,7 +141,7 @@ export let treatObject = (rules, rule, treatOptions) => rawNode => { treatNegatedVariable(treatVariable(rules, rule)(v.explanation)), filter: () => treatVariableTransforms(rules, rule)({ - filter: v.filtre, + filter: v.filter, variable: v.explanation }), variable: () => treatVariableTransforms(rules, rule)({ variable: v }), diff --git a/source/règles/base.yaml b/source/règles/base.yaml index bb6eb7e71..2457212ef 100644 --- a/source/règles/base.yaml +++ b/source/règles/base.yaml @@ -667,7 +667,7 @@ Le contrat n'est en fait pas nécessaire dans le droit français, il est possible d'employer quelqu'un sans contrat par exemple dans les cas suivants: - Particuliers employeurs : Plus de 8 heures par semaine ou de plus de 4 semaines consécutives dans l'année. - - CDI : La signature d’un contrat de travail n’est pas obligatoire dans certains cas. C’est le cas du Contrat de travail à Durée Indéterminée, considéré comme la forme normale et générale de la relation de travail entre un salarié et un employeur (Art. L1221-2 du Code du travail). + - CDI : La signature d’un contrat de travail n’est pas obligatoire dans certains cas. C’est le cas du Contrat de travail à Durée Ind��terminée, considéré comme la forme normale et générale de la relation de travail entre un salarié et un employeur (Art. L1221-2 du Code du travail). - espace: contrat salarié nom: assimilé salarié