Ajoute un message explicatif quand la valeur renseignée abouti a un résultat impossible
parent
4d79e18139
commit
c69e6ac9b0
|
@ -31,7 +31,7 @@
|
|||
"@apidevtools/swagger-cli": "^4.0.4",
|
||||
"@koa/cors": "^4.0.0",
|
||||
"@koa/router": "^12.0.0",
|
||||
"@publicodes/api": "^1.0.0-beta.75",
|
||||
"@publicodes/api": "^1.0.0-beta.76",
|
||||
"@sentry/node": "^7.70.0",
|
||||
"@sentry/utils": "^7.70.0",
|
||||
"got": "^13.0.0",
|
||||
|
@ -42,7 +42,7 @@
|
|||
"koa-static": "^5.0.0",
|
||||
"modele-social": "workspace:^",
|
||||
"nodemon": "^3.0.1",
|
||||
"publicodes": "^1.0.0-beta.75",
|
||||
"publicodes": "^1.0.0-beta.76",
|
||||
"rate-limiter-flexible": "^2.4.2",
|
||||
"swagger-ui-dist": "^5.7.2"
|
||||
},
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
"devDependencies": {
|
||||
"js-yaml": "^4.1.0",
|
||||
"onchange": "^7.1.0",
|
||||
"publicodes": "^1.0.0-beta.75"
|
||||
"publicodes": "^1.0.0-beta.76"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"publicodes": "^1.0.0-beta.55"
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
"devDependencies": {
|
||||
"js-yaml": "^4.1.0",
|
||||
"onchange": "^7.1.0",
|
||||
"publicodes": "^1.0.0-beta.75"
|
||||
"publicodes": "^1.0.0-beta.76"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"publicodes": "^1.0.0-beta.55"
|
||||
|
|
|
@ -69,8 +69,8 @@
|
|||
"isbot": "^3.7.0",
|
||||
"markdown-to-jsx": "^7.3.2",
|
||||
"modele-social": "workspace:^",
|
||||
"publicodes": "^1.0.0-beta.75",
|
||||
"publicodes-react": "^1.0.0-beta.75",
|
||||
"publicodes": "^1.0.0-beta.76",
|
||||
"publicodes-react": "^1.0.0-beta.76",
|
||||
"react": "^18.2.0",
|
||||
"react-aria": "^3.24.0",
|
||||
"react-day-picker": "^8.8.2",
|
||||
|
|
|
@ -1,13 +1,15 @@
|
|||
import { DottedName } from 'modele-social'
|
||||
import Engine, { RuleNode } from 'publicodes'
|
||||
import { useTranslation } from 'react-i18next'
|
||||
import { Trans, useTranslation } from 'react-i18next'
|
||||
import { useDispatch, useSelector } from 'react-redux'
|
||||
import { styled } from 'styled-components'
|
||||
|
||||
import { useEngine, useInversionFail } from '@/components/utils/EngineContext'
|
||||
import { Message } from '@/design-system'
|
||||
import { CloseButton } from '@/design-system/buttons'
|
||||
import { Body } from '@/design-system/typography/paragraphs'
|
||||
import { Emoji } from '@/design-system/emoji'
|
||||
import { Strong } from '@/design-system/typography'
|
||||
import { Body, SmallBody } from '@/design-system/typography/paragraphs'
|
||||
import { hideNotification } from '@/store/actions/actions'
|
||||
import { RootState } from '@/store/reducers/rootReducer'
|
||||
|
||||
|
@ -51,18 +53,7 @@ export default function Notifications() {
|
|||
const dispatch = useDispatch()
|
||||
|
||||
const messages: Array<Notification> = (
|
||||
inversionFail
|
||||
? [
|
||||
{
|
||||
dottedName: 'inversion fail',
|
||||
description: t(
|
||||
'simulateurs.inversionFail',
|
||||
'Le montant saisi abouti à un résultat impossible. Cela est dû à un effet de seuil dans le calcul des cotisations.\n\nNous vous invitons à réessayer en modifiant légèrement le montant renseigné (quelques euros de plus par exemple).'
|
||||
),
|
||||
sévérité: 'avertissement',
|
||||
} as Notification,
|
||||
]
|
||||
: (getNotifications(engine) as Array<Notification>)
|
||||
getNotifications(engine) as Array<Notification>
|
||||
).filter(({ dottedName }) => !hiddenNotifications?.includes(dottedName))
|
||||
|
||||
const isMultiline = (str: string) => str.trim().split('\n').length > 1
|
||||
|
@ -74,6 +65,22 @@ export default function Notifications() {
|
|||
}}
|
||||
>
|
||||
<Appear>
|
||||
{inversionFail && (
|
||||
<Message icon={<StyledEmoji emoji="🤯" />} type="info">
|
||||
<Trans i18nkey="simulateurs.inversionFail">
|
||||
<Body>
|
||||
Le montant demandé n'est <Strong>pas calculable...</Strong>
|
||||
</Body>
|
||||
|
||||
<SmallBody $grey>
|
||||
Il n'est pas possible d'obtenir ce montant dans la vrai vie à
|
||||
cause d'un effet de seuil dans le calcul des cotisations ou de
|
||||
l'impôt. Vous pouvez réessayer en modifiant la valeur
|
||||
renseignée.
|
||||
</SmallBody>
|
||||
</Trans>
|
||||
</Message>
|
||||
)}
|
||||
{messages.map(({ sévérité, dottedName, résumé, description }) => (
|
||||
<Message
|
||||
icon
|
||||
|
@ -121,3 +128,7 @@ const Absolute = styled.div<{ $isMultiline: boolean }>`
|
|||
margin-bottom: ${({ theme }) => theme.spacings.xxs};
|
||||
}
|
||||
`
|
||||
|
||||
const StyledEmoji = styled(Emoji)`
|
||||
transform: scale(1.5);
|
||||
`
|
||||
|
|
|
@ -12,6 +12,7 @@ import { useDispatch, useSelector } from 'react-redux'
|
|||
import { deleteFromSituation } from '@/store/actions/actions'
|
||||
import {
|
||||
companySituationSelector,
|
||||
configObjectifsSelector,
|
||||
configSituationSelector,
|
||||
situationSelector,
|
||||
} from '@/store/selectors/simulationSelectors'
|
||||
|
@ -186,7 +187,14 @@ export const useSetupSafeSituation = (engine: Engine<DottedName>) => {
|
|||
}
|
||||
|
||||
export function useInversionFail() {
|
||||
return useContext(EngineContext).inversionFail()
|
||||
const engine = useEngine()
|
||||
const objectifs = useSelector(configObjectifsSelector).flatMap(
|
||||
(objectif) => engine.evaluate(objectif).nodeValue
|
||||
)
|
||||
const inversionFail =
|
||||
engine.inversionFail() && objectifs.some((o) => o === undefined)
|
||||
|
||||
return inversionFail
|
||||
}
|
||||
|
||||
export type EvaluatedRule = EvaluatedNode &
|
||||
|
|
|
@ -20,6 +20,11 @@
|
|||
<0>Activité mixte</0>: <0>Mixed activity</0>
|
||||
<0>Impôt sur le revenu</0> (IR): <0>Income tax</0> (IR)
|
||||
<0>Impôt sur les sociétés</0> (IS): <0>Corporate income tax</0> (IS)
|
||||
<0>Le montant demandé n'est <1>pas calculable...</1></0><1>Il n'est pas possible d'obtenir ce montant dans la vrai vie à cause d'un effet de seuil dans le calcul des cotisations ou de l'impôt. Vous pouvez réessayer en modifiant la valeur renseignée.</1>:
|
||||
<0>The amount requested <1>cannot be calculated</1>...</0><1>It is not
|
||||
possible to obtain this amount in real life due to a threshold effect in the
|
||||
calculation of contributions or tax. You can try again by changing the
|
||||
value.</1>
|
||||
<0>Versement libératoire</0> de l'impôt sur le revenu: <0>Payment in full discharge</0> of income tax
|
||||
API REST de simulation: Simulation REST API
|
||||
API REST, en savoir plus sur l'API REST: API REST, more about API REST
|
||||
|
@ -1602,12 +1607,6 @@ simulateurs:
|
|||
urssaf: Urssaf collects contributions used to finance the social security system
|
||||
(health insurance, family allowances, long-term care<1> and <3>
|
||||
basic</3> pensions</1>).
|
||||
inversionFail: >-
|
||||
The amount entered gives an impossible result. This is due to a threshold
|
||||
effect in the calculation of contributions.
|
||||
|
||||
|
||||
Please try again, slightly modifying the amount entered (a few euros more, for example).
|
||||
précision:
|
||||
défaut: "Improve your simulation by answering the questions below:"
|
||||
warning:
|
||||
|
|
|
@ -22,6 +22,11 @@
|
|||
<0>Activité mixte</0>: <0>Activité mixte</0>
|
||||
<0>Impôt sur le revenu</0> (IR): <0>Impôt sur le revenu</0> (IR)
|
||||
<0>Impôt sur les sociétés</0> (IS): <0>Impôt sur les sociétés</0> (IS)
|
||||
<0>Le montant demandé n'est <1>pas calculable...</1></0><1>Il n'est pas possible d'obtenir ce montant dans la vrai vie à cause d'un effet de seuil dans le calcul des cotisations ou de l'impôt. Vous pouvez réessayer en modifiant la valeur renseignée.</1>:
|
||||
<0>Le montant demandé n'est <1>pas calculable...</1></0><1>Il n'est pas
|
||||
possible d'obtenir ce montant dans la vrai vie à cause d'un effet de seuil
|
||||
dans le calcul des cotisations ou de l'impôt. Vous pouvez réessayer en
|
||||
modifiant la valeur renseignée.</1>
|
||||
<0>Versement libératoire</0> de l'impôt sur le revenu: <0>Versement libératoire</0> de l'impôt sur le revenu
|
||||
API REST de simulation: API REST de simulation
|
||||
API REST, en savoir plus sur l'API REST: API REST, en savoir plus sur l'API REST
|
||||
|
@ -1704,12 +1709,6 @@ simulateurs:
|
|||
urssaf: L’Urssaf recouvre les cotisations servant au financement de la sécurité
|
||||
sociale (assurance maladie, allocations familiales, dépendance<1> et
|
||||
retraite <3> de base</3></1>).
|
||||
inversionFail: >-
|
||||
Le montant saisi abouti à un résultat impossible. Cela est dû à un effet de
|
||||
seuil dans le calcul des cotisations.
|
||||
|
||||
|
||||
Nous vous invitons à réessayer en modifiant légèrement le montant renseigné (quelques euros de plus par exemple).
|
||||
précision:
|
||||
défaut: "Améliorez votre simulation en répondant aux questions :"
|
||||
warning:
|
||||
|
|
|
@ -65,7 +65,7 @@ En complément du financement apporté par l’Urssaf, le projet bénéficie du
|
|||
|
||||
---
|
||||
|
||||
En 2023, le financement complémentaire apporté par le programme [France Relance](https://france-relance.transformation.gouv.fr/) prend fin. Par ailleurs, l'Urssaf réduit sa participation à 250 k€ TTC. Le budget est donc en très net baisse, le plus faible depuis la création du produit.
|
||||
En 2023, le financement complémentaire apporté par le programme [France Relance](https://france-relance.transformation.gouv.fr/) prend fin. Par ailleurs, l'Urssaf réduit sa participation à 250 k€ TTC. Le budget est donc en très nette baisse, le plus faible depuis la création du produit.
|
||||
|
||||
|
||||
---
|
||||
|
|
36
yarn.lock
36
yarn.lock
|
@ -7179,9 +7179,9 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@publicodes/api@npm:^1.0.0-beta.75":
|
||||
version: 1.0.0-beta.75
|
||||
resolution: "@publicodes/api@npm:1.0.0-beta.75"
|
||||
"@publicodes/api@npm:^1.0.0-beta.76":
|
||||
version: 1.0.0-beta.76
|
||||
resolution: "@publicodes/api@npm:1.0.0-beta.76"
|
||||
dependencies:
|
||||
"@koa/cors": ^3.4.3
|
||||
"@koa/router": ^10.1.1
|
||||
|
@ -7190,7 +7190,7 @@ __metadata:
|
|||
openapi-validator-middleware: ^3.2.6
|
||||
peerDependencies:
|
||||
publicodes: ^1.0.0-beta.47
|
||||
checksum: f2664f2cd124d2193caaedf7b1842ca5173ddba50e5e519f1b12f7e05e0c227bd982213cbe2a3bd74cfa169a257ff407bed26d0003cc135ee058b66a533ca73d
|
||||
checksum: b501713a8f3a3dcd0d072550306cd2fce671e3238cc3ca1196f304191e17d5ab195addb1fb6c3cff258482db7e4a1405bd2c29e7bda11a05e057577785078c59
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
@ -13440,7 +13440,7 @@ __metadata:
|
|||
"@apidevtools/swagger-cli": ^4.0.4
|
||||
"@koa/cors": ^4.0.0
|
||||
"@koa/router": ^12.0.0
|
||||
"@publicodes/api": ^1.0.0-beta.75
|
||||
"@publicodes/api": ^1.0.0-beta.76
|
||||
"@sentry/node": ^7.70.0
|
||||
"@sentry/utils": ^7.70.0
|
||||
"@types/ioredis-mock": ^8.2.2
|
||||
|
@ -13459,7 +13459,7 @@ __metadata:
|
|||
koa-static: ^5.0.0
|
||||
modele-social: "workspace:^"
|
||||
nodemon: ^3.0.1
|
||||
publicodes: ^1.0.0-beta.75
|
||||
publicodes: ^1.0.0-beta.76
|
||||
rate-limiter-flexible: ^2.4.2
|
||||
swagger-ui-dist: ^5.7.2
|
||||
ts-node: ^10.9.1
|
||||
|
@ -18349,7 +18349,7 @@ __metadata:
|
|||
dependencies:
|
||||
js-yaml: ^4.1.0
|
||||
onchange: ^7.1.0
|
||||
publicodes: ^1.0.0-beta.75
|
||||
publicodes: ^1.0.0-beta.76
|
||||
peerDependencies:
|
||||
publicodes: ^1.0.0-beta.55
|
||||
languageName: unknown
|
||||
|
@ -23840,7 +23840,7 @@ __metadata:
|
|||
dependencies:
|
||||
js-yaml: ^4.1.0
|
||||
onchange: ^7.1.0
|
||||
publicodes: ^1.0.0-beta.75
|
||||
publicodes: ^1.0.0-beta.76
|
||||
peerDependencies:
|
||||
publicodes: ^1.0.0-beta.55
|
||||
languageName: unknown
|
||||
|
@ -26047,25 +26047,25 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"publicodes-react@npm:^1.0.0-beta.75":
|
||||
version: 1.0.0-beta.75
|
||||
resolution: "publicodes-react@npm:1.0.0-beta.75"
|
||||
"publicodes-react@npm:^1.0.0-beta.76":
|
||||
version: 1.0.0-beta.76
|
||||
resolution: "publicodes-react@npm:1.0.0-beta.76"
|
||||
dependencies:
|
||||
styled-components: ^6.0.8
|
||||
peerDependencies:
|
||||
publicodes: ^1.0.0-beta.71
|
||||
react: ^17 || ^18
|
||||
react-dom: ^17 || ^18
|
||||
checksum: 070875cd63eb1d6cd7a7844eb54f14e4d411631f0d0d0332987dd5274f940c4a0a53345fe26e90dbfb55c44a6e69f0a0a0f34e0db2ab30cdf31a3b1fd3a4e1f5
|
||||
checksum: 2d1870a134aef4df948cb365bd211484e6430952e70264a027b2b40f81fcaba2ff0b47a05efeef2ac9fb318411a1ce1c762b5ed8d4e597da04d3c116c77a67ec
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"publicodes@npm:^1.0.0-beta.75":
|
||||
version: 1.0.0-beta.75
|
||||
resolution: "publicodes@npm:1.0.0-beta.75"
|
||||
"publicodes@npm:^1.0.0-beta.76":
|
||||
version: 1.0.0-beta.76
|
||||
resolution: "publicodes@npm:1.0.0-beta.76"
|
||||
peerDependencies:
|
||||
"@types/mocha": ^9.0.0
|
||||
checksum: 111a52a216fd758e3b9f36da3660b8c3f8d3a7589abf2ab2ad51cb8b731d3302a2ceb41291919f3128f3d87b07af083b020ba2fc59fdffcd5700c2cc5a9195f9
|
||||
checksum: e36b0a3bf08ddab20dda7e588a9138c1c21e10f013146abef71f693f63b7ba4bf541bbd7a5edb714be47838a3bf81996a7ae79060511447fe3141841e05540be
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
@ -28378,8 +28378,8 @@ __metadata:
|
|||
markdown-to-jsx: ^7.3.2
|
||||
modele-social: "workspace:^"
|
||||
netlify-cli: ^16.4.0
|
||||
publicodes: ^1.0.0-beta.75
|
||||
publicodes-react: ^1.0.0-beta.75
|
||||
publicodes: ^1.0.0-beta.76
|
||||
publicodes-react: ^1.0.0-beta.76
|
||||
react: ^18.2.0
|
||||
react-aria: ^3.24.0
|
||||
react-day-picker: ^8.8.2
|
||||
|
|
Loading…
Reference in New Issue