+ Avez-vous besoin de calculer les cotisations de l'année
+ précédente ?
+
+
+
+
+ >
+ )}
+
>
diff --git a/site/source/components/simulationExplanation/PrintExportRecover.tsx b/site/source/components/simulationExplanation/PrintExportRecover.tsx
index 1bc9de76e4..71e88fbe71 100644
--- a/site/source/components/simulationExplanation/PrintExportRecover.tsx
+++ b/site/source/components/simulationExplanation/PrintExportRecover.tsx
@@ -1,9 +1,9 @@
import { Trans } from 'react-i18next'
-import { useUrl } from '@/components/ShareSimulationBanner'
import { Message } from '@/design-system'
import { Link } from '@/design-system/typography/link'
import { Body } from '@/design-system/typography/paragraphs'
+import { useUrl } from '@/hooks/useUrl'
export default function PrintExportRecover() {
return (
diff --git a/site/source/hooks/useSearchParamsForCurrentSituation.tsx b/site/source/hooks/useSearchParamsForCurrentSituation.tsx
new file mode 100644
index 0000000000..ddc62db327
--- /dev/null
+++ b/site/source/hooks/useSearchParamsForCurrentSituation.tsx
@@ -0,0 +1,27 @@
+import { useSelector } from 'react-redux'
+
+import { useParamsFromSituation } from '@/components/utils/useSearchParamsSimulationSharing'
+import {
+ companySituationSelector,
+ situationSelector,
+ targetUnitSelector,
+} from '@/store/selectors/simulationSelectors'
+
+export const useSearchParamsForCurrentSituation = <
+ T extends boolean | undefined,
+>(
+ asString: T
+): T extends true ? string : object => {
+ const situation = {
+ ...useSelector(situationSelector),
+ ...useSelector(companySituationSelector),
+ }
+
+ const targetUnit = useSelector(targetUnitSelector)
+
+ const searchParams = useParamsFromSituation(situation, targetUnit)
+
+ return (asString ? searchParams.toString() : searchParams) as T extends true
+ ? string
+ : object
+}
diff --git a/site/source/hooks/useSiteUrl.tsx b/site/source/hooks/useSiteUrl.tsx
new file mode 100644
index 0000000000..60ae08bc20
--- /dev/null
+++ b/site/source/hooks/useSiteUrl.tsx
@@ -0,0 +1,9 @@
+import { useTranslation } from 'react-i18next'
+
+export const useSiteUrl = () => {
+ const language = useTranslation().i18n.language
+
+ return language === 'fr'
+ ? import.meta.env.VITE_FR_BASE_URL
+ : import.meta.env.VITE_EN_BASE_URL
+}
diff --git a/site/source/hooks/useUrl.tsx b/site/source/hooks/useUrl.tsx
new file mode 100644
index 0000000000..359751a242
--- /dev/null
+++ b/site/source/hooks/useUrl.tsx
@@ -0,0 +1,11 @@
+import { useCurrentSimulatorData } from '@/hooks/useCurrentSimulatorData'
+import { useSearchParamsForCurrentSituation } from '@/hooks/useSearchParamsForCurrentSituation'
+import { useSiteUrl } from '@/hooks/useSiteUrl'
+
+export function useUrl() {
+ const { currentSimulatorData } = useCurrentSimulatorData()
+
+ const { path = '' } = currentSimulatorData ?? {}
+
+ return useSiteUrl() + path + '?' + useSearchParamsForCurrentSituation(true)
+}
diff --git a/site/source/locales/rules-en.yaml b/site/source/locales/rules-en.yaml
index 0d298fc54b..a9ba17bc1b 100644
--- a/site/source/locales/rules-en.yaml
+++ b/site/source/locales/rules-en.yaml
@@ -4033,14 +4033,14 @@ dirigeant . indépendant . cotisations facultatives . plafond retraite compléme
dirigeant . indépendant . revenu professionnel:
description.en: >-
[automatic] Professional income is the manager's remuneration under the
- self-employment scheme.
+ self-employed workers' scheme.
For companies that have opted for the **income tax**, this is the **taxable income**.
For companies that have opted for the **taxe sur les sociétés**, this is the manager's remuneration, plus non-deductible contributions.
description.fr: >-
Le revenu professionnel est la rémunération du dirigeant au régime des
- indépendant.
+ indépendants.
Pour les entreprises qui ont opté pour l'**impôt sur le revenu**, il s'agit du **résultat fiscal**.
@@ -4082,7 +4082,7 @@ dirigeant . indépendant . revenu professionnel:
Dans la réalité, comme les cotisations sont régularisées d'une année sur l'autre, ce calcul n'est jamais à faire (sauf exceptions). Mais nous avons choisi de l'implémenter pour fournir le résultat le plus proche sans avoir à demander le montant des cotisations provisionnelles payées l'année N-1.
résumé.en: "[automatic] executive compensation under the self-employed workers' scheme"
- résumé.fr: rémunération du dirigeant au régime des indépendant
+ résumé.fr: rémunération du dirigeant au régime des indépendants
titre.en: '[automatic] professional income'
titre.fr: revenu professionnel
dirigeant . indépendant . revenus étrangers:
@@ -4526,47 +4526,6 @@ entreprise . TVA:
entreprise . TVA . franchise de TVA:
titre.en: '[automatic] VAT exemption'
titre.fr: franchise de TVA
-entreprise . TVA . franchise de TVA . notification:
- description.en: >
- [automatic] The VAT exemption is a device that exempts companies from the
- declaration and payment of
-
- declaration and payment of VAT. It applies below a threshold of
-
- annual turnover depending on the activity.
-
-
- The professional who falls under this system invoices his services or sales without tax, and cannot
-
- and cannot deduct VAT from their purchases.
- description.fr: |
- La franchise de TVA est un dispositif qui exonère les entreprises de la
- déclaration et du paiement de la TVA. Il s'applique en dessous d'un seuil de
- chiffre d'affaire annuel dépendant de l'activité.
-
- Le professionnel qui relève de ce dispositif facture ses prestations ou ses
- ventes en hors taxe, et ne peut pas déduire la TVA de ses achats.
- note.en: >
- [automatic] We take into account here the increased thresholds (which apply
- if the "reduced" threshold has not been exceeded in year `n - 2`)
- note.fr: >
- On prend compte ici des seuils majorés (qui s'appliquent si le seuil
- "minoré" n'a pas été dépassé en année `n - 2`)
- résumé.en: |
- [automatic] You are below the VAT declaration threshold.
- résumé.fr: |
- Vous êtes en dessous du seuil de déclaration de TVA.
- titre.en: '[automatic] notification'
- titre.fr: notification
-entreprise . TVA . franchise de TVA . seuil service:
- titre.en: '[automatic] threshold service'
- titre.fr: seuil service
-entreprise . TVA . franchise de TVA . seuil vente:
- titre.en: '[automatic] sales threshold'
- titre.fr: seuil vente
-entreprise . TVA . franchise de TVA . seuils dépassés:
- titre.en: '[automatic] thresholds exceeded'
- titre.fr: seuils dépassés
entreprise . activité:
titre.en: '[automatic] activity'
titre.fr: activité
@@ -5775,6 +5734,22 @@ entreprise . coût formalités . création:
résumé.fr: Tous les frais liés à l'enregistrement (greffe, annonces, chambres)
titre.en: '[automatic] Total creation costs'
titre.fr: Total des coûts de création
+entreprise . créée cette année:
+ description.en: '[automatic] Was the company created in the year of the simulation?'
+ description.fr: L'entreprise a-t-elle été créée l'année de la simulation ?
+ titre.en: '[automatic] Company created this year'
+ titre.fr: Entreprise créée cette année
+entreprise . date de cessation:
+ description.en:
+ '[automatic] The cessation date is the date on which the company
+ will cease trading.'
+ description.fr:
+ La date de cessation est la date à laquelle l’entreprise cessera
+ son activité.
+ question.en: '[automatic] When do you plan to declare your cessation of activity?'
+ question.fr: À quelle date comptez-vous déclarer la cessation d’activité ?
+ titre.en: '[automatic] termination date'
+ titre.fr: date de cessation
entreprise . date de création:
description.en: >
[automatic] The date of commencement of activity (or date of creation) is
@@ -5841,6 +5816,9 @@ entreprise . durée d'activité . en fin d'année:
entreprise . durée d'activité . trimestres civils:
titre.en: '[automatic] Number of calendar quarters covered'
titre.fr: Nombre de trimestres civils couverts
+entreprise . durée d'activité cette année:
+ titre.en: '[automatic] duration of activity this year'
+ titre.fr: durée d'activité cette année
entreprise . exercice:
avec:
date trop ancienne:
@@ -6120,6 +6098,23 @@ entreprise . imposition . régime . réel simplifié:
entreprise . nom:
titre.en: '[automatic] name'
titre.fr: nom
+entreprise . prorata temporis:
+ description.en: |
+ [automatic] Percentage of the company's fiscal year in progress
+ description.fr: |
+ Pourcentage d'exercice de l'entreprise sur l'année en cours
+ titre.en: '[automatic] prorata temporis'
+ titre.fr: prorata temporis
+entreprise . radiée:
+ description.en: '[automatic] Will the company be deregistered in the year of the simulation?'
+ description.fr: L'entreprise sera-t-elle radiée l'année de la simulation ?
+ titre.en: '[automatic] Delisted company'
+ titre.fr: Entreprise radiée
+entreprise . radiée cette année:
+ description.en: '[automatic] Will the company be deregistered in the year of the simulation?'
+ description.fr: L'entreprise sera-t-elle radiée l'année de la simulation ?
+ titre.en: '[automatic] Company written off this year'
+ titre.fr: Entreprise radiée cette année
entreprise . résultat fiscal:
titre.en: '[automatic] tax result'
titre.fr: résultat fiscal
@@ -7554,6 +7549,9 @@ protection sociale . transport:
période:
titre.en: period
titre.fr: période
+période . durée depuis le début d'année:
+ titre.en: '[automatic] year-to-date'
+ titre.fr: durée depuis le début d'année
période . début d'année:
titre.en: start of year
titre.fr: début d'année
diff --git a/site/source/locales/ui-en.yaml b/site/source/locales/ui-en.yaml
index 3f3429bc97..994cf610d8 100644
--- a/site/source/locales/ui-en.yaml
+++ b/site/source/locales/ui-en.yaml
@@ -69,6 +69,7 @@ Charger plus de résultats: Load more results
Charges: Charges
Chiffre d'affaires: Sales figures
Chiffre d'affaires estimé: Estimated sales
+Chiffre d'affaires pour l'année de cessation: Sales for the year of cessation
Comment ça marche ? Voir la page explicative sur la page du dépôt github, nouvelle fenêtre:
How does it work? See the explanatory page on the github repository page, new
window
@@ -263,7 +264,7 @@ Retour à la création: Back to creation
Retour à mon activité: Back to my activity
Retraite complémentaire: Supplementary pension
Retraite de base: Basic pension
-Retrouver ma simulation, charger les données de ma précédente simulation.: Retrieve my simulation, load data from my previous simulation.
+Retrouver ma précédente simulation, charger les données de ma précédente simulation.: Find my previous simulation, load data from my previous simulation.
Revenu (incluant les dépenses liées à l'activité): Income (including activity-related expenses)
Revenu après impôt: After-tax income
Revenu avant impôt: Income before tax
@@ -275,6 +276,7 @@ Régime d'imposition: Taxation system
Réinitialiser: Reset
Réinitialiser la situation enregistrée: Reset registered situation
Rémunération brute: Gross remuneration
+Rémunération totale pour l'année de cessation: Total compensation for the year of termination
Répartition du chiffre d'affaires: Sales breakdown
Répondez à quelques questions additionnelles afin de préciser votre résultat.: Answer a few additional questions to clarify your result.
Résultat fiscal: Taxable income
@@ -311,6 +313,7 @@ Tableau indiquant le nombre de visites par {{period}}.: Table showing the number
Tableau présentant le nombre de visites par simulateur et par mois.: Table showing the number of visits per simulator per month.
Titres-restaurant: Meal vouchers
Total des cotisations et contributions: Total contributions
+Total des cotisations à devoir pour l'année de cessation d'activité: Total contributions due for the year of cessation of activity
"Tous les ans, selon votre rémunération, <2>vous gagnez des points qui constituent votre pension de retraite complémentaire2>. En fin de carrière, vos points sont transformés en <5>un montant qui s’ajoute chaque mois à votre retraite de base5>. Cette valeur se calcule sur le long terme. Par exemple, au bout de 10 ans, vous auriez droit à :":
"Every year, depending on how much you earn, <2>you earn points that make up
your supplementary pension2>. At the end of your career, your points are
@@ -353,6 +356,7 @@ 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 cotisations pour l’année précédente: Your contributions for the previous year
Vos droits pour la retraite: Your pension rights
Vos prestations santé: Your health benefits
Vos revenus: Your income
@@ -1235,6 +1239,16 @@ pages:
title: "Lawyer: income simulator"
shortname: Lawyer
title: Income simulator for self-employed lawyers
+ cessation-activité:
+ meta:
+ description: Estimate your contributions for the year in which you cease
+ self-employed activity.
+ ogDescription: Estimate your contributions for the year in which you cease
+ self-employed activity.
+ ogTitle: "Self-employed : Estimated contributions for the year of cessation"
+ titre: "Self-employed : Estimated contributions for the year of cessation"
+ shortname: Cessation of activity
+ title: "Self-employed : Estimated contributions for the year of cessation"
chirurgien-dentiste:
meta:
description: Calculation of net income after contributions based on total income.
diff --git a/site/source/locales/ui-fr.yaml b/site/source/locales/ui-fr.yaml
index e1fa92b7be..28aca69312 100644
--- a/site/source/locales/ui-fr.yaml
+++ b/site/source/locales/ui-fr.yaml
@@ -74,6 +74,7 @@ Charger plus de résultats: Charger plus de résultats
Charges: Charges
Chiffre d'affaires: Chiffre d'affaires
Chiffre d'affaires estimé: Chiffre d'affaires estimé
+Chiffre d'affaires pour l'année de cessation: Chiffre d'affaires pour l'année de cessation
Comment ça marche ? Voir la page explicative sur la page du dépôt github, nouvelle fenêtre:
Comment ça marche ? Voir la page explicative sur la page du dépôt github,
nouvelle fenêtre
@@ -278,7 +279,9 @@ Retour à la création: Retour à la création
Retour à mon activité: Retour à mon activité
Retraite complémentaire: Retraite complémentaire
Retraite de base: Retraite de base
-Retrouver ma simulation, charger les données de ma précédente simulation.: Retrouver ma simulation, charger les données de ma précédente simulation.
+Retrouver ma précédente simulation, charger les données de ma précédente simulation.:
+ Retrouver ma précédente simulation, charger les données de ma précédente
+ simulation.
Revenu (incluant les dépenses liées à l'activité): Revenu (incluant les dépenses liées à l'activité)
Revenu après impôt: Revenu après impôt
Revenu avant impôt: Revenu avant impôt
@@ -290,6 +293,7 @@ Régime d'imposition: Régime d'imposition
Réinitialiser: Réinitialiser
Réinitialiser la situation enregistrée: Réinitialiser la situation enregistrée
Rémunération brute: Rémunération brute
+Rémunération totale pour l'année de cessation: Rémunération totale pour l'année de cessation
Répartition du chiffre d'affaires: Répartition du chiffre d'affaires
Répondez à quelques questions additionnelles afin de préciser votre résultat.: Répondez à quelques questions additionnelles afin de préciser votre résultat.
Résultat fiscal: Résultat fiscal
@@ -327,6 +331,7 @@ Tableau indiquant le nombre de visites par {{period}}.: Tableau indiquant le nom
Tableau présentant le nombre de visites par simulateur et par mois.: Tableau présentant le nombre de visites par simulateur et par mois.
Titres-restaurant: Titres-restaurant
Total des cotisations et contributions: Total des cotisations et contributions
+Total des cotisations à devoir pour l'année de cessation d'activité: Total des cotisations à devoir pour l'année de cessation d'activité
"Tous les ans, selon votre rémunération, <2>vous gagnez des points qui constituent votre pension de retraite complémentaire2>. En fin de carrière, vos points sont transformés en <5>un montant qui s’ajoute chaque mois à votre retraite de base5>. Cette valeur se calcule sur le long terme. Par exemple, au bout de 10 ans, vous auriez droit à :":
"Tous les ans, selon votre rémunération, <2>vous gagnez des points qui
constituent votre pension de retraite complémentaire2>. En fin de carrière,
@@ -370,6 +375,7 @@ 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 cotisations pour l’année précédente: Vos cotisations pour l’année précédente
Vos droits pour la retraite: Vos droits pour la retraite
Vos prestations santé: Vos prestations santé
Vos revenus: Vos revenus
@@ -1311,6 +1317,16 @@ pages:
title: "Avocat : simulateur de revenus"
shortname: Avocat
title: Simulateur de revenus pour avocat en libéral
+ cessation-activité:
+ meta:
+ description: Estimez vos cotisations de l'année de cessation de votre activité
+ en tant qu’indépendant.
+ ogDescription: Estimez vos cotisations de l'année de cessation de votre activité
+ en tant qu’indépendant.
+ ogTitle: "Indépendants : Estimation des cotisations pour l'année de cessation"
+ titre: "Indépendants : Estimation des cotisations pour l'année de cessation"
+ shortname: Cessation d’activité
+ title: "Indépendants : Estimation des cotisations pour l'année de cessation"
chirurgien-dentiste:
meta:
description: Calcul du revenu net après cotisations à partir du total des recettes.
@@ -1717,7 +1733,7 @@ points: points
pourcentage: pourcentage
previousSimulationBanner:
info: "Votre précédente simulation a été sauvegardée :"
- retrieveButton: Retrouver ma simulation
+ retrieveButton: Retrouver ma précédente simulation
privacyPolicy:
data:
content: "mon-entreprise.urssaf.fr ne traite aucune donnée à caractère personnel
diff --git a/site/source/pages/simulateurs-et-assistants/index.tsx b/site/source/pages/simulateurs-et-assistants/index.tsx
index 16f8516577..0bc7088ae8 100644
--- a/site/source/pages/simulateurs-et-assistants/index.tsx
+++ b/site/source/pages/simulateurs-et-assistants/index.tsx
@@ -160,7 +160,6 @@ export default function SimulateursEtAssistants() {
-
+
+
+
diff --git a/site/source/pages/simulateurs-et-assistants/metadata-src.ts b/site/source/pages/simulateurs-et-assistants/metadata-src.ts
index 6be4040f74..5c756845d6 100644
--- a/site/source/pages/simulateurs-et-assistants/metadata-src.ts
+++ b/site/source/pages/simulateurs-et-assistants/metadata-src.ts
@@ -10,6 +10,7 @@ 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 { cessationActivitéConfig } from '../simulateurs/cessation-activité/config'
import { chirurgienDentisteConfig } from '../simulateurs/chirurgien-dentiste/config'
import { chômagePartielConfig } from '../simulateurs/chômage-partiel/config'
import { cipavConfig } from '../simulateurs/cipav/config'
@@ -63,6 +64,7 @@ const getMetadataSrc = (params: SimulatorsDataParams) => {
...impôtSociétéConfig(params),
...cipavConfig(params),
...réductionGénéraleConfig(params),
+ ...cessationActivitéConfig(params),
// assistants:
...choixStatutJuridiqueConfig(params),
diff --git a/site/source/pages/simulateurs/_configs/config.ts b/site/source/pages/simulateurs/_configs/config.ts
index e2597cb9a2..312de66d1d 100644
--- a/site/source/pages/simulateurs/_configs/config.ts
+++ b/site/source/pages/simulateurs/_configs/config.ts
@@ -2,11 +2,9 @@ import { ImmutableType } from '@/types/utils'
import { PageConfig } from './types'
-// Replace type by commented line when we upgrade to typescript v5:
-export function config<
- // const Base extends ImmutableType
- Base extends ImmutableType,
->(base: ImmutableType & Base) {
+export function config>(
+ base: ImmutableType & Base
+) {
return {
[base.id]: base,
} as ImmutableType<{ [k in Base['id']]: Base }>
diff --git "a/site/source/pages/simulateurs/auxiliaire-m\303\251dical/config.ts" "b/site/source/pages/simulateurs/auxiliaire-m\303\251dical/config.ts"
index 442008ba1a..28fa47c0dd 100644
--- "a/site/source/pages/simulateurs/auxiliaire-m\303\251dical/config.ts"
+++ "b/site/source/pages/simulateurs/auxiliaire-m\303\251dical/config.ts"
@@ -1,6 +1,7 @@
+import { IndépendantPLSimulation } from '@/pages/simulateurs/indépendant/IndépendantPLSimulation'
+
import { config } from '../_configs/config'
import { SimulatorsDataParams } from '../_configs/types'
-import { IndépendantPLSimulation } from '../indépendant/Indépendant'
import { configAuxiliaire } from '../profession-libérale/simulationConfig'
export function auxiliaireMédicalConfig({
diff --git a/site/source/pages/simulateurs/avocat/config.ts b/site/source/pages/simulateurs/avocat/config.ts
index 49db13e566..11d3b82bb4 100644
--- a/site/source/pages/simulateurs/avocat/config.ts
+++ b/site/source/pages/simulateurs/avocat/config.ts
@@ -1,6 +1,7 @@
+import { IndépendantPLSimulation } from '@/pages/simulateurs/indépendant/IndépendantPLSimulation'
+
import { config } from '../_configs/config'
import { SimulatorsDataParams } from '../_configs/types'
-import { IndépendantPLSimulation } from '../indépendant/Indépendant'
import { configAvocat } from '../profession-libérale/simulationConfig'
export function avocatConfig({ t, sitePaths }: SimulatorsDataParams) {
diff --git "a/site/source/pages/simulateurs/cessation-activit\303\251/CessationActivit\303\251.tsx" "b/site/source/pages/simulateurs/cessation-activit\303\251/CessationActivit\303\251.tsx"
new file mode 100644
index 0000000000..8a93c33b74
--- /dev/null
+++ "b/site/source/pages/simulateurs/cessation-activit\303\251/CessationActivit\303\251.tsx"
@@ -0,0 +1,63 @@
+import { useTranslation } from 'react-i18next'
+import { useSelector } from 'react-redux'
+
+import SimulateurWarning from '@/components/SimulateurWarning'
+import Simulation from '@/components/Simulation'
+import { useParamsFromSituation } from '@/components/utils/useSearchParamsSimulationSharing'
+import { Body } from '@/design-system/typography/paragraphs'
+import useSimulatorsData from '@/hooks/useSimulatorsData'
+import { useSiteUrl } from '@/hooks/useSiteUrl'
+import { CessationActivitéGoals } from '@/pages/simulateurs/cessation-activité/Goals'
+import {
+ companySituationSelector,
+ situationSelector,
+ targetUnitSelector,
+} from '@/store/selectors/simulationSelectors'
+import { omit } from '@/utils'
+
+export const CessationActivitéSimulation = () => {
+ const situation = {
+ ...useSelector(situationSelector),
+ ...useSelector(companySituationSelector),
+ }
+ const targetUnit = useSelector(targetUnitSelector)
+ const filteredSituation = omit(situation, 'entreprise . date de cessation')
+
+ const searchParams = useParamsFromSituation(filteredSituation, targetUnit)
+
+ const path = useSimulatorsData().indépendant.path
+
+ const lien = useSiteUrl() + path + '?' + searchParams.toString()
+
+ const { t } = useTranslation()
+
+ return (
+
+
+
+ Vous êtes travailleur indépendant, vous souhaitez estimer les
+ cotisations dues avant de cesser votre activité. Ce simulateur est
+ là pour vous aider. A noter que le montant indiqué par ce
+ simulateur est une estimation. Seule le "décompte réel de
+ l'Urssaf" vous permettra de connaitre le montant exact.{' '}
+
+
+ Ce simulateur ne tient pas compte des versements
+ déjà effectués et des cotisations provisionnelles déjà appelées
+ ainsi que des éventuelles dettes
+
+ >
+ }
+ />
+
+
+ )
+}
diff --git "a/site/source/pages/simulateurs/cessation-activit\303\251/Goals.tsx" "b/site/source/pages/simulateurs/cessation-activit\303\251/Goals.tsx"
new file mode 100644
index 0000000000..85865fee0c
--- /dev/null
+++ "b/site/source/pages/simulateurs/cessation-activit\303\251/Goals.tsx"
@@ -0,0 +1,60 @@
+import { useTranslation } from 'react-i18next'
+
+import ChiffreAffairesActivitéMixte from '@/components/ChiffreAffairesActivitéMixte'
+import { Condition } from '@/components/EngineValue/Condition'
+import { SimulationGoal, SimulationGoals } from '@/components/Simulation'
+import { CessationActivitéToggles } from '@/pages/simulateurs/cessation-activité/Toggles'
+
+export const CessationActivitéGoals = () => {
+ const { t } = useTranslation()
+
+ return (
+ }
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ )
+}
diff --git "a/site/source/pages/simulateurs/cessation-activit\303\251/Toggles.tsx" "b/site/source/pages/simulateurs/cessation-activit\303\251/Toggles.tsx"
new file mode 100644
index 0000000000..42288dfb0f
--- /dev/null
+++ "b/site/source/pages/simulateurs/cessation-activit\303\251/Toggles.tsx"
@@ -0,0 +1,86 @@
+import { DottedName } from 'modele-social'
+import { useDispatch } from 'react-redux'
+import { styled } from 'styled-components'
+
+import { DefaultValue } from '@/components/conversation/DefaultValue'
+import { ExplicableRule } from '@/components/conversation/Explicable'
+import RuleInput from '@/components/conversation/RuleInput'
+import { useEngine } from '@/components/utils/EngineContext'
+import { H3 } from '@/design-system/typography/heading'
+import { SimpleRuleEvaluation } from '@/domaine/engine/SimpleRuleEvaluation'
+import { ajusteLaSituation } from '@/store/actions/actions'
+import { evaluateQuestion } from '@/utils/publicodes'
+
+const Wrapper = styled.div`
+ flex-shrink: 0;
+ flex-basis: 100%;
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+`
+
+const CessationBlock = styled.div`
+ display: flex;
+ flex-direction: column;
+ align-items: start;
+ margin-bottom: -1rem;
+ margin-top: -3rem;
+`
+
+const ImpositionBlock = styled.div`
+ margin-bottom: 0.5rem;
+`
+
+const CessationDateWrapper = styled.div`
+ margin-top: -1.5rem;
+ margin-bottom: -1.5rem;
+`
+
+export const CessationActivitéToggles = () => {
+ const dispatch = useDispatch()
+ const engine = useEngine()
+
+ return (
+
+
+
+ {evaluateQuestion(
+ engine,
+ engine.getRule('entreprise . date de cessation')
+ )}
+
+
+
+ {
+ dispatch(
+ ajusteLaSituation({
+ 'entreprise . date de cessation': date,
+ } as Record)
+ )
+ }}
+ hideDefaultValue
+ />
+
+
+
+
+
+ {
+ dispatch(
+ ajusteLaSituation({
+ 'entreprise . imposition': imposition,
+ } as Record)
+ )
+ }}
+ />
+
+
+ )
+}
diff --git "a/site/source/pages/simulateurs/cessation-activit\303\251/config.ts" "b/site/source/pages/simulateurs/cessation-activit\303\251/config.ts"
new file mode 100644
index 0000000000..7dc0cd743a
--- /dev/null
+++ "b/site/source/pages/simulateurs/cessation-activit\303\251/config.ts"
@@ -0,0 +1,48 @@
+import { SimulatorsDataParams } from '@/pages/simulateurs/_configs/types'
+import { CessationActivitéSimulation } from '@/pages/simulateurs/cessation-activité/CessationActivité'
+import { configCessationActivité } from '@/pages/simulateurs/cessation-activité/simulationConfig'
+
+import { config } from '../_configs/config'
+
+export function cessationActivitéConfig({
+ t,
+ sitePaths,
+}: SimulatorsDataParams) {
+ return config({
+ id: 'cessation-activité',
+ tracking: 'cessation_activité',
+ icône: '📦',
+ iframePath: 'simulateur-cessation-activité',
+ pathId: 'simulateurs.cessation-activité',
+ shortName: t(
+ 'pages.simulateurs.cessation-activité.shortname',
+ 'Cessation d’activité'
+ ),
+ title: t(
+ 'pages.simulateurs.cessation-activité.title',
+ "Indépendants : Estimation des cotisations pour l'année de cessation"
+ ),
+ meta: {
+ description: t(
+ 'pages.simulateurs.cessation-activité.meta.description',
+ "Estimez vos cotisations de l'année de cessation de votre activité en tant qu’indépendant."
+ ),
+ ogDescription: t(
+ 'pages.simulateurs.cessation-activité.meta.ogDescription',
+ "Estimez vos cotisations de l'année de cessation de votre activité en tant qu’indépendant."
+ ),
+ ogTitle: t(
+ 'pages.simulateurs.cessation-activité.meta.ogTitle',
+ "Indépendants : Estimation des cotisations pour l'année de cessation"
+ ),
+ title: t(
+ 'pages.simulateurs.cessation-activité.meta.titre',
+ "Indépendants : Estimation des cotisations pour l'année de cessation"
+ ),
+ },
+ nextSteps: ['indépendant'],
+ path: sitePaths.simulateurs['cessation-activité'],
+ simulation: configCessationActivité,
+ component: CessationActivitéSimulation,
+ } as const)
+}
diff --git "a/site/source/pages/simulateurs/cessation-activit\303\251/simulationConfig.ts" "b/site/source/pages/simulateurs/cessation-activit\303\251/simulationConfig.ts"
new file mode 100644
index 0000000000..73624908ae
--- /dev/null
+++ "b/site/source/pages/simulateurs/cessation-activit\303\251/simulationConfig.ts"
@@ -0,0 +1,19 @@
+import { SimulationConfig } from '@/domaine/SimulationConfig'
+import { configIndépendant } from '@/pages/simulateurs/indépendant/simulationConfig'
+
+export const configCessationActivité: SimulationConfig = {
+ ...configIndépendant,
+ 'objectifs exclusifs': [
+ "entreprise . chiffre d'affaires",
+ 'dirigeant . rémunération . totale',
+ 'dirigeant . rémunération . net',
+ ],
+ 'unité par défaut': '€/an',
+ questions: {
+ ...configIndépendant.questions,
+ 'liste noire': [
+ ...(configIndépendant.questions?.['liste noire'] || []),
+ 'entreprise . date de cessation',
+ ],
+ },
+}
diff --git a/site/source/pages/simulateurs/chirurgien-dentiste/config.ts b/site/source/pages/simulateurs/chirurgien-dentiste/config.ts
index 40f89297ae..1c5511b872 100644
--- a/site/source/pages/simulateurs/chirurgien-dentiste/config.ts
+++ b/site/source/pages/simulateurs/chirurgien-dentiste/config.ts
@@ -1,6 +1,7 @@
+import { IndépendantPLSimulation } from '@/pages/simulateurs/indépendant/IndépendantPLSimulation'
+
import { config } from '../_configs/config'
import { SimulatorsDataParams } from '../_configs/types'
-import { IndépendantPLSimulation } from '../indépendant/Indépendant'
import { configDentiste } from '../profession-libérale/simulationConfig'
export function chirurgienDentisteConfig({
diff --git a/site/source/pages/simulateurs/cipav/config.tsx b/site/source/pages/simulateurs/cipav/config.tsx
index 41248ff8cb..a47ea33a4d 100644
--- a/site/source/pages/simulateurs/cipav/config.tsx
+++ b/site/source/pages/simulateurs/cipav/config.tsx
@@ -1,6 +1,7 @@
+import { IndépendantPLSimulation } from '@/pages/simulateurs/indépendant/IndépendantPLSimulation'
+
import { config } from '../_configs/config'
import { SimulatorsDataParams } from '../_configs/types'
-import { IndépendantPLSimulation } from '../indépendant/Indépendant'
import cipavSimulationConfig from './simulationConfig'
export function cipavConfig({ t, sitePaths }: SimulatorsDataParams) {
diff --git a/site/source/pages/simulateurs/entreprise-individuelle/config.ts b/site/source/pages/simulateurs/entreprise-individuelle/config.ts
index 3b9ce2dd1b..6a5a5227d2 100644
--- a/site/source/pages/simulateurs/entreprise-individuelle/config.ts
+++ b/site/source/pages/simulateurs/entreprise-individuelle/config.ts
@@ -1,10 +1,9 @@
+import { EntrepriseIndividuelle } from '@/pages/simulateurs/indépendant/EntrepriseIndividuelle'
+import { SeoExplanationsEI } from '@/pages/simulateurs/indépendant/SeoExplanationsEI'
+
import { config } from '../_configs/config'
import { SimulatorsDataParams } from '../_configs/types'
import AutoEntrepreneurPreview from '../_images/AutoEntrepreneurPreview.png'
-import {
- EntrepriseIndividuelle,
- SeoExplanationsEI,
-} from '../indépendant/Indépendant'
import { configEntrepriseIndividuelle } from '../indépendant/simulationConfig'
export function entrepriseIndividuelleConfig({
diff --git a/site/source/pages/simulateurs/expert-comptable/config.ts b/site/source/pages/simulateurs/expert-comptable/config.ts
index e9140fc520..f2237dc4df 100644
--- a/site/source/pages/simulateurs/expert-comptable/config.ts
+++ b/site/source/pages/simulateurs/expert-comptable/config.ts
@@ -1,6 +1,7 @@
+import { IndépendantPLSimulation } from '@/pages/simulateurs/indépendant/IndépendantPLSimulation'
+
import { config } from '../_configs/config'
import { SimulatorsDataParams } from '../_configs/types'
-import { IndépendantPLSimulation } from '../indépendant/Indépendant'
import { configExpertComptable } from '../profession-libérale/simulationConfig'
export function expertComptableConfig({ t, sitePaths }: SimulatorsDataParams) {
diff --git "a/site/source/pages/simulateurs/ind\303\251pendant/EntrepriseIndividuelle.tsx" "b/site/source/pages/simulateurs/ind\303\251pendant/EntrepriseIndividuelle.tsx"
new file mode 100644
index 0000000000..1f7a8590df
--- /dev/null
+++ "b/site/source/pages/simulateurs/ind\303\251pendant/EntrepriseIndividuelle.tsx"
@@ -0,0 +1,17 @@
+import { SelectSimulationYear } from '@/components/SelectSimulationYear'
+import SimulateurWarning from '@/components/SimulateurWarning'
+import Simulation from '@/components/Simulation'
+import IndépendantExplanation from '@/components/simulationExplanation/IndépendantExplanation'
+import { IndépendantSimulationGoals } from '@/pages/simulateurs/indépendant/Goals'
+
+export const EntrepriseIndividuelle = () => (
+ <>
+ }
+ afterQuestionsSlot={}
+ >
+
+
+
+ >
+)
diff --git "a/site/source/pages/simulateurs/ind\303\251pendant/Goals.tsx" "b/site/source/pages/simulateurs/ind\303\251pendant/Goals.tsx"
new file mode 100644
index 0000000000..1ad1d6efb4
--- /dev/null
+++ "b/site/source/pages/simulateurs/ind\303\251pendant/Goals.tsx"
@@ -0,0 +1,53 @@
+import ChiffreAffairesActivitéMixte from '@/components/ChiffreAffairesActivitéMixte'
+import { Condition } from '@/components/EngineValue/Condition'
+import PeriodSwitch from '@/components/PeriodSwitch'
+import { SimulationGoal, SimulationGoals } from '@/components/Simulation'
+
+export const IndépendantSimulationGoals = ({
+ toggles = ,
+ legend,
+}: {
+ toggles?: React.ReactNode
+ legend: string
+}) => (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+)
diff --git "a/site/source/pages/simulateurs/ind\303\251pendant/Ind\303\251pendant.tsx" "b/site/source/pages/simulateurs/ind\303\251pendant/Ind\303\251pendant.tsx"
index e2452fb9b5..29788090fd 100644
--- "a/site/source/pages/simulateurs/ind\303\251pendant/Ind\303\251pendant.tsx"
+++ "b/site/source/pages/simulateurs/ind\303\251pendant/Ind\303\251pendant.tsx"
@@ -1,121 +1,16 @@
import { DottedName } from 'modele-social'
-import { Trans } from 'react-i18next'
import { useDispatch } from 'react-redux'
-import ChiffreAffairesActivitéMixte from '@/components/ChiffreAffairesActivitéMixte'
import RuleInput from '@/components/conversation/RuleInput'
-import { Condition } from '@/components/EngineValue/Condition'
import PeriodSwitch from '@/components/PeriodSwitch'
-import RuleLink from '@/components/RuleLink'
import { SelectSimulationYear } from '@/components/SelectSimulationYear'
import SimulateurWarning from '@/components/SimulateurWarning'
-import Simulation, {
- SimulationGoal,
- SimulationGoals,
-} from '@/components/Simulation'
+import Simulation from '@/components/Simulation'
import IndépendantExplanation from '@/components/simulationExplanation/IndépendantExplanation'
-import { Message } from '@/design-system'
-import { Emoji } from '@/design-system/emoji'
-import { H2 } from '@/design-system/typography/heading'
-import { Body } from '@/design-system/typography/paragraphs'
import { SimpleRuleEvaluation } from '@/domaine/engine/SimpleRuleEvaluation'
+import { IndépendantSimulationGoals } from '@/pages/simulateurs/indépendant/Goals'
import { ajusteLaSituation } from '@/store/actions/actions'
-export function IndépendantPLSimulation() {
- return (
- <>
- }
- afterQuestionsSlot={}
- >
-
-
-
- >
- )
-}
-
-export function EntrepriseIndividuelle() {
- return (
- <>
- }
- afterQuestionsSlot={}
- >
-
-
-
- >
- )
-}
-
-export const SeoExplanationsEI = () => (
-
-
- Comment calculer le revenu net d'un dirigeant d'entreprise individuelle
- (EI) ?
-
-
- Un dirigeant d'entreprise individuelle doit payer des cotisations et
- contributions sociales à l'administration. Ces cotisations servent au
- financement de la sécurité sociale, et ouvrent des droits notamment pour
- la retraite et pour l'assurance maladie. Elles permettent également de
- financer la formation professionnelle.
-
-
- {' '}
-
- Voir le détail du calcul des cotisations
-
-
-
- Il ne faut pas oublier de retrancher toutes les dépenses effectuées dans
- le cadre de l'activité professionnelle (équipements, matières premières,
- local, transport). Ces dernières sont déductibles du résultat de
- l'entreprise, cela veut dire que vous ne payerez pas d'impôt ou de
- cotisations sur leur montant (sauf si vous avez opté pour l'option
- micro-fiscal).
-
- La formule de calcul complète est donc :
-
- Revenu net = Chiffres d'affaires − Dépenses professionnelles - Cotisations
- sociales
-
-
- Comment calculer les cotisations sociales d'une entreprise individuelle ?
-
-
- Le dirigeant d'une entreprise individuelle paye des cotisations sociales,
- proportionnelle au{' '}
-
- résultat fiscal
- {' '}
- de l'entreprise. Leur montant varie également en fonction du type
- d'activité (profession libérale, artisan, commerçants, etc), où des
- éventuelles exonérations accordées (ACRE, ZFU, RSA, etc.).
-
-
- {' '}
- Comme le résultat d'une entreprise n'est connu qu'à la fin de l'exercice
- comptable, le dirigeant paye des cotisations provisionnelles qui seront
- ensuite régularisée une fois le revenu réel déclaré, l'année suivante.
-
-
- Ce simulateur permet de calculer le montant exact des cotisations sociale
- en partant d'un chiffre d'affaires ou d'un revenu net souhaité. Vous
- pourrez préciser votre situation en répondant aux questions s'affichant en
- dessous de la simulation.
-
-
-)
-
export default function IndépendantSimulation() {
const dispatch = useDispatch()
@@ -151,58 +46,3 @@ export default function IndépendantSimulation() {
>
)
}
-
-function IndépendantSimulationGoals({
- toggles = ,
- legend,
-}: {
- toggles?: React.ReactNode
- legend: string
-}) {
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- )
-}
diff --git "a/site/source/pages/simulateurs/ind\303\251pendant/Ind\303\251pendantPLSimulation.tsx" "b/site/source/pages/simulateurs/ind\303\251pendant/Ind\303\251pendantPLSimulation.tsx"
new file mode 100644
index 0000000000..fe23fed127
--- /dev/null
+++ "b/site/source/pages/simulateurs/ind\303\251pendant/Ind\303\251pendantPLSimulation.tsx"
@@ -0,0 +1,17 @@
+import { SelectSimulationYear } from '@/components/SelectSimulationYear'
+import SimulateurWarning from '@/components/SimulateurWarning'
+import Simulation from '@/components/Simulation'
+import IndépendantExplanation from '@/components/simulationExplanation/IndépendantExplanation'
+import { IndépendantSimulationGoals } from '@/pages/simulateurs/indépendant/Goals'
+
+export const IndépendantPLSimulation = () => (
+ <>
+ }
+ afterQuestionsSlot={}
+ >
+
+
+
+ >
+)
diff --git "a/site/source/pages/simulateurs/ind\303\251pendant/SeoExplanationsEI.tsx" "b/site/source/pages/simulateurs/ind\303\251pendant/SeoExplanationsEI.tsx"
new file mode 100644
index 0000000000..37f9a2f6c8
--- /dev/null
+++ "b/site/source/pages/simulateurs/ind\303\251pendant/SeoExplanationsEI.tsx"
@@ -0,0 +1,74 @@
+import { Trans } from 'react-i18next'
+
+import RuleLink from '@/components/RuleLink'
+import { Message } from '@/design-system'
+import { Emoji } from '@/design-system/emoji'
+import { H2 } from '@/design-system/typography/heading'
+import { Body } from '@/design-system/typography/paragraphs'
+
+export const SeoExplanationsEI = () => (
+
+
+ Comment calculer le revenu net d'un dirigeant d'entreprise individuelle
+ (EI) ?
+
+
+ Un dirigeant d'entreprise individuelle doit payer des cotisations et
+ contributions sociales à l'administration. Ces cotisations servent au
+ financement de la sécurité sociale, et ouvrent des droits notamment pour
+ la retraite et pour l'assurance maladie. Elles permettent également de
+ financer la formation professionnelle.
+
+
+ {' '}
+
+ Voir le détail du calcul des cotisations
+
+
+
+ Il ne faut pas oublier de retrancher toutes les dépenses effectuées dans
+ le cadre de l'activité professionnelle (équipements, matières premières,
+ local, transport). Ces dernières sont déductibles du résultat de
+ l'entreprise, cela veut dire que vous ne payerez pas d'impôt ou de
+ cotisations sur leur montant (sauf si vous avez opté pour l'option
+ micro-fiscal).
+
+ La formule de calcul complète est donc :
+
+ Revenu net = Chiffres d'affaires − Dépenses professionnelles - Cotisations
+ sociales
+
+
+ Comment calculer les cotisations sociales d'une entreprise individuelle ?
+