[moteur] Retour aux vraies variables pour le CIF, toujours avec une fausse situation
parent
b4a025cad1
commit
39ffd216a4
|
@ -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%
|
||||
|
|
|
@ -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')
|
||||
);
|
||||
|
||||
|
|
|
@ -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`}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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) ?
|
||||
|
|
Loading…
Reference in New Issue