Ajoute un contrôle pour les dates de début et date de fin

pull/1284/head
Johan Girod 2020-12-08 15:32:36 +01:00
parent 363c34b45a
commit cb5267b6f6
2 changed files with 30 additions and 9 deletions

View File

@ -133,6 +133,13 @@ détachement . date de fin:
note: 2.2
type: date
détachement . vérification date:
titre: Date de détachement non valide
formule: date de début > date de fin
type: notification
description: La date de fin de détachement ne peut être antérieure à la date de début
sévérité: avertissement
détachement . nature de l'activité:
question: Quel sera la nature de votre activité pendant la période de détachement ?
type: texte
@ -195,6 +202,12 @@ activité transfrontalière simultanée . activité salariée . période . date
activité transfrontalière simultanée . activité salariée . période . date de fin:
applicable si: date de fin connue
type: date
activité transfrontalière simultanée . activité salariée . période . vérification:
titre: Date d'activité salariée non valides
formule: date de début du contrat > date de fin
type: notification
description: La date de fin du contrat ne peut être antérieure à la date de début
sévérité: avertissement
activité transfrontalière simultanée . activité salariée . employeur:
note: 5.1

View File

@ -5,7 +5,7 @@ import Emoji from 'Components/utils/Emoji'
import { EngineContext, EngineProvider } from 'Components/utils/EngineContext'
import { Markdown } from 'Components/utils/markdown'
import { usePersistingState } from 'Components/utils/persistState'
import Engine, { evaluateRule } from 'publicodes'
import Engine, { evaluateRule, EvaluatedRule } from 'publicodes'
import { equals } from 'ramda'
import {
lazy,
@ -13,7 +13,7 @@ import {
Suspense,
useCallback,
useState,
useContext,
useContext
} from 'react'
import emoji from 'react-easy-emoji'
import { hash } from '../../../../../utils'
@ -92,11 +92,11 @@ const useFields = (
engine: Engine<string>,
fieldNames: Array<string>,
situation: Record<string, unknown>
) => {
): Array<EvaluatedRule> => {
const fields = fieldNames
.map((name) => evaluateRule(engine, name))
.map(name => evaluateRule(engine, name))
.filter(
(node) =>
node =>
// TODO change this when not applicable value can be differenciated from false value
(equals(node.missingVariables, { [node.dottedName]: 1 }) ||
node.dottedName in situation ||
@ -115,9 +115,9 @@ function FormulairePublicodes() {
)
const onChange = useCallback(
(dottedName, value) => {
setSituation((situation) => ({
setSituation(situation => ({
...situation,
[dottedName]: value,
[dottedName]: value
}))
},
[setSituation]
@ -140,7 +140,7 @@ function FormulairePublicodes() {
const isMissingValues = !!missingValues.length
return (
<Animate.fromTop key={clearFieldsKey}>
{fields.map((field) => (
{fields.map(field => (
<Animate.fromTop key={field.dottedName}>
{field.type === 'groupe' ? (
<>
@ -151,6 +151,14 @@ function FormulairePublicodes() {
)}
{field.description && <Markdown source={field.description} />}
</>
) : field.type === 'notification' && field.nodeValue === true ? (
<small
css={`
color: #ff2d96;
`}
>
{field.description}
</small>
) : (
<>
<label htmlFor={field.dottedName}>
@ -175,7 +183,7 @@ function FormulairePublicodes() {
<RuleInput
id={field.dottedName}
dottedName={field.dottedName}
onChange={(value) => onChange(field.dottedName, value)}
onChange={value => onChange(field.dottedName, value)}
/>
</>
)}