From 103f47f64f352dce108ed97d53fe4ce87f1dddf6 Mon Sep 17 00:00:00 2001 From: Johan Girod Date: Mon, 2 May 2022 17:19:33 +0200 Subject: [PATCH] =?UTF-8?q?Am=C3=A9liore=20le=20comportement=20des=20champ?= =?UTF-8?q?s=20de=20nombre=20vides=20en=20cas=20de=20variables=20manquante?= =?UTF-8?q?s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Également : une valeur à undefined supprime la règle de la situation désormais --- .../charges-sociales-formulaire.yaml | 2 + modele-social/règles/entreprise/base.yaml | 3 ++ site/source/actions/actions.ts | 16 ++++--- .../design-system/field/NumberField.tsx | 4 +- .../source/pages/gerer/_components/Fields.tsx | 5 +- .../index.tsx | 18 +------ site/source/reducers/rootReducer.ts | 2 +- .../__snapshots__/simulations.test.ts.snap | 48 +++++++++---------- 8 files changed, 48 insertions(+), 50 deletions(-) diff --git a/modele-social/règles/declarations-indépendant/charges-sociales-formulaire.yaml b/modele-social/règles/declarations-indépendant/charges-sociales-formulaire.yaml index 864903e3f..7ac88cf59 100644 --- a/modele-social/règles/declarations-indépendant/charges-sociales-formulaire.yaml +++ b/modele-social/règles/declarations-indépendant/charges-sociales-formulaire.yaml @@ -48,10 +48,12 @@ déclaration charge sociales . cotisations payées: déclaration charge sociales . cotisations payées . CSG déductible et CFP: question: Quel est le montant total de CSG déductible et CFP payées cette année ? unité: €/an + plancher: 0 €/an description: | Indiquez le montant de la part de CSG déductible et de CFP que vous avez payé en 2021 (peu importe l’année à laquelle ces contributions se rapportent). déclaration charge sociales . cotisations payées . cotisations sociales: question: Quel est le montant de vos cotisations sociales payées cette année ? + plancher: 0 €/an unité: €/an description: | Indiquez le montant des cotisations sociales aux régimes obligatoires (maladie-maternité, vieillesse, invalidité-décès, famille) que vous avez payées en 2021 (peu importe l’année à laquelle ces cotisations se rapportent). diff --git a/modele-social/règles/entreprise/base.yaml b/modele-social/règles/entreprise/base.yaml index 3192429f3..0f6c56516 100644 --- a/modele-social/règles/entreprise/base.yaml +++ b/modele-social/règles/entreprise/base.yaml @@ -99,6 +99,7 @@ entreprise . chiffre d'affaires . vente restauration hébergement: valeur: chiffre d'affaires arrondi: oui plancher: 0€/an + par défaut: 0€/an description: | ### Vente de biens Il s’agit du chiffre d'affaires de toutes les opérations comportant @@ -132,6 +133,7 @@ entreprise . chiffre d'affaires . service BIC: services qui nécessite plus qu'un ordinateur pour être effectuées. **Exemples** : transports, service à la personne, réparation etc. + par défaut: 0€/an variations: - si: activité . mixte alors: @@ -149,6 +151,7 @@ entreprise . chiffre d'affaires . service BNC: résumé: Recettes hors taxes question: Quelles sont les recettes issues de l’activité libérale ? arrondi: oui + par défaut: 0€/an plancher: 0€/an description: | Ce sont toutes les opérations dont l'activité intellectuelle tient diff --git a/site/source/actions/actions.ts b/site/source/actions/actions.ts index 24ca857ee..f8bbe43e3 100644 --- a/site/source/actions/actions.ts +++ b/site/source/actions/actions.ts @@ -1,9 +1,9 @@ +import { SimulationConfig } from '@/reducers/rootReducer' import { DottedName } from 'modele-social' import Engine from 'publicodes' -import { SimulationConfig } from '@/reducers/rootReducer' +import { CompanyActions } from './companyActions' import { CompanyCreationAction } from './companyCreationChecklistActions' import { CompanyStatusAction } from './companyStatusActions' -import { CompanyActions } from './companyActions' import { HiringChecklistAction } from './hiringChecklistAction' export type Action = @@ -60,11 +60,13 @@ export const setActiveTarget = (targetName: DottedName) => } as const) export const updateSituation = (fieldName: DottedName, value: unknown) => - ({ - type: 'UPDATE_SITUATION', - fieldName, - value, - } as const) + value === undefined + ? deleteFromSituation(fieldName) + : ({ + type: 'UPDATE_SITUATION', + fieldName, + value, + } as const) export const deleteFromSituation = (fieldName: DottedName) => ({ diff --git a/site/source/design-system/field/NumberField.tsx b/site/source/design-system/field/NumberField.tsx index ae41d1fba..98884efdc 100644 --- a/site/source/design-system/field/NumberField.tsx +++ b/site/source/design-system/field/NumberField.tsx @@ -360,7 +360,9 @@ function useSimpleNumberFieldState( canDecrement: true, validate: () => true, commit: () => { - rawInputValue && updateInputValue(numberValue) + numberValue === undefined + ? setInputValue(numberValue) + : updateInputValue(numberValue) }, incrementToMax: () => null, decrementToMin: () => null, diff --git a/site/source/pages/gerer/_components/Fields.tsx b/site/source/pages/gerer/_components/Fields.tsx index b74eeb719..ab426ecae 100644 --- a/site/source/pages/gerer/_components/Fields.tsx +++ b/site/source/pages/gerer/_components/Fields.tsx @@ -133,7 +133,10 @@ export function SimpleField({ aria-labelledby={displayedQuestion ? labelId : undefined} label={displayedLabel} required={meta.requis === 'oui'} - missing={!isEmpty(evaluation.missingVariables)} + missing={ + evaluation.nodeValue === undefined && + !isEmpty(evaluation.missingVariables) + } onChange={dispatchValue} showSuggestions={showSuggestions} /> diff --git a/site/source/pages/gerer/declaration-charges-sociales-independant/index.tsx b/site/source/pages/gerer/declaration-charges-sociales-independant/index.tsx index d2dffc36e..c15a56413 100644 --- a/site/source/pages/gerer/declaration-charges-sociales-independant/index.tsx +++ b/site/source/pages/gerer/declaration-charges-sociales-independant/index.tsx @@ -155,21 +155,7 @@ export default function AideDéclarationIndépendant() { - - - - - {/* We can't use a subsection here cause revenu étrangers is not missing when CSG is replaced */} -

