From f6f478767a9753675186ad33f3b4639889a2e941 Mon Sep 17 00:00:00 2001 From: Johan Girod Date: Mon, 19 Jun 2023 15:51:17 +0200 Subject: [PATCH] =?UTF-8?q?Sauvegarde=20l'=C3=A9tat=20entre=20deux=20reloa?= =?UTF-8?q?d?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entreprise/catégorie-juridique.yaml | 114 ++++--- ...Data.tsx => SimulateurOrAssistantPage.tsx} | 11 +- site/source/hooks/useSimulationConfig.ts | 14 +- .../choix-du-statut/_components/Layout.tsx | 7 +- .../_components/Navigation.tsx | 22 +- .../{useNextStep.ts => useSteps.ts} | 21 +- .../assistants/choix-du-statut/associé.tsx | 24 +- .../assistants/choix-du-statut/config.ts | 11 +- .../choix-du-statut/détails-activité.tsx | 1 + .../pages/assistants/choix-du-statut/home.tsx | 24 +- .../assistants/choix-du-statut/index.tsx | 7 +- .../choix-du-statut/recherche-activité.tsx | 1 - .../index.tsx | 2 +- .../declaration-revenu-independants/index.tsx | 2 +- .../assistants/demande-mobilité/index.tsx | 2 +- site/source/pages/assistants/embaucher.tsx | 280 ------------------ site/source/pages/assistants/index.tsx | 24 +- .../assistants/pour-mon-entreprise/index.tsx | 2 +- site/source/pages/iframes/index.tsx | 6 +- .../pages/simulateurs/_configs/types.ts | 2 + .../artiste-auteur/ArtisteAuteur.tsx | 2 +- site/source/pages/simulateurs/index.tsx | 4 +- site/source/sitePaths.ts | 2 - 23 files changed, 156 insertions(+), 429 deletions(-) rename site/source/components/{PageData.tsx => SimulateurOrAssistantPage.tsx} (93%) rename site/source/pages/assistants/choix-du-statut/_components/{useNextStep.ts => useSteps.ts} (73%) delete mode 100644 site/source/pages/assistants/embaucher.tsx diff --git a/modele-social/règles/entreprise/catégorie-juridique.yaml b/modele-social/règles/entreprise/catégorie-juridique.yaml index f239e5102..f0e9e43bb 100644 --- a/modele-social/règles/entreprise/catégorie-juridique.yaml +++ b/modele-social/règles/entreprise/catégorie-juridique.yaml @@ -5,11 +5,6 @@ entreprise . associés: possibilités: - unique - multiples - non applicable si: - une de ces conditions: - - entreprise . catégorie juridique = 'EI' - - entreprise . catégorie juridique = 'association' - - entreprise . catégorie juridique = 'autre' description: | Si vous êtes le seul associé de votre société, alors vous êtes dans le cas d'une « société unipersonnelle ». @@ -59,25 +54,18 @@ entreprise . catégorie juridique . EI: une de ces conditions: - associés . multiples - entreprise . imposition . IR . type de bénéfices = 'BA' + question: Êtes-vous auto-entrepreneur ? - remplace: - - règle: imposition . régime - par: "'micro-entreprise'" - - règle: entreprise . imposition - par: "'IR'" - - règle: entreprise . imposition . IR - par: oui - - règle: entreprise . imposition . IS - par: non + par défaut: nom: par défaut experimental: oui - valeur: oui + EI: + non applicable si: associés . multiples titre: entreprise individuelle acronyme: EI valeur: auto-entrepreneur = non - non applicable si: associés . multiples ### (niveau 1 code 5) Société commerciale ### @@ -90,7 +78,8 @@ entreprise . catégorie juridique . SARL: SARL: titre: Société à responsabilité limitée acronyme: SARL - valeur: associés . multiples + # valeur: associés . multiples + non applicable si: associés . unique description: | La société à responsabilité limitée (SARL) comprend au minimum deux associés. Cette forme juridique est la plus répandue pour les sociétés. En revanche, elle ne peut être choisie pour les professions juridiques, judiciaires ou de santé (hors pharmaciens). @@ -172,22 +161,8 @@ entreprise . catégorie juridique . SELARL: titre: SELARL ou SELARLU description: Société d'exercice libéral à responsabilité limitée valeur: catégorie juridique = 'SELARL' - rend non applicable: - - activités . commerciale - - activités . agricole - - activités . artisanale meta: code insee: 5485 - remplace: - - règle: activités . libérale - par: oui - - règle: activités . libérale . réglementée - par: oui - # TODO : remove when old activity modele is not used anymore : - - règle: entreprise . activité . nature - par: "'libérale'" - - règle: entreprise . activité . nature . libérale . réglementée - par: oui avec: SELARLU: acronyme: SELARLU @@ -205,20 +180,6 @@ entreprise . catégorie juridique . SELAS: valeur: catégorie juridique = 'SELAS' meta: code insee: 5785 - rend non applicable: - - activités . commerciale - - activités . agricole - - activités . artisanale - remplace: - - règle: activités . libérale - par: oui - - règle: activités . libérale . réglementée - par: oui - # TODO : remove when old activity modele is not used anymore : - - règle: entreprise . activité . nature - par: "'libérale'" - - règle: entreprise . activité . nature . libérale . réglementée - par: oui avec: SELASU: acronyme: SELASU @@ -238,3 +199,66 @@ entreprise . catégorie juridique . autre: sévérité: avertissement description: | Ce simulateur ne gère pas encore tout les types d'entreprises, le montant affiché pourrait être incorrect. + +entreprise . catégorie juridique . remplacements: + # On extrait tous les remplacements dans un espace de nom que l'on peut désactiver pour l'aide au choix du statut par exemple + # Cela permet d'éviter des boucles de dans les missingVariables + experimental: oui + valeur: oui + avec: + régime micro-entreprise: + privé: oui + valeur: EI . auto-entrepreneur + remplace: + - règle: imposition . régime + par: "'micro-entreprise'" + - règle: entreprise . imposition + par: "'IR'" + - règle: entreprise . imposition . IR + par: oui + - règle: entreprise . imposition . IS + par: non + + associé unique: + privé: oui + une de ces conditions: + - EI + - SARL . EURL + - SAS . SASU + - SELAS . SELASU + - SELARL . SELARLU + remplace: + - règle: associés + par: "'unique'" + + associé multiples: + une de ces conditions: + - SNC + - SARL . SARL + - SAS . SAS + - SELAS . SELAS + - SELARL . SELARL + remplace: + - règle: associés + par: "'unique'" + + profession libérale reglementée: + privé: oui + applicable si: + une de ces conditions: + - SELARL + - SELAS + remplace: + - règle: activités . libérale + par: oui + - règle: activités . libérale . réglementée + par: oui + # TODO : remove when old activity modele is not used anymore : + - règle: entreprise . activité . nature + par: "'libérale'" + - règle: entreprise . activité . nature . libérale . réglementée + par: oui + rend non applicable: + - activités . commerciale + - activités . agricole + - activités . artisanale diff --git a/site/source/components/PageData.tsx b/site/source/components/SimulateurOrAssistantPage.tsx similarity index 93% rename from site/source/components/PageData.tsx rename to site/source/components/SimulateurOrAssistantPage.tsx index 838e4566a..14509d405 100644 --- a/site/source/components/PageData.tsx +++ b/site/source/components/SimulateurOrAssistantPage.tsx @@ -17,13 +17,13 @@ import { import { useIsEmbedded } from '@/hooks/useIsEmbedded' import useSimulationConfig from '@/hooks/useSimulationConfig' import { situationSelector } from '@/store/selectors/simulationSelectors' -import { Merge, ToOptional } from '@/types/utils' +import { Merge } from '@/types/utils' import { NextSteps } from '../pages/simulateurs/NextSteps' import { TrackChapter } from './ATInternetTracking' import BetaBanner from './BetaBanner' -export default function PageData() { +export default function SimulateurOrAssistantPage() { const { currentSimulatorData } = useCurrentSimulatorData() const { pathname, search } = useLocation() if (!currentSimulatorData) { @@ -41,6 +41,7 @@ export default function PageData() { component: Component, seoExplanations: SeoExplanations, nextSteps, + autoloadLastSimulation, path, } = currentSimulatorData @@ -50,7 +51,11 @@ export default function PageData() { const year = typeof année === 'number' ? `Année ${année}` : '' const inIframe = useIsEmbedded() - useSimulationConfig({ path, config: simulation }) + useSimulationConfig({ + key: path, + config: simulation, + autoloadLastSimulation, + }) useSearchParamsSimulationSharing() const trackInfo = { diff --git a/site/source/hooks/useSimulationConfig.ts b/site/source/hooks/useSimulationConfig.ts index d6d3f0565..8ac07390a 100644 --- a/site/source/hooks/useSimulationConfig.ts +++ b/site/source/hooks/useSimulationConfig.ts @@ -10,11 +10,11 @@ import { configSelector } from '@/store/selectors/simulationSelectors' import { ImmutableType } from '@/types/utils' export default function useSimulationConfig({ - path, + key, config, autoloadLastSimulation = false, }: { - path: string + key: string config?: ImmutableType autoloadLastSimulation?: boolean }) { @@ -22,7 +22,7 @@ export default function useSimulationConfig({ // Initialize redux store in SSR mode if (import.meta.env.SSR) { - dispatch(setSimulationConfig(config ?? {}, path)) + dispatch(setSimulationConfig(config ?? {}, key)) } const lastConfig = useSelector(configSelector) @@ -35,14 +35,10 @@ export default function useSimulationConfig({ useLayoutEffectWithoutWarnInSSR(() => { if (config && lastConfig !== config) { - dispatch(setSimulationConfig(config ?? {}, path)) + dispatch(setSimulationConfig(config ?? {}, key)) } - }, [config, dispatch, lastConfig, path]) - - useEffect(() => { if (autoloadLastSimulation) { dispatch(loadPreviousSimulation()) } - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []) + }, [config, dispatch, lastConfig, key]) } diff --git a/site/source/pages/assistants/choix-du-statut/_components/Layout.tsx b/site/source/pages/assistants/choix-du-statut/_components/Layout.tsx index af1007d80..d2c648aa2 100644 --- a/site/source/pages/assistants/choix-du-statut/_components/Layout.tsx +++ b/site/source/pages/assistants/choix-du-statut/_components/Layout.tsx @@ -1,7 +1,5 @@ -import { Trans } from 'react-i18next' - import { Grid } from '@/design-system/layout' -import { H1, H3 } from '@/design-system/typography/heading' +import { H3 } from '@/design-system/typography/heading' import StatutsDisponibles from './StatutsDisponibles' @@ -14,9 +12,6 @@ export default function Layout({ }) { return ( <> -

