Répare les tests de non regression

pull/2494/head
Johan Girod 2023-02-02 13:11:28 +01:00
parent 59e542a578
commit 50dee3a230
19 changed files with 133 additions and 138 deletions

View File

@ -16,7 +16,7 @@ scenarios:
],
"situation": {
"dirigeant": "non",
"entreprise . catégorie juridique": "non",
"entreprise . catégorie juridique": "''",
"entreprise . imposition": "non",
"salarié . activité partielle": "non",
"impôt . méthode de calcul . par défaut": {

View File

@ -1,13 +1,13 @@
bénéficiaire:
experimental: oui
applicable si: entreprise . imposition . IS
valeur: non
description: |
Un bénéficiaire est un actionnaire dans une SAS ou un associé dans une
SARL/EURL.
Attention: nous ne prenons en compte ici que le cas de figure de l'associé
unique (SASU et EURL).
valeur: non
# [TODO] [dividendes-indep]
bénéficiaire . compte courant d'associé:
@ -36,8 +36,6 @@ bénéficiaire . compte courant d'associé:
Circulaire RSI C2014-001: https://www.secu-independants.fr/uploads/tx_rsirss/C2014-001.pdf
bénéficiaire . dividendes:
valeur: oui
applicable si: entreprise . imposition = 'IS'
bénéficiaire . dividendes . bruts:
unité: €/an

View File

@ -8,12 +8,6 @@ dirigeant . gérant minoritaire:
dirigeant . régime social:
experimental: oui
non applicable si:
une de ces conditions:
- entreprise . catégorie juridique . SELARL #TODO NON IMPLEMENTE
- entreprise . catégorie juridique . SELAS #TODO NON IMPLEMENTE
- entreprise . catégorie juridique . autre
variations:
- si: entreprise . catégorie juridique . EI . auto-entrepreneur
alors: "'auto-entrepreneur'"

View File

@ -103,6 +103,7 @@ entreprise . activités:
Artisanale : {{ artisanale }} ;
Libérale : {{ libérale }} ;
Agricole : {{ agricole }}
par défaut: oui
plusieurs possibilités:
- artisanale
- commerciale

View File

@ -26,7 +26,6 @@ entreprise . catégorie juridique:
note: On se base ici sur les catégories juridiques définies par l'INSEE
références:
Liste des catégories juridique de l'INSEE: https://www.insee.fr/fr/information/2028129
# par défaut: "'SARL'"
une possibilité:
choix obligatoire: oui
possibilités:
@ -58,6 +57,10 @@ entreprise . catégorie juridique . EI:
par: "'micro-entreprise'"
- règle: entreprise . imposition
par: "'IR'"
- règle: entreprise . imposition . IR
par: oui
- règle: entreprise . imposition . IS
par: non
par défaut:
nom: par défaut
experimental: oui

View File

@ -5,15 +5,16 @@ entreprise . imposition:
possibilités:
- IR
- IS
par défaut:
variations:
- si:
une de ces conditions:
- catégorie juridique . SARL . EURL
- catégorie juridique . SELARL . SELARL
- catégorie juridique . EI
alors: "'IR'"
- sinon: "'IS'"
références:
Comment seront imposés mes bénéfices ?: https://bpifrance-creation.fr/moment-de-vie/comment-seront-imposes-mes-benefices?block_id=186
Quelle imposition selon mon statut ?: https://www.economie.gouv.fr/entreprises/impot-revenu-impot-societe-statut

View File

@ -38,20 +38,6 @@ export default function DividendesSimulation() {
</Warning>
<Notifications />
<Simulation explanations={<DividendesExplanation />}>
<div
css={`
display: flex;
flex-wrap: wrap-reverse;
> * {
margin-top: 0.6rem;
}
justify-content: center;
@media (min-width: 590px) {
justify-content: space-between;
}
`}
></div>
<DividendesSimulationGoals />
</Simulation>
</>
@ -110,12 +96,10 @@ const DividendesSimulationGoals = () => (
dottedName="impôt . foyer fiscal . revenu imposable . autres revenus imposables"
/>
</Condition>
<Condition expression="oui">
<SimulationGoal
appear={false}
dottedName="bénéficiaire . dividendes . nets d'impôt"
/>
</Condition>
<SimulationGoal
appear={false}
dottedName="bénéficiaire . dividendes . nets d'impôt"
/>
</Condition>
</SimulationGoals>
)

View File

@ -0,0 +1,13 @@
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<PageConfig>
Base extends ImmutableType<PageConfig>
>(base: ImmutableType<PageConfig> & Base) {
return {
[base.id]: base,
} as ImmutableType<{ [k in Base['id']]: Base }>
}

View File

@ -14,7 +14,8 @@ export const configDividendes: SimulationConfig = {
'unité par défaut': '€/an',
situation: {
bénéficiaire: 'oui',
salarié: 'non',
'entreprise . catégorie juridique': "'SAS'",
'entreprise . associés': "'unique'",
'entreprise . imposition': "'IS'",
'impôt . méthode de calcul': "'PFU'",
'dirigeant . rémunération . net . imposable': '0 €/an',

View File

@ -43,7 +43,6 @@ export const configIndépendant: SimulationConfig = {
"entreprise . chiffre d'affaires",
'entreprise . exercice . début',
'entreprise . exercice . fin',
'entreprise . catégorie juridique',
'entreprise . imposition . régime',
'entreprise . activités',
'entreprise . activités . revenus mixtes',
@ -62,6 +61,7 @@ export const configIndépendant: SimulationConfig = {
situation: {
'dirigeant . régime social': "'indépendant'",
'entreprise . imposition': "'IR'",
'entreprise . catégorie juridique': "''",
salarié: 'non',
},
}
@ -69,19 +69,24 @@ export const configIndépendant: SimulationConfig = {
export const configEntrepriseIndividuelle: SimulationConfig = {
...configIndépendant,
situation: {
...configIndépendant.situation,
'entreprise . imposition': "'IR'",
'entreprise . catégorie juridique': "'EI'",
'entreprise . catégorie juridique . EI . auto-entrepreneur': 'non',
},
}
export const configEirl: SimulationConfig = {
...configIndépendant,
situation: {
'entreprise . catégorie juridique': "'EI'",
'entreprise . catégorie juridique . EI . auto-entrepreneur': 'non',
},
}
export const configEurl: SimulationConfig = {
...configIndépendant,
situation: {
...configIndépendant.situation,
'entreprise . catégorie juridique': "'SARL'",
'entreprise . associés': "'unique'",
'entreprise . imposition': "'IS'",
},
}

View File

@ -55,7 +55,7 @@ export const configSalarié: SimulationConfig = {
'unité par défaut': '€/mois',
situation: {
dirigeant: 'non',
'entreprise . catégorie juridique': 'non',
'entreprise . catégorie juridique': "''",
'entreprise . imposition': 'non',
'salarié . activité partielle': 'non',
'impôt . méthode de calcul . par défaut': {

View File

@ -1,10 +1,8 @@
import { ImmutableType } from '@/types/utils'
import CoutCreationEntreprise from '.'
import { PageConfig } from '../configs/types'
import { config } from '../configs/config'
import { SimulatorsDataParams } from '../metadata'
export function configCoûtCréationEntreprise({
export function coûtCréationEntrepriseConfig({
t,
sitePaths,
}: SimulatorsDataParams) {
@ -48,13 +46,3 @@ export function configCoûtCréationEntreprise({
// Remove this "as const" when we upgrade to typescript v5:
} as const)
}
// Replace type by commented line when we upgrade to typescript v5:
function config<
// const Base extends ImmutableType<PageConfig>
Base extends ImmutableType<PageConfig>
>(base: ImmutableType<PageConfig> & Base) {
return {
[base.id]: base,
} as ImmutableType<{ [k in Base['id']]: Base }>
}

View File

@ -0,0 +1,33 @@
import ISSimulation, { SeoExplanations } from '.'
import { config } from '../configs/config'
import { SimulatorsDataParams } from '../metadata'
import ISSimulationConfig from './_simulationConfig'
export function impôtSociétéConfig({ t, sitePaths }: SimulatorsDataParams) {
return config({
id: 'coût-création-entreprise',
beta: true,
icône: '🗓',
tracking: 'impot-societe',
pathId: 'simulateurs.is',
iframePath: 'impot-societe',
meta: {
title: t('pages.simulateurs.is.meta.title', 'Impôt sur les sociétés'),
description: t(
'pages.simulateurs.is.meta.description',
'Calculez votre impôt sur les sociétés'
),
color: '#E71D66',
},
shortName: t('pages.simulateurs.is.meta.title', 'Impôt sur les sociétés'),
title: t(
'pages.simulateurs.is.title',
"Simulateur d'impôt sur les sociétés"
),
nextSteps: ['salarié', 'comparaison-statuts'],
path: sitePaths.simulateurs.is,
component: ISSimulation,
seoExplanations: SeoExplanations,
simulation: ISSimulationConfig,
})
}

View File

@ -0,0 +1,14 @@
import { SimulationConfig } from '../configs/types'
const ISSimulationConfig: SimulationConfig = {
'unité par défaut': '€/an',
situation: {
salarié: 'non',
'entreprise . catégorie juridique': "''",
'entreprise . imposition': "'IS'",
'entreprise . imposition . IS . éligible taux réduit': 'oui',
'entreprise . TVA . franchise de TVA': 'non',
},
}
export default ISSimulationConfig

View File

@ -9,31 +9,13 @@ import { SimulationGoal, SimulationGoals } from '@/components/Simulation'
import RuleInput from '@/components/conversation/RuleInput'
import Warning from '@/components/ui/WarningBlock'
import { FromTop } from '@/components/ui/animate'
import useSimulationConfig from '@/components/utils/useSimulationConfig'
import { H2 } from '@/design-system/typography/heading'
import { Body, Intro } from '@/design-system/typography/paragraphs'
import { SimulationConfig } from '@/reducers/rootReducer'
import { situationSelector } from '@/selectors/simulationSelectors'
import { useSitePaths } from '@/sitePaths'
import { TrackPage } from '../../ATInternetTracking'
const configIS = {
'unité par défaut': '€/an',
situation: {
'entreprise . imposition': "'IS'",
'entreprise . imposition . IS . éligible taux réduit': 'oui',
'entreprise . TVA . franchise de TVA': 'non',
},
} as SimulationConfig
import { TrackPage } from '../../../ATInternetTracking'
export default function ISSimulation() {
const { absoluteSitePaths } = useSitePaths()
useSimulationConfig({
path: absoluteSitePaths.simulateurs.is,
config: configIS,
})
return (
<>
<Warning
@ -130,3 +112,36 @@ function Explanations() {
</FromTop>
)
}
export const SeoExplanations = (
<Trans i18nKey="pages.simulateurs.is.seo">
<H2>Comment est calculé limpôt sur les sociétés ?</H2>
<Body>
Limpôt sur les sociétés sapplique aux bénéfices réalisés par les
sociétés de capitaux (SA, SAS, SASU, SARL, etc.) et sur option facultative
pour certaines autres sociétés (EIRL, EURL, SNC, etc.).
</Body>
<Body>
Il est calculé sur la base des bénéfices réalisés en France au cours de
lexercice comptable. La durée dun exercice est normalement dun an mais
il peut être plus court ou plus long (notamment en début dactivité ou à
la dissolution de lentreprise). Dans ce cas le barème de limpôt est
pro-ratisé en fonction de la durée de lexercice, ce qui est pris en
compte dans le simulateur en modifiant les dates de début et de fin de
lexercice.
</Body>
<H2>Taux réduit et régimes spécifiques</H2>
<Body>
Les PME réalisant moins de 7,63 millions deuros de chiffre daffaires et
dont le capital est détenu à 75% par des personnes physiques bénéficient
dun taux réduit dimpôt sur les sociétés. Ce taux est pris en compte sur
le simulateur et il nest pour linstant pas possible de simuler
linéligibilité aux taux réduits.
</Body>
<Body>
Enfin il existe des régimes dimpositions spécifiques avec des taux dédiés
pour certains types de plus-values (cession de titres, cession de
brevets). Ces régimes ne sont pas intégrés dans le simulateur.
</Body>
</Trans>
)

View File

@ -1,7 +1,8 @@
import { ImmutableType } from '@/types/utils'
import { PageConfig } from './configs/types'
import { configCoûtCréationEntreprise } from './cout-creation-entreprise/_config.js'
import { coûtCréationEntrepriseConfig } from './cout-creation-entreprise/_config.js'
import { impôtSociétéConfig } from './impot-societe/_config'
import { SimulatorsDataParams } from './metadata'
/**
@ -727,27 +728,7 @@ const getMetadataSrc = (params: SimulatorsDataParams) => {
},
shortName: t('pages.simulateurs.pamc.shortname', 'PAMC'),
},
is: {
icône: '🗓',
tracking: 'impot-societe',
pathId: 'simulateurs.is',
iframePath: 'impot-societe',
meta: {
title: t('pages.simulateurs.is.meta.title', 'Impôt sur les sociétés'),
description: t(
'pages.simulateurs.is.meta.description',
'Calculez votre impôt sur les sociétés'
),
color: '#E71D66',
},
shortName: t('pages.simulateurs.is.meta.title', 'Impôt sur les sociétés'),
title: t(
'pages.simulateurs.is.title',
"Simulateur d'impôt sur les sociétés"
),
nextSteps: ['salarié', 'comparaison-statuts'],
},
dividendes: {
icône: '🎩',
tracking: 'dividendes',
@ -796,7 +777,8 @@ const getMetadataSrc = (params: SimulatorsDataParams) => {
nextSteps: ['déclaration-charges-sociales-indépendant'],
},
...configCoûtCréationEntreprise(params),
...coûtCréationEntrepriseConfig(params),
...impôtSociétéConfig(params),
} as const
// TODO: remove this Omit

View File

@ -26,7 +26,6 @@ import SchemeComparaisonPage from './ComparateurStatuts'
import DividendesSimulation from './Dividendes'
import ÉconomieCollaborative from './EconomieCollaborative'
import ExonérationCovid from './ExonerationCovid'
import ISSimulation from './ImpôtSociété'
import IndépendantSimulation, {
EntrepriseIndividuelle,
IndépendantPLSimulation,
@ -558,6 +557,7 @@ function getSimulatorsData(params: SimulatorsDataParams) {
'économie-collaborative': {
...pureSimulatorsData['économie-collaborative'],
path: sitePaths.simulateurs.économieCollaborative.index,
beta: true,
component: ÉconomieCollaborative,
},
'choix-statut': {
@ -639,46 +639,10 @@ function getSimulatorsData(params: SimulatorsDataParams) {
simulation: configProfessionLibérale,
component: PAMCHome,
},
is: {
...pureSimulatorsData.is,
path: sitePaths.simulateurs.is,
component: ISSimulation,
seoExplanations: (
<Trans i18nKey="pages.simulateurs.is.seo">
<H2>Comment est calculé limpôt sur les sociétés ?</H2>
<Body>
Limpôt sur les sociétés sapplique aux bénéfices réalisés par les
sociétés de capitaux (SA, SAS, SASU, SARL, etc.) et sur option
facultative pour certaines autres sociétés (EIRL, EURL, SNC, etc.).
</Body>
<Body>
Il est calculé sur la base des bénéfices réalisés en France au cours
de lexercice comptable. La durée dun exercice est normalement dun
an mais il peut être plus court ou plus long (notamment en début
dactivité ou à la dissolution de lentreprise). Dans ce cas le
barème de limpôt est pro-ratisé en fonction de la durée de
lexercice, ce qui est pris en compte dans le simulateur en
modifiant les dates de début et de fin de lexercice.
</Body>
<H2>Taux réduit et régimes spécifiques</H2>
<Body>
Les PME réalisant moins de 7,63 millions deuros de chiffre
daffaires et dont le capital est détenu à 75% par des personnes
physiques bénéficient dun taux réduit dimpôt sur les sociétés. Ce
taux est pris en compte sur le simulateur et il nest pour linstant
pas possible de simuler linéligibilité aux taux réduits.
</Body>
<Body>
Enfin il existe des régimes dimpositions spécifiques avec des taux
dédiés pour certains types de plus-values (cession de titres,
cession de brevets). Ces régimes ne sont pas intégrés dans le
simulateur.
</Body>
</Trans>
),
},
dividendes: {
...pureSimulatorsData.dividendes,
beta: true,
path: sitePaths.simulateurs.dividendes,
simulation: configDividendes,
component: DividendesSimulation,
@ -740,6 +704,7 @@ function getSimulatorsData(params: SimulatorsDataParams) {
},
'coût-création-entreprise': pureSimulatorsData['coût-création-entreprise'],
is: pureSimulatorsData['coût-création-entreprise'],
} as const
return data satisfies ImmutableType<{ [key: string]: Omit<PageConfig, 'id'> }>

View File

@ -1,5 +1,7 @@
import { it } from 'vitest'
import ISSimulationConfig from '@/pages/Simulateurs/impot-societe/_simulationConfig'
import impotSocieteSituations from './simulations-impôt-société.yaml'
import { runSimulations } from './utils'
@ -10,9 +12,6 @@ it('calculate simulations-impot-société', () => {
'entreprise . imposition . IS . montant',
'entreprise . imposition . IS . contribution sociale',
],
{
'entreprise . imposition': "'IS'",
'entreprise . imposition . IS . éligible taux réduit': 'oui',
}
ISSimulationConfig.situation
)
})

View File

@ -37,7 +37,6 @@ it('calculate simulations-indépendant', () => {
"entreprise . activité . nature",
"entreprise . activités",
"entreprise . activités . commerciale",
"entreprise . catégorie juridique",
"entreprise . charges",
"entreprise . chiffre d'affaires",
"entreprise . date de création",