[moteur] Retour aux vraies variables pour le CIF, toujours avec une fausse situation

pull/6/head
Mael Thomas 2017-03-01 17:58:27 +01:00
parent b4a025cad1
commit 39ffd216a4
4 changed files with 35 additions and 27 deletions

View File

@ -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%

View File

@ -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}) =>
</div>
</div>
let NodeValue = ({boolean, data}) => do {
let NodeValue = ({data}) => do {
let valeur = data == null ?
'?'
: ( R.is(Number)(data) ?
data
Math.round(data)
: ( data ? 'oui' : 'non')
);

View File

@ -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`}
}

View File

@ -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) ?