- Choisir votre statut -

{title}

diff --git a/site/source/pages/assistants/choix-du-statut/_components/Navigation.tsx b/site/source/pages/assistants/choix-du-statut/_components/Navigation.tsx index aadb3b323..0dc111dbf 100644 --- a/site/source/pages/assistants/choix-du-statut/_components/Navigation.tsx +++ b/site/source/pages/assistants/choix-du-statut/_components/Navigation.tsx @@ -1,12 +1,12 @@ import { Trans, useTranslation } from 'react-i18next' -import { useNavigate } from 'react-router-dom' import styled from 'styled-components' +import { TrackPage } from '@/components/ATInternetTracking' import { Button } from '@/design-system/buttons' import { Grid, Spacing } from '@/design-system/layout' import { useSitePaths } from '@/sitePaths' -import { useNextStep } from './useNextStep' +import { useCurrentStep, useNextStep, usePreviousStep } from './useSteps' export default function Navigation({ currentStepIsComplete, @@ -23,12 +23,14 @@ export default function Navigation({ }) { const { t } = useTranslation() const nextStep = useNextStep() - const navigate = useNavigate() - const resultatPath = - useSitePaths().absoluteSitePaths.assistants['choix-du-statut'].résultat + const currentStep = useCurrentStep() + const previousStep = usePreviousStep() + const choixDuStatutPath = + useSitePaths().absoluteSitePaths.assistants['choix-du-statut'] return ( <> + @@ -36,10 +38,8 @@ export default function Navigation({ @@ -48,7 +48,7 @@ export default function Navigation({