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'
)}