diff --git a/site/source/locales/ui-en.yaml b/site/source/locales/ui-en.yaml index 3e385a233..72327c9b8 100644 --- a/site/source/locales/ui-en.yaml +++ b/site/source/locales/ui-en.yaml @@ -946,13 +946,16 @@ pages: title: PAMC tax return resultats: "1": Amounts to report on your tax return - "2": Replacement income - "3": Deductions and exemptions - "4": Compulsory social security contributions - "5": Breakdown of net income - "6": "Net income from contract activity :" - "7": "Net income from other self-employed activities :" - "8": Data provided by Assurance Maladie + "10": "Net income from other self-employed activities :" + "11": Data provided by Assurance Maladie + "2": Situation on January 1 or on the date of commencement of activity + "3": You are a holder + "4": You are a replacement + "5": Replacement income + "6": Deductions and exemptions + "7": Compulsory social security contributions + "8": Breakdown of net income + "9": "Net income from contract activity :" shortname: PAMC tax return assistant title: PAMC tax return assistant pour-mon-entreprise: diff --git a/site/source/locales/ui-fr.yaml b/site/source/locales/ui-fr.yaml index 019dff60c..9cd46ffee 100644 --- a/site/source/locales/ui-fr.yaml +++ b/site/source/locales/ui-fr.yaml @@ -1005,13 +1005,16 @@ pages: title: Déclaration de revenus des PAMC resultats: "1": Montants à reporter dans votre déclaration de revenus - "2": Montant des revenus de remplacement - "3": Déductions et exonérations - "4": Cotisations sociales obligatoires - "5": Répartition des revenus nets - "6": "Revenus nets de l’activité conventionnée :" - "7": "Revenus nets tirés des autres activités non salariées :" - "8": Données transmises par l’Assurance Maladie + "10": "Revenus nets tirés des autres activités non salariées :" + "11": Données transmises par l’Assurance Maladie + "2": Situation au 1er janvier ou à la date du début d’activité + "3": Vous êtes titulaire + "4": Vous êtes remplaçant + "5": Montant des revenus de remplacement + "6": Déductions et exonérations + "7": Cotisations sociales obligatoires + "8": Répartition des revenus nets + "9": "Revenus nets de l’activité conventionnée :" shortname: Assistant à la déclaration de revenus des PAMC title: Assistant à la déclaration de revenus pour les PAMC pour-mon-entreprise: diff --git a/site/source/pages/assistants/declaration-revenus-pamc/components/CheckboxImpôts.tsx b/site/source/pages/assistants/declaration-revenus-pamc/components/CheckboxImpôts.tsx new file mode 100644 index 000000000..9ab6b23e1 --- /dev/null +++ b/site/source/pages/assistants/declaration-revenus-pamc/components/CheckboxImpôts.tsx @@ -0,0 +1,30 @@ +import { PublicodesExpression } from 'publicodes' +import { styled } from 'styled-components' + +import { useEngine } from '@/components/utils/EngineContext' + +type Props = { + expression: PublicodesExpression + idPrefix: string +} + +export default function CheckboxImpôts({ expression, idPrefix }: Props) { + const engine = useEngine() + const nodeValue = engine.evaluate({ + '!=': [expression, 'non'], + }).nodeValue + const checked = !!nodeValue + + return ( + + ) +} + +const StyledInput = styled.input` + margin: ${({ theme }) => `${theme.spacings.xs} ${theme.spacings.sm} 0 0`}; +` diff --git a/site/source/pages/assistants/declaration-revenus-pamc/components/LigneImpôts.tsx b/site/source/pages/assistants/declaration-revenus-pamc/components/LigneImpôts.tsx index 75bdc7cf7..eec67d4de 100644 --- a/site/source/pages/assistants/declaration-revenus-pamc/components/LigneImpôts.tsx +++ b/site/source/pages/assistants/declaration-revenus-pamc/components/LigneImpôts.tsx @@ -1,7 +1,5 @@ import { DottedName } from 'modele-social' -import { formatValue } from 'publicodes' -import React from 'react' -import { useTranslation } from 'react-i18next' +import { PublicodesExpression } from 'publicodes' import { useSelector } from 'react-redux' import { styled } from 'styled-components' @@ -11,67 +9,60 @@ import { FlexCenter } from '@/design-system/global-style' import { Grid } from '@/design-system/layout' import { Strong } from '@/design-system/typography' import { Body } from '@/design-system/typography/paragraphs' -import { Contexte } from '@/domaine/Contexte' import { targetUnitSelector } from '@/store/selectors/simulationSelectors' +import CheckboxImpôts from './CheckboxImpôts' +import MontantImpôts from './MontantImpôts' + type SimulationValueProps = { dottedName: DottedName code: string - label?: React.ReactNode - round?: boolean - contexte?: Contexte + label?: string + expression?: PublicodesExpression } export function LigneImpôts({ dottedName, code, label, - round = true, - contexte = {}, + expression, }: SimulationValueProps) { const engine = useEngine() const currentUnit = useSelector(targetUnitSelector) - const language = useTranslation().i18n.language + const evaluation = engine.evaluate({ valeur: dottedName, - arrondi: round ? 'oui' : 'non', + arrondi: 'oui', unité: currentUnit, - contexte, }) - const noValue = evaluation.nodeValue === null || evaluation.nodeValue === undefined + if (noValue) { return null } const rule = engine.getRule(dottedName) - const elementIdPrefix = dottedName.replace(/\s|\./g, '_') + const idPrefix = ((expression || dottedName) as string).replace(/\s|\./g, '_') return ( - - {label || rule.title} - + {label || rule.title} - + {code} - - - {formatValue(evaluation, { - precision: round ? 0 : 2, - language, - displayedUnit: '', - })} - - - + {expression ? ( + + ) : ( + + )} + ) } @@ -86,16 +77,9 @@ const StyledGridContainer = styled(Grid)` align-items: center; } ` -const StyledBody = styled(Body)` - margin: 0; - padding: ${({ theme }) => `${theme.spacings.xs} ${theme.spacings.sm} 0 0`}; -` -const Value = styled.div` - width: 100px; - min-height: ${({ theme }) => theme.spacings.xl}; - padding: ${({ theme }) => `${theme.spacings.xxs} ${theme.spacings.xs}`}; - background-color: ${({ theme }) => theme.colors.extended.grey[100]}; - border-radius: ${({ theme }) => theme.spacings.xxs}; - color: ${({ theme }) => theme.colors.extended.dark[800]}; +const StyledGridItem = styled(Grid)` ${FlexCenter} ` +const StyledBody = styled(Body)` + margin: ${({ theme }) => `${theme.spacings.xs} ${theme.spacings.sm} 0 0`}; +` diff --git a/site/source/pages/assistants/declaration-revenus-pamc/components/MontantImpôts.tsx b/site/source/pages/assistants/declaration-revenus-pamc/components/MontantImpôts.tsx new file mode 100644 index 000000000..a4686628c --- /dev/null +++ b/site/source/pages/assistants/declaration-revenus-pamc/components/MontantImpôts.tsx @@ -0,0 +1,33 @@ +import { EvaluatedNode, formatValue } from 'publicodes' +import { useTranslation } from 'react-i18next' +import { styled } from 'styled-components' + +import { Body } from '@/design-system/typography/paragraphs' + +type Props = { + evaluation: EvaluatedNode + idPrefix: string +} + +export default function MontantImpôts({ evaluation, idPrefix }: Props) { + const language = useTranslation().i18n.language + + return ( + + {formatValue(evaluation, { + language, + displayedUnit: '', + })} + + ) +} + +const Value = styled(Body)` + margin: ${({ theme }) => `${theme.spacings.xs} ${theme.spacings.sm} 0 0`}; + width: 100px; + min-height: ${({ theme }) => theme.spacings.xl}; + padding: ${({ theme }) => `${theme.spacings.xxs} ${theme.spacings.xs}`}; + background-color: ${({ theme }) => theme.colors.extended.grey[100]}; + border-radius: ${({ theme }) => theme.spacings.xxs}; + color: ${({ theme }) => theme.colors.extended.dark[800]} !important; +` diff --git a/site/source/pages/assistants/declaration-revenus-pamc/components/Résultats.tsx b/site/source/pages/assistants/declaration-revenus-pamc/components/Résultats.tsx index e75e1d2b1..7ac6d7a90 100644 --- a/site/source/pages/assistants/declaration-revenus-pamc/components/Résultats.tsx +++ b/site/source/pages/assistants/declaration-revenus-pamc/components/Résultats.tsx @@ -28,6 +28,31 @@ export default function Résultats() { )} + + {t( + 'pages.assistants.declaration-revenus-pamc.resultats.2', + 'Situation au 1er janvier ou à la date du début d’activité' + )} + + + +

{t( - 'pages.assistants.declaration-revenus-pamc.resultats.2', + 'pages.assistants.declaration-revenus-pamc.resultats.5', 'Montant des revenus de remplacement' )}

@@ -56,7 +81,7 @@ export default function Résultats() {

{t( - 'pages.assistants.declaration-revenus-pamc.resultats.3', + 'pages.assistants.declaration-revenus-pamc.resultats.6', 'Déductions et exonérations' )}

@@ -74,7 +99,7 @@ export default function Résultats() {

{t( - 'pages.assistants.declaration-revenus-pamc.resultats.4', + 'pages.assistants.declaration-revenus-pamc.resultats.7', 'Cotisations sociales obligatoires' )}

@@ -86,13 +111,13 @@ export default function Résultats() {

{t( - 'pages.assistants.declaration-revenus-pamc.resultats.5', + 'pages.assistants.declaration-revenus-pamc.resultats.8', 'Répartition des revenus nets' )}

{t( - 'pages.assistants.declaration-revenus-pamc.resultats.6', + 'pages.assistants.declaration-revenus-pamc.resultats.9', 'Revenus nets de l’activité conventionnée :' )} @@ -103,7 +128,7 @@ export default function Résultats() { /> {t( - 'pages.assistants.declaration-revenus-pamc.resultats.7', + 'pages.assistants.declaration-revenus-pamc.resultats.10', 'Revenus nets tirés des autres activités non salariées :' )} @@ -120,7 +145,7 @@ export default function Résultats() {

{t( - 'pages.assistants.declaration-revenus-pamc.resultats.8', + 'pages.assistants.declaration-revenus-pamc.resultats.11', 'Données transmises par l’Assurance Maladie' )}