- Revenus étranger -

- - - - -
- - +

Cotisations et contributions sociales en 2021

@@ -177,7 +163,7 @@ export default function AideDéclarationIndépendant() { - + diff --git a/site/source/reducers/rootReducer.ts b/site/source/reducers/rootReducer.ts index 8640a620c..e1c5d3e80 100644 --- a/site/source/reducers/rootReducer.ts +++ b/site/source/reducers/rootReducer.ts @@ -141,7 +141,7 @@ function simulation( const newState = { ...state, situation: omit( - { ...state.situation }, + state.situation, action.fieldName ) as Simulation['situation'], } diff --git a/site/test/regressions/__snapshots__/simulations.test.ts.snap b/site/test/regressions/__snapshots__/simulations.test.ts.snap index c6f2dbeb7..80662c975 100644 --- a/site/test/regressions/__snapshots__/simulations.test.ts.snap +++ b/site/test/regressions/__snapshots__/simulations.test.ts.snap @@ -587,70 +587,70 @@ Notifications affichées : entreprise . chiffre d'affaires . franchise de TVA . `; exports[`calculate simulations-rémunération-dirigeant (indépendant) > ACRE 1`] = ` -"[0,null,null,null,null,null] +"[0,null,null,null,0,null] Notifications affichées : dirigeant . auto-entrepreneur . notification calcul ACRE annuel" `; exports[`calculate simulations-rémunération-dirigeant (indépendant) > ACRE 2`] = ` -"[0,null,null,null,null,null] +"[0,null,null,null,0,null] Notifications affichées : dirigeant . auto-entrepreneur . notification calcul ACRE annuel" `; exports[`calculate simulations-rémunération-dirigeant (indépendant) > ACRE 3`] = ` -"[0,null,null,null,null,null] +"[0,null,null,null,0,null] Notifications affichées : dirigeant . auto-entrepreneur . notification calcul ACRE annuel" `; -exports[`calculate simulations-rémunération-dirigeant (indépendant) > Contrats Madelin 1`] = `"[0,null,null,null,null,null]"`; +exports[`calculate simulations-rémunération-dirigeant (indépendant) > Contrats Madelin 1`] = `"[0,null,null,null,0,null]"`; -exports[`calculate simulations-rémunération-dirigeant (indépendant) > Contrats Madelin 2`] = `"[0,null,null,null,null,null]"`; +exports[`calculate simulations-rémunération-dirigeant (indépendant) > Contrats Madelin 2`] = `"[0,null,null,null,0,null]"`; -exports[`calculate simulations-rémunération-dirigeant (indépendant) > Contrats Madelin 3`] = `"[0,null,null,null,null,null]"`; +exports[`calculate simulations-rémunération-dirigeant (indépendant) > Contrats Madelin 3`] = `"[0,null,null,null,0,null]"`; -exports[`calculate simulations-rémunération-dirigeant (indépendant) > Contrats Madelin 4`] = `"[0,null,null,null,null,null]"`; +exports[`calculate simulations-rémunération-dirigeant (indépendant) > Contrats Madelin 4`] = `"[0,null,null,null,0,null]"`; exports[`calculate simulations-rémunération-dirigeant (indépendant) > Contrats Madelin 5`] = ` "[0,261252,261252,20568,4,56] Notifications affichées : entreprise . chiffre d'affaires . franchise de TVA . dépassement, entreprise . imposition . IS . information sur le report de déficit" `; -exports[`calculate simulations-rémunération-dirigeant (indépendant) > Contrats Madelin 6`] = `"[0,null,null,null,null,null]"`; +exports[`calculate simulations-rémunération-dirigeant (indépendant) > Contrats Madelin 6`] = `"[0,null,null,null,0,null]"`; -exports[`calculate simulations-rémunération-dirigeant (indépendant) > Contrats Madelin 7`] = `"[0,null,null,null,null,null]"`; +exports[`calculate simulations-rémunération-dirigeant (indépendant) > Contrats Madelin 7`] = `"[0,null,null,null,0,null]"`; exports[`calculate simulations-rémunération-dirigeant (indépendant) > JEI 1`] = `"[2829,33949,0,32212,4,49]"`; -exports[`calculate simulations-rémunération-dirigeant (indépendant) > activités 1`] = `"[0,null,null,null,null,null]"`; +exports[`calculate simulations-rémunération-dirigeant (indépendant) > activités 1`] = `"[0,null,null,null,0,null]"`; -exports[`calculate simulations-rémunération-dirigeant (indépendant) > activités 2`] = `"[0,null,null,null,null,0]"`; +exports[`calculate simulations-rémunération-dirigeant (indépendant) > activités 2`] = `"[0,null,null,null,0,0]"`; -exports[`calculate simulations-rémunération-dirigeant (indépendant) > activités 3`] = `"[0,null,null,null,null,null]"`; +exports[`calculate simulations-rémunération-dirigeant (indépendant) > activités 3`] = `"[0,null,null,null,0,null]"`; -exports[`calculate simulations-rémunération-dirigeant (indépendant) > activités 4`] = `"[0,null,null,null,null,null]"`; +exports[`calculate simulations-rémunération-dirigeant (indépendant) > activités 4`] = `"[0,null,null,null,0,null]"`; -exports[`calculate simulations-rémunération-dirigeant (indépendant) > activités 5`] = `"[0,null,null,null,null,null]"`; +exports[`calculate simulations-rémunération-dirigeant (indépendant) > activités 5`] = `"[0,null,null,null,0,null]"`; -exports[`calculate simulations-rémunération-dirigeant (indépendant) > activités 6`] = `"[0,null,null,null,null,null]"`; +exports[`calculate simulations-rémunération-dirigeant (indépendant) > activités 6`] = `"[0,null,null,null,0,null]"`; -exports[`calculate simulations-rémunération-dirigeant (indépendant) > avec charges 1`] = `"[0,null,null,null,null,null]"`; +exports[`calculate simulations-rémunération-dirigeant (indépendant) > avec charges 1`] = `"[0,null,null,null,0,null]"`; -exports[`calculate simulations-rémunération-dirigeant (indépendant) > avec charges 2`] = `"[0,null,null,null,null,null]"`; +exports[`calculate simulations-rémunération-dirigeant (indépendant) > avec charges 2`] = `"[0,null,null,null,0,null]"`; exports[`calculate simulations-rémunération-dirigeant (indépendant) > échelle de rémunération 1`] = `"[0,87,87,0,0,0]"`; -exports[`calculate simulations-rémunération-dirigeant (indépendant) > échelle de rémunération 2`] = `"[0,null,null,null,null,null]"`; +exports[`calculate simulations-rémunération-dirigeant (indépendant) > échelle de rémunération 2`] = `"[0,null,null,null,0,null]"`; -exports[`calculate simulations-rémunération-dirigeant (indépendant) > échelle de rémunération 3`] = `"[0,null,null,null,null,null]"`; +exports[`calculate simulations-rémunération-dirigeant (indépendant) > échelle de rémunération 3`] = `"[0,null,null,null,0,null]"`; -exports[`calculate simulations-rémunération-dirigeant (indépendant) > échelle de rémunération 4`] = `"[0,null,null,null,null,null]"`; +exports[`calculate simulations-rémunération-dirigeant (indépendant) > échelle de rémunération 4`] = `"[0,null,null,null,0,null]"`; -exports[`calculate simulations-rémunération-dirigeant (indépendant) > échelle de rémunération 5`] = `"[0,null,null,null,null,null]"`; +exports[`calculate simulations-rémunération-dirigeant (indépendant) > échelle de rémunération 5`] = `"[0,null,null,null,0,null]"`; -exports[`calculate simulations-rémunération-dirigeant (indépendant) > échelle de rémunération 6`] = `"[0,null,null,null,null,null]"`; +exports[`calculate simulations-rémunération-dirigeant (indépendant) > échelle de rémunération 6`] = `"[0,null,null,null,0,null]"`; -exports[`calculate simulations-rémunération-dirigeant (indépendant) > échelle de rémunération 7`] = `"[0,null,null,null,null,null]"`; +exports[`calculate simulations-rémunération-dirigeant (indépendant) > échelle de rémunération 7`] = `"[0,null,null,null,0,null]"`; -exports[`calculate simulations-rémunération-dirigeant (indépendant) > échelle de rémunération 8`] = `"[0,null,null,null,null,null]"`; +exports[`calculate simulations-rémunération-dirigeant (indépendant) > échelle de rémunération 8`] = `"[0,null,null,null,0,null]"`; exports[`calculate simulations-salarié > CCN HCR 1`] = ` "[3499,0,2500,2005,1894]