⚙️ Périodes en préfixe
parent
a6c7bfee3d
commit
ce3d63ab65
|
@ -6,7 +6,7 @@ main ->
|
|||
| Boolean {% id %}
|
||||
| Variable {% id %}
|
||||
| NegatedVariable {% id %}
|
||||
| ModifiedVariable {% id %}
|
||||
| TemporalVariable {% id %}
|
||||
| FilteredVariable {% id %}
|
||||
| percentage {% id %}
|
||||
| Comparison {% id %}
|
||||
|
@ -18,7 +18,7 @@ Comparison -> Comparable _ ComparisonOperator _ Comparable {% d => ({
|
|||
explanation: [d[0], d[4]]
|
||||
}) %}
|
||||
|
||||
Comparable -> (number | percentage | CalcExpression | Variable | Constant) {% d => d[0][0] %}
|
||||
Comparable -> (number | percentage | CalcExpression | Variable | TemporalVariable | Constant) {% d => d[0][0] %}
|
||||
|
||||
ComparisonOperator -> ">" | "<" | ">=" | "<=" | "=" | "!="
|
||||
|
||||
|
@ -28,12 +28,11 @@ FilteredVariable -> Variable _ Filter {% d => ({category: 'variable', filter: d[
|
|||
|
||||
Filter -> "(" VariableFragment ")" {% d =>d[1] %}
|
||||
|
||||
# Modificateurs temporels pas utilisés aujourd'hui
|
||||
ModifiedVariable -> Variable _ Modifier {% d => ({category: 'modifiedVariable', modifier: d[2], variable: d[0] }) %}
|
||||
TemporalVariable -> Variable _ TemporalTransform {% d => ({...d[0], temporalTransform: d[2] }) %}
|
||||
|
||||
Modifier -> "[" TemporalModifier "]" {% d =>d[1][0] %}
|
||||
TemporalTransform -> "[" Temporalities "]" {% d =>d[1] %}
|
||||
|
||||
TemporalModifier -> "annuel" | "mensuel" | "jour ouvré" {% id %}
|
||||
Temporalities -> "annuel" | "mensuel" {% id %}
|
||||
#-----
|
||||
|
||||
|
||||
|
|
|
@ -55,7 +55,7 @@ let nearley = () => new Parser(Grammar.ParserRules, Grammar.ParserStart)
|
|||
export let treatString = (rules, rule) => rawNode => {
|
||||
/* On a affaire à un string, donc à une expression infixe.
|
||||
Elle sera traité avec le parser obtenu grâce à NearleyJs et notre grammaire `grammar.ne`.
|
||||
On obtient un objet de type Variable (avec potentiellement un 'modifier', par exemple temporel (TODO)), CalcExpression ou Comparison.
|
||||
On obtient un objet de type Variable (avec potentiellement un 'modifier', par exemple temporel), CalcExpression ou Comparison.
|
||||
Cet objet est alors rebalancé à 'treat'.
|
||||
*/
|
||||
|
||||
|
|
|
@ -123,7 +123,12 @@ export let treatVariableTransforms = (rules, rule) => parseResult => {
|
|||
rules,
|
||||
filteredNode.explanation.dottedName
|
||||
)
|
||||
if (!rule.période) {
|
||||
|
||||
let inlinePeriodTransform = { mensuel: 'mois', annuel: 'année' }[
|
||||
parseResult.temporalTransform
|
||||
]
|
||||
|
||||
if (!rule.période && !inlinePeriodTransform) {
|
||||
if (ruleToTransform.période == 'flexible')
|
||||
throw new Error(
|
||||
`Attention, une variable sans période, ${
|
||||
|
@ -140,7 +145,8 @@ export let treatVariableTransforms = (rules, rule) => parseResult => {
|
|||
|
||||
let environmentPeriod = situation('période') || 'mois'
|
||||
let callingPeriod =
|
||||
rule.période == 'flexible' ? environmentPeriod : rule.période
|
||||
inlinePeriodTransform ||
|
||||
(rule.période == 'flexible' ? environmentPeriod : rule.période)
|
||||
let calledPeriod =
|
||||
ruleToTransform.période == 'flexible'
|
||||
? environmentPeriod
|
||||
|
@ -150,9 +156,11 @@ export let treatVariableTransforms = (rules, rule) => parseResult => {
|
|||
callingPeriod === 'mois' && calledPeriod === 'année'
|
||||
? nodeValue / 12
|
||||
: callingPeriod === 'année' && calledPeriod === 'mois'
|
||||
? nodeValue * 12
|
||||
: nodeValue,
|
||||
? nodeValue * 12
|
||||
: nodeValue,
|
||||
periodTransform = nodeValue !== transformedNodeValue
|
||||
if (inlinePeriodTransform)
|
||||
console.log(situation('période'), transformedNodeValue)
|
||||
|
||||
let result = rewriteNode(
|
||||
{
|
||||
|
|
|
@ -741,18 +741,18 @@
|
|||
salaire médian: 2300
|
||||
SMIC: 1500
|
||||
contrôles:
|
||||
- si: brut de base < 300
|
||||
- si: brut de base [mensuel] < 300
|
||||
message: Entrez un salaire raisonnable
|
||||
niveau: bloquant
|
||||
- si: brut de base < SMIC
|
||||
- si: brut de base [mensuel] < SMIC [mensuel]
|
||||
niveau: avertissement
|
||||
solution:
|
||||
cible: contrat salarié . temps partiel
|
||||
texte: Est-ce un temps partiel ?
|
||||
- si: brut de base > 10000
|
||||
- si: brut de base [mensuel] > 10000
|
||||
niveau: information
|
||||
message: |
|
||||
Le salaire saisi est élevé. Pour rappel, le simulateur ne fonctionne qu'avec des salaires mensuels.
|
||||
Le salaire saisi est élevé. Ne vous êtes-vous pas trompé de période de calcul ?
|
||||
formule:
|
||||
inversion:
|
||||
question: Quel est le salaire ?
|
||||
|
@ -963,7 +963,7 @@
|
|||
période: flexible
|
||||
formule: rémunération . net de cotisations - avantages en nature . montant
|
||||
contrôles:
|
||||
- si: net < 200
|
||||
- si: net [mensuel] < 200
|
||||
période: mois
|
||||
message: Entrez un salaire raisonnable
|
||||
niveau: bloquant
|
||||
|
@ -989,7 +989,7 @@
|
|||
|
||||
formule: net - impôt . neutre
|
||||
contrôles:
|
||||
- si: net après impôt < 200
|
||||
- si: net après impôt [mensuel] < 200
|
||||
message: Entrez un salaire raisonnable
|
||||
niveau: bloquant
|
||||
|
||||
|
@ -1330,7 +1330,7 @@
|
|||
|
||||
formule: rémunération . total sans réduction - réductions de cotisations
|
||||
contrôles:
|
||||
- si: total < 400
|
||||
- si: total [mensuel] < 400
|
||||
message: Entrez un salaire raisonnable
|
||||
niveau: bloquant
|
||||
|
||||
|
@ -1366,7 +1366,7 @@
|
|||
type: salaire
|
||||
formule: rémunération . total - aides employeur
|
||||
contrôles:
|
||||
- si: coût d'embauche < 400
|
||||
- si: coût d'embauche [mensuel] < 400
|
||||
message: Entrez un salaire raisonnable
|
||||
niveau: bloquant
|
||||
|
||||
|
@ -2118,7 +2118,7 @@
|
|||
basique: 40
|
||||
élevé: 100
|
||||
contrôles:
|
||||
- si: forfait complémentaire santé < 15
|
||||
- si: forfait complémentaire santé [mensuel] < 15
|
||||
niveau: avertissement
|
||||
message: Vérifiez bien qu'une complémentaire santé si peu chère couvre le panier de soin minimal défini dans la loi.
|
||||
|
||||
|
|
|
@ -148,3 +148,10 @@
|
|||
assiette trois: 36000
|
||||
valeur attendue: 300
|
||||
|
||||
|
||||
- test: Périodes, préfixe de modification temporelle
|
||||
formule: assiette trois [mensuel]
|
||||
exemples:
|
||||
- situation:
|
||||
assiette trois: 12000
|
||||
valeur attendue: 1000
|
||||
|
|
Loading…
Reference in New Issue