diff --git a/règles/rémunération-travail/cdd/CIF.yaml b/règles/rémunération-travail/cdd/CIF.yaml index 5b33130a0..862b4b4b3 100644 --- a/règles/rémunération-travail/cdd/CIF.yaml +++ b/règles/rémunération-travail/cdd/CIF.yaml @@ -6,22 +6,25 @@ références: Code du travail - Article L6322-37 : https://www.legifrance.gouv.fr/affichCodeArticle.do?idArticle=LEGIARTI000022234996&cidTexte=LEGITEXT000006072050 - non applicable si: l'une de ces conditions: - # - événements . CDD poursuivi en CDI - # - motif . saisonnier - # - motif . jeune vacances - # - contrat aidé - - A - - toutes ces conditions: - - B - - C - - l'une de ces conditions: - - X - - Z + - événements . CDD poursuivi en CDI + - motif . saisonnier + - motif . jeune vacances + - contrat aidé + + # Données de test # + # non applicable si: + # l'une de ces conditions: + # - A + # - toutes ces conditions: + # - B + # - C + # - l'une de ces conditions: + # - X + # - Z formule: multiplication: - assiette: E + assiette: salaire de base taux: 1% diff --git a/source/components/Rule.js b/source/components/Rule.js index 41b786621..fbe68861a 100644 --- a/source/components/Rule.js +++ b/source/components/Rule.js @@ -12,14 +12,19 @@ export default class Rule extends Component { name } = this.props.params, rule = analyseSituation( - v => ( - { 'A': 'non', - 'B': 'oui', - 'C': 'oui', - 'Z': 'non', - 'X': 'non', - 'E': 5789 - }[v]) + v => R.path(v.split('.'))( + { + "Salariat ":{ + " CDD ":{ + " événements":"_", + " motif":"saisonnier", + " engagement employeur complément formation":"non", + " durée contrat":"2" + }, + " contrat aidé":"non", + " salaire de base": 1481 + } + }) )[0] return ( @@ -161,11 +166,11 @@ let Expression = ({nodeValue, expression}) => -let NodeValue = ({boolean, data}) => do { +let NodeValue = ({data}) => do { let valeur = data == null ? '?' : ( R.is(Number)(data) ? - data + Math.round(data) : ( data ? 'oui' : 'non') ); diff --git a/source/engine/expressions.js b/source/engine/expressions.js index bb8a7a858..04ff23a39 100644 --- a/source/engine/expressions.js +++ b/source/engine/expressions.js @@ -22,12 +22,11 @@ let expressionTests = { /* Les variables peuvent être exprimées dans une règle relativement à son contexte, son 'attache', pour une plus grande lisibilité. Cette fonction résoud cette ambiguité. */ let completeVariableName = ({attache, name}, partialName) => { - return partialName let fragments = attache.split(' . '), pathPossibilities = R.pipe( - R.length, - R.inc, + R.length, + R.inc, R.range(1), R.map(R.take(R.__, fragments)), R.reverse @@ -39,7 +38,7 @@ let completeVariableName = ({attache, name}, partialName) => { )(findRuleByDottedName([...path, partialName].join(' . '))) , null, pathPossibilities) - found && found.dottedName || do {throw `OUUUUPS la référence ${partialName} dans la règle : ${name} est introuvable dans la base`} + return found && found.dottedName || do {throw `OUUUUPS la référence ${partialName} dans la règle : ${name} est introuvable dans la base`} } diff --git a/source/engine/traverse.js b/source/engine/traverse.js index 552b7ecd1..18447733c 100644 --- a/source/engine/traverse.js +++ b/source/engine/traverse.js @@ -54,6 +54,7 @@ par exemple ainsi : https://github.com/Engelberg/instaparse#transforming-the-tre let treat = (situationGate, rule) => rawNode => { + if (R.is(String)(rawNode)) {// it's an expression let [variableName, evaluation] = recognizeExpression(rule, rawNode), value = knownVariable(situationGate, variableName) ?