diff --git a/modele-social/règles/entreprise/catégorie-juridique.publicodes b/modele-social/règles/entreprise/catégorie-juridique.publicodes
index 454a8063a..a101607ff 100644
--- a/modele-social/règles/entreprise/catégorie-juridique.publicodes
+++ b/modele-social/règles/entreprise/catégorie-juridique.publicodes
@@ -21,6 +21,11 @@ entreprise . associés:
### () La nomenclature des catégories juridiques retenue est celle du niveau III du répertoire Sirene géré par l'Insee ###
### https://www.insee.fr/fr/information/2028129
+entreprise . code catégorie juridique:
+ description: Code représentant la catégorie juridique de l'entreprise, tel que défini par l'INSEE.
+ références:
+ Liste des catégories juridique de l'INSEE: https://www.insee.fr/fr/information/2028129
+
entreprise . catégorie juridique:
question: Quelle est la catégorie juridique de l'entreprise ?
note: On se base ici sur les catégories juridiques définies par l'INSEE
diff --git a/site/source/components/Simulation/index.tsx b/site/source/components/Simulation/index.tsx
index 97bfdbe2a..4daa929ec 100644
--- a/site/source/components/Simulation/index.tsx
+++ b/site/source/components/Simulation/index.tsx
@@ -1,24 +1,17 @@
import React from 'react'
-import { Trans, useTranslation } from 'react-i18next'
import { useSelector } from 'react-redux'
import { useLocation } from 'react-router-dom'
import { styled } from 'styled-components'
import { ConversationProps } from '@/components/conversation/Conversation'
import ShareOrSaveSimulationBanner from '@/components/ShareSimulationBanner'
-import { PopoverWithTrigger } from '@/design-system'
import { Grid, Spacing } from '@/design-system/layout'
-import { Link } from '@/design-system/typography/link'
-import {
- companySituationSelector,
- firstStepCompletedSelector,
-} from '@/store/selectors/simulationSelectors'
+import { firstStepCompletedSelector } from '@/store/selectors/simulationSelectors'
import { TrackPage } from '../ATInternetTracking'
-import Banner from '../Banner'
-import AnswerList from '../conversation/AnswerList'
import { Feedback, getShouldAskFeedback } from '../Feedback/Feedback'
import PrintExportRecover from '../simulationExplanation/PrintExportRecover'
+import SimulationPréremplieBanner from '../SimulationPréremplieBanner'
import PreviousSimulationBanner from './../PreviousSimulationBanner'
import { FromTop } from './../ui/animate'
import EntrepriseSelection from './EntrepriseSelection'
@@ -62,13 +55,8 @@ export default function Simulation({
id,
}: SimulationProps) {
const firstStepCompleted = useSelector(firstStepCompletedSelector)
- const existingCompany = !!useSelector(companySituationSelector)[
- 'entreprise . SIREN'
- ]
const shouldShowFeedback = getShouldAskFeedback(useLocation().pathname)
- const { t } = useTranslation()
-
return (
<>
{!firstStepCompleted && }
@@ -88,29 +76,7 @@ export default function Simulation({
)}
- {existingCompany && (
-
-
- Ce simulateur a été prérempli avec la situation de votre
- entreprise.
- {' '}
- (
-
- Voir ma situation
-
- )}
- >
- {(close) => }
-
-
- )}
+
{!showQuestionsFromBeginning && !firstStepCompleted && (
diff --git a/site/source/components/SimulationPréremplieBanner.tsx b/site/source/components/SimulationPréremplieBanner.tsx
new file mode 100644
index 000000000..3ed89b558
--- /dev/null
+++ b/site/source/components/SimulationPréremplieBanner.tsx
@@ -0,0 +1,78 @@
+import { Trans, useTranslation } from 'react-i18next'
+import { useSelector } from 'react-redux'
+
+import { Message, PopoverWithTrigger } from '@/design-system'
+import { Spacing } from '@/design-system/layout'
+import { Strong } from '@/design-system/typography'
+import { Link } from '@/design-system/typography/link'
+import { SmallBody } from '@/design-system/typography/paragraphs'
+import { useCurrentSimulatorData } from '@/hooks/useCurrentSimulatorData'
+import { PageConfig } from '@/pages/simulateurs/_configs/types'
+import { companySituationSelector } from '@/store/selectors/simulationSelectors'
+
+import Banner from './Banner'
+import AnswerList from './conversation/AnswerList'
+
+export default function SimulationPréremplieBanner() {
+ const company = useSelector(companySituationSelector)
+ const existingCompany = !!company['entreprise . SIREN']
+
+ const simulatorData = useCurrentSimulatorData().currentSimulatorData as
+ | PageConfig
+ | undefined
+ const isWrongSimulateur =
+ simulatorData &&
+ simulatorData.codesCatégorieJuridique?.length &&
+ simulatorData.codesCatégorieJuridique.indexOf(
+ company['entreprise . code catégorie juridique'] as string
+ ) < 0
+
+ const { t } = useTranslation()
+
+ if (!existingCompany) {
+ return null
+ }
+
+ return (
+
+
+ Ce simulateur a été prérempli avec la situation de votre entreprise.
+ {' '}
+ (
+
+ Voir ma situation
+
+ )}
+ >
+ {(close) => }
+
+ {isWrongSimulateur && (
+ <>
+
+
+
+
+ Votre catégorie juridique est
+ {' '}
+
+ {company['entreprise . catégorie juridique'] as string}
+ {' '}
+
+ mais vous êtes sur le simulateur pour{' '}
+
+ {simulatorData.shortName}.
+
+
+ >
+ )}
+
+ )
+}
diff --git a/site/source/locales/rules-en.yaml b/site/source/locales/rules-en.yaml
index f58054349..e0017a681 100644
--- a/site/source/locales/rules-en.yaml
+++ b/site/source/locales/rules-en.yaml
@@ -5652,6 +5652,14 @@ entreprise . chiffre d'affaires . vente restauration hébergement:
résumé.fr: Chiffre d'affaires hors taxe
titre.en: '[automatic] Sale of goods, catering, accommodation (BIC)'
titre.fr: Vente de biens, restauration, hébergement (BIC)
+entreprise . code catégorie juridique:
+ description.en:
+ "[automatic] Code representing the company's legal category, as
+ defined by INSEE."
+ description.fr: Code représentant la catégorie juridique de l'entreprise, tel
+ que défini par l'INSEE.
+ titre.en: '[automatic] legal category code'
+ titre.fr: code catégorie juridique
entreprise . coût formalités:
titre.en: '[automatic] cost formalities'
titre.fr: coût formalités
diff --git a/site/source/locales/ui-en.yaml b/site/source/locales/ui-en.yaml
index 4976711fe..557898826 100644
--- a/site/source/locales/ui-en.yaml
+++ b/site/source/locales/ui-en.yaml
@@ -63,7 +63,6 @@ Bonjour, je suis boulanger et je n'ai pas trouvé en cherchant "pain" ou "vienno
searched.
Budget: Budget
Calculer vos revenus: Calculate your income
-Ce simulateur a été prérempli avec la situation de votre entreprise.: This simulator has been pre-filled with your company's situation.
Cette commune n'existe pas: This commune does not exist
Cette opération n'est pas réversible.: This operation is not reversible.
Charger plus de résultats: Load more results
@@ -353,8 +352,6 @@ Voir les autres simulateurs: See other simulators
Voir les nouveautés apportées par la version {{release}}: See what's new in this version {{release}}
Voir les simulateurs personnalisés: See customized simulators
Voir les simulateurs personnalisés, accéder à la page de gestion de mon entreprise: See customized simulators, access my company management page
-Voir ma situation: See my situation
-Voir ma situation, accéder à la page de gestion de mon entreprise: View my situation, access my company management page
Vos attentes ne sont pas remplies: Your expectations are not met
Vos charges estimées: Your estimated expenses
Vos droits pour la retraite: Your pension rights
@@ -1852,6 +1849,13 @@ simulation-end:
text: Now you can make your hiring plans a reality.
text: You now have access to the most accurate estimate possible.
title: You have completed this simulation
+simulationPréremplieBanner:
+ aria-label: View my situation, access my company management page
+ button: See my situation
+ info: This simulator has been pre-filled with your company's situation.
+ warning:
+ "1": Your legal category is
+ "2": "but you are on the simulator for "
site:
defaultTitle: My company
meta:
diff --git a/site/source/locales/ui-fr.yaml b/site/source/locales/ui-fr.yaml
index 1a16dd630..df1a1021e 100644
--- a/site/source/locales/ui-fr.yaml
+++ b/site/source/locales/ui-fr.yaml
@@ -68,7 +68,6 @@ Bonjour, je suis boulanger et je n'ai pas trouvé en cherchant "pain" ou "vienno
"viennoiserie".
Budget: Budget
Calculer vos revenus: Calculer vos revenus
-Ce simulateur a été prérempli avec la situation de votre entreprise.: Ce simulateur a été prérempli avec la situation de votre entreprise.
Cette commune n'existe pas: Cette commune n'existe pas
Cette opération n'est pas réversible.: Cette opération n'est pas réversible.
Charger plus de résultats: Charger plus de résultats
@@ -370,8 +369,6 @@ Voir les simulateurs personnalisés: Voir les simulateurs personnalisés
Voir les simulateurs personnalisés, accéder à la page de gestion de mon entreprise:
Voir les simulateurs personnalisés, accéder à la page de gestion de mon
entreprise
-Voir ma situation: Voir ma situation
-Voir ma situation, accéder à la page de gestion de mon entreprise: Voir ma situation, accéder à la page de gestion de mon entreprise
Vos attentes ne sont pas remplies: Vos attentes ne sont pas remplies
Vos charges estimées: Vos charges estimées
Vos droits pour la retraite: Vos droits pour la retraite
@@ -1969,6 +1966,13 @@ simulation-end:
text: Vous pouvez maintenant concrétiser votre projet d'embauche.
text: Vous avez maintenant accès à l'estimation la plus précise possible.
title: Vous avez complété cette simulation
+simulationPréremplieBanner:
+ aria-label: Voir ma situation, accéder à la page de gestion de mon entreprise
+ button: Voir ma situation
+ info: Ce simulateur a été prérempli avec la situation de votre entreprise.
+ warning:
+ "1": Votre catégorie juridique est
+ "2": "mais vous êtes sur le simulateur pour "
site:
defaultTitle: Mon-entreprise
meta:
diff --git a/site/source/pages/simulateurs/_configs/types.ts b/site/source/pages/simulateurs/_configs/types.ts
index f41896af1..10692ae40 100644
--- a/site/source/pages/simulateurs/_configs/types.ts
+++ b/site/source/pages/simulateurs/_configs/types.ts
@@ -78,6 +78,11 @@ export interface PageConfig {
*/
autoloadLastSimulation?: boolean
+ /** Indique les catégories d'entreprise concernées par le simulateur.
+ * Un tableau vide indique que le simulateur concerne toutes les catégories d'entreprise.
+ */
+ codesCatégorieJuridique?: string[]
+
/** Composant React de la page
*
* Note : Le nom du composant doit être en un seul mot pour que le script `yarn build:simulator-data` marche
diff --git a/site/source/pages/simulateurs/artiste-auteur/config.ts b/site/source/pages/simulateurs/artiste-auteur/config.ts
index 0ce2e9dc4..4bd542d26 100644
--- a/site/source/pages/simulateurs/artiste-auteur/config.ts
+++ b/site/source/pages/simulateurs/artiste-auteur/config.ts
@@ -31,6 +31,7 @@ export function artisteAuteurConfig({ t, sitePaths }: SimulatorsDataParams) {
'pages.simulateurs.artiste-auteur.shortname',
'Artiste-auteur'
),
+ codesCatégorieJuridique: ['1000'],
component: ArtisteAuteur,
} as const)
}
diff --git a/site/source/pages/simulateurs/auto-entrepreneur/config.ts b/site/source/pages/simulateurs/auto-entrepreneur/config.ts
index 036fe6100..4e2ec47ce 100644
--- a/site/source/pages/simulateurs/auto-entrepreneur/config.ts
+++ b/site/source/pages/simulateurs/auto-entrepreneur/config.ts
@@ -43,6 +43,7 @@ export function autoEntrepreneurConfig({ t, sitePaths }: SimulatorsDataParams) {
nextSteps: ['indépendant', 'comparaison-statuts'],
path: sitePaths.simulateurs['auto-entrepreneur'],
simulation: configAutoEntrepreneur,
+ codesCatégorieJuridique: ['1000'],
component: AutoEntrepreneur,
seoExplanations: SeoExplanations,
} as const)
diff --git a/site/source/pages/simulateurs/auxiliaire-médical/config.ts b/site/source/pages/simulateurs/auxiliaire-médical/config.ts
index 442008ba1..d5bb897c9 100644
--- a/site/source/pages/simulateurs/auxiliaire-médical/config.ts
+++ b/site/source/pages/simulateurs/auxiliaire-médical/config.ts
@@ -40,6 +40,7 @@ export function auxiliaireMédicalConfig({
},
path: sitePaths.simulateurs['profession-libérale'].auxiliaire,
simulation: configAuxiliaire,
+ codesCatégorieJuridique: ['1000', '5410'],
component: IndépendantPLSimulation,
} as const)
}
diff --git a/site/source/pages/simulateurs/avocat/config.ts b/site/source/pages/simulateurs/avocat/config.ts
index 49db13e56..380ef041c 100644
--- a/site/source/pages/simulateurs/avocat/config.ts
+++ b/site/source/pages/simulateurs/avocat/config.ts
@@ -30,6 +30,7 @@ export function avocatConfig({ t, sitePaths }: SimulatorsDataParams) {
},
path: sitePaths.simulateurs['profession-libérale'].avocat,
simulation: configAvocat,
+ codesCatégorieJuridique: ['1000', '5410', '5499'],
component: IndépendantPLSimulation,
} as const)
}
diff --git a/site/source/pages/simulateurs/chirurgien-dentiste/config.ts b/site/source/pages/simulateurs/chirurgien-dentiste/config.ts
index 40f89297a..8c05ed283 100644
--- a/site/source/pages/simulateurs/chirurgien-dentiste/config.ts
+++ b/site/source/pages/simulateurs/chirurgien-dentiste/config.ts
@@ -36,6 +36,7 @@ export function chirurgienDentisteConfig({
),
path: sitePaths.simulateurs['profession-libérale']['chirurgien-dentiste'],
simulation: configDentiste,
+ codesCatégorieJuridique: ['1000', '5410'],
component: IndépendantPLSimulation,
} as const)
}
diff --git a/site/source/pages/simulateurs/cipav/config.tsx b/site/source/pages/simulateurs/cipav/config.tsx
index 41248ff8c..5b587281d 100644
--- a/site/source/pages/simulateurs/cipav/config.tsx
+++ b/site/source/pages/simulateurs/cipav/config.tsx
@@ -31,6 +31,7 @@ export function cipavConfig({ t, sitePaths }: SimulatorsDataParams) {
),
path: sitePaths.simulateurs['profession-libérale'].cipav,
simulation: cipavSimulationConfig,
+ codesCatégorieJuridique: ['1000', '5410', '5499'],
component: IndépendantPLSimulation,
} as const)
}
diff --git a/site/source/pages/simulateurs/eirl/config.ts b/site/source/pages/simulateurs/eirl/config.ts
index 3d9376041..17ceb4b65 100644
--- a/site/source/pages/simulateurs/eirl/config.ts
+++ b/site/source/pages/simulateurs/eirl/config.ts
@@ -38,6 +38,7 @@ export function eirlConfig({ t, sitePaths }: SimulatorsDataParams) {
nextSteps: ['comparaison-statuts'],
path: sitePaths.simulateurs.eirl,
simulation: configEirl,
+ codesCatégorieJuridique: ['1000'],
component: IndépendantSimulation,
} as const)
}
diff --git a/site/source/pages/simulateurs/entreprise-individuelle/config.ts b/site/source/pages/simulateurs/entreprise-individuelle/config.ts
index 3b9ce2dd1..e80d4c6c3 100644
--- a/site/source/pages/simulateurs/entreprise-individuelle/config.ts
+++ b/site/source/pages/simulateurs/entreprise-individuelle/config.ts
@@ -47,6 +47,7 @@ export function entrepriseIndividuelleConfig({
nextSteps: ['comparaison-statuts'],
path: sitePaths.simulateurs['entreprise-individuelle'],
simulation: configEntrepriseIndividuelle,
+ codesCatégorieJuridique: ['1000'],
component: EntrepriseIndividuelle,
seoExplanations: SeoExplanationsEI,
} as const)
diff --git a/site/source/pages/simulateurs/eurl/config.tsx b/site/source/pages/simulateurs/eurl/config.tsx
index 2964243ca..c3dbc6434 100644
--- a/site/source/pages/simulateurs/eurl/config.tsx
+++ b/site/source/pages/simulateurs/eurl/config.tsx
@@ -45,6 +45,25 @@ export function eurlConfig({ t, sitePaths }: SimulatorsDataParams) {
],
path: sitePaths.simulateurs.eurl,
simulation: configEurl,
+ codesCatégorieJuridique: [
+ '5410',
+ '5415',
+ '5422',
+ '5426',
+ '5430',
+ '5431',
+ '5432',
+ '5442',
+ '5443',
+ '5451',
+ '5453',
+ '5454',
+ '5455',
+ '5458',
+ '5459',
+ '5460',
+ '5499',
+ ],
component: IndépendantSimulation,
} as const)
}
diff --git a/site/source/pages/simulateurs/expert-comptable/config.ts b/site/source/pages/simulateurs/expert-comptable/config.ts
index e9140fc52..1c52590c4 100644
--- a/site/source/pages/simulateurs/expert-comptable/config.ts
+++ b/site/source/pages/simulateurs/expert-comptable/config.ts
@@ -33,6 +33,7 @@ export function expertComptableConfig({ t, sitePaths }: SimulatorsDataParams) {
},
path: sitePaths.simulateurs['profession-libérale']['expert-comptable'],
simulation: configExpertComptable,
+ codesCatégorieJuridique: ['1000', '5410', '5499'],
component: IndépendantPLSimulation,
} as const)
}
diff --git a/site/source/pages/simulateurs/médecin/config.ts b/site/source/pages/simulateurs/médecin/config.ts
index e77fff3aa..7deedf685 100644
--- a/site/source/pages/simulateurs/médecin/config.ts
+++ b/site/source/pages/simulateurs/médecin/config.ts
@@ -30,6 +30,7 @@ export function médecinConfig({ t, sitePaths }: SimulatorsDataParams) {
),
path: sitePaths.simulateurs['profession-libérale'].médecin,
simulation: configMédecin,
+ codesCatégorieJuridique: ['1000', '5410'],
component: IndépendantPLSimulation,
} as const)
}
diff --git a/site/source/pages/simulateurs/pharmacien/config.ts b/site/source/pages/simulateurs/pharmacien/config.ts
index 7e0490a92..ad4893bb5 100644
--- a/site/source/pages/simulateurs/pharmacien/config.ts
+++ b/site/source/pages/simulateurs/pharmacien/config.ts
@@ -30,6 +30,7 @@ export function pharmacienConfig({ t, sitePaths }: SimulatorsDataParams) {
),
path: sitePaths.simulateurs['profession-libérale'].pharmacien,
simulation: configPharmacien,
+ codesCatégorieJuridique: ['1000', '5410', '5499'],
component: IndépendantPLSimulation,
} as const)
}
diff --git a/site/source/pages/simulateurs/profession-libérale/config.ts b/site/source/pages/simulateurs/profession-libérale/config.ts
index 5ee9621d9..5e6235d23 100644
--- a/site/source/pages/simulateurs/profession-libérale/config.ts
+++ b/site/source/pages/simulateurs/profession-libérale/config.ts
@@ -35,6 +35,16 @@ export function professionLibéraleConfig({
),
path: sitePaths.simulateurs['profession-libérale'].index,
simulation: configProfessionLibérale,
+ codesCatégorieJuridique: [
+ '1000',
+ '5410',
+ '5415',
+ '5422',
+ '5458',
+ '5459',
+ '5460',
+ '5499',
+ ],
component: IndépendantPLSimulation,
} as const)
}
diff --git a/site/source/pages/simulateurs/sage-femme/config.ts b/site/source/pages/simulateurs/sage-femme/config.ts
index e4764fb7a..0cf32be29 100644
--- a/site/source/pages/simulateurs/sage-femme/config.ts
+++ b/site/source/pages/simulateurs/sage-femme/config.ts
@@ -30,6 +30,7 @@ export function sageFemmeConfig({ t, sitePaths }: SimulatorsDataParams) {
),
path: sitePaths.simulateurs['profession-libérale']['sage-femme'],
simulation: configSageFemme,
+ codesCatégorieJuridique: ['1000', '5410'],
component: IndépendantPLSimulation,
} as const)
}
diff --git a/site/source/pages/simulateurs/sasu/config.ts b/site/source/pages/simulateurs/sasu/config.ts
index 9098b5f54..ea607e709 100644
--- a/site/source/pages/simulateurs/sasu/config.ts
+++ b/site/source/pages/simulateurs/sasu/config.ts
@@ -41,6 +41,7 @@ export function sasuConfig({ t, sitePaths }: SimulatorsDataParams) {
nextSteps: ['is', 'comparaison-statuts'],
path: sitePaths.simulateurs.sasu,
simulation: configSASU,
+ codesCatégorieJuridique: ['5710'],
component: SASUSimulation,
seoExplanations: SeoExplanations,
} as const)
diff --git a/site/source/store/reducers/companySituationReducer.ts b/site/source/store/reducers/companySituationReducer.ts
index cee54bb56..d15c11390 100644
--- a/site/source/store/reducers/companySituationReducer.ts
+++ b/site/source/store/reducers/companySituationReducer.ts
@@ -87,6 +87,7 @@ export function companySituation(state: Situation = {}, action: Action) {
export function getCompanySituation(entreprise: Entreprise): Situation {
return {
'entreprise . date de création': toPublicodeDate(entreprise.dateDeCréation),
+ 'entreprise . code catégorie juridique': entreprise.codeCatégorieJuridique,
'entreprise . catégorie juridique': `'${getCatégorieFromCode(
entreprise.codeCatégorieJuridique
)}'`,