From 53b28a18581083f27511393c8b71ba0fc99ac5bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Rialland?= Date: Mon, 27 Feb 2023 20:15:42 +0100 Subject: [PATCH] =?UTF-8?q?Remove=20exon=C3=A9ration-covid?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../exonération-covid/ExonérationCovid.tsx | 179 ------- .../exonération-covid/FormulaireS1S1Bis.tsx | 496 ------------------ .../exonération-covid/FormulaireS2.tsx | 369 ------------- .../Simulateurs/exonération-covid/Recap.tsx | 57 -- .../Simulateurs/exonération-covid/Table.tsx | 233 -------- .../Simulateurs/exonération-covid/config.ts | 34 -- .../Simulateurs/exonération-covid/index.tsx | 43 -- site/source/pages/Simulateurs/metadata-src.ts | 2 - .../config.ts | 4 +- .../declaration-revenu-independants/config.ts | 5 +- site/source/sitePaths.ts | 2 - 11 files changed, 3 insertions(+), 1421 deletions(-) delete mode 100644 site/source/pages/Simulateurs/exonération-covid/ExonérationCovid.tsx delete mode 100644 site/source/pages/Simulateurs/exonération-covid/FormulaireS1S1Bis.tsx delete mode 100644 site/source/pages/Simulateurs/exonération-covid/FormulaireS2.tsx delete mode 100644 site/source/pages/Simulateurs/exonération-covid/Recap.tsx delete mode 100644 site/source/pages/Simulateurs/exonération-covid/Table.tsx delete mode 100644 site/source/pages/Simulateurs/exonération-covid/config.ts delete mode 100644 site/source/pages/Simulateurs/exonération-covid/index.tsx diff --git a/site/source/pages/Simulateurs/exonération-covid/ExonérationCovid.tsx b/site/source/pages/Simulateurs/exonération-covid/ExonérationCovid.tsx deleted file mode 100644 index b563f43e9..000000000 --- a/site/source/pages/Simulateurs/exonération-covid/ExonérationCovid.tsx +++ /dev/null @@ -1,179 +0,0 @@ -import { DottedName as ExoCovidDottedNames } from 'exoneration-covid' -import { PublicodesExpression } from 'publicodes' -import { useCallback, useEffect } from 'react' -import { Trans, useTranslation } from 'react-i18next' -import { - createSearchParams, - useLocation, - useSearchParams, -} from 'react-router-dom' - -import { TrackPage } from '@/components/ATInternetTracking' -import { ExplicableRule } from '@/components/conversation/Explicable' -import RuleInput from '@/components/conversation/RuleInput' -import { - SituationStateProvider, - useSynchronizedSituationState, -} from '@/components/utils/SituationContext' -import { Button } from '@/design-system/buttons' -import { Grid, Spacing } from '@/design-system/layout' -import { H3 } from '@/design-system/typography/heading' - -import { useExoCovidEngine } from '.' -import { FormulaireS1S1Bis } from './FormulaireS1S1Bis' -import { FormulaireS2 } from './FormulaireS2' - -const rootDottedNames = [ - 'secteur', - "début d'activité", - "lieu d'exercice", -] as const - -export const ExonérationCovid = () => { - const location = useLocation() - const [searchParams] = useSearchParams() - const params = Object.fromEntries(searchParams.entries()) as { - [key in (typeof rootDottedNames)[number]]?: string - } - - const { t } = useTranslation() - - useEffect(() => { - window.scrollTo(0, 0) - }, [location]) - - const engine = useExoCovidEngine() - const situationState = useSynchronizedSituationState(engine, params) - const { situation, setSituation } = situationState - - const updateSituation = useCallback( - (name: ExoCovidDottedNames, value: PublicodesExpression | undefined) => { - setSituation({ ...situation, [name]: value }) - }, - [setSituation, situation] - ) - - const setStep1Situation = useCallback(() => { - const step1Situation = Object.fromEntries( - Object.entries(situation).filter(([dotName]) => - (rootDottedNames as readonly string[]).includes(dotName) - ) - ) - setSituation(step1Situation) - }, [setSituation, situation]) - - const step2 = rootDottedNames.every((names) => params[names]) - - return ( - - {step2 ? ( - engine.evaluate('secteur').nodeValue !== 'S2' ? ( - <> - - - - ) : ( - <> - - - - - ) - ) : ( - <> - - -

- {engine.getRule('secteur').rawNode.question} - -

-
- - - updateSituation('secteur', value)} - /> - - - -

- {engine.getRule("début d'activité").rawNode.question} -

-
- - - updateSituation("début d'activité", value)} - /> - - - -

- {engine.getRule("lieu d'exercice").rawNode.question} -

-
- - - updateSituation("lieu d'exercice", value)} - /> - - - )} - - - - - - {step2 ? ( - - ) : ( - - )} - - - - -
- ) -} diff --git a/site/source/pages/Simulateurs/exonération-covid/FormulaireS1S1Bis.tsx b/site/source/pages/Simulateurs/exonération-covid/FormulaireS1S1Bis.tsx deleted file mode 100644 index 047e225a9..000000000 --- a/site/source/pages/Simulateurs/exonération-covid/FormulaireS1S1Bis.tsx +++ /dev/null @@ -1,496 +0,0 @@ -import { DottedName as ExoCovidDottedNames } from 'exoneration-covid' -import Engine, { EvaluatedNode, PublicodesExpression } from 'publicodes' -import { Key, useRef } from 'react' -import { Trans, useTranslation } from 'react-i18next' - -import Value from '@/components/EngineValue' -import { ExplicableRule } from '@/components/conversation/Explicable' -import { Situation } from '@/components/utils/SituationContext' -import { Grid, Spacing } from '@/design-system/layout' -import { H3 } from '@/design-system/typography/heading' -import { Li, Ul } from '@/design-system/typography/list' -import { Body } from '@/design-system/typography/paragraphs' - -import { useExoCovidEngine, useExoCovidSituationState } from '.' -import { Bold, GridTotal, Italic, Recap, RecapExpert, Total } from './Recap' -import { Row, Table, Tbody, Th, Thead, Tr } from './Table' - -const getTotalByMonth = ( - engine: Engine, - situation: Situation -) => { - const ret = Object.fromEntries( - Object.entries(situation) - .filter(([monthDottedName]) => monthDottedName.startsWith('mois . ')) - .map(([monthDottedName]) => { - const parsedRules = engine.getParsedRules() - - const exoSelected = ( - engine.evaluate(monthDottedName) as EvaluatedNode - ).nodeValue - - const exoApplicable = - typeof exoSelected === 'string' && - monthDottedName + ' . ' + exoSelected in parsedRules && - engine.evaluate(monthDottedName + ' . ' + exoSelected).nodeValue - - if ( - !exoApplicable || - !(exoSelected + ' . montant mensuel' in parsedRules) - ) { - return [monthDottedName, undefined] - } - - const value = engine.evaluate( - exoSelected + ' . montant mensuel' - ) as EvaluatedNode - - return [monthDottedName, value] - }) - ) - - return ret -} - -interface Props { - onChange?: ( - dottedName: ExoCovidDottedNames, - value: PublicodesExpression - ) => void -} - -export const FormulaireS1S1Bis = ({ onChange }: Props) => { - const engine = useExoCovidEngine() - const { t } = useTranslation() - const { situation = {} } = useExoCovidSituationState() - - const selectedKey = useRef<{ [key: string]: Key | undefined }>({}) - - const totalByMonth = getTotalByMonth(engine, situation) ?? {} - - if (!engine.evaluate('mois').nodeValue) { - return null - } - - const months = Object.entries(engine.getParsedRules()).filter(([name]) => - name.match(/^mois \. [^.]*$/) - ) - - const formatZeroToEmpty = (str?: string) => - typeof str === 'undefined' || str === '0' ? t('vide') : str - - const formatYesNo = (str?: string | null) => - str?.startsWith('O') ? t('oui') : t('non') - - let isAnyRowShowed = false - - return ( - <> -

- {engine.getRule('secteur . S1 ou S1bis').rawNode.question} - -

- - - - - - - - - - - - - - {months.map(([dotName, node], i) => { - const showRow = engine.evaluate(dotName).nodeValue !== null - - if (!showRow) { - if (isAnyRowShowed) { - return ( - - ) - } - - return null - } - isAnyRowShowed = true - - return ( - { - selectedKey.current[dotName] = key - const val = (key as string).replace(/\.\d+$/, '') - onChange?.(dotName as ExoCovidDottedNames, `'${val}'`) - }} - key={dotName} - /> - ) - })} - -
- - Tableau affichant pour chaque mois de la période précédemment - sélectionnée le montant de réductions pour la situation - sélectionnée. - -
MoisSituation liée à la crise sanitaireMontant de la réduction
- - - - - - - - - Dispositif loi de financement de la sécurité sociale (LFSS) pour - 2021 - - - - Mesure d’interdiction d’accueil du public ou baisse d’au moins - 50% (ou 65% à compter de décembre 2021) du chiffre d’affaires - - - - - - - - - - - - - - - Baisse entre 30% et 64% du chiffre d'affaires - - - - - - - - - - -
- - - - - - Dispositif loi de finances rectificative (LFR1) pour 2021 - - - Éligibilité aux mois de mars, avril ou mai 2021 - - - - - - - - - - -
- - - - - - Montant total de l'exonération Covid applicable aux cotisations - 2021 - - - - L'exonération correspondante s'impute sur les cotisations et - contributions sociale définitives 2021, hors CFP (contribution à - la formation professionnelle) et CURPS (contribution aux unions - régionales des professionnels de santé), dans la limite des - cotisations restant dues à l'Urssaf. - - - - - - - - - - -
- - - - -

Résumé

-
- - -
  • - - Secteur d'activité dont relève l'activité principale :{' '} - - - {engine.evaluate('secteur').nodeValue as string} - -
  • -
  • - Activité exercée en - - {engine.evaluate("lieu d'exercice").nodeValue as string} - -
  • -
  • - Début d'activité : - - {engine.evaluate("début d'activité").nodeValue as string} - -
  • -
  • - - Nombres de mois pour lesquels vous remplissez les conditions - d'éligibilité - -
      -
    • - LFSS :{' '} - - - -
    • -
    • - LFR1 :{' '} - - - -
    • -
    -
  • -
    -
    - - - -

    Résumé pour les tiers-déclarants

    - - Reportez les éléments entre parenthèses dans la déclaration EDI de - votre client - -
    - - -
  • - - Secteur d'activité dont relève l'activité principale :{' '} - - - {engine.evaluate('secteur').nodeValue as string} - - ( - - {engine.evaluate('code . secteur').nodeValue as string} - - ) -
  • - -
  • - Activité exercée en - - {engine.evaluate("lieu d'exercice").nodeValue as string} - - ( - - {engine.evaluate("code . lieu d'exercice").nodeValue as string} - - ) -
  • - -
  • - Début d'activité : - - {engine.evaluate("début d'activité").nodeValue as string} - - ( - - {engine.evaluate("code . début d'activité").nodeValue as string} - - ) -
  • - -
  • - Eligibilité LFSS : - - {formatYesNo( - engine.evaluate('code . LFSS').nodeValue as string - )} - {' '} - ( - - { - engine - .evaluate('code . LFSS') - .nodeValue?.toString() - .split(';')[0] - } - - ) -
  • - -
  • - Eligibilité LFR : - - {formatYesNo( - engine.evaluate('code . LFR1').nodeValue as string - )} - {' '} - ( - - { - (engine.evaluate('code . LFR1').nodeValue as string)?.split( - ';' - )[0] - } - - ) -
  • - -
  • - Nombre de mois LFSS 600 : - - - {' '} - ( - - {formatZeroToEmpty( - engine - .evaluate('LFSS 600 . mois éligibles') - .nodeValue?.toString() - )} - - ) -
  • - -
  • - Nombre de mois LFSS 300 : - - - {' '} - ( - - {formatZeroToEmpty( - engine - .evaluate('LFSS 300 . mois éligibles') - .nodeValue?.toString() - )} - - ) -
  • - -
  • - Nombre de mois LFR : - - - {' '} - ( - - {formatZeroToEmpty( - engine.evaluate('LFR1 . mois éligibles').nodeValue?.toString() - )} - - ) -
  • -
    -
    -
    - - ) -} diff --git a/site/source/pages/Simulateurs/exonération-covid/FormulaireS2.tsx b/site/source/pages/Simulateurs/exonération-covid/FormulaireS2.tsx deleted file mode 100644 index 689d13996..000000000 --- a/site/source/pages/Simulateurs/exonération-covid/FormulaireS2.tsx +++ /dev/null @@ -1,369 +0,0 @@ -import { DottedName as ExoCovidDottedNames } from 'exoneration-covid' -import { Evaluation, PublicodesExpression } from 'publicodes' -import { Trans, useTranslation } from 'react-i18next' -import styled from 'styled-components' - -import Value from '@/components/EngineValue' -import { Radio, ToggleGroup } from '@/design-system/field' -import { Grid, Spacing } from '@/design-system/layout' -import { H3 } from '@/design-system/typography/heading' -import { Li } from '@/design-system/typography/list' -import { Body } from '@/design-system/typography/paragraphs' - -import { useExoCovidEngine } from '.' -import { Bold, GridTotal, Italic, Recap, RecapExpert, Total } from './Recap' - -const Info = styled(Body)` - background-color: ${({ theme }) => theme.colors.extended.info['100']}; - padding: 1rem; - border: 2px solid ${({ theme }) => theme.colors.extended.info['300']}; - border-radius: 0.35rem; - color: ${({ theme }) => theme.colors.bases.tertiary[700]}; -` - -export const FormulaireS2 = ({ - onChange, -}: { - onChange?: ( - dottedName: ExoCovidDottedNames, - value: PublicodesExpression - ) => void -}) => { - const engine = useExoCovidEngine() - const { t } = useTranslation() - - const monthNames = [ - t('janvier'), - t('février'), - t('mars'), - t('avril'), - t('mai'), - t('juin'), - t('juillet'), - t('août'), - t('septembre'), - t('octobre'), - t('novembre'), - t('décembre'), - ] - - const exoS2Applicable = engine.evaluate('exonération S2').nodeValue !== null - - const [firstMonth, firstYear] = ( - (engine.evaluate('exonération S2 . mois éligibles . premier mois') - .nodeValue as Evaluation) || '' - ) - .slice(3) - .split('/') - .map((x) => parseInt(x)) - - const [lastMonth, lastYear] = ( - (engine.evaluate('exonération S2 . mois éligibles . dernier mois') - .nodeValue as Evaluation) || '' - ) - .slice(3) - .split('/') - .map((x) => parseInt(x)) - - const monthCount = - (engine.evaluate('exonération S2 . mois éligibles . plafond') - .nodeValue as Evaluation) ?? 0 - - const formatZeroToEmpty = (str?: string) => - typeof str === 'undefined' || str === '0' ? t('vide') : str - - const formatYesNo = (str?: string | null) => - str?.startsWith('O') ? t('oui') : t('non') - - return ( - <> - {exoS2Applicable ? ( - <> - - {/* @ts-ignore ignore ReactI18NextChildren error */} -

    - Entre début {{ firstMonth: monthNames[firstMonth - 1] }}{' '} - {{ firstYear: firstYear.toString() }} et fin{' '} - {{ lastMonth: monthNames[lastMonth - 1] }}{' '} - {{ lastYear: lastYear.toString() }}, combien de mois avez-vous été - impacté par la crise sanitaire ? -

    - - Précisez le nombre de mois durant lesquels vous avez fait l’objet - d’une mesure d’interdiction affectant de manière prépondérante la - poursuite de votre activité. - -
    - - { - onChange?.('exonération S2 . mois éligibles', { - valeur, - unité: 'mois', - }) - }} - > - {new Array(monthCount + 1).fill(null).map((_, i) => ( - - {i} - - ))} - - - - - - - - - - Dispositif loi de financement de la sécurité sociale (LFSS) - pour 2021 - - - - Mesure d’interdiction affectant de manière prépondérante la - poursuite de votre activité - - - - - - - - - - - -
    - - - - - - Montant total de l'exonération Covid applicable aux - cotisations 2021 - - - - L'exonération correspondante s'impute sur les cotisations et - contributions sociale définitives 2021, hors CFP - (contribution à la formation professionnelle) et CURPS - (contribution aux unions régionales des professionnels de - santé), dans la limite des cotisations restant dues à - l'Urssaf. - - - - - - - - - - -
    - - ) : ( - - - Vous n'êtes pas concerné par l'exonération de cotisations Covid pour - les indépendants. - - - )} - - - - -

    Résumé

    -
    - - -
  • - - Secteur d'activité dont relève l'activité principale :{' '} - - - {engine.evaluate('secteur').nodeValue as string} - -
  • -
  • - Activité exercée en - - {engine.evaluate("lieu d'exercice").nodeValue as string} - -
  • -
  • - Début d'activité : - - {engine.evaluate("début d'activité").nodeValue as string} - -
  • -
  • - - Nombres de mois pour lesquels vous remplissez les conditions - d'éligibilité :{' '} - - - - -
  • -
    -
    - - - -

    Résumé pour les tiers-déclarants

    - - Reportez les éléments entre parenthèses dans la déclaration EDI de - votre client - -
    - - {engine.evaluate('code . secteur').nodeValue as string} - -
  • - - Secteur d'activité dont relève l'activité principale :{' '} - - - {engine.evaluate('secteur').nodeValue as string} - {' '} - () -
  • - -
  • - Activité exercée en - - {engine.evaluate("lieu d'exercice").nodeValue as string} - {' '} - ( - - {engine.evaluate("code . lieu d'exercice").nodeValue as string} - - ) -
  • - -
  • - Début d'activité : - - {engine.evaluate("début d'activité").nodeValue as string} - {' '} - ( - - {engine.evaluate("code . début d'activité").nodeValue as string} - - ) -
  • - -
  • - Eligibilité LFSS : - - {formatYesNo( - engine.evaluate('code . LFSS').nodeValue as Evaluation - )} - {' '} - ( - - { - engine - .evaluate('code . LFSS') - .nodeValue?.toString() - .split(';')[0] - } - - ) -
  • - -
  • - Eligibilité LFR : - - {formatYesNo( - engine.evaluate('code . LFR1').nodeValue?.toString() - )} - {' '} - ( - - {engine.evaluate('code . LFR1').nodeValue as string} - - ) -
  • - -
  • - Nombre de mois LFSS 600 : - - - {' '} - ( - - {formatZeroToEmpty( - engine - .evaluate('exonération S2 . mois éligibles') - .nodeValue?.toString() - )} - - ) -
  • - -
  • - Nombre de mois LFSS 300 : - 0 mois ({t('vide')}) -
  • - -
  • - Nombre de mois LFR : - - - {' '} - ( - - {formatZeroToEmpty( - engine.evaluate('LFR1 . mois éligibles').nodeValue?.toString() - )} - - ) -
  • -
    -
    -
    - - ) -} diff --git a/site/source/pages/Simulateurs/exonération-covid/Recap.tsx b/site/source/pages/Simulateurs/exonération-covid/Recap.tsx deleted file mode 100644 index f4ada2108..000000000 --- a/site/source/pages/Simulateurs/exonération-covid/Recap.tsx +++ /dev/null @@ -1,57 +0,0 @@ -import styled, { css } from 'styled-components' - -import { Grid } from '@/design-system/layout' -import { Ul } from '@/design-system/typography/list' -import { baseParagraphStyle } from '@/design-system/typography/paragraphs' - -export const Recap = styled.div` - background: ${({ theme }) => { - const colorPalette = theme.colors.bases.primary - - return css`linear-gradient(60deg, ${colorPalette[800]} 0%, ${colorPalette[600]} 100%);` - }}; - color: inherit; - border-radius: 0.25rem; - padding: 1.5rem; - ${baseParagraphStyle} - line-height: 1.5rem; - color: white; - - hr { - border-color: ${({ theme }) => theme.colors.bases.primary[500]}; - margin-bottom: 1rem; - width: 100%; - } -` - -export const Bold = styled.div` - font-weight: 700; - margin-bottom: 0.5rem; -` - -export const Italic = styled.div` - font-style: italic; - margin-bottom: 0.5rem; -` - -export const GridTotal = styled(Grid)` - ${Bold} { - font-size: 1.25rem; - line-height: 1.5rem; - font-weight: 700; - } -` - -export const Total = styled.div` - display: flex; - justify-content: flex-end; - margin-bottom: 0.5rem; - padding-left: 1rem; -` - -export const RecapExpert = styled(Ul)` - border-radius: 0.25rem; - padding: 0 1.5rem; - ${baseParagraphStyle} - line-height: 1.5rem; -` diff --git a/site/source/pages/Simulateurs/exonération-covid/Table.tsx b/site/source/pages/Simulateurs/exonération-covid/Table.tsx deleted file mode 100644 index 208ed2196..000000000 --- a/site/source/pages/Simulateurs/exonération-covid/Table.tsx +++ /dev/null @@ -1,233 +0,0 @@ -import { DottedName as ExoCovidDottedNames } from 'exoneration-covid' -import { EvaluatedNode, formatValue } from 'publicodes' -import { Key } from 'react' -import { Trans, useTranslation } from 'react-i18next' -import styled, { css } from 'styled-components' - -import { Item, Select } from '@/design-system/field/Select' -import { baseParagraphStyle } from '@/design-system/typography/paragraphs' -import { getMeta } from '@/utils' - -import { useExoCovidEngine } from '.' - -export const Th = styled.th<{ alignSelf?: string }>` - flex: 2; - word-break: break-word; - ${({ alignSelf }) => - alignSelf - ? css` - align-self: ${alignSelf}; - ` - : ''} -` - -const Td = styled.td` - flex: 2; - word-break: break-word; - margin: 0.5rem 0; -` - -const ThRow = styled.th` - flex: 2; - word-break: break-word; - margin: 0.5rem 0; - - &:first-child { - flex: 1 1 0%; - } -` - -export const Tr = styled.tr` - display: flex; - flex-direction: column; - align-items: stretch; - flex: 1; - word-break: break-word; - padding: 1rem; - - &:first-child { - @media (max-width: ${({ theme }) => theme.breakpointsWidth.sm}) { - border-radius: 0.35rem 0.35rem 0 0; - } - } - &:last-child { - border-radius: 0 0 0.35rem 0.35rem; - } - - ${Td}:last-child { - text-align: right; - } - ${Td}:first-child, ${Td}:last-child, ${Th}:first-child, ${Th}:last-child { - flex: 1; - } - @media (min-width: ${({ theme }) => theme.breakpointsWidth.sm}) { - flex-direction: initial; - align-items: center; - } -` - -export const Thead = styled.thead` - background: ${({ theme }) => theme.colors.bases.primary[200]}; - color: ${({ theme }) => theme.colors.bases.primary[700]}; - - &:first-child { - border-radius: 0.35rem 0.35rem 0 0; - flex: 1; - } - - @media (max-width: ${({ theme }) => theme.breakpointsWidth.sm}) { - display: none; - } -` - -export const Tbody = styled.tbody` - ${Tr}:nth-child(odd) { - background: ${({ theme }) => - theme.darkMode ? 'transparent' : theme.colors.extended.grey[200]}; - } -` - -export const Table = styled.table` - display: flex; - flex-direction: column; - text-align: left; - border: 1px solid ${({ theme }) => theme.colors.extended.grey[400]}; - border-radius: 0.35rem; - ${baseParagraphStyle} - font-weight: bold; -` - -const Empty = styled.div` - display: inline-block; - background: ${({ theme }) => theme.colors.extended.grey[300]}; - padding: 0.25rem 1rem; - border-radius: 0.25rem; - font-weight: 500; - font-size: 0.9rem; -` - -type RowProps = { - dottedNames: ExoCovidDottedNames[] - actualMonth: string - title?: string - total?: EvaluatedNode - onSelectionChange?: (key: Key) => void - defaultSelectedKey?: Key -} - -export const Row = ({ - title, - total, - dottedNames, - actualMonth, - defaultSelectedKey, - onSelectionChange, -}: RowProps) => { - const { t } = useTranslation() - - const engine = useExoCovidEngine() - - const choices = { - non: [t('Aucun (0 €)')], - 'LFSS 600': [ - t("Interdiction d'accueil du public (600 €)"), - t("Baisse d'au moins 50% du chiffre d'affaires mensuel (600 €)"), - ], - 'LFSS 600 65%': [ - t("Interdiction d'accueil du public (600 €)"), - t("Baisse d'au moins 65% du chiffre d'affaires mensuel (600 €)"), - ], - 'LFSS 300': [ - t("Baisse entre 30% et 64% du chiffre d'affaires mensuel (300 €)"), - ], - LFR1: [t('Eligibilité aux mois de mars, avril ou mai 2021 (250 €)')], - } - - const items = dottedNames - .map((rule) => engine.getRule(rule)) - .filter( - (node) => - node.dottedName && - actualMonth + ' . ' + node.dottedName in engine.getParsedRules() && - engine.evaluate(actualMonth + ' . ' + node.dottedName).nodeValue !== - null && - (node.dottedName + ' applicable' in engine.getParsedRules() - ? engine.evaluate(node.dottedName + ' applicable').nodeValue - : true) - ) - .flatMap((node) => { - const name = (actualMonth + - ' . ' + - node.dottedName) as ExoCovidDottedNames - const rawNode = engine.getRule(name).rawNode - - type Meta = { "baisse d'au moins"?: string } - const percent = getMeta(rawNode, {})?.["baisse d'au moins"] - - const choice = (node.dottedName + - (percent ? ' ' + percent : '')) as keyof typeof choices - - const lieu = engine.evaluate("lieu d'exercice").nodeValue - - return choices[choice] - .filter((_, i) => { - const hideChoice1 = !( - i === 1 && - choice.startsWith('LFSS 600') && - ((lieu === 'métropole' && - ['mois . juin 2021', 'mois . juillet 2021'].includes( - actualMonth - )) || - (lieu === 'outre-mer' && - [ - 'mois . juin 2021', - 'mois . juillet 2021', - 'mois . octobre 2021', - 'mois . novembre 2021', - ].includes(actualMonth))) - ) - - return hideChoice1 - }) - .map((text, i) => ({ - key: node.dottedName + `.${i}`, - text, - })) - }) - .filter((x: T | null): x is T => Boolean(x)) - - if (items.length > 0) { - items.unshift({ key: 'non', text: choices.non[0] }) - } - - return ( - - {title} - - {items.length > 0 ? ( - - ) : ( - - Mois non concerné - - )} - - - {(items.length > 0 && - typeof total?.nodeValue === 'number' && - (formatValue(total) as string)) || - '-'} - - - ) -} diff --git a/site/source/pages/Simulateurs/exonération-covid/config.ts b/site/source/pages/Simulateurs/exonération-covid/config.ts deleted file mode 100644 index b50a041ee..000000000 --- a/site/source/pages/Simulateurs/exonération-covid/config.ts +++ /dev/null @@ -1,34 +0,0 @@ -import ExonérationCovid from '.' -import { config } from '../configs/config' -import { SimulatorsDataParams } from '../configs/types' - -export function exonérationCovidConfig({ t, sitePaths }: SimulatorsDataParams) { - return config({ - id: 'exonération-covid', - icône: '😷', - tracking: 'exoneration_covid', - iframePath: 'exoneration-covid', - pathId: 'simulateurs.exonération-covid', - meta: { - title: t( - 'pages.simulateurs.exonération-covid.meta.title', - 'Exonération de cotisations covid' - ), - description: t( - 'pages.simulateurs.exonération-covid.meta.description', - 'Déterminez les éléments à déclarer pour bénéficier de l’exonération Covid et obtenir les codes « norme EDI »' - ), - }, - shortName: t( - 'pages.simulateurs.exonération-covid.shortName', - 'Simulateur d’exonération COVID' - ), - title: t( - 'pages.simulateurs.exonération-covid.title', - 'Simulateur d’exonération de cotisations Covid pour indépendant' - ), - nextSteps: ['déclaration-charges-sociales-indépendant'], - path: sitePaths.simulateurs['exonération-covid'], - component: ExonérationCovid, - } as const) -} diff --git a/site/source/pages/Simulateurs/exonération-covid/index.tsx b/site/source/pages/Simulateurs/exonération-covid/index.tsx deleted file mode 100644 index 9dab61c1b..000000000 --- a/site/source/pages/Simulateurs/exonération-covid/index.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import exonerationCovid, { - DottedName as ExoCovidDottedNames, -} from 'exoneration-covid' -import Engine from 'publicodes' -import { useContext, useRef } from 'react' - -import { EngineContext, EngineProvider } from '@/components/utils/EngineContext' -import { useSituationState } from '@/components/utils/SituationContext' - -import { ExonérationCovid } from './ExonérationCovid' - -const exoCovidEngine = new Engine(exonerationCovid) - -export const useExoCovidEngine = () => - useContext(EngineContext) as Engine - -export const useExoCovidSituationState = () => - useSituationState() - -/** - * Use this hooks to keep state of engine with the react fast refresh - * @param originalEngine - * @returns engine - */ -export const useEngineKeepState = ( - originalEngine: Engine -) => { - const { current: engine } = useRef(originalEngine) - - return engine -} - -const ExonérationCovidProvider = () => { - const engine = useEngineKeepState(exoCovidEngine) - - return ( - - - - ) -} - -export default ExonérationCovidProvider diff --git a/site/source/pages/Simulateurs/metadata-src.ts b/site/source/pages/Simulateurs/metadata-src.ts index b344a1300..45b96245b 100644 --- a/site/source/pages/Simulateurs/metadata-src.ts +++ b/site/source/pages/Simulateurs/metadata-src.ts @@ -22,7 +22,6 @@ import { dividendesConfig } from './dividendes/config' import { eirlConfig } from './eirl/config' import { entrepriseIndividuelleConfig } from './entreprise-individuelle/config' import { eurlConfig } from './eurl/config' -import { exonérationCovidConfig } from './exonération-covid/config' import { expertComptableConfig } from './expert-comptable/config' import { impôtSociétéConfig } from './impot-societe/config' import { indépendantConfig } from './indépendant/config' @@ -69,7 +68,6 @@ const getMetadataSrc = (params: SimulatorsDataParams) => { ...professionLibéraleConfig(params), ...pamcConfig(params), ...dividendesConfig(params), - ...exonérationCovidConfig(params), ...coûtCréationEntrepriseConfig(params), ...impôtSociétéConfig(params), ...cipavConfig(params), diff --git a/site/source/pages/gerer/declaration-charges-sociales-independant/config.ts b/site/source/pages/gerer/declaration-charges-sociales-independant/config.ts index 850681cd9..6c492e615 100644 --- a/site/source/pages/gerer/declaration-charges-sociales-independant/config.ts +++ b/site/source/pages/gerer/declaration-charges-sociales-independant/config.ts @@ -34,7 +34,7 @@ export function déclarationChargesSocialesIndépendantConfig({ 'pages.gérer.declaration_charges_sociales_indépendant.title', 'Assistant à la détermination des charges sociales déductibles' ), - nextSteps: ['exonération-covid', 'déclaration-revenu-indépendant-beta'], + nextSteps: ['déclaration-revenu-indépendant-beta'], component: DéclarationChargeSocialeIndépendant, } as const) } @@ -72,7 +72,7 @@ export function déclarationRevenuIndépendantConfig({ 'pages.gérer.declaration_charges_sociales_indépendant.title', 'Assistant à la détermination des charges sociales déductibles' ), - nextSteps: ['exonération-covid', 'déclaration-revenu-indépendant-beta'], + nextSteps: ['déclaration-revenu-indépendant-beta'], component: DéclarationChargeSocialeIndépendant, } as const) } diff --git a/site/source/pages/gerer/declaration-revenu-independants/config.ts b/site/source/pages/gerer/declaration-revenu-independants/config.ts index 6b29d377b..10219eb99 100644 --- a/site/source/pages/gerer/declaration-revenu-independants/config.ts +++ b/site/source/pages/gerer/declaration-revenu-independants/config.ts @@ -34,10 +34,7 @@ export function déclarationRevenuIndépendantBetaConfig({ 'pages.gérer.declaration_revenu_indépendant.title', 'Assistant à la déclaration de revenu pour les indépendants' ), - nextSteps: [ - 'exonération-covid', - 'déclaration-charges-sociales-indépendant', - ], + nextSteps: ['déclaration-charges-sociales-indépendant'], path: sitePaths.gérer.déclarationIndépendant.beta.index, component: DéclarationRevenuIndépendant, } as const) diff --git a/site/source/sitePaths.ts b/site/source/sitePaths.ts index dd8ed5280..60bf43041 100644 --- a/site/source/sitePaths.ts +++ b/site/source/sitePaths.ts @@ -89,7 +89,6 @@ const rawSitePathsFr = { }, is: 'impot-societe', dividendes: 'dividendes', - 'exonération-covid': 'exonération-covid', }, nouveautés: 'nouveautés', stats: 'statistiques', @@ -178,7 +177,6 @@ const rawSitePathsEn = { }, is: 'corporate-tax', dividendes: 'dividends', - 'exonération-covid': 'exoneration-covid', }, nouveautés: 'news', stats: 'statistics',