From 88ec1cc2f635e595ec6ea12a6a746d832e55bee0 Mon Sep 17 00:00:00 2001 From: Johan Girod Date: Mon, 19 Jun 2023 12:41:14 +0200 Subject: [PATCH] wip --- .../entreprise/catégorie-juridique.yaml | 9 +- site/scripts/search/export-simulation-data.ts | 2 +- site/scripts/search/update-data.ts | 2 +- site/source/hooks/useSimulatorsData.ts | 2 +- .../_components/Navigation.tsx | 2 +- .../_components/useNextStep.ts | 1 - .../assistants/choix-du-statut/après.tsx | 132 ------------------ .../choix-du-statut/association.tsx | 2 +- .../assistants/choix-du-statut/associé.tsx | 105 +++++++++++++- .../assistants/choix-du-statut/index.tsx | 2 - .../metadata-src.ts | 48 +++---- site/source/sitePaths.ts | 3 +- 12 files changed, 137 insertions(+), 173 deletions(-) delete mode 100644 site/source/pages/assistants/choix-du-statut/après.tsx rename site/source/pages/{simulateurs => simulateurs-et-assistants}/metadata-src.ts (56%) diff --git a/modele-social/règles/entreprise/catégorie-juridique.yaml b/modele-social/règles/entreprise/catégorie-juridique.yaml index 42463aac9..f239e5102 100644 --- a/modele-social/règles/entreprise/catégorie-juridique.yaml +++ b/modele-social/règles/entreprise/catégorie-juridique.yaml @@ -5,6 +5,11 @@ 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 ». @@ -46,9 +51,7 @@ entreprise . catégorie juridique . EI: code insee: 1000 titre: Entreprise individuelle (y compris auto-entrepreneurs) valeur: catégorie juridique = 'EI' - remplace: - règle: associés - par: "'unique'" + avec: auto-entrepreneur: acronyme: AE diff --git a/site/scripts/search/export-simulation-data.ts b/site/scripts/search/export-simulation-data.ts index 88f8b4044..7a82b0174 100644 --- a/site/scripts/search/export-simulation-data.ts +++ b/site/scripts/search/export-simulation-data.ts @@ -1,6 +1,6 @@ import { TFunction } from 'i18next' -import getSimulationData from '../../source/pages/simulateurs/metadata-src.js' +import getSimulationData from '../../source/pages/simulateurs-et-assistants/metadata-src.js' import { absoluteSitePaths } from '../../source/sitePaths.js' export default getSimulationData({ diff --git a/site/scripts/search/update-data.ts b/site/scripts/search/update-data.ts index ab33db838..a0bd60730 100644 --- a/site/scripts/search/update-data.ts +++ b/site/scripts/search/update-data.ts @@ -3,7 +3,7 @@ import dotenv from 'dotenv' import rawRules from 'modele-social' import Engine, { ParsedRules } from 'publicodes' -import { MetadataSrc } from '@/pages/simulateurs/metadata-src' +import { MetadataSrc } from '@/pages/simulateurs-et-assistants/metadata-src' dotenv.config() diff --git a/site/source/hooks/useSimulatorsData.ts b/site/source/hooks/useSimulatorsData.ts index d55a74acd..e0519d25e 100644 --- a/site/source/hooks/useSimulatorsData.ts +++ b/site/source/hooks/useSimulatorsData.ts @@ -1,7 +1,7 @@ import { useMemo } from 'react' import { useTranslation } from 'react-i18next' -import getMetadataSrc from '@/pages/simulateurs/metadata-src' +import getMetadataSrc from '@/pages/simulateurs-et-assistants/metadata-src' import { useSitePaths } from '@/sitePaths' export type SimulatorData = ReturnType 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 26512e856..aadb3b323 100644 --- a/site/source/pages/assistants/choix-du-statut/_components/Navigation.tsx +++ b/site/source/pages/assistants/choix-du-statut/_components/Navigation.tsx @@ -12,7 +12,7 @@ export default function Navigation({ currentStepIsComplete, nextStepLabel, onNextStep, - onPreviousStep, + onPreviousStep, // TODO : prefer resetOnLeave assistantIsCompleted = false, }: { currentStepIsComplete: boolean diff --git a/site/source/pages/assistants/choix-du-statut/_components/useNextStep.ts b/site/source/pages/assistants/choix-du-statut/_components/useNextStep.ts index e50695288..639f23bce 100644 --- a/site/source/pages/assistants/choix-du-statut/_components/useNextStep.ts +++ b/site/source/pages/assistants/choix-du-statut/_components/useNextStep.ts @@ -34,7 +34,6 @@ export function useNextStep() { const nextStep = stepOrder[currentStep ? stepOrder.indexOf(currentStep) + 1 : 0] - console.log('huihuihi', nextStep) return absoluteSitePaths.assistants['choix-du-statut'][nextStep] } diff --git a/site/source/pages/assistants/choix-du-statut/après.tsx b/site/source/pages/assistants/choix-du-statut/après.tsx deleted file mode 100644 index 5dbfa40d8..000000000 --- a/site/source/pages/assistants/choix-du-statut/après.tsx +++ /dev/null @@ -1,132 +0,0 @@ -import { Trans, useTranslation } from 'react-i18next' - -import { TrackPage } from '@/components/ATInternetTracking' -import { FromBottom } from '@/components/ui/animate' -import DefaultHelmet from '@/components/utils/DefaultHelmet' -import { ScrollToTop } from '@/components/utils/Scroll' -import { H1, H2 } from '@/design-system/typography/heading' -import { Link } from '@/design-system/typography/link' -import { Body } from '@/design-system/typography/paragraphs' -import { useSitePaths } from '@/sitePaths' - -import siret from './siret.png' - -export default function AfterRegistration() { - const { absoluteSitePaths } = useSitePaths() - // const statutChoisi = useSelector( - // (state: RootState) => state.choixStatutJuridique.companyStatusChoice - // ) - const { t } = useTranslation() - // const isAutoentrepreneur = statutChoisi?.match('auto-entrepreneur') - - return ( - - - Après la création de votre entreprise - - - - - Retour à la création - -

- Après la création -

- - - Une fois votre{' '} - {{ - statutChoisi: - // isAutoentrepreneur - // ? t('auto-entreprise') - // : statutChoisi || - t('après.entreprise', { defaultValue: 'entreprise' }), - }}{' '} - créée, vous recevez les informations suivantes : - - -

- Le numéro SIRET -

- - - Le numéro SIREN est l'identifiant de votre entreprise{' '} - tandis que le numéro SIRET identifie chaque établissement de la même - entreprise. Le SIRET commence par le SIREN, auquel on ajoute le numéro - d'établissement (NIC). - -
- - -

- Le code APE -

- - - Le code APE correspond au secteur d'activité de votre - entreprise. Il classifie la branche principale de votre entreprise - dans la nomenclature nationale d'activités françaises « NAF » ( - - voir la liste - - ).{' '} - - Il détermine aussi la convention collective applicable à - l'entreprise, et en partie le taux de la cotisation accidents du - travail et maladies professionnelles à payer. - -

- En cas de code APE erroné, vous pouvez{' '} - - demander une modification - {' '} - à l'INSEE. -

-
- -

- Le Kbis -

- - - C'est le document officiel qui atteste de{' '} - l'existence légale d'une entreprise commerciale. Le - plus souvent, pour être valable par les procédures administratives, il - doit dater de moins de 3 mois.{' '} - - Plus d'infos. - - - - - - Ce document est généralement demandé lors de la candidature à un appel - d'offre public, de l'ouverture d'un compte bancaire, d'achats - d'équipement professionnel auprès de fournisseurs, etc. - - -
- ) -} diff --git a/site/source/pages/assistants/choix-du-statut/association.tsx b/site/source/pages/assistants/choix-du-statut/association.tsx index 0fb324253..5cf72d47d 100644 --- a/site/source/pages/assistants/choix-du-statut/association.tsx +++ b/site/source/pages/assistants/choix-du-statut/association.tsx @@ -65,7 +65,7 @@ export default function Association() { + Dans un but non lucratif } diff --git a/site/source/pages/assistants/choix-du-statut/associé.tsx b/site/source/pages/assistants/choix-du-statut/associé.tsx index 51497e6f7..662a07019 100644 --- a/site/source/pages/assistants/choix-du-statut/associé.tsx +++ b/site/source/pages/assistants/choix-du-statut/associé.tsx @@ -1,12 +1,109 @@ -import { H1 } from '@/design-system/typography/heading' +import { useState } from 'react' +import { Trans, useTranslation } from 'react-i18next' +import { useDispatch } from 'react-redux' +import { useEngine } from '@/components/utils/EngineContext' +import { RadioCard, RadioCardGroup } from '@/design-system' +import { HelpButtonWithPopover } from '@/design-system/buttons' +import { Strong } from '@/design-system/typography' +import { Body } from '@/design-system/typography/paragraphs' +import { deleteFromSituation, updateSituation } from '@/store/actions/actions' + +import Layout from './_components/Layout' import Navigation from './_components/Navigation' -export default function Associé() { +export default function Associés() { + const { t } = useTranslation() + const [currentSelection, setCurrentSelection, reset] = useAssociésSelection() + return ( <> -

Associé

- + + Je gère cette entreprise... + + + Vous{' '} + + partagez la propriété de votre entreprise avec d’autres + personnes qui peuvent être physiques (individus) ou morales + (sociétés) + + . Dans le cas des sociétés par actions (SASU, + SAS), on parle d’actionnaires. + + + + } + > + + Seul + } + > + + + + À plusieurs + + } + /> + + + ) } + +type RadioOption = "'unique'" | "'multiples'" | undefined +function useAssociésSelection(): [ + RadioOption, + (value: RadioOption) => void, + () => void +] { + const associés = useEngine().evaluate('entreprise . associés').nodeValue as + | RadioOption + | undefined + console.log( + useEngine().evaluate('entreprise . associés'), + useEngine().evaluate('entreprise . catégorie juridique') + ) + const [currentSelection, setCurrentSelection] = + useState(associés) + + const dispatch = useDispatch() + + const handleChange = (value: RadioOption) => { + setCurrentSelection(value) + dispatch(updateSituation('entreprise . associés', value)) + } + + const reset = () => { + setCurrentSelection(undefined) + dispatch(deleteFromSituation('entreprise . associés')) + } + + return [currentSelection, handleChange, reset] +} diff --git a/site/source/pages/assistants/choix-du-statut/index.tsx b/site/source/pages/assistants/choix-du-statut/index.tsx index 97848caca..ad18ab40f 100644 --- a/site/source/pages/assistants/choix-du-statut/index.tsx +++ b/site/source/pages/assistants/choix-du-statut/index.tsx @@ -3,7 +3,6 @@ import { Route, Routes, useLocation } from 'react-router-dom' import { ScrollToTop } from '@/components/utils/Scroll' import { useSitePaths } from '@/sitePaths' -import AfterRegistration from './après' import Association from './association' import Associé from './associé' import Commune from './commune' @@ -24,7 +23,6 @@ export default function ChoixDuStatut() { } /> - } /> } diff --git a/site/source/pages/simulateurs/metadata-src.ts b/site/source/pages/simulateurs-et-assistants/metadata-src.ts similarity index 56% rename from site/source/pages/simulateurs/metadata-src.ts rename to site/source/pages/simulateurs-et-assistants/metadata-src.ts index f3f0a9a7a..a6a64f62f 100644 --- a/site/source/pages/simulateurs/metadata-src.ts +++ b/site/source/pages/simulateurs-et-assistants/metadata-src.ts @@ -7,30 +7,30 @@ import { demandeMobilitéConfig } from '../assistants/demande-mobilité/config' import { économieCollaborativeConfig } from '../assistants/économie-collaborative/config' import { pourMonEntrepriseConfig } from '../assistants/pour-mon-entreprise/config' import { rechercheCodeApeConfig } from '../assistants/recherche-code-ape/config' -import { PageConfig, SimulatorsDataParams } from './_configs/types' -import { artisteAuteurConfig } from './artiste-auteur/config' -import { autoEntrepreneurConfig } from './auto-entrepreneur/config' -import { auxiliaireMédicalConfig } from './auxiliaire-médical/config' -import { avocatConfig } from './avocat/config' -import { chirurgienDentisteConfig } from './chirurgien-dentiste/config' -import { chômagePartielConfig } from './chômage-partiel/config' -import { cipavConfig } from './cipav/config' -import { comparaisonStatutsConfig } from './comparaison-statuts/config' -import { coûtCréationEntrepriseConfig } from './cout-creation-entreprise/config.js' -import { dividendesConfig } from './dividendes/config' -import { eirlConfig } from './eirl/config' -import { entrepriseIndividuelleConfig } from './entreprise-individuelle/config' -import { eurlConfig } from './eurl/config' -import { expertComptableConfig } from './expert-comptable/config' -import { impôtSociétéConfig } from './impot-societe/config' -import { indépendantConfig } from './indépendant/config' -import { médecinConfig } from './médecin/config' -import { pamcConfig } from './pamc/config' -import { pharmacienConfig } from './pharmacien/config' -import { professionLibéraleConfig } from './profession-libérale/config' -import { sageFemmeConfig } from './sage-femme/config' -import { salariéConfig } from './salarié/config' -import { sasuConfig } from './sasu/config' +import { PageConfig, SimulatorsDataParams } from '../simulateurs/_configs/types' +import { artisteAuteurConfig } from '../simulateurs/artiste-auteur/config' +import { autoEntrepreneurConfig } from '../simulateurs/auto-entrepreneur/config' +import { auxiliaireMédicalConfig } from '../simulateurs/auxiliaire-médical/config' +import { avocatConfig } from '../simulateurs/avocat/config' +import { chirurgienDentisteConfig } from '../simulateurs/chirurgien-dentiste/config' +import { chômagePartielConfig } from '../simulateurs/chômage-partiel/config' +import { cipavConfig } from '../simulateurs/cipav/config' +import { comparaisonStatutsConfig } from '../simulateurs/comparaison-statuts/config' +import { coûtCréationEntrepriseConfig } from '../simulateurs/cout-creation-entreprise/config.js' +import { dividendesConfig } from '../simulateurs/dividendes/config' +import { eirlConfig } from '../simulateurs/eirl/config' +import { entrepriseIndividuelleConfig } from '../simulateurs/entreprise-individuelle/config' +import { eurlConfig } from '../simulateurs/eurl/config' +import { expertComptableConfig } from '../simulateurs/expert-comptable/config' +import { impôtSociétéConfig } from '../simulateurs/impot-societe/config' +import { indépendantConfig } from '../simulateurs/indépendant/config' +import { médecinConfig } from '../simulateurs/médecin/config' +import { pamcConfig } from '../simulateurs/pamc/config' +import { pharmacienConfig } from '../simulateurs/pharmacien/config' +import { professionLibéraleConfig } from '../simulateurs/profession-libérale/config' +import { sageFemmeConfig } from '../simulateurs/sage-femme/config' +import { salariéConfig } from '../simulateurs/salarié/config' +import { sasuConfig } from '../simulateurs/sasu/config' /** * Contient l'intégralité des données concernant les différents simulateurs et assistants diff --git a/site/source/sitePaths.ts b/site/source/sitePaths.ts index e63e47026..e4f607743 100644 --- a/site/source/sitePaths.ts +++ b/site/source/sitePaths.ts @@ -1,6 +1,6 @@ import { useTranslation } from 'react-i18next' -import { MetadataSrc } from '@/pages/simulateurs/metadata-src' +import { MetadataSrc } from '@/pages/simulateurs-et-assistants/metadata-src' const rawSitePathsFr = { index: '', @@ -37,7 +37,6 @@ const rawSitePathsFr = { rémunération: 'remuneration', statuts: 'statuts', résultat: 'resultat', - après: 'apres-la-création', }, }, simulateurs: {