Revert "Réorganisation de la page /simulateur"
parent
8c061b3c09
commit
0a33071b8a
|
@ -25,13 +25,13 @@ describe('Formulaire demande mobilité', function() {
|
|||
.type('1991-07-25')
|
||||
.tab()
|
||||
.type('Pouts')
|
||||
.wait(1500)
|
||||
.wait(1000)
|
||||
.type('{enter}')
|
||||
.tab()
|
||||
.type('3 rue de la Rhumerie')
|
||||
.tab()
|
||||
.type('Brest')
|
||||
.wait(1500)
|
||||
.wait(1000)
|
||||
.type('{enter}')
|
||||
.tab()
|
||||
.type('jean.deaux@gmail.com')
|
||||
|
@ -46,7 +46,7 @@ describe('Formulaire demande mobilité', function() {
|
|||
.type('14 chemin des Docks')
|
||||
.tab()
|
||||
.type('Bre')
|
||||
.wait(1500)
|
||||
.wait(1000)
|
||||
cy.contains('29240').click()
|
||||
cy.contains('Organisme Urssaf').click()
|
||||
cy.focused()
|
||||
|
@ -67,7 +67,7 @@ describe('Formulaire demande mobilité', function() {
|
|||
.next()
|
||||
.click()
|
||||
cy.get('label[for="détachement . pays"]')
|
||||
.wait(1500)
|
||||
.wait(1000)
|
||||
.click()
|
||||
cy.focused()
|
||||
.select('Irlande')
|
||||
|
|
|
@ -37,6 +37,6 @@ describe('Manage page test', function() {
|
|||
})
|
||||
it('should be able to navigate to the hiring simulator', function() {
|
||||
cy.contains(fr ? 'une embauche' : 'hiring').click()
|
||||
cy.contains(fr ? 'salarié' : 'employee')
|
||||
cy.contains(fr ? 'salarié' : 'employees')
|
||||
})
|
||||
})
|
||||
|
|
|
@ -125,8 +125,7 @@ async function fetchSimulators(dt) {
|
|||
'/comparaison-régimes-sociaux',
|
||||
'/dirigeant-sasu',
|
||||
'/aide-declaration-independants',
|
||||
'/demande-mobilité',
|
||||
'/économie-collaborative'
|
||||
'/demande-mobilité'
|
||||
].includes(label)
|
||||
)
|
||||
|
||||
|
@ -156,13 +155,9 @@ async function fetchSimulators(dt) {
|
|||
const dataIframes = await responseIframes.json()
|
||||
const resultIframes = dataIframes.filter(x =>
|
||||
[
|
||||
'/simulateur-embauche',
|
||||
'/simulateur-autoentrepreneur',
|
||||
'/simulateur-assimilesalarie',
|
||||
'/simulateur-artiste-auteur',
|
||||
'/simulateur-independant',
|
||||
'/demande-mobilite'
|
||||
].some(path => x.label.startsWith(path))
|
||||
'/simulateur-embauche?couleur=',
|
||||
'/simulateur-autoentrepreneur?couleur='
|
||||
].includes(x.label)
|
||||
)
|
||||
|
||||
const groupSimulateursIframesVisits = ({ label }) =>
|
||||
|
@ -173,15 +168,8 @@ async function fetchSimulators(dt) {
|
|||
? '/salaire-brut-net'
|
||||
: label.startsWith('/simulateur-autoentrepreneur')
|
||||
? '/auto-entrepreneur'
|
||||
: label.startsWith('/assimilé-salarié') ||
|
||||
label.startsWith('/simulateur-assimilesalarie')
|
||||
: label.startsWith('/assimilé-salarié')
|
||||
? '/dirigeant-sasu'
|
||||
: label.startsWith('/simulateur-independant')
|
||||
? '/indépendant'
|
||||
: label.startsWith('/simulateur-artiste-auteur')
|
||||
? '/artiste-auteur'
|
||||
: label.startsWith('/demande-mobilite')
|
||||
? '/demande-mobilité'
|
||||
: label
|
||||
|
||||
const sumVisits = (acc, { nb_visits }) => acc + nb_visits
|
||||
|
|
|
@ -16,7 +16,7 @@ export default function MoreInfosOnUs() {
|
|||
|
||||
return (
|
||||
<section
|
||||
className="ui__ full-width light-bg box-container"
|
||||
className="ui__ full-width light-bg center-flex"
|
||||
css={`
|
||||
margin-top: 3rem;
|
||||
`}
|
||||
|
|
|
@ -31,7 +31,6 @@ export default function Notifications() {
|
|||
engine.evaluate(notification.dottedName).isApplicable
|
||||
)
|
||||
)
|
||||
console.log(notifications.map(n => engine.evaluate(n.dottedName)))
|
||||
|
||||
const inversionFail = useInversionFail()
|
||||
const hiddenNotifications = useSelector(
|
||||
|
|
|
@ -7,7 +7,7 @@ import classnames from 'classnames'
|
|||
import Conversation from 'Components/conversation/Conversation'
|
||||
import SeeAnswersButton from 'Components/conversation/SeeAnswersButton'
|
||||
import Value from 'Components/EngineValue'
|
||||
import dirigeantComparaison from '../sites/mon-entreprise.fr/pages/Simulateurs/configs/rémunération-dirigeant.yaml'
|
||||
import dirigeantComparaison from 'Components/simulationConfigs/rémunération-dirigeant.yaml'
|
||||
import Engine from 'publicodes'
|
||||
import revenusSVG from 'Images/revenus.svg'
|
||||
import {
|
||||
|
|
|
@ -1,20 +1,24 @@
|
|||
import { setSimulationConfig } from 'Actions/actions'
|
||||
import Notifications from 'Components/Notifications'
|
||||
import Conversation, {
|
||||
ConversationProps
|
||||
} from 'Components/conversation/Conversation'
|
||||
import SeeAnswersButton from 'Components/conversation/SeeAnswersButton'
|
||||
import PageFeedback from 'Components/Feedback/PageFeedback'
|
||||
import Notifications from 'Components/Notifications'
|
||||
import SearchButton from 'Components/SearchButton'
|
||||
import TargetSelection from 'Components/TargetSelection'
|
||||
import { useSimulationProgress } from 'Components/utils/useNextQuestion'
|
||||
import React, { useEffect } from 'react'
|
||||
import { Trans } from 'react-i18next'
|
||||
import { useDispatch, useSelector } from 'react-redux'
|
||||
import { useLocation } from 'react-router'
|
||||
import { SimulationConfig } from 'Reducers/rootReducer'
|
||||
import { firstStepCompletedSelector } from 'Selectors/simulationSelectors'
|
||||
import * as Animate from 'Components/ui/animate'
|
||||
import Progress from 'Components/ui/Progress'
|
||||
import { useSimulationProgress } from 'Components/utils/useNextQuestion'
|
||||
import React from 'react'
|
||||
import { Trans } from 'react-i18next'
|
||||
import { useSelector } from 'react-redux'
|
||||
import { firstStepCompletedSelector } from 'Selectors/simulationSelectors'
|
||||
|
||||
type SimulationProps = {
|
||||
config: SimulationConfig
|
||||
explanations?: React.ReactNode
|
||||
results?: React.ReactNode
|
||||
customEndMessages?: ConversationProps['customEndMessages']
|
||||
|
@ -22,11 +26,17 @@ type SimulationProps = {
|
|||
}
|
||||
|
||||
export default function Simulation({
|
||||
config,
|
||||
explanations,
|
||||
results,
|
||||
customEndMessages,
|
||||
showPeriodSwitch
|
||||
}: SimulationProps) {
|
||||
const dispatch = useDispatch()
|
||||
const location = useLocation<{ fromGérer?: boolean }>()
|
||||
useEffect(() => {
|
||||
dispatch(setSimulationConfig(config, location.state?.fromGérer))
|
||||
}, [config])
|
||||
const firstStepCompleted = useSelector(firstStepCompletedSelector)
|
||||
return (
|
||||
<>
|
||||
|
|
|
@ -5,6 +5,7 @@ import React from 'react'
|
|||
import { animated, useSpring } from 'react-spring'
|
||||
import { DottedName } from 'Rules'
|
||||
import styled from 'styled-components'
|
||||
import { capitalise0 } from '../utils'
|
||||
|
||||
const BarStack = styled.div`
|
||||
display: flex;
|
||||
|
|
|
@ -1,47 +0,0 @@
|
|||
import StackedBarChart from 'Components/StackedBarChart'
|
||||
import { ThemeColorsContext } from 'Components/utils/colors'
|
||||
import { EngineContext } from 'Components/utils/EngineContext'
|
||||
import { default as React, useContext } from 'react'
|
||||
import { Trans, useTranslation } from 'react-i18next'
|
||||
import { useSelector } from 'react-redux'
|
||||
import { targetUnitSelector } from 'Selectors/simulationSelectors'
|
||||
|
||||
export default function AutoEntrepreneurExplanation() {
|
||||
const engine = useContext(EngineContext)
|
||||
const { t } = useTranslation()
|
||||
const { palettes } = useContext(ThemeColorsContext)
|
||||
const targetUnit = useSelector(targetUnitSelector)
|
||||
const impôt = engine.evaluate('impôt', { unit: targetUnit })
|
||||
|
||||
return (
|
||||
<section>
|
||||
<h2>
|
||||
<Trans>Répartition du chiffre d'affaires</Trans>
|
||||
</h2>
|
||||
<StackedBarChart
|
||||
data={[
|
||||
{
|
||||
...engine.evaluate(
|
||||
'dirigeant . auto-entrepreneur . net après impôt',
|
||||
{ unit: targetUnit }
|
||||
),
|
||||
title: t("Revenu (incluant les dépenses liées à l'activité)"),
|
||||
color: palettes[0][0]
|
||||
},
|
||||
|
||||
...(impôt.nodeValue
|
||||
? [{ ...impôt, title: t('impôt'), color: palettes[1][0] }]
|
||||
: []),
|
||||
{
|
||||
...engine.evaluate(
|
||||
'dirigeant . auto-entrepreneur . cotisations et contributions',
|
||||
{ unit: targetUnit }
|
||||
),
|
||||
title: t('Cotisations'),
|
||||
color: palettes[1][1]
|
||||
}
|
||||
]}
|
||||
/>
|
||||
</section>
|
||||
)
|
||||
}
|
|
@ -1,34 +0,0 @@
|
|||
import StackedBarChart from 'Components/StackedBarChart'
|
||||
import { ThemeColorsContext } from 'Components/utils/colors'
|
||||
import { EngineContext } from 'Components/utils/EngineContext'
|
||||
import { default as React, useContext } from 'react'
|
||||
import { useTranslation } from 'react-i18next'
|
||||
|
||||
export default function IndépendantExplanation() {
|
||||
const engine = useContext(EngineContext)
|
||||
const { t } = useTranslation()
|
||||
const { palettes } = useContext(ThemeColorsContext)
|
||||
|
||||
return (
|
||||
<section>
|
||||
<h2>Répartition de la rémunération totale</h2>
|
||||
<StackedBarChart
|
||||
data={[
|
||||
{
|
||||
...engine.evaluate('revenu net après impôt'),
|
||||
title: t('Revenu disponible'),
|
||||
color: palettes[0][0]
|
||||
},
|
||||
{ ...engine.evaluate('impôt'), color: palettes[1][0] },
|
||||
{
|
||||
...engine.evaluate(
|
||||
'dirigeant . indépendant . cotisations et contributions'
|
||||
),
|
||||
title: t('Cotisations'),
|
||||
color: palettes[1][1]
|
||||
}
|
||||
]}
|
||||
/>
|
||||
</section>
|
||||
)
|
||||
}
|
|
@ -93,27 +93,30 @@
|
|||
}
|
||||
|
||||
.ui__.card.box {
|
||||
min-width: 14.333rem;
|
||||
flex: 0.3;
|
||||
max-width: 18rem;
|
||||
max-width: 17rem;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
text-align: center;
|
||||
margin: 0.6rem;
|
||||
padding: 1rem;
|
||||
|
||||
margin: 1rem;
|
||||
padding-top: 1rem;
|
||||
padding-bottom: 1rem;
|
||||
text-decoration: none;
|
||||
align-items: center;
|
||||
color: inherit;
|
||||
font-size: inherit !important;
|
||||
}
|
||||
|
||||
.ui__.card.box .ui__.box-icon > img {
|
||||
margin: 0.4rem !important;
|
||||
margin: 0.8rem !important;
|
||||
transform: scale(1.5) translateY(0.1rem);
|
||||
}
|
||||
.ui__.card.box:active .ui__.box-icon > img {
|
||||
transform: scale(1.5) translateY(0.1rem);
|
||||
}
|
||||
|
||||
.ui__.card.box .ui__.big.box-icon > img {
|
||||
transform: scale(2.3) translateY(0.2rem);
|
||||
margin: 0.6rem !important;
|
||||
}
|
||||
|
||||
.ui__.card.box.inverted-colors {
|
||||
|
@ -124,49 +127,9 @@
|
|||
color: #f3f3f3;
|
||||
}
|
||||
|
||||
.ui__.box-container {
|
||||
display: grid;
|
||||
justify-items: stretch;
|
||||
}
|
||||
.ui__.box-container:not(.full-width) {
|
||||
margin: 0 -0.6rem;
|
||||
}
|
||||
.ui__.small.box-container {
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
}
|
||||
@media (max-width: 400px) {
|
||||
@media (max-width: 500px) {
|
||||
.ui__.card.box {
|
||||
max-width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 400px) {
|
||||
.ui__.small.box-container {
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
}
|
||||
.ui__.box-container {
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 700px) {
|
||||
.ui__.small.box-container {
|
||||
grid-template-columns: repeat(4, 1fr);
|
||||
}
|
||||
.ui__.box-container {
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 1000px) {
|
||||
.ui__.full-width.small.box-container {
|
||||
grid-template-columns: repeat(5, auto);
|
||||
}
|
||||
.ui__.full-width.box-container {
|
||||
--padding: calc((100vw - 1300px) / 2);
|
||||
grid-template-columns: repeat(4, auto);
|
||||
padding-right: var(--padding);
|
||||
padding-left: var(--padding);
|
||||
justify-content: center;
|
||||
flex: 1;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -82,11 +82,6 @@ blockquote {
|
|||
color: #f3f3f3;
|
||||
}
|
||||
|
||||
.ui__.light-border {
|
||||
border: 4px solid var(--lighterColor);
|
||||
border-radius: 0.3rem;
|
||||
}
|
||||
|
||||
.ui__.center-flex {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
|
|
|
@ -3787,18 +3787,6 @@ dirigeant . auto-entrepreneur . net de cotisations:
|
|||
résumé.fr: Avant impôt
|
||||
titre.en: Net contribution income
|
||||
titre.fr: Revenu net de cotisations
|
||||
dirigeant . auto-entrepreneur . notification valeur annuelle:
|
||||
description.en: >
|
||||
[automatic] The ACRE rate used is the one corresponding to the current
|
||||
month. The
|
||||
|
||||
simulator does not yet take into account the overlap of 2 periods
|
||||
|
||||
of an acre in a single year.
|
||||
description.fr: |
|
||||
Le taux ACRE utilisé est celui correspondant au mois courant. Le
|
||||
simulateur ne prends pas encore en compte le chevauchement de 2 période
|
||||
d'acre sur une meme année.
|
||||
dirigeant . auto-entrepreneur . plafond:
|
||||
description.en: >
|
||||
The status of microentrepreneur applies as long as the annual turnover
|
||||
|
@ -3954,18 +3942,12 @@ dirigeant . indépendant . PL . CARCDSF . chirurgien-dentiste . exonération PCV
|
|||
de cotisation pour la prestation complémentaire de vieillesse (PCV) si vous
|
||||
en faites la demande. [En savoir
|
||||
plus](http://www.carcdsf.fr/cotisations-du-praticien/montant-des-cotisations)
|
||||
? dirigeant . indépendant . PL . CARCDSF . chirurgien-dentiste . prix d'une consultation
|
||||
? dirigeant . indépendant . PL . CARCDSF . chirurgien-dentiste . exonération PCV . prix d'une consultation
|
||||
: titre.en: '[automatic] consulting fee'
|
||||
titre.fr: prix d'une consultation
|
||||
dirigeant . indépendant . PL . CARCDSF . retraite complémentaire:
|
||||
titre.en: '[automatic] supplementary pension (CARCDSF)'
|
||||
titre.fr: retraite complémentaire (CARCDSF)
|
||||
? dirigeant . indépendant . PL . CARCDSF . retraite complémentaire . cotisation forfaitaire
|
||||
: titre.en: '[automatic] flat-rate contribution'
|
||||
titre.fr: cotisation forfaitaire
|
||||
? dirigeant . indépendant . PL . CARCDSF . retraite complémentaire . cotisation proportionnelle
|
||||
: titre.en: '[automatic] proportional contribution'
|
||||
titre.fr: cotisation proportionnelle
|
||||
? dirigeant . indépendant . PL . CARCDSF . retraite complémentaire . réduction de la cotisation forfaitaire
|
||||
: description.en: >
|
||||
[automatic] You have the possibility of benefiting from a contribution
|
||||
|
|
|
@ -17,7 +17,6 @@ Au-dessus de: Above
|
|||
Aucun résultat: No result$
|
||||
Auto-entrepreneur: Auto-entrepreneur
|
||||
Auto-entrepreneur en EIRL: Auto-entrepreneur with EIRL option
|
||||
Autres outils: Other tools
|
||||
Avec chômage partiel: With partial unemployment
|
||||
Calcul: Formula
|
||||
Cette commune n'existe pas: This commune does not exist
|
||||
|
@ -78,7 +77,6 @@ International: International
|
|||
Intégrer l'interface de simulation: Integrate the simulation interface
|
||||
Intégrer la bibliothèque de calcul: Integrate the calculation library
|
||||
Intégrer nos simulateurs: Integrate our simulators
|
||||
Intégrer un simulateur: Integrating a simulator
|
||||
J'ai compris: understood
|
||||
Janvier 2019: January 2019
|
||||
La somme de: This rule is the sum of
|
||||
|
@ -96,7 +94,6 @@ Nous n'avons rien trouvé: We didn't find any matching registered company.
|
|||
Oui: Yes
|
||||
Outils pour les développeurs: Tools for developers
|
||||
Pages associées: Related pages
|
||||
Par statut: By status
|
||||
Part du salaire net maintenue: Share of net salary maintained
|
||||
Part employeur: Employer share
|
||||
Part salariale: Employee share
|
||||
|
@ -112,7 +109,6 @@ Plus d'informations: More information (fr)
|
|||
Plusieurs associés: Several partners
|
||||
Prise en charge du revenu net avec chômage partiel: Net income support with short-time working
|
||||
Prochaines questions: Next questions
|
||||
Professionnels de santé: Health Care Professionals
|
||||
Protection sociale: Social security
|
||||
Précédent: Previous
|
||||
Prévisualisation: Preview
|
||||
|
@ -147,7 +143,6 @@ Salaire: Salary
|
|||
Salaire net: Net Salary
|
||||
Salaire net et brut: Net and gross salary
|
||||
Salarié: Employee
|
||||
Salariés et employeurs: Employees and employers
|
||||
Sans responsabilité limitée: Without limited liability
|
||||
Si: If
|
||||
Simulateur de salaire: Employee salary simulation
|
||||
|
@ -814,13 +809,6 @@ oui: yes
|
|||
page:
|
||||
documentation:
|
||||
title: Documentation
|
||||
simulateurs:
|
||||
accueil:
|
||||
description: <0>All the simulators on this site are :</0><1><0><0>Maintained
|
||||
up</0> to date with the latest legislative
|
||||
developments</0><1><0>Continuously improved</0> to increase the number
|
||||
of devices considered</1><2><0>Easily and freely integrates</0> on any
|
||||
website. <3>Learn more about</3> it.</2></1>
|
||||
pages:
|
||||
common:
|
||||
ressources-auto-entrepreneur:
|
||||
|
@ -910,31 +898,7 @@ pages:
|
|||
attribute <1>data-lang="en"</1> allows you to choose English as the
|
||||
simulator language.</3>
|
||||
module: What module?
|
||||
gérer:
|
||||
aide-déclaration-indépendant:
|
||||
meta:
|
||||
description: Easily calculate the amount of payroll taxes to report on your 2019
|
||||
income tax return.
|
||||
title: 'Self-employed tax return: calculation of the amount of contributions'
|
||||
shortname: Income tax return assistance
|
||||
title: Help with your 2019 income tax return
|
||||
demande-mobilité:
|
||||
meta:
|
||||
description: Interactive form to be completed for self-employed persons wishing
|
||||
to carry out their activity in other European countries
|
||||
title: 'Self-employed: demand for mobility in Europe'
|
||||
shortname: Demand for mobility in Europe
|
||||
simulateurs:
|
||||
accueil:
|
||||
header: All the simulators on this site are kept up to date with the latest
|
||||
legislative developments.
|
||||
titre: Simulators available
|
||||
artiste-auteur:
|
||||
meta:
|
||||
description: Estimate social contributions on copyright and BNC income
|
||||
title: 'Artist-author: calculation of URSSAF membership fees'
|
||||
shortname: Artist-author
|
||||
title: Estimate my artist/author dues
|
||||
auto-entrepreneur:
|
||||
meta:
|
||||
description: Calculation of your income based on turnover, after deduction of
|
||||
|
@ -973,15 +937,7 @@ pages:
|
|||
account the actual expenses incurred in the activity.</8><9><0></0>
|
||||
<2>See details of the calculation of the income allowance for an
|
||||
auto-entrepreneur</2></9><10>Useful resources</10><11><0></0></11>'''
|
||||
shortname: Auto-entrepreneur
|
||||
title: Self-entrepreneur Income Simulator
|
||||
titre: Auto-entrepreneur income simulator
|
||||
auxiliaire:
|
||||
shortname: Medical Axiliary
|
||||
title: Income simulator for a private medical assistant
|
||||
chirurgien-dentiste:
|
||||
shortname: Dental surgeon
|
||||
title: Income simulator for a private dental surgeon
|
||||
chômage-partiel:
|
||||
explications seo: >-
|
||||
[👨 Integrate this simulator on your
|
||||
|
@ -1026,45 +982,6 @@ pages:
|
|||
ogTitle: 'Short-time working simulator: find out the impact on the net salaried
|
||||
income and the total employer cost.'
|
||||
titre: Calculation of the short-time working allowance in France
|
||||
seo: <0>How is the partial activity allowance calculated?</0><1>The basic
|
||||
partial activity allowance is fixed by law at <2>70% of gross</2>
|
||||
salary. It is prorated according to the number of hours off work. For an
|
||||
employee at € 2300 gross monthly, who works 50% of his usual time, this
|
||||
gives <5>€ 2300 × 50% × 70% = € 805</5>.</1><2>In addition to this basic
|
||||
allowance, there is a supplementary allowance for salaries close to the
|
||||
minimum wage. This additional allowance is paid when the combined
|
||||
remuneration and basic allowance are below a net SMIC. These allowances
|
||||
are paid by the employer, who will then be reimbursed in part or in full
|
||||
by the State.</2><3>👉 <2>See the details of the calculation of</2> the
|
||||
allowance</3><4> How to calculate the part reimbursed by the
|
||||
State?</4><5>The State covers part of the partial compensation for wages
|
||||
up to **4.5 SMIC**, with a minimum of €8.03 per unemployed hour. In
|
||||
concrete terms, this results in 100% coverage for salaries close to the
|
||||
SMIC. This gradually decreases until it stabilizes at **93%** for wages
|
||||
<3>between €2,000 and €7,000</3> (wage corresponding to the limit of 4.5
|
||||
SMIC).</5><6>👉 <2>See details of the calculation of the reimbursement
|
||||
of the allowance</2></6><7> How to report a partial activity?</7><8>In
|
||||
response to the coronavirus crisis, the conditions for partial
|
||||
employment have been eased. The employer is allowed to place his
|
||||
employees in partial activity before the official application is filed.
|
||||
The employee then has a period of <2>30 days</2> to comply with the
|
||||
regulations. Benefits will be paid retroactively from the date of the
|
||||
partial unemployment.</8><9>👉 <2>Applying for partial unemployment</2>
|
||||
benefit</9><10> What social security contributions must be paid for the
|
||||
partial activity allowance?</10><11>The partial activity allowance is
|
||||
subject to the CSG/CRDS and to a sickness contribution in certain cases.
|
||||
For more information, see the explanatory page on the <2>URSSAF
|
||||
website</2>.</11>
|
||||
shortname: Partial unemployment
|
||||
title: 'Covid-19: Short-time work simulator'
|
||||
comparaison:
|
||||
meta:
|
||||
description: Self-employed, self-employed or similarly employed? With this
|
||||
comparison, find the plan that suits you best
|
||||
title: 'Starting a business: a comparison of social schemes'
|
||||
shortname: Status Comparison
|
||||
title: 'Self-employed, assimilated employee or auto-entrepreneur: which plan to
|
||||
choose?'
|
||||
dirigean sasu:
|
||||
explication seo: '<0>How to calculate the salary of a SASU executive? </0><1>As
|
||||
for a conventional employee, the SASU <1>manager</1> pays social
|
||||
|
@ -1084,26 +1001,6 @@ pages:
|
|||
this, simply enter the announced compensation in the total loaded box.
|
||||
The simulation can then be refined by answering the various
|
||||
questions.</4>'
|
||||
indépendant:
|
||||
meta:
|
||||
description: Calculation of net income after tax and contributions based on
|
||||
turnover and vice versa
|
||||
title: 'Independent: Urssaf income simulator'
|
||||
shortname: Independent
|
||||
title: Income simulator for the self-employed
|
||||
médecin:
|
||||
shortname: Doctor
|
||||
title: Income simulator for private practitioners
|
||||
profession-libérale:
|
||||
meta:
|
||||
description: Net Income Calculation for Self-Employed Persons in Liberal Income
|
||||
Tax (IR, BNC)
|
||||
title: 'Liberal professions: the Urssaf simulator'
|
||||
shortname: Liberal profession
|
||||
title: Professional Income Simulator
|
||||
sage-femme:
|
||||
shortname: Midwife
|
||||
title: Income simulator for private midwives
|
||||
salarié:
|
||||
explication seo: <0>Calculate your net salary</0><1>During the job interview,
|
||||
the employer usually offers a "gross" remuneration. The announced amount
|
||||
|
@ -1142,32 +1039,6 @@ pages:
|
|||
ogTitle: 'Gross, net, net after-tax salary, total cost: the ultimate simulator
|
||||
for employees and employers'
|
||||
titre: 'Gross / net salary: the Urssaf converter'
|
||||
seo: <0>How is the net salary calculated?</0><1>At the job interview, the
|
||||
employer usually proposes a "gross" remuneration. The amount announced
|
||||
thus includes employee contributions, which are used to finance the
|
||||
employee's social protection and which are deducted from the "net"
|
||||
salary received by the employee.</1><2>You can use our simulator to
|
||||
convert the <2>gross salary into net</2> salary. Simply enter the
|
||||
advertised remuneration in the gross salary box. The simulation can be
|
||||
refined by answering the various questions (fixed-term contract,
|
||||
executive status, overtime, part-time, meal vouchers,
|
||||
etc.).</2><3></3><4>Moreover, since 2019,<1> income tax</1> is deducted
|
||||
at source. To do this, the Directorate General of Public Finance (DGFiP)
|
||||
sends the employer the tax rate calculated from the employee's income
|
||||
tax return. If this rate is unknown, for example in the first year of
|
||||
employment, the employer uses the <4>neutral rate</4>.</4><5>How to
|
||||
calculate the cost of hiring?</5><6>If you are looking to hire, you can
|
||||
calculate the total cost of your employee's remuneration, as well as the
|
||||
corresponding employer and employee contribution amounts. This enables
|
||||
you to define the remuneration level by knowing the overall amount of
|
||||
expense this represents for your company.</6><7>In addition to the
|
||||
salary, our simulator takes into account the calculation of benefits in
|
||||
kind (telephone, company car, etc.), as well as the compulsory health
|
||||
insurance.</7><8>There are <2>deferred</2> hiring <2>aids</2> which are
|
||||
not all taken into account by our simulator, you can find them on <6>the
|
||||
official portal</6>.</8>
|
||||
shortname: Employee
|
||||
title: Employee income simulator
|
||||
titre: Income simulator for employees
|
||||
sasu:
|
||||
meta:
|
||||
|
@ -1176,31 +1047,7 @@ pages:
|
|||
net income after tax from the total allocated to your compensation.
|
||||
ogTitle: 'SASU executive compensation: a simulator to find out your net salary'
|
||||
titre: 'Head of SASU: Urssaf revenue simulator'
|
||||
seo-explanation: '<0>How to calculate the salary of a SASU executive? </0><1>As
|
||||
for a classic employee, the SASU <2>manager</2> pays social security
|
||||
contributions on the remuneration he pays himself. The contributions are
|
||||
calculated in the same way as for the employee: they are broken down
|
||||
into the employer and employee parts and are expressed as a percentage
|
||||
of the gross salary.</1><2>The assimilated manager-employee does not pay
|
||||
<2>unemployment contributions</2>. Furthermore, they do not benefit from
|
||||
the <5>general reduction</5> in contributions or from the provisions of
|
||||
the French Labour Code, such as <9>overtime</9> or
|
||||
bonuses.</2><3>However, the employee is entitled to the <2>ACRE
|
||||
reduction</2> at the start of employment, under certain
|
||||
conditions.</3><4>You can use our simulator to calculate the <2>net
|
||||
remuneration</2> from a super-gross amount allocated to the executive''s
|
||||
remuneration. To do this, simply enter the total amount allocated in the
|
||||
"total charged" box. The simulation can then be refined by answering
|
||||
the various questions.</4>'
|
||||
shortname: Head of SASU
|
||||
title: Income simulator for SASU manager
|
||||
titre: Revenue simulator for SAS(U) executive
|
||||
économie-collaborative:
|
||||
meta:
|
||||
description: Airbnb, Drivy, Blablacar, Leboncoin... Find out how to be in order
|
||||
in your declarations
|
||||
title: 'Online platform income tax return: interactive guide'
|
||||
shortname: Collaborative Economy Guide
|
||||
par: per
|
||||
payslip:
|
||||
disclaimer: It takes into account national law but not union negotiated rules.
|
||||
|
@ -1275,6 +1122,85 @@ selectionRégime:
|
|||
page:
|
||||
titre: Social scheme selection
|
||||
titre: Which social scheme would you like to explore?
|
||||
simulateurs:
|
||||
accueil:
|
||||
description: >-
|
||||
<0>All the simulators on this site are:</0>
|
||||
|
||||
<1><0>Maintained with the latest legislation</0> <1>Continuously improved to increase the number of devices taken into account</1> <2>Developed in partnership with the Urssaf (the contribution collector entity in France)<2> </1>
|
||||
titre: Available simulators
|
||||
artiste-auteur:
|
||||
titre: Estimate my artist/author contributions
|
||||
assimilé-salarié:
|
||||
explications: The equal or minority directors of SARL or the directors of SA and
|
||||
SAS are considered as "assimilé salarié" and are subject to the general
|
||||
regime. Consequently, the director has the same social protection as an
|
||||
employee, apart from unemployment coverage.
|
||||
page:
|
||||
description: Estimate your income as a SASU or SAS director based on your
|
||||
turnover. All contributions and income tax are taken into account.
|
||||
Official URSSAF simulator
|
||||
titre: Official salary simulator for SASU and SAS directors
|
||||
titre: SAS and SASU directors income simulator
|
||||
auto-entrepreneur:
|
||||
page:
|
||||
description: Estimate your income as an auto-entrepreneur based on your
|
||||
turnover. All contributions and income tax are taken into account.
|
||||
Official URSSAF simulator.
|
||||
titre: Official income simulator for auto-entrepreneur
|
||||
titre: Auto-entrepreneur income simulator
|
||||
indépendant:
|
||||
explication1: Our estimate takes into account the <1>actual contributions</1>
|
||||
due by the self-employed person. During the first year of his activity, he
|
||||
will pay a reduced flat rate (a sum of around 1300€ / year for a craftsman
|
||||
benefiting from ACRE)... but it will be regularized the following year
|
||||
according to this real amount.
|
||||
explication2: Unemployment and occupational accident insurance are not covered
|
||||
by the Social Security for the self-employed. Retirement based on
|
||||
professional income is generally lower. To be covered, the professional
|
||||
may take out additional insurance.
|
||||
page:
|
||||
description: Estimate your income as a self-employed person based on your
|
||||
turnover (for EI, EURL and SARL majority directors). All contributions
|
||||
and income tax are taken into account. Official URSSAF simulator
|
||||
titre: Official income simulator for self-employed person
|
||||
titre: Self-employed income simulator
|
||||
inversionFail: |
|
||||
The amount entered results in an impossible result. This is due to a
|
||||
threshold effect in the calculation of contributions.
|
||||
|
||||
We invite you to try again by slightly modifying the amount entered (a few euros more for example).
|
||||
profession-libérale:
|
||||
page:
|
||||
description: simulators.profession-liberal.page.description
|
||||
titre: simulators.profession-liberal.page.title
|
||||
titre: Income simulator for {professionName}.
|
||||
précision:
|
||||
bonne: Good accuracy
|
||||
défaut: 'Refine the simulation by answering the following questions:'
|
||||
faible: Low accuracy
|
||||
moyenne: Medium accuracy
|
||||
résumé:
|
||||
aide-déclaration-revenu-indep: Easily calculate the amount of payroll taxes to
|
||||
report on your 2019 income tax return.
|
||||
artiste-auteur: Estimating the social security contributions of an artist or author
|
||||
assimilé: |
|
||||
Calculate the income of an officer of a minority SAS, SASU or SARL
|
||||
auto: |
|
||||
Calculate the income (or turnover) of an auto-entrepreneur
|
||||
chômage-partiel: Simulate the net income paid to the employee, as well as the
|
||||
total remaining cost to the company if the partial activity is used.
|
||||
comparaison: >
|
||||
Simulate the differences between the plans (contributions, retirement,
|
||||
maternity, illness, etc.)
|
||||
demande-mobilité: Application form for mobility in Europe for self-employed workers
|
||||
indépendant: |
|
||||
Calculate the income of a majority manager of EURL, EI, or SARL
|
||||
salarié: >
|
||||
Calculate the net, gross, or total salary of an employee, trainee, or
|
||||
similar
|
||||
économie-collaborative: A guide to know how to declare your income from online
|
||||
platforms (AirBnb, leboncoin, blablacar, etc.).
|
||||
warning:
|
||||
artiste-auteur: This estimate is proposed for information only. It is based on
|
||||
the applicable regulatory elements and the elements that you have entered,
|
||||
|
@ -1292,35 +1218,6 @@ selectionRégime:
|
|||
titre: Before starting...
|
||||
urssaf: The figures are indicative and do not replace the actual accounts of the
|
||||
Urssaf, impots.gouv.fr, etc
|
||||
simulateurs:
|
||||
inversionFail: >-
|
||||
The amount entered results in an impossible result. This is due to a
|
||||
threshold effect in the calculation of contributions.
|
||||
|
||||
|
||||
We invite you to try again by slightly modifying the amount entered (a few euros more for example).
|
||||
précision:
|
||||
défaut: 'Refine the simulation by answering the questions:'
|
||||
warning:
|
||||
artiste-auteur:
|
||||
'1': This estimate is provided for information purposes. It is based on the
|
||||
applicable regulatory elements and the elements that you have entered,
|
||||
but it does not take into account your entire situation. The actual
|
||||
amount of your contributions may therefore be different.
|
||||
'2': This simulator allows you to estimate the amount of your contributions for
|
||||
the year 2020 based on your projected income.
|
||||
auto-entrepreneur: ' Self-entrepreneurs cannot deduct their expenses from their
|
||||
turnover. Therefore, <3>all costs related to the business</3> must be
|
||||
<3>netted out to obtain the income actually received</3>.'
|
||||
cfe: The simulator does not include the business property tax (CFE), which is
|
||||
due from the second year of the fiscal year. Its amount varies greatly
|
||||
depending on the company's turnover and domiciliation. <2>More
|
||||
information.</2>
|
||||
plus: Read the details
|
||||
sasu: Corporate income tax and dividend management are not yet implemented.
|
||||
titre: Before we start...
|
||||
urssaf: The calculations are indicative and are not a substitute for the actual
|
||||
statements of URSSAF, impots.gouv.fr, or others.
|
||||
simulation-end:
|
||||
cta: Know the steps to take
|
||||
hiring:
|
||||
|
|
|
@ -311,14 +311,6 @@ dirigeant . auto-entrepreneur . cotisations et contributions . cotisations . tau
|
|||
dirigeant . auto-entrepreneur . cotisations et contributions . cotisations . plafond ACRE:
|
||||
formule: plafond sécurité sociale temps plein / impôt . abattement . taux inversé
|
||||
|
||||
dirigeant . auto-entrepreneur . notification valeur annuelle:
|
||||
applicable si: entreprise . ACRE
|
||||
type: notification
|
||||
description: |
|
||||
Le taux ACRE utilisé est celui correspondant au mois courant. Le
|
||||
simulateur ne prends pas encore en compte le chevauchement de 2 période
|
||||
d'acre sur une meme année.
|
||||
|
||||
dirigeant . auto-entrepreneur . impôt:
|
||||
|
||||
dirigeant . auto-entrepreneur . impôt . abattement:
|
||||
|
|
|
@ -317,8 +317,6 @@ dirigeant . indépendant . PL . PAMC:
|
|||
- conjoint collaborateur
|
||||
- entreprise . franchise de TVA
|
||||
- dirigeant . indépendant . revenus étrangers
|
||||
- dirigeant . indépendant . cotisations et contributions . exonération de cotisations minimales
|
||||
- dirigeant . indépendant . cotisations et contributions . maladie domiciliation fiscale étranger
|
||||
formule: oui
|
||||
|
||||
dirigeant . indépendant . PL . PAMC . proportion recette activité non conventionnée:
|
||||
|
@ -663,36 +661,28 @@ dirigeant . indépendant . PL . CARCDSF:
|
|||
- métier = 'santé . chirurgien-dentiste'
|
||||
- métier = 'santé . sage-femme'
|
||||
références:
|
||||
Site CARMF: http://www.carcdsf.fr
|
||||
Site CARMF: https://www.carcdsf.fr
|
||||
|
||||
dirigeant . indépendant . PL . CARCDSF . retraite complémentaire:
|
||||
titre: retraite complémentaire (CARCDSF)
|
||||
remplace: cotisations et contributions . retraite complémentaire
|
||||
formule:
|
||||
somme:
|
||||
- cotisation forfaitaire
|
||||
- cotisation proportionnelle
|
||||
- produit:
|
||||
assiette: 2960.40 €/an
|
||||
taux: réduction de la cotisation forfaitaire
|
||||
arrondi: oui
|
||||
- barème:
|
||||
assiette: assiette des cotisations
|
||||
multiplicateur: plafond sécurité sociale temps plein
|
||||
tranches:
|
||||
- taux: 0%
|
||||
plafond: 0.85
|
||||
- taux: 10.65%
|
||||
plafond: 5
|
||||
arrondi: oui
|
||||
références:
|
||||
Site CARCDSF: http://www.carcdsf.fr/cotisations-du-praticien/montant-des-cotisations
|
||||
|
||||
dirigeant . indépendant . PL . CARCDSF . retraite complémentaire . cotisation proportionnelle:
|
||||
formule:
|
||||
barème:
|
||||
assiette: assiette des cotisations
|
||||
multiplicateur: plafond sécurité sociale temps plein
|
||||
tranches:
|
||||
- taux: 0%
|
||||
plafond: 0.85
|
||||
- taux: 10.65%
|
||||
plafond: 5
|
||||
arrondi: oui
|
||||
|
||||
dirigeant . indépendant . PL . CARCDSF . retraite complémentaire . cotisation forfaitaire:
|
||||
formule:
|
||||
produit:
|
||||
assiette: 2960.40 €/an
|
||||
taux: réduction de la cotisation forfaitaire
|
||||
arrondi: oui
|
||||
Site CARCDSF: www.carcdsf.fr/cotisations-du-praticien/montant-des-cotisations
|
||||
|
||||
dirigeant . indépendant . PL . CARCDSF . retraite complémentaire . réduction de la cotisation forfaitaire:
|
||||
applicable si: assiette des cotisations < 85% * plafond sécurité sociale temps plein
|
||||
|
@ -716,7 +706,7 @@ dirigeant . indépendant . PL . CARCDSF . retraite complémentaire . réduction
|
|||
formule: assiette des cotisations / (85% * plafond sécurité sociale temps plein)
|
||||
|
||||
références:
|
||||
Site CARCDSF: http://www.carcdsf.fr/cotisations-du-praticien/montant-des-cotisations
|
||||
Site CARCDSF: www.carcdsf.fr/cotisations-du-praticien/montant-des-cotisations
|
||||
|
||||
dirigeant . indépendant . PL . CARCDSF . chirurgien-dentiste:
|
||||
applicable si: métier = 'santé . chirurgien-dentiste'
|
||||
|
@ -750,24 +740,22 @@ dirigeant . indépendant . PL . CARCDSF . chirurgien-dentiste . PCV:
|
|||
taux: 0.725 %
|
||||
arrondi: oui
|
||||
références:
|
||||
Site CARCDSF: http://www.carcdsf.fr/cotisations-du-praticien/montant-des-cotisations
|
||||
Site CARCDSF: www.carcdsf.fr/cotisations-du-praticien/montant-des-cotisations
|
||||
|
||||
dirigeant . indépendant . PL . CARCDSF . chirurgien-dentiste . exonération PCV:
|
||||
type: notification
|
||||
applicable si: (assiette des cotisations / prix d'une consultation) <= 500 consultation/an
|
||||
formule: oui
|
||||
description: >-
|
||||
Vous avez la possibilité de bénéficier d'une exonération totale de
|
||||
cotisation pour la prestation complémentaire de vieillesse (PCV) si vous en
|
||||
faites la demande. [En savoir
|
||||
plus](http://www.carcdsf.fr/cotisations-du-praticien/montant-des-cotisations)
|
||||
|
||||
dirigeant . indépendant . PL . CARCDSF . chirurgien-dentiste . prix d'une consultation:
|
||||
dirigeant . indépendant . PL . CARCDSF . chirurgien-dentiste . exonération PCV . prix d'une consultation:
|
||||
formule: 23 €/consultation
|
||||
|
||||
dirigeant . indépendant . PL . CARCDSF . sage-femme:
|
||||
applicable si: métier = 'santé . sage-femme'
|
||||
formule: oui
|
||||
applicable si: métier = 'PAM . sage-femme'
|
||||
|
||||
dirigeant . indépendant . PL . CARCDSF . sage-femme . RID:
|
||||
titre: invalidité et décès (CARCDSF sage-femme)
|
||||
|
@ -790,7 +778,7 @@ dirigeant . indépendant . PL . CARCDSF . sage-femme . RID:
|
|||
- si: classe = 'C'
|
||||
alors: 273 €/an
|
||||
références:
|
||||
Montant des cotisations: http://www.carcdsf.fr/cotisations-du-praticien/montant-des-cotisations
|
||||
Montant des cotisations: www.carcdsf.fr/cotisations-du-praticien/montant-des-cotisations
|
||||
|
||||
dirigeant . indépendant . PL . CARCDSF . sage-femme . RID . classe:
|
||||
titre: Classe de cotisation
|
||||
|
@ -827,7 +815,7 @@ dirigeant . indépendant . PL . CARCDSF . sage-femme . PCV:
|
|||
taux: 1 / 3
|
||||
arrondi: oui
|
||||
références:
|
||||
Site CARCDSF: http://www.carcdsf.fr/cotisations-du-praticien/montant-des-cotisations
|
||||
Site CARCDSF: www.carcdsf.fr/cotisations-du-praticien/montant-des-cotisations
|
||||
note: |
|
||||
Une dispense peut être accordée lorsque les revenus professionnels sont
|
||||
inférieurs ou égaux à 3120 €.
|
||||
|
@ -842,7 +830,6 @@ dirigeant . indépendant . PL . CARCDSF . sage-femme . PCV:
|
|||
dirigeant . indépendant . PL . CARCDSF . sage-femme . exonération PCV:
|
||||
type: notification
|
||||
applicable si: assiette des cotisations <= 3120 €/an
|
||||
formule: oui
|
||||
description: >-
|
||||
Vous avez la possibilité de bénéficier d'une exonération totale de
|
||||
cotisation pour la prestation complémentaire de vieillesse (PCV) si vous en
|
||||
|
|
|
@ -53,7 +53,7 @@ const moduleToSitePath = {
|
|||
}
|
||||
const simulateurLink = (fr ? process.env.FR_SITE : process.env.EN_SITE).replace(
|
||||
'${path}',
|
||||
moduleToSitePath[moduleName] ?? ''
|
||||
moduleToSitePath[moduleName]
|
||||
)
|
||||
links.innerHTML = `
|
||||
<div style="text-align: center; margin-bottom: 2rem">
|
||||
|
|
|
@ -452,10 +452,19 @@ export default function CreateCompany({ statut }: CreateCompanyProps) {
|
|||
<h2>
|
||||
{emoji('🧰')} <Trans>Ressources utiles</Trans>
|
||||
</h2>
|
||||
<div className="ui__ box-container">
|
||||
<div
|
||||
css={`
|
||||
display: flex;
|
||||
margin-right: -1rem;
|
||||
flex-wrap: wrap;
|
||||
> * {
|
||||
flex: 1;
|
||||
}
|
||||
`}
|
||||
>
|
||||
{isAutoentrepreneur && (
|
||||
<Link
|
||||
className="ui__ interactive card small box lighter-bg"
|
||||
className="ui__ interactive card button-choice lighter-bg"
|
||||
to={{
|
||||
pathname: sitePaths.simulateurs['auto-entrepreneur'],
|
||||
state: { fromCréer: true }
|
||||
|
@ -463,16 +472,16 @@ export default function CreateCompany({ statut }: CreateCompanyProps) {
|
|||
>
|
||||
<Trans i18nKey="entreprise.ressources.simu.autoEntrepreneur">
|
||||
<p>Simulateur de revenus auto-entrepreneur</p>
|
||||
<p className="ui__ notice">
|
||||
<small>
|
||||
Simuler le montant de vos cotisations sociales et de votre impôt
|
||||
et estimez votre futur revenu net.
|
||||
</p>
|
||||
</small>
|
||||
</Trans>
|
||||
</Link>
|
||||
)}
|
||||
{['EI', 'EIRL', 'EURL'].includes(statut) && (
|
||||
<Link
|
||||
className="ui__ interactive card small box lighter-bg"
|
||||
className="ui__ interactive card button-choice lighter-bg"
|
||||
to={{
|
||||
pathname: sitePaths.simulateurs.indépendant,
|
||||
state: { fromCréer: true }
|
||||
|
@ -480,16 +489,16 @@ export default function CreateCompany({ statut }: CreateCompanyProps) {
|
|||
>
|
||||
<Trans i18nKey="entreprise.ressources.simu.indépendant">
|
||||
<p>Simulateur de cotisations indépendant</p>
|
||||
<p className="ui__ notice">
|
||||
<small>
|
||||
Simuler le montant de vos cotisations sociales pour bien
|
||||
préparer votre business plan.
|
||||
</p>
|
||||
</small>
|
||||
</Trans>
|
||||
</Link>
|
||||
)}
|
||||
{['SAS', 'SASU'].includes(statut) && (
|
||||
<Link
|
||||
className="ui__ interactive card small box lighter-bg"
|
||||
className="ui__ interactive card button-choice lighter-bg"
|
||||
to={{
|
||||
pathname: sitePaths.simulateurs.SASU,
|
||||
state: { fromCréer: true }
|
||||
|
@ -497,38 +506,38 @@ export default function CreateCompany({ statut }: CreateCompanyProps) {
|
|||
>
|
||||
<Trans i18nKey="entreprise.ressources.simu.assimilé">
|
||||
<p>Simulateur de rémunération pour dirigeant de SASU</p>
|
||||
<p className="ui__ notice">
|
||||
<small>
|
||||
Simuler le montant de vos cotisations sociales pour bien
|
||||
préparer votre business plan.
|
||||
</p>
|
||||
</small>
|
||||
</Trans>
|
||||
</Link>
|
||||
)}
|
||||
<Link
|
||||
className="ui__ interactive card small box lighter-bg"
|
||||
className="ui__ interactive card button-choice lighter-bg"
|
||||
to={sitePaths.créer.après}
|
||||
>
|
||||
<Trans i18nKey="entreprise.ressources.après">
|
||||
<p>Après la création</p>
|
||||
<p className="ui__ notice">
|
||||
<small>
|
||||
SIREN, SIRET, code APE, KBis. Un petit glossaire des termes que
|
||||
vous pourrez (éventuellement) rencontrer après la création.
|
||||
</p>
|
||||
</small>
|
||||
</Trans>
|
||||
</Link>
|
||||
{isAutoentrepreneur && <RessourceAutoEntrepreneur />}
|
||||
{i18n.language === 'fr' && ['EI', 'EIRL', 'EURL'].includes(statut) && (
|
||||
<a
|
||||
target="_blank"
|
||||
className="ui__ interactive card small box lighter-bg"
|
||||
className="ui__ interactive card button-choice lighter-bg"
|
||||
href="https://www.urssaf.fr/portail/files/live/sites/urssaf/files/documents/Guide-Travailleurs-independants.pdf"
|
||||
>
|
||||
<p>Guide Urssaf pour les travailleur indépendant</p>
|
||||
<p className="ui__ notice">
|
||||
<p>Guide Urssaf pour les travailleur indépendant 2020</p>
|
||||
<small>
|
||||
Des conseils sur comment préparer son projet pour se lancer dans
|
||||
la création et une présentation détaillée de votre protection
|
||||
sociale.
|
||||
</p>
|
||||
</small>
|
||||
<br />
|
||||
<div css="text-align: right">
|
||||
<small className="ui__ label">PDF</small>
|
||||
|
@ -568,31 +577,31 @@ export function RessourceAutoEntrepreneur() {
|
|||
<>
|
||||
<Trans i18nKey="pages.common.ressources-auto-entrepreneur.FAQ">
|
||||
<a
|
||||
className="ui__ interactive card small box lighter-bg"
|
||||
className="ui__ interactive card button-choice lighter-bg"
|
||||
href="https://www.autoentrepreneur.urssaf.fr/portail/accueil/une-question/questions-frequentes.html"
|
||||
target="_blank"
|
||||
>
|
||||
<p>Questions fréquentes</p>
|
||||
<p className="ui__ notice">
|
||||
<small>
|
||||
Une liste exhaustive et maintenue à jour de toutes les questions
|
||||
fréquentes (et moins fréquentes) que l'on est amené à poser en tant
|
||||
qu'auto-entrepreneur
|
||||
</p>
|
||||
</small>
|
||||
</a>
|
||||
</Trans>
|
||||
{i18n.language === 'fr' && (
|
||||
<a
|
||||
className="ui__ interactive card small box lighter-bg"
|
||||
className="ui__ interactive card button-choice lighter-bg"
|
||||
href={GuideAutoEntrepreneurUrl}
|
||||
download="guide-devenir-auto-entrepreneur-en-2020"
|
||||
>
|
||||
<p>Guide pratique Urssaf</p>
|
||||
<p className="ui__ notice">
|
||||
<p>Guide partique Urssaf 2020</p>
|
||||
<small>
|
||||
Des conseils pour les auto-entrepreneurs : comment préparer son
|
||||
projet pour se lancer dans la création et une présentation détaillée
|
||||
de votre protection sociale.
|
||||
</p>
|
||||
|
||||
</small>
|
||||
<br />
|
||||
<div css="text-align: right">
|
||||
<small className="ui__ label">PDF</small>
|
||||
</div>
|
||||
|
@ -600,15 +609,15 @@ export function RessourceAutoEntrepreneur() {
|
|||
)}
|
||||
<Trans i18nKey="pages.common.ressources-auto-entrepreneur.impôt">
|
||||
<a
|
||||
className="ui__ interactive card small box lighter-bg"
|
||||
className="ui__ interactive card button-choice lighter-bg"
|
||||
target="_blank"
|
||||
href="https://www.impots.gouv.fr/portail/professionnel/je-choisis-le-regime-du-micro-entrepreneur-auto-entrepreneur"
|
||||
>
|
||||
<p>Comment déclarer son revenu aux impôts ?</p>
|
||||
<p className="ui__ notice">
|
||||
<small>
|
||||
Les informations officielles de l'administration fiscale concernant
|
||||
les auto-entrepreneurs et le régime de la micro-entreprise.
|
||||
</p>
|
||||
</small>
|
||||
</a>
|
||||
</Trans>
|
||||
</>
|
||||
|
|
|
@ -66,9 +66,18 @@ export default function Créer() {
|
|||
<h2>
|
||||
<Trans>Ressources utiles</Trans>
|
||||
</h2>
|
||||
<div className="ui__ box-container">
|
||||
<div
|
||||
css={`
|
||||
display: flex;
|
||||
margin-right: -1rem;
|
||||
flex-wrap: wrap;
|
||||
> * {
|
||||
flex: 1;
|
||||
}
|
||||
`}
|
||||
>
|
||||
<Link
|
||||
className="ui__ interactive card box lighter-bg"
|
||||
className="ui__ interactive card button-choice lighter-bg"
|
||||
to={sitePaths.créer.guideStatut.liste}
|
||||
>
|
||||
<Trans i18nKey="créer.ressources.listeStatuts">
|
||||
|
@ -80,7 +89,7 @@ export default function Créer() {
|
|||
</Trans>
|
||||
</Link>
|
||||
<Link
|
||||
className="ui__ interactive card box lighter-bg"
|
||||
className="ui__ interactive card button-choice lighter-bg"
|
||||
to={{
|
||||
pathname: sitePaths.simulateurs.comparaison,
|
||||
state: { fromCréer: true }
|
||||
|
@ -96,7 +105,7 @@ export default function Créer() {
|
|||
</Link>
|
||||
|
||||
<Link
|
||||
className="ui__ interactive card box lighter-bg"
|
||||
className="ui__ interactive card button-choice lighter-bg"
|
||||
to={sitePaths.créer['auto-entrepreneur']}
|
||||
>
|
||||
<Trans i18nKey="créer.ressources.autoEntrepreneur">
|
||||
|
|
|
@ -1,16 +1,19 @@
|
|||
import React, { Suspense, useMemo } from 'react'
|
||||
import useSimulatorsData from '../Simulateurs/metadata'
|
||||
import React, { Suspense } from 'react'
|
||||
const LazyColorPicker = React.lazy(() => import('./ColorPicker'))
|
||||
|
||||
export const integrableModuleNames = [
|
||||
'simulateur-embauche',
|
||||
'simulateur-autoentrepreneur',
|
||||
'simulateur-independant',
|
||||
'simulateur-assimilesalarie',
|
||||
'simulateur-artiste-auteur',
|
||||
'simulateur-chomage-partiel'
|
||||
]
|
||||
|
||||
// Intégrations "cachées" (non diffusées)
|
||||
const privateModuleNames = ['demande-mobilite']
|
||||
|
||||
export default function IntegrationTest() {
|
||||
const simulators = useSimulatorsData()
|
||||
const integrableModuleNames = useMemo(
|
||||
() =>
|
||||
Object.values(simulators)
|
||||
.map(s => s.iframe)
|
||||
.filter(Boolean),
|
||||
[simulators]
|
||||
)
|
||||
const [currentModule, setCurrentModule] = React.useState(
|
||||
integrableModuleNames[0]
|
||||
)
|
||||
|
@ -33,7 +36,7 @@ export default function IntegrationTest() {
|
|||
<>
|
||||
<h2>Quel module ?</h2>
|
||||
<select onChange={event => setCurrentModule(event.target.value)}>
|
||||
{integrableModuleNames.map(name => (
|
||||
{[...integrableModuleNames, ...privateModuleNames].map(name => (
|
||||
<option key={name}>{name}</option>
|
||||
))}
|
||||
</select>
|
||||
|
|
|
@ -24,7 +24,7 @@ import RuleLink from 'Components/RuleLink'
|
|||
import { formatValue } from 'publicodes'
|
||||
import Skeleton from 'Components/ui/Skeleton'
|
||||
|
||||
export default function AideDéclarationIndépendant() {
|
||||
export default function() {
|
||||
const dispatch = useDispatch()
|
||||
const rules = useContext(EngineContext).getParsedRules()
|
||||
const company = useSelector(
|
||||
|
|
|
@ -12,7 +12,7 @@ import formulaire from './formulaire-détachement.yaml'
|
|||
|
||||
const LazyEndBlock = React.lazy(() => import('./EndBlock'))
|
||||
|
||||
export default function FormulaireMobilitéIndépendant() {
|
||||
export default function formulaireMobilitéIndépendant() {
|
||||
const engine = new Engine(formulaire)
|
||||
return (
|
||||
<>
|
||||
|
|
|
@ -81,12 +81,12 @@ export default function SocialSecurity() {
|
|||
/>
|
||||
</div>
|
||||
<>
|
||||
<section>
|
||||
<div className="ui__ full-width box-container">
|
||||
<section className="ui__ full-width light-bg">
|
||||
<div className="ui__ center-flex">
|
||||
{company?.statutJuridique === 'EI' &&
|
||||
!company.isAutoEntrepreneur && (
|
||||
<Link
|
||||
className="ui__ interactive card box light-border"
|
||||
className="ui__ interactive card box"
|
||||
to={{
|
||||
pathname: sitePaths.gérer.déclarationIndépendant
|
||||
}}
|
||||
|
@ -108,7 +108,7 @@ export default function SocialSecurity() {
|
|||
|
||||
{!!dirigeant && (
|
||||
<Link
|
||||
className="ui__ interactive card box light-border"
|
||||
className="ui__ interactive card box"
|
||||
to={{
|
||||
pathname: sitePaths.simulateurs[dirigeant],
|
||||
state: {
|
||||
|
@ -132,7 +132,8 @@ export default function SocialSecurity() {
|
|||
{dirigeant !== 'auto-entrepreneur' && (
|
||||
<>
|
||||
<Link
|
||||
className="ui__ interactive card box light-border"
|
||||
className="ui__ interactive card box"
|
||||
css="width: 100%"
|
||||
to={{
|
||||
pathname: sitePaths.simulateurs['chômage-partiel']
|
||||
}}
|
||||
|
@ -145,13 +146,14 @@ export default function SocialSecurity() {
|
|||
lorsque vous activez le dispositif pour un employé.
|
||||
</p>
|
||||
</Trans>
|
||||
<span className="ui__ label">Covid-19</span>
|
||||
<div className="ui__ small simple button hide-mobile">
|
||||
<Trans>Découvrir</Trans>
|
||||
</div>
|
||||
<span className="ui__ label">Covid-19</span>
|
||||
</Link>
|
||||
<Link
|
||||
className="ui__ interactive card box light-border"
|
||||
className="ui__ interactive card box"
|
||||
css="width: 100%"
|
||||
to={{
|
||||
pathname: sitePaths.simulateurs.salarié,
|
||||
state: {
|
||||
|
@ -181,12 +183,21 @@ export default function SocialSecurity() {
|
|||
{emoji('🧰 ')}
|
||||
<Trans>Ressources utiles</Trans>
|
||||
</h2>
|
||||
<div className="ui__ box-container">
|
||||
<div
|
||||
css={`
|
||||
display: flex;
|
||||
margin-right: -1rem;
|
||||
flex-wrap: wrap;
|
||||
> * {
|
||||
flex: 1;
|
||||
}
|
||||
`}
|
||||
>
|
||||
{dirigeant === 'indépendant' &&
|
||||
i18n.language === 'fr' &&
|
||||
process.env.HEAD !== 'master' && (
|
||||
<Link
|
||||
className="ui__ interactive card box lighter-bg"
|
||||
className="ui__ interactive card button-choice lighter-bg"
|
||||
to={sitePaths.gérer.formulaireMobilité}
|
||||
>
|
||||
<Trans i18nKey="gérer.ressources.embaucher">
|
||||
|
@ -200,7 +211,7 @@ export default function SocialSecurity() {
|
|||
)}
|
||||
{!company?.isAutoEntrepreneur && (
|
||||
<Link
|
||||
className="ui__ interactive card box lighter-bg"
|
||||
className="ui__ interactive card button-choice lighter-bg"
|
||||
to={sitePaths.gérer.embaucher}
|
||||
>
|
||||
<Trans i18nKey="gérer.ressources.embaucher">
|
||||
|
@ -214,7 +225,7 @@ export default function SocialSecurity() {
|
|||
)}
|
||||
{company?.isAutoEntrepreneur && (
|
||||
<a
|
||||
className="ui__ interactive card box lighter-bg"
|
||||
className="ui__ interactive card button-choice lighter-bg"
|
||||
href="https://autoentrepreneur.urssaf.fr"
|
||||
>
|
||||
<Trans i18nKey="gérer.ressources.autoEntrepreneur">
|
||||
|
@ -229,7 +240,7 @@ export default function SocialSecurity() {
|
|||
</a>
|
||||
)}
|
||||
<Link
|
||||
className="ui__ interactive card box lighter-bg"
|
||||
className="ui__ interactive card button-choice lighter-bg"
|
||||
to={sitePaths.gérer.sécuritéSociale}
|
||||
>
|
||||
<Trans i18nKey="gérer.ressources.sécuritéSociale">
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
import { SitePathsContext } from 'Components/utils/SitePathsContext'
|
||||
import React, { useContext } from 'react'
|
||||
import { Helmet } from 'react-helmet'
|
||||
import { SalarySimulation } from '../Simulateurs/Salarié'
|
||||
|
||||
export default function IframeSimulateurEmbauche() {
|
||||
const sitePaths = useContext(SitePathsContext)
|
||||
return (
|
||||
<>
|
||||
<Helmet>
|
||||
<link rel="canonical" href={sitePaths.simulateurs.salarié} />
|
||||
</Helmet>
|
||||
<SalarySimulation />
|
||||
</>
|
||||
)
|
||||
}
|
|
@ -1,41 +1,50 @@
|
|||
import { IsEmbeddedContext } from 'Components/utils/embeddedContext'
|
||||
import React from 'react'
|
||||
import { Route, Switch } from 'react-router-dom'
|
||||
import { Route } from 'react-router-dom'
|
||||
import { inIframe } from '../../../../utils'
|
||||
import useSimulatorsData from '../Simulateurs/metadata'
|
||||
import SimulateurPage from '../Simulateurs/Page'
|
||||
import SimulateurChômagePartiel from '../Simulateurs/ChômagePartiel'
|
||||
import SimulateurArtisteAuteur from '../Simulateurs/ArtisteAuteur'
|
||||
import SimulateurAssimiléSalarié from '../Simulateurs/RémunérationSASU'
|
||||
import SimulateurAutoEntrepreneur from '../Simulateurs/AutoEntrepreneur'
|
||||
import SimulateurIndépendant from '../Simulateurs/Indépendant'
|
||||
import DemandeMobilite from '../Gérer/DemandeMobilite'
|
||||
import IframeFooter from './IframeFooter'
|
||||
import { Helmet } from 'react-helmet'
|
||||
import SimulateurEmbauche from './SimulateurEmbauche'
|
||||
|
||||
export default function Iframes() {
|
||||
const simulators = useSimulatorsData()
|
||||
return (
|
||||
<IsEmbeddedContext.Provider value={true}>
|
||||
{/** Open external links in the parent frame.
|
||||
This behavior can be configured on individual link, eg <a target="_blank" />.
|
||||
Our own link are handled in-app by the router, and aren't affected by this directive.
|
||||
*/}
|
||||
|
||||
Our own link are handled in-app by the router, and aren't affected by this directive. */}
|
||||
<base target="_parent" />
|
||||
<div className="ui__ container">
|
||||
<Switch>
|
||||
{Object.values(simulators)
|
||||
.filter(({ iframe }) => !!iframe)
|
||||
.map(s => (
|
||||
<Route
|
||||
key={s.iframe}
|
||||
path={`/iframes/${s.iframe}`}
|
||||
render={() => (
|
||||
<>
|
||||
<Helmet>
|
||||
<link rel="canonical" href={s.path} />
|
||||
</Helmet>
|
||||
<SimulateurPage {...s} />
|
||||
</>
|
||||
)}
|
||||
/>
|
||||
))}
|
||||
</Switch>
|
||||
<Route
|
||||
path="/iframes/simulateur-embauche"
|
||||
component={SimulateurEmbauche}
|
||||
/>
|
||||
<Route
|
||||
path="/iframes/simulateur-autoentrepreneur"
|
||||
component={SimulateurAutoEntrepreneur}
|
||||
/>
|
||||
<Route
|
||||
path="/iframes/simulateur-independant"
|
||||
component={SimulateurIndépendant}
|
||||
/>
|
||||
<Route
|
||||
path="/iframes/simulateur-assimilesalarie"
|
||||
component={SimulateurAssimiléSalarié}
|
||||
/>
|
||||
<Route
|
||||
path="/iframes/simulateur-artiste-auteur"
|
||||
component={SimulateurArtisteAuteur}
|
||||
/>
|
||||
<Route
|
||||
path="/iframes/simulateur-chomage-partiel"
|
||||
component={SimulateurChômagePartiel}
|
||||
/>
|
||||
<Route path="/iframes/demande-mobilite" component={DemandeMobilite} />
|
||||
|
||||
{inIframe() && <IframeFooter />}
|
||||
</div>
|
||||
</IsEmbeddedContext.Provider>
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
|
||||
.landing-title {
|
||||
margin-bottom: 1rem;
|
||||
display: flex;
|
||||
|
@ -7,9 +8,9 @@
|
|||
.landing-title__img {
|
||||
align-self: flex-end;
|
||||
margin-top: 2rem;
|
||||
max-width: 19.5rem;
|
||||
margin-left: 1.5rem;
|
||||
margin-bottom: -3.5rem;
|
||||
max-width: 18rem;
|
||||
margin-left: 1rem;
|
||||
margin-bottom: -2rem;
|
||||
}
|
||||
@media (min-width: 500px) {
|
||||
.landing-title__logo {
|
||||
|
@ -19,8 +20,10 @@
|
|||
|
||||
@media (max-width: 900px) {
|
||||
.landing-title__img {
|
||||
margin: 0;
|
||||
margin-bottom: -3.5rem;
|
||||
margin-top: 2rem;
|
||||
margin-right: -5rem;
|
||||
margin-left: -1rem;
|
||||
max-height: 25rem;
|
||||
}
|
||||
.landing-header__brand-logo {
|
||||
height: 4rem;
|
||||
|
|
|
@ -17,8 +17,8 @@ export default function Landing() {
|
|||
)
|
||||
return (
|
||||
<>
|
||||
<div className="app-content ui__ container">
|
||||
<section className="landing-title">
|
||||
<div className="app-content">
|
||||
<section className="ui__ container landing-title">
|
||||
<img
|
||||
alt="logo mon-entreprise.fr"
|
||||
className="landing-title__logo"
|
||||
|
@ -40,9 +40,9 @@ export default function Landing() {
|
|||
<img src={illustrationSvg} className="landing-title__img" />
|
||||
</section>
|
||||
|
||||
<section className="ui__ full-width box-container">
|
||||
<section className="ui__ full-width light-bg center-flex">
|
||||
<Link
|
||||
className="ui__ interactive card light-border box"
|
||||
className="ui__ interactive card box"
|
||||
to={
|
||||
statutChoisi
|
||||
? sitePaths.créer[statutChoisi]
|
||||
|
@ -66,7 +66,7 @@ export default function Landing() {
|
|||
</div>
|
||||
</Link>
|
||||
<Link
|
||||
className="ui__ interactive card light-border box "
|
||||
className="ui__ interactive card box "
|
||||
to={sitePaths.gérer.index}
|
||||
>
|
||||
<div className="ui__ big box-icon">{emoji('💶')}</div>
|
||||
|
@ -82,7 +82,7 @@ export default function Landing() {
|
|||
</div>
|
||||
</Link>
|
||||
<Link
|
||||
className="ui__ interactive card light-border box"
|
||||
className="ui__ interactive card box"
|
||||
to={sitePaths.simulateurs.index}
|
||||
>
|
||||
<div className="ui__ big box-icon">{emoji('🧮')}</div>
|
||||
|
@ -98,7 +98,7 @@ export default function Landing() {
|
|||
</div>
|
||||
</Link>
|
||||
</section>
|
||||
<section>
|
||||
<section className="ui__ container">
|
||||
<Trans i18nKey="landing.aboutUs">
|
||||
<h2>Qui sommes-nous ?</h2>
|
||||
<p>
|
||||
|
|
|
@ -1,18 +1,20 @@
|
|||
import { setSimulationConfig, updateSituation } from 'Actions/actions'
|
||||
import RuleInput from 'Components/conversation/RuleInput'
|
||||
import { DistributionBranch } from 'Components/Distribution'
|
||||
import Value, { Condition } from 'Components/EngineValue'
|
||||
import { Condition } from 'Components/EngineValue'
|
||||
import SimulateurWarning from 'Components/SimulateurWarning'
|
||||
import config from 'Components/simulationConfigs/artiste-auteur.yaml'
|
||||
import 'Components/TargetSelection.css'
|
||||
import Animate from 'Components/ui/animate'
|
||||
import { IsEmbeddedContext } from 'Components/utils/embeddedContext'
|
||||
import { EngineContext, useEvaluation } from 'Components/utils/EngineContext'
|
||||
import Value from 'Components/EngineValue'
|
||||
import RuleInput from 'Components/conversation/RuleInput'
|
||||
import React, { createContext, useContext, useEffect, useState } from 'react'
|
||||
import { Trans } from 'react-i18next'
|
||||
import { useDispatch, useSelector } from 'react-redux'
|
||||
import { DottedName } from 'Rules'
|
||||
import { situationSelector } from 'Selectors/simulationSelectors'
|
||||
import styled from 'styled-components'
|
||||
import config from './configs/artiste-auteur.yaml'
|
||||
import Animate from 'Components/ui/animate'
|
||||
|
||||
const InitialRenderContext = createContext(false)
|
||||
function useInitialRender() {
|
||||
|
@ -29,9 +31,17 @@ export default function ArtisteAuteur() {
|
|||
dispatch(setSimulationConfig(config))
|
||||
}, [])
|
||||
const initialRender = useInitialRender()
|
||||
const inIframe = useContext(IsEmbeddedContext)
|
||||
|
||||
return (
|
||||
<>
|
||||
{!inIframe && (
|
||||
<h1>
|
||||
<Trans i18nKey="simulateurs.artiste-auteur.titre">
|
||||
Estimer mes cotisations d’artiste-auteur
|
||||
</Trans>
|
||||
</h1>
|
||||
)}
|
||||
<SimulateurWarning simulateur="artiste-auteur" />
|
||||
<section className="ui__ light card">
|
||||
<div id="targetSelection">
|
||||
|
|
|
@ -0,0 +1,172 @@
|
|||
import Warning from 'Components/SimulateurWarning'
|
||||
import Simulation from 'Components/Simulation'
|
||||
import autoEntrepreneurConfig from 'Components/simulationConfigs/auto-entrepreneur.yaml'
|
||||
import StackedBarChart from 'Components/StackedBarChart'
|
||||
import { ThemeColorsContext } from 'Components/utils/colors'
|
||||
import { IsEmbeddedContext } from 'Components/utils/embeddedContext'
|
||||
import { EngineContext } from 'Components/utils/EngineContext'
|
||||
import Meta from 'Components/utils/Meta'
|
||||
import { SitePathsContext } from 'Components/utils/SitePathsContext'
|
||||
import { default as React, useContext } from 'react'
|
||||
import { Trans, useTranslation } from 'react-i18next'
|
||||
import { useSelector } from 'react-redux'
|
||||
import { targetUnitSelector } from 'Selectors/simulationSelectors'
|
||||
import AutoEntrepreneurPreview from './images/AutoEntrepreneurPreview.png'
|
||||
import Emoji from 'Components/utils/Emoji'
|
||||
import { RessourceAutoEntrepreneur } from '../Créer/CreationChecklist'
|
||||
import RuleLink from 'Components/RuleLink'
|
||||
|
||||
export default function AutoEntrepreneur() {
|
||||
const inIframe = useContext(IsEmbeddedContext)
|
||||
const { t, i18n } = useTranslation()
|
||||
const META = {
|
||||
title: t(
|
||||
'pages.simulateurs.auto-entrepreneur.meta.titre',
|
||||
'Auto-entrepreneurs : simulateur de revenus'
|
||||
),
|
||||
description: t(
|
||||
'pages.simulateurs.auto-entrepreneur.meta.description',
|
||||
"Calcul de votre revenu à partir du chiffre d'affaires, après déduction des cotisations et de l'impôt sur le revenu."
|
||||
),
|
||||
ogTitle: t(
|
||||
'pages.simulateurs.auto-entrepreneur.meta.ogTitle',
|
||||
'Auto-entrepreneur : calculez rapidement votre revenu net à partir du CA et vice-versa'
|
||||
),
|
||||
ogDescription: t(
|
||||
'pages.simulateurs.auto-entrepreneur.meta.ogDescription',
|
||||
"Grâce au simulateur de revenu auto-entrepreneur développé par l'Urssaf, vous pourrez estimer le montant de vos revenus en fonction de votre chiffre d'affaire mensuel ou annuel pour mieux gérer votre trésorerie. Ou dans le sens inverse : savoir quel montant facturer pour atteindre un certain revenu."
|
||||
),
|
||||
...(i18n.language === 'fr' && { ogImage: AutoEntrepreneurPreview })
|
||||
}
|
||||
const isEmbedded = React.useContext(IsEmbeddedContext)
|
||||
return (
|
||||
<>
|
||||
<Meta {...META} />
|
||||
{!inIframe && (
|
||||
<h1>
|
||||
<Trans i18nKey="pages.simulateurs.auto-entrepreneur.titre">
|
||||
Simulateur de revenus auto-entrepreneur
|
||||
</Trans>
|
||||
</h1>
|
||||
)}
|
||||
<Warning simulateur="auto-entrepreneur" />
|
||||
<Simulation
|
||||
config={autoEntrepreneurConfig}
|
||||
explanations={<ExplanationSection />}
|
||||
/>
|
||||
{!isEmbedded && <SeoExplanations />}
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
function ExplanationSection() {
|
||||
const engine = useContext(EngineContext)
|
||||
const { t } = useTranslation()
|
||||
const { palettes } = useContext(ThemeColorsContext)
|
||||
const targetUnit = useSelector(targetUnitSelector)
|
||||
const impôt = engine.evaluate('impôt', { unit: targetUnit })
|
||||
|
||||
return (
|
||||
<section>
|
||||
<h2>
|
||||
<Trans>Répartition du chiffre d'affaires</Trans>
|
||||
</h2>
|
||||
<StackedBarChart
|
||||
data={[
|
||||
{
|
||||
...engine.evaluate(
|
||||
'dirigeant . auto-entrepreneur . net après impôt',
|
||||
{ unit: targetUnit }
|
||||
),
|
||||
title: t("Revenu (incluant les dépenses liées à l'activité)"),
|
||||
color: palettes[0][0]
|
||||
},
|
||||
|
||||
...(impôt.nodeValue
|
||||
? [{ ...impôt, title: t('impôt'), color: palettes[1][0] }]
|
||||
: []),
|
||||
{
|
||||
...engine.evaluate(
|
||||
'dirigeant . auto-entrepreneur . cotisations et contributions',
|
||||
{ unit: targetUnit }
|
||||
),
|
||||
title: t('Cotisations'),
|
||||
color: palettes[1][1]
|
||||
}
|
||||
]}
|
||||
/>
|
||||
</section>
|
||||
)
|
||||
}
|
||||
|
||||
function SeoExplanations() {
|
||||
const sitePaths = useContext(SitePathsContext)
|
||||
return (
|
||||
<Trans i18nKey="pages.simulateurs.auto-entrepreneur.seo explanation">
|
||||
<h2>Comment calculer le revenu net d'un auto-entrepreneur ?</h2>
|
||||
<p>
|
||||
Un auto-entrepreneur doit payer des cotisations sociales à
|
||||
l'administration. Ces cotisations servent au financement de la sécurité
|
||||
sociale, et ouvrent des droits pour la retraite ou pour l'assurance
|
||||
maladie. Elle permettent également de financer la formation
|
||||
professionnelle. Leur montant varie en fonction du type d'activité.
|
||||
</p>
|
||||
<p>
|
||||
<Emoji emoji="👉" />{' '}
|
||||
<RuleLink dottedName="dirigeant . auto-entrepreneur . cotisations et contributions">
|
||||
Voir le détail du calcul des cotisations
|
||||
</RuleLink>
|
||||
</p>
|
||||
<p>
|
||||
Il ne faut pas oublier de retrancher toutes les dépenses effectuées dans
|
||||
le cadre de l'activité professionnelle (équipements, matière premières,
|
||||
local, transport). Bien qu'elles ne soient pas utilisées pour le calcul
|
||||
des cotisations et de l'impôt, elles doivent être prises en compte pour
|
||||
vérifier si l'activité est viable économiquement.
|
||||
</p>
|
||||
<p>
|
||||
La formule de calcul complète est donc :
|
||||
<blockquote>
|
||||
<strong>
|
||||
Revenu net = Chiffres d'affaires − Cotisations sociales − Dépenses
|
||||
professionnelles
|
||||
</strong>
|
||||
</blockquote>
|
||||
</p>
|
||||
<h2>
|
||||
Comment calculer l'impôt sur le revenu pour un auto-entrepreneur ?
|
||||
</h2>
|
||||
<p>
|
||||
Si vous avez opté pour le versement libératoire lors de la création de
|
||||
votre auto-entreprise, l'impôt sur le revenu est payé en même temps que
|
||||
les cotisations sociales.
|
||||
</p>
|
||||
<p>
|
||||
<Emoji emoji="👉" />{' '}
|
||||
<RuleLink dottedName="dirigeant . auto-entrepreneur . impôt . versement libératoire . montant">
|
||||
Voir comment est calculé le montant du versement libératoire
|
||||
</RuleLink>
|
||||
</p>
|
||||
<p>
|
||||
Sinon, vous serez imposé selon le barème standard de l'impôt sur le
|
||||
revenu. Le revenu imposable est alors calculé comme un pourcentage du
|
||||
chiffre d'affaires. C'est qu'on appel l'abattement forfaitaire. Ce
|
||||
pourcentage varie en fonction du type d'activité excercé. On dit qu'il
|
||||
est forfaitaire car il ne prends pas en compte les dépenses réelles
|
||||
effectuées dans le cadre de l'activité.
|
||||
</p>
|
||||
<p>
|
||||
<Emoji emoji="👉" />{' '}
|
||||
<RuleLink dottedName="dirigeant . auto-entrepreneur . impôt . revenu abattu">
|
||||
Voir le détail du calcul du revenu abattu pour un auto-entrepreneur
|
||||
</RuleLink>
|
||||
</p>
|
||||
<h2>
|
||||
<Trans>Ressources utiles</Trans>
|
||||
</h2>
|
||||
<div style={{ display: 'flex', flexWrap: 'wrap' }}>
|
||||
<RessourceAutoEntrepreneur />
|
||||
</div>
|
||||
</Trans>
|
||||
)
|
||||
}
|
|
@ -1,15 +1,20 @@
|
|||
import RuleLink from 'Components/RuleLink'
|
||||
import Simulation from 'Components/Simulation'
|
||||
import chomagePartielConfig from 'Components/simulationConfigs/chômage-partiel.yaml'
|
||||
import Animate from 'Components/ui/animate'
|
||||
import Warning from 'Components/ui/WarningBlock'
|
||||
import { IsEmbeddedContext } from 'Components/utils/embeddedContext'
|
||||
import { useEvaluation } from 'Components/utils/EngineContext'
|
||||
import { Markdown } from 'Components/utils/markdown'
|
||||
import { ScrollToTop } from 'Components/utils/Scroll'
|
||||
import { EvaluatedRule, formatValue } from 'publicodes'
|
||||
import React, { useContext, useEffect, useState } from 'react'
|
||||
import { useTranslation } from 'react-i18next'
|
||||
import { Trans, useTranslation } from 'react-i18next'
|
||||
import { DottedName } from 'Rules'
|
||||
import styled from 'styled-components'
|
||||
import { productionMode } from '../../../../utils'
|
||||
import ChômagePartielPreview from './images/ChômagePartielPreview.png'
|
||||
import Meta from 'Components/utils/Meta'
|
||||
|
||||
declare global {
|
||||
interface Window {
|
||||
|
@ -32,8 +37,37 @@ export default function ChômagePartiel() {
|
|||
document.body.removeChild(script)
|
||||
}
|
||||
}, [])
|
||||
const { t, i18n } = useTranslation()
|
||||
const META = {
|
||||
title: t(
|
||||
'pages.simulateurs.chômage-partiel.meta.titre',
|
||||
"Calcul de l'indemnité chômage partiel : le simulateur Urssaf"
|
||||
),
|
||||
description: t(
|
||||
'pages.simulateurs.chômage-partiel.meta.description',
|
||||
"Calcul du revenu net pour l'employé et du reste à charge pour l'employeur après remboursement de l'Etat, en prenant en compte toutes les cotisations sociales."
|
||||
),
|
||||
ogTitle: t(
|
||||
'pages.simulateurs.chômage-partiel.meta.ogTitle',
|
||||
"Simulateur chômage partiel : découvrez l'impact sur le revenu net salarié et le coût total employeur."
|
||||
),
|
||||
ogDescription: t(
|
||||
'pages.simulateurs.chômage-partiel.meta.ogDescription',
|
||||
"Accédez à une première estimation en saisissant à partir d'un salaire brut. Vous pourrez ensuite personaliser votre situation (temps partiel, convention, etc). Prends en compte la totalité des cotisations, y compris celles spécifiques à l'indemnité (CSG et CRDS)."
|
||||
),
|
||||
...(i18n.language === 'fr' && { ogImage: ChômagePartielPreview })
|
||||
}
|
||||
return (
|
||||
<>
|
||||
<Meta {...META} />
|
||||
|
||||
<ScrollToTop />
|
||||
{!inIframe && (
|
||||
<Trans i18nKey="coronavirus.description">
|
||||
<h1>Covid-19 : Simulateur de chômage partiel</h1>
|
||||
</Trans>
|
||||
)}
|
||||
|
||||
<Warning localStorageKey="covid19">
|
||||
<ul>
|
||||
<li>
|
||||
|
@ -43,12 +77,14 @@ export default function ChômagePartiel() {
|
|||
</ul>
|
||||
</Warning>
|
||||
<Simulation
|
||||
config={chomagePartielConfig}
|
||||
results={<ExplanationSection />}
|
||||
customEndMessages={
|
||||
<span className="ui__ notice">Voir les résultats au-dessus</span>
|
||||
}
|
||||
showPeriodSwitch={false}
|
||||
/>
|
||||
{!inIframe && <TextExplanations />}
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
@ -317,3 +353,58 @@ const ResultTable = styled.table`
|
|||
background: var(--lighterColor);
|
||||
}
|
||||
`
|
||||
|
||||
function TextExplanations() {
|
||||
const { t } = useTranslation()
|
||||
|
||||
return (
|
||||
<Markdown
|
||||
css={`
|
||||
margin-top: 2rem;
|
||||
`}
|
||||
source={t(
|
||||
'pages.simulateurs.chômage-partiel.explications seo',
|
||||
`
|
||||
[👨💻 Intégrer ce simulateur sur votre site](/intégration/iframe?module=simulateur-chomage-partiel)
|
||||
|
||||
## Comment calculer l'indemnité d'activité partielle ?
|
||||
|
||||
L'indemnité d'activité partielle de base est fixée par la loi à **70% du brut**. Elle est proratisée en fonction du nombre d'heures chômées. Pour un salarié à 2300 € brut mensuel, qui travaille à 50% de son temps usuel, cela donne **2300 € × 50% × 70% = 805 €**
|
||||
|
||||
A cette indemnité de base s'ajoute l'indemnité complémentaire pour les salaires proches du SMIC. Ce complément intervient lorsque le cumul de la rémunération et de l'indemnité de base est en dessous d'un SMIC net.
|
||||
|
||||
Ces indemnités sont prises en charge par l'employeur, qui sera ensuite remboursé en parti ou en totalité par l'Etat.
|
||||
|
||||
👉 [Voir le détail du calcul de l'indemnité](/documentation/contrat-salarié/activité-partielle/indemnités)
|
||||
|
||||
|
||||
## Comment calculer la part remboursée par l'État ?
|
||||
|
||||
L'Etat prend en charge une partie de l'indemnité partielle pour les salaires allant jusqu'à **4,5 SMIC**, avec un minimum à 8,03€ par heures chômée.
|
||||
|
||||
Concrètement, cela abouti à une prise en charge à **100%** pour les salaires proches du SMIC. Celle-ci diminue progressivement jusqu'à se stabiliser à **93%** pour les salaires compris **entre 2000 € et 7000 €** (salaire correspondant à la limite de 4.5 SMIC).
|
||||
|
||||
👉 [Voir le détail du calcul du remboursement de l'indemnité](/documentation/contrat-salarié/activité-partielle/indemnisation-entreprise)
|
||||
|
||||
## Comment déclarer une activité partielle ?
|
||||
|
||||
Face à la crise du coronavirus, les modalités de passage en activité partielle
|
||||
ont été allégées. L'employeur est autorisé a placer ses salariés en activité
|
||||
partielle avant que la demande officielle ne soit déposée. Celui-ci dispose
|
||||
ensuite d'un délai de **30 jours** pour se mettre en règle. Les
|
||||
indemnités seront versées avec un effet rétro-actif débutant à la mise en place
|
||||
du chômage partiel.
|
||||
|
||||
👉 [Effectuer la demande de chômage partiel](https://www.service-public.fr/professionnels-entreprises/vosdroits/R31001)
|
||||
|
||||
## Quelles sont les cotisations sociales à payer pour l'indemnité d'activité partielle ?
|
||||
|
||||
L'indemnité d'activité partielle est soumise à la CSG/CRDS et à une
|
||||
contribution maladie dans certains cas. Pour en savoir plus, voir la page explicative sur [le site de l'URSSAF](https://www.urssaf.fr/portail/home/actualites/toute-lactualite-employeur/activite-partielle--nouveau-disp.html).
|
||||
|
||||
|
||||
`
|
||||
)}
|
||||
/>
|
||||
)
|
||||
}
|
||||
|
|
|
@ -1,89 +1,164 @@
|
|||
import { SitePathsContext } from 'Components/utils/SitePathsContext'
|
||||
import React, { useContext } from 'react'
|
||||
import emoji from 'react-easy-emoji'
|
||||
import { Helmet } from 'react-helmet'
|
||||
import { Trans, useTranslation } from 'react-i18next'
|
||||
import { Link } from 'react-router-dom'
|
||||
import classnames from 'classnames'
|
||||
|
||||
import simulatorSvg from './images/illustration-simulateur.svg'
|
||||
import useSimulatorsData, { SimulatorData } from './metadata'
|
||||
import { SitePathsContext } from 'Components/utils/SitePathsContext'
|
||||
export function useSimulatorsMetadata() {
|
||||
const { t } = useTranslation()
|
||||
const sitePaths = useContext(SitePathsContext)
|
||||
|
||||
type SimulatorMetaData = {
|
||||
name: string
|
||||
icône: string
|
||||
description?: string
|
||||
sitePath: string
|
||||
label?: string
|
||||
}
|
||||
|
||||
return [
|
||||
{
|
||||
name: t('Assimilé salarié'),
|
||||
icône: '☂️',
|
||||
description: t(
|
||||
'simulateurs.résumé.assimilé',
|
||||
"Calculer le revenu d'un dirigeant de SAS, SASU ou SARL minoritaire"
|
||||
),
|
||||
sitePath: sitePaths.simulateurs.SASU
|
||||
},
|
||||
{
|
||||
name: t('Indépendant'),
|
||||
icône: '👩🔧',
|
||||
description: t(
|
||||
'simulateurs.résumé.indépendant',
|
||||
"Calculer le revenu d'un dirigeant de EURL, EI, ou SARL majoritaire"
|
||||
),
|
||||
sitePath: sitePaths.simulateurs.indépendant
|
||||
},
|
||||
{
|
||||
name: t('Auto-entrepreneur'),
|
||||
icône: '🚶♂️',
|
||||
description: t(
|
||||
'simulateurs.résumé.auto',
|
||||
"Calculer le revenu (ou le chiffre d'affaires) d'un auto-entrepreneur"
|
||||
),
|
||||
sitePath: sitePaths.simulateurs['auto-entrepreneur']
|
||||
},
|
||||
{
|
||||
name: t('Salarié'),
|
||||
icône: '🤝',
|
||||
description: t(
|
||||
'simulateurs.résumé.salarié',
|
||||
"Calculer le salaire net, brut, ou total d'un salarié, stagiaire, ou assimilé"
|
||||
),
|
||||
sitePath: sitePaths.simulateurs.salarié
|
||||
},
|
||||
{
|
||||
name: t('Artiste-auteur'),
|
||||
icône: '👩🎨',
|
||||
description: t(
|
||||
'simulateurs.résumé.artiste-auteur',
|
||||
"Estimer les cotisations sociales d'un artiste ou auteur"
|
||||
),
|
||||
sitePath: sitePaths.simulateurs['artiste-auteur']
|
||||
},
|
||||
{
|
||||
name: t('Comparaison statuts'),
|
||||
icône: '📊',
|
||||
description: t(
|
||||
'simulateurs.résumé.comparaison',
|
||||
'Découvrir les différences entre les régimes (cotisations,retraite, maternité, maladie, etc.)'
|
||||
),
|
||||
sitePath: sitePaths.simulateurs.comparaison
|
||||
},
|
||||
{
|
||||
name: t('Économie collaborative'),
|
||||
description: t(
|
||||
'simulateurs.résumé.économie-collaborative',
|
||||
'Un guide pour savoir comment déclarer vos revenus issus de plateformes en ligne (AirBnb, leboncoin, blablacar, etc.)'
|
||||
),
|
||||
icône: '🙋',
|
||||
sitePath: sitePaths.simulateurs.économieCollaborative.index
|
||||
},
|
||||
{
|
||||
name: t('Chômage partiel'),
|
||||
description: t(
|
||||
'simulateurs.résumé.chômage-partiel',
|
||||
"Simuler le revenu net versé au salarié, ainsi que le coût total restant à charge pour l'entreprise en cas de recours à l'activité partielle."
|
||||
),
|
||||
icône: '😷',
|
||||
label: t('Covid 19'),
|
||||
sitePath: sitePaths.simulateurs['chômage-partiel']
|
||||
},
|
||||
{
|
||||
name: t('Aide à la déclaration de revenu'),
|
||||
description: t(
|
||||
'simulateurs.résumé.aide-déclaration-revenu-indep',
|
||||
'Calculer facilement les montants des charges sociales à reporter dans votre déclaration de revenu 2019.'
|
||||
),
|
||||
icône: '✍️',
|
||||
label: t('Indépendant'),
|
||||
sitePath: sitePaths.gérer.déclarationIndépendant
|
||||
},
|
||||
{
|
||||
name: t('Demande de mobilité'),
|
||||
description: t(
|
||||
'simulateurs.résumé.demande-mobilité',
|
||||
'Formulaire de demande de mobilité en Europe pour les travailleurs indépendants'
|
||||
),
|
||||
icône: '🧳',
|
||||
label: t('Indépendant'),
|
||||
sitePath: sitePaths.gérer.formulaireMobilité
|
||||
}
|
||||
] as Array<SimulatorMetaData>
|
||||
}
|
||||
|
||||
export default function Simulateurs() {
|
||||
const { t } = useTranslation()
|
||||
const sitePaths = useContext(SitePathsContext)
|
||||
const simulators = useSimulatorsData()
|
||||
const titre = t('pages.simulateurs.accueil.titre', 'Simulateurs disponibles')
|
||||
const simulatorsMetadata = useSimulatorsMetadata()
|
||||
const titre = t('simulateurs.accueil.titre', 'Simulateurs disponibles')
|
||||
return (
|
||||
<>
|
||||
<Helmet>
|
||||
<title>{titre}</title>
|
||||
</Helmet>
|
||||
<section css="display: flex; align-items: flex-start; justify-content: space-between">
|
||||
<div>
|
||||
<h1>{titre}</h1>
|
||||
<p className="ui__ lead">
|
||||
<Trans i18nKey="pages.simulateurs.accueil.header">
|
||||
Tous les simulateurs sur ce site sont maintenus à jour avec les
|
||||
dernières évolutions législatives.
|
||||
</Trans>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<img
|
||||
className="ui__ hide-mobile"
|
||||
src={simulatorSvg}
|
||||
css="margin-left: 3rem; max-width: 15rem; transform: translateX(2rem) translateY(3rem) scale(1.4);"
|
||||
/>
|
||||
</section>
|
||||
<section>
|
||||
<h2>
|
||||
<Trans>Salariés et employeurs</Trans>
|
||||
</h2>
|
||||
<div className="ui__ box-container">
|
||||
<SimulateurCard {...simulators.salarié} />
|
||||
<SimulateurCard {...simulators['chômage-partiel']} />
|
||||
</div>
|
||||
|
||||
<h2>
|
||||
<Trans>Par statut</Trans>
|
||||
</h2>
|
||||
<div className="ui__ box-container">
|
||||
<SimulateurCard {...simulators['auto-entrepreneur']} />
|
||||
<SimulateurCard {...simulators.indépendant} />
|
||||
<SimulateurCard {...simulators.sasu} />
|
||||
<SimulateurCard {...simulators['artiste-auteur']} />
|
||||
{process.env.HEAD !== 'master' && (
|
||||
<SimulateurCard {...simulators['profession-libérale']} />
|
||||
<section className="ui__ full-width light-bg">
|
||||
<h1 css="min-width: 100%; text-align: center">{titre}</h1>
|
||||
<div
|
||||
className="ui__ center-flex"
|
||||
// Il y a actuellement 6 simulateurs affichés, c'est plus beau
|
||||
// d'afficher une grille de 3x2 sur les écrans larges.
|
||||
//
|
||||
// TODO: on pourrait généraliser cette logique sur toutes les grilles
|
||||
// avec des blocs centrés pour éviter d'avoir 1 seul élements sur la
|
||||
// dernière ligne.
|
||||
style={{ maxWidth: 1100, margin: 'auto' }}
|
||||
>
|
||||
{simulatorsMetadata.map(
|
||||
({ name, description, sitePath, icône, label }) => (
|
||||
<Link
|
||||
className="ui__ interactive card box"
|
||||
key={sitePath}
|
||||
to={{
|
||||
state: { fromSimulateurs: true },
|
||||
pathname: sitePath
|
||||
}}
|
||||
>
|
||||
<div className="ui__ big box-icon">{emoji(icône)}</div>
|
||||
<h3>{name}</h3>
|
||||
<p className="ui__ notice" css="flex: 1">
|
||||
{description}
|
||||
</p>
|
||||
{label && <span className="ui__ label">{label}</span>}
|
||||
</Link>
|
||||
)
|
||||
)}
|
||||
</div>
|
||||
{process.env.HEAD !== 'master' && (
|
||||
<>
|
||||
<h3>
|
||||
<small>
|
||||
<Trans>Professionnels de santé</Trans> {emoji('🏥')}
|
||||
</small>
|
||||
</h3>
|
||||
<div className="ui__ small box-container">
|
||||
<SimulateurCard small {...simulators['auxiliaire-médical']} />
|
||||
<SimulateurCard small {...simulators['chirurgien-dentiste']} />
|
||||
<SimulateurCard small {...simulators.médecin} />
|
||||
<SimulateurCard small {...simulators['sage-femme']} />
|
||||
</div>
|
||||
</>
|
||||
)}
|
||||
<h2>
|
||||
<Trans>Autres outils</Trans>
|
||||
</h2>
|
||||
<div className="ui__ box-container">
|
||||
<SimulateurCard {...simulators['demande-mobilité']} />
|
||||
<SimulateurCard {...simulators['comparaison-statuts']} />
|
||||
<SimulateurCard {...simulators['économie-collaborative']} />
|
||||
<SimulateurCard {...simulators['aide-déclaration-indépendant']} />
|
||||
</div>
|
||||
</section>
|
||||
<section>
|
||||
<Trans i18nKey="page.simulateurs.accueil.description">
|
||||
<Trans i18nKey="simulateurs.accueil.description">
|
||||
<p>Tous les simulateurs sur ce site sont :</p>
|
||||
<ul>
|
||||
<li>
|
||||
|
@ -95,9 +170,7 @@ export default function Simulateurs() {
|
|||
de dispositifs pris en compte
|
||||
</li>
|
||||
<li>
|
||||
<strong>Intégrable facilement et gratuitement</strong> sur
|
||||
n'importe quel site internet.{' '}
|
||||
<Link to={sitePaths.integration.iframe}>En savoir plus</Link>.
|
||||
Développés en <strong>partenariat avec l'Urssaf</strong>
|
||||
</li>
|
||||
</ul>
|
||||
</Trans>
|
||||
|
@ -105,34 +178,3 @@ export default function Simulateurs() {
|
|||
</>
|
||||
)
|
||||
}
|
||||
|
||||
function SimulateurCard({
|
||||
small = false,
|
||||
shortName,
|
||||
meta,
|
||||
path,
|
||||
icône
|
||||
}: SimulatorData[keyof SimulatorData] & { small?: boolean }) {
|
||||
return (
|
||||
<Link
|
||||
className={classnames('ui__ interactive card box light-border', {
|
||||
small
|
||||
})}
|
||||
key={path}
|
||||
to={{
|
||||
state: { fromSimulateurs: true },
|
||||
pathname: path
|
||||
}}
|
||||
>
|
||||
<div className={classnames('ui__ box-icon', { big: !small })}>
|
||||
{emoji(icône)}
|
||||
</div>
|
||||
{small ? shortName : <h3>{shortName}</h3>}
|
||||
{!small && meta?.description && (
|
||||
<p className="ui__ notice" css="flex: 1">
|
||||
{meta.description}
|
||||
</p>
|
||||
)}
|
||||
</Link>
|
||||
)
|
||||
}
|
||||
|
|
|
@ -0,0 +1,76 @@
|
|||
import Warning from 'Components/SimulateurWarning'
|
||||
import Simulation from 'Components/Simulation'
|
||||
import indépendantConfig from 'Components/simulationConfigs/indépendant.yaml'
|
||||
import StackedBarChart from 'Components/StackedBarChart'
|
||||
import { ThemeColorsContext } from 'Components/utils/colors'
|
||||
import { IsEmbeddedContext } from 'Components/utils/embeddedContext'
|
||||
import { EngineContext } from 'Components/utils/EngineContext'
|
||||
import { default as React, useContext } from 'react'
|
||||
import { Helmet } from 'react-helmet'
|
||||
import { Trans, useTranslation } from 'react-i18next'
|
||||
|
||||
export default function Indépendant() {
|
||||
const { t } = useTranslation()
|
||||
const inIframe = useContext(IsEmbeddedContext)
|
||||
|
||||
return (
|
||||
<>
|
||||
<Helmet>
|
||||
<title>
|
||||
{t(
|
||||
'simulateurs.indépendant.page.titre',
|
||||
'Indépendant : simulateur officiel de revenus et de cotisations'
|
||||
)}
|
||||
</title>
|
||||
<meta
|
||||
name="description"
|
||||
content={t(
|
||||
'simulateurs.indépendant.page.description',
|
||||
"Estimez vos revenus en tant qu'indépendant à partir de votre chiffre d'affaire (pour les EI et les gérants EURL et SARL majoritaires). Prise en compte de toutes les cotisations et de l'impôt sur le revenu. Simulateur officiel de l'Urssaf"
|
||||
)}
|
||||
/>
|
||||
</Helmet>
|
||||
{!inIframe && (
|
||||
<h1>
|
||||
<Trans i18nKey="simulateurs.indépendant.titre">
|
||||
Simulateur de revenus pour indépendants
|
||||
</Trans>
|
||||
</h1>
|
||||
)}
|
||||
<Warning simulateur="indépendant" />
|
||||
<Simulation
|
||||
config={indépendantConfig}
|
||||
explanations={<ExplanationSection />}
|
||||
/>
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
function ExplanationSection() {
|
||||
const engine = useContext(EngineContext)
|
||||
const { t } = useTranslation()
|
||||
const { palettes } = useContext(ThemeColorsContext)
|
||||
|
||||
return (
|
||||
<section>
|
||||
<h2>Répartition de la rémunération totale</h2>
|
||||
<StackedBarChart
|
||||
data={[
|
||||
{
|
||||
...engine.evaluate('revenu net après impôt'),
|
||||
title: t('Revenu disponible'),
|
||||
color: palettes[0][0]
|
||||
},
|
||||
{ ...engine.evaluate('impôt'), color: palettes[1][0] },
|
||||
{
|
||||
...engine.evaluate(
|
||||
'dirigeant . indépendant . cotisations et contributions'
|
||||
),
|
||||
title: t('Cotisations'),
|
||||
color: palettes[1][1]
|
||||
}
|
||||
]}
|
||||
/>
|
||||
</section>
|
||||
)
|
||||
}
|
|
@ -1,12 +0,0 @@
|
|||
import SimulateurWarning from 'Components/SimulateurWarning'
|
||||
import Simulation from 'Components/Simulation'
|
||||
import IndépendantExplanation from 'Components/simulationExplanation/IndépendantExplanation'
|
||||
import React from 'react'
|
||||
export default function IndépendantSimulation() {
|
||||
return (
|
||||
<>
|
||||
<SimulateurWarning simulateur="indépendant" />
|
||||
<Simulation explanations={<IndépendantExplanation />} />
|
||||
</>
|
||||
)
|
||||
}
|
|
@ -1,34 +0,0 @@
|
|||
import { setSimulationConfig } from 'Actions/actions'
|
||||
import { IsEmbeddedContext } from 'Components/utils/embeddedContext'
|
||||
import Meta from 'Components/utils/Meta'
|
||||
import { default as React, useContext, useEffect } from 'react'
|
||||
import { useDispatch } from 'react-redux'
|
||||
import { useLocation } from 'react-router-dom'
|
||||
import { SimulatorData } from './metadata'
|
||||
|
||||
export default function SimulateurPage({
|
||||
meta,
|
||||
title,
|
||||
config,
|
||||
component: Component,
|
||||
seoExplanations
|
||||
}: SimulatorData[keyof SimulatorData]) {
|
||||
const inIframe = useContext(IsEmbeddedContext)
|
||||
const dispatch = useDispatch()
|
||||
const fromGérer = !!useLocation<{ fromGérer?: boolean }>().state?.fromGérer
|
||||
useEffect(() => {
|
||||
if (!config) {
|
||||
return
|
||||
}
|
||||
dispatch(setSimulationConfig(config, fromGérer))
|
||||
}, [config])
|
||||
|
||||
return (
|
||||
<>
|
||||
{meta && <Meta {...meta} />}
|
||||
{title && !inIframe && <h1>{title}</h1>}
|
||||
<Component />
|
||||
{seoExplanations && !inIframe && seoExplanations}
|
||||
</>
|
||||
)
|
||||
}
|
|
@ -0,0 +1,135 @@
|
|||
import Simulation from 'Components/Simulation'
|
||||
import professionLibéraleConfig from 'Components/simulationConfigs/profession-libérale.yaml'
|
||||
import StackedBarChart from 'Components/StackedBarChart'
|
||||
import { ThemeColorsContext } from 'Components/utils/colors'
|
||||
import { IsEmbeddedContext } from 'Components/utils/embeddedContext'
|
||||
import { EngineContext } from 'Components/utils/EngineContext'
|
||||
import React, { useContext, useEffect } from 'react'
|
||||
import { Helmet } from 'react-helmet'
|
||||
import { Trans, useTranslation } from 'react-i18next'
|
||||
import { SitePathsContext } from 'Components/utils/SitePathsContext'
|
||||
import { useHistory, useParams, useRouteMatch } from 'react-router-dom'
|
||||
import { useDispatch } from 'react-redux'
|
||||
import { updateSituation } from 'Actions/actions'
|
||||
import { DottedName } from 'Rules'
|
||||
import { utils } from 'publicodes'
|
||||
import { capitalise0 } from '../../../../utils'
|
||||
|
||||
// The subsimulator feature allow to customize a simulator page content (title,
|
||||
// description) and url based on the answer to a multiple-choice question.
|
||||
// Arguments:
|
||||
// - `namespace` correspond to the question in the rule set
|
||||
// - `sitepath` is a React Router path descriptor which must contain a
|
||||
// `:subsimulator?` argument
|
||||
function useSubSimulators(
|
||||
namespace: DottedName,
|
||||
sitepath: string
|
||||
): string | undefined {
|
||||
const engine = useContext(EngineContext)
|
||||
const history = useHistory()
|
||||
const dispatch = useDispatch()
|
||||
const subsimulatorUrlParam = '/:subsimulator?'
|
||||
if (!sitepath.includes(subsimulatorUrlParam)) {
|
||||
throw new Error('sitepath must contain the subsimulator param.')
|
||||
}
|
||||
const urlState = useRouteMatch<{ subsimulator: string }>({ path: sitepath })
|
||||
?.params?.subsimulator
|
||||
const defaultUrl = sitepath.replace(subsimulatorUrlParam, '')
|
||||
|
||||
// TODO: ajouter le support de l'attribut "titre" de la règle
|
||||
const situationState = engine.situation[namespace]?.nodeValue
|
||||
|
||||
const encodedSituationState = utils.encodeRuleName(situationState)
|
||||
const subSimulatorsList = Object.keys(engine.getParsedRules())
|
||||
.filter(dottedname => dottedname.startsWith(namespace))
|
||||
.map(dottedname => dottedname.replace(`${namespace} . `, ''))
|
||||
.map(rulename => utils.encodeRuleName(rulename))
|
||||
|
||||
useEffect(() => {
|
||||
if (urlState && !subSimulatorsList.includes(urlState)) {
|
||||
history.push(defaultUrl)
|
||||
} else if (encodedSituationState && encodedSituationState !== urlState) {
|
||||
history.push(`${defaultUrl}/${encodedSituationState}`)
|
||||
} else if (urlState && urlState !== encodedSituationState) {
|
||||
dispatch(updateSituation(namespace, `'${urlState}'`))
|
||||
}
|
||||
}, [urlState, encodedSituationState])
|
||||
if (typeof situationState !== 'string') {
|
||||
return
|
||||
}
|
||||
return situationState
|
||||
}
|
||||
|
||||
export default function ProfessionLibérale() {
|
||||
const { t } = useTranslation()
|
||||
const inIframe = useContext(IsEmbeddedContext)
|
||||
const sitePaths = useContext(SitePathsContext)
|
||||
const professionName = 'profession libérale'
|
||||
// useSubSimulators(
|
||||
// 'dirigeant . indépendant . PL . métier . santé',
|
||||
// sitePaths.simulateurs['profession-libérale']
|
||||
// ) ?? 'profession libérale'
|
||||
|
||||
return (
|
||||
<>
|
||||
<Helmet>
|
||||
<title>
|
||||
{t(
|
||||
'simulateurs.profession-libérale.page.titre',
|
||||
`${capitalise0(
|
||||
professionName
|
||||
)} : simulateur de revenus et de cotisations`
|
||||
)}
|
||||
</title>
|
||||
<meta
|
||||
name="description"
|
||||
content={t(
|
||||
'simulateurs.profession-libérale.page.description',
|
||||
`Estimez vos revenus en tant que ${professionName} à partir de votre chiffre d'affaire (pour les EI et les gérants EURL et SARL majoritaires). Prise en compte de toutes les cotisations et de l'impôt sur le revenu. Simulateur officiel de l'Urssaf`
|
||||
)}
|
||||
/>
|
||||
</Helmet>
|
||||
{!inIframe && (
|
||||
<h1>
|
||||
<Trans i18nKey="simulateurs.profession-libérale.titre">
|
||||
Simulateur de revenus pour {professionName}
|
||||
</Trans>
|
||||
</h1>
|
||||
)}
|
||||
{/* <Warning simulateur="professionnelSanté" /> */}
|
||||
<Simulation
|
||||
config={professionLibéraleConfig}
|
||||
explanations={<ExplanationSection />}
|
||||
/>
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
function ExplanationSection() {
|
||||
const engine = useContext(EngineContext)
|
||||
const { t } = useTranslation()
|
||||
const { palettes } = useContext(ThemeColorsContext)
|
||||
|
||||
return (
|
||||
<section>
|
||||
<h2>Répartition de la rémunération totale</h2>
|
||||
<StackedBarChart
|
||||
data={[
|
||||
{
|
||||
...engine.evaluate('revenu net après impôt'),
|
||||
title: t('Revenu disponible'),
|
||||
color: palettes[0][0]
|
||||
},
|
||||
{ ...engine.evaluate('impôt'), color: palettes[1][0] },
|
||||
{
|
||||
...engine.evaluate(
|
||||
'dirigeant . indépendant . cotisations et contributions'
|
||||
),
|
||||
title: t('Cotisations'),
|
||||
color: palettes[1][1]
|
||||
}
|
||||
]}
|
||||
/>
|
||||
</section>
|
||||
)
|
||||
}
|
|
@ -0,0 +1,98 @@
|
|||
import RuleLink from 'Components/RuleLink'
|
||||
import SalaryExplanation from 'Components/SalaryExplanation'
|
||||
import Warning from 'Components/SimulateurWarning'
|
||||
import Simulation from 'Components/Simulation'
|
||||
import assimiléConfig from 'Components/simulationConfigs/assimilé.yaml'
|
||||
import { IsEmbeddedContext } from 'Components/utils/embeddedContext'
|
||||
import Meta from 'Components/utils/Meta'
|
||||
import React, { useContext } from 'react'
|
||||
import { Trans, useTranslation } from 'react-i18next'
|
||||
import RémunérationSASUPreview from './images/RémunérationSASUPreview.png'
|
||||
|
||||
export default function RémunérationSASU() {
|
||||
const { t } = useTranslation()
|
||||
const META = {
|
||||
title: t(
|
||||
'pages.simulateurs.sasu.meta.titre',
|
||||
'Dirigeant de SASU : simulateur de revenus Urssaf'
|
||||
),
|
||||
description: t(
|
||||
'pages.simulateurs.sasu.meta.description',
|
||||
"Calcul du salaire net à partir du chiffre d'affaires + charges et vice-versa."
|
||||
),
|
||||
ogTitle: t(
|
||||
'pages.simulateurs.sasu.meta.ogTitle',
|
||||
'Rémunération du dirigeant de SASU : un simulateur pour connaître votre salaire net'
|
||||
),
|
||||
ogDescription: t(
|
||||
'pages.simulateurs.sasu.meta.ogDescription',
|
||||
'En tant que dirigeant assimilé-salarié, calculez immédiatement votre revenu net après impôt à partir du total alloué à votre rémunération.'
|
||||
),
|
||||
ogImage: RémunérationSASUPreview
|
||||
}
|
||||
const inIframe = useContext(IsEmbeddedContext)
|
||||
|
||||
return (
|
||||
<>
|
||||
<Meta {...META} />
|
||||
{!inIframe && (
|
||||
<h1>
|
||||
<Trans i18nKey="pages.simulateurs.sasu.titre">
|
||||
Simulateur de revenus pour dirigeant de SASU
|
||||
</Trans>
|
||||
</h1>
|
||||
)}
|
||||
<Warning simulateur="SASU" />
|
||||
<Simulation
|
||||
config={assimiléConfig}
|
||||
explanations={<SalaryExplanation />}
|
||||
/>
|
||||
{!inIframe && <SeoExplanations />}
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
function SeoExplanations() {
|
||||
return (
|
||||
<Trans i18nKey="pages.simulateurs.dirigean sasu.explication seo">
|
||||
<h2>Comment calculer le salaire d'un dirigeant de SASU ? </h2>
|
||||
|
||||
<p>
|
||||
Comme pour un salarié classique, le <strong>dirigeant de sasu</strong>{' '}
|
||||
paye des cotisations sociales sur la rémunération qu'il se verse. Les
|
||||
cotisations sont calculées de la même manière que pour le salarié :
|
||||
elles sont décomposées en partie employeur et partie salarié et sont
|
||||
exprimées comme un pourcentage du salaire brut.
|
||||
</p>
|
||||
<p>
|
||||
Le dirigeant assimilé-salarié ne paye pas de{' '}
|
||||
<strong>cotisations chômage</strong>. Par ailleurs, il ne bénéficie pas
|
||||
de la{' '}
|
||||
<RuleLink dottedName="contrat salarié . réduction générale">
|
||||
réduction générale de cotisations
|
||||
</RuleLink>{' '}
|
||||
ni des dispositifs encadrés par le code du travail comme les{' '}
|
||||
<RuleLink dottedName="contrat salarié . temps de travail . heures supplémentaires">
|
||||
heures supplémentaires
|
||||
</RuleLink>{' '}
|
||||
ou les primes.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Il peut en revanche prétendre à la{' '}
|
||||
<RuleLink dottedName="dirigeant . assimilé salarié . réduction ACRE">
|
||||
réduction ACRE
|
||||
</RuleLink>{' '}
|
||||
en debut d'activité, sous certaines conditions.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Vous pouvez utiliser notre simulateur pour calculer la{' '}
|
||||
<strong>rémunération nette</strong> à partir d'un montant superbrut
|
||||
alloué à la rémunération du dirigeant. Il vous suffit pour cela saisir
|
||||
le montant total alloué dans la case "total chargé". La simulation peut
|
||||
ensuite être affinée en répondant aux différentes questions.
|
||||
</p>
|
||||
</Trans>
|
||||
)
|
||||
}
|
|
@ -0,0 +1,168 @@
|
|||
import Banner from 'Components/Banner'
|
||||
import PreviousSimulationBanner from 'Components/PreviousSimulationBanner'
|
||||
import RuleLink from 'Components/RuleLink'
|
||||
import SalaryExplanation from 'Components/SalaryExplanation'
|
||||
import Simulation from 'Components/Simulation'
|
||||
import salariéConfig from 'Components/simulationConfigs/salarié.yaml'
|
||||
import { IsEmbeddedContext } from 'Components/utils/embeddedContext'
|
||||
import Meta from 'Components/utils/Meta'
|
||||
import { SitePathsContext } from 'Components/utils/SitePathsContext'
|
||||
import { default as React, useContext } from 'react'
|
||||
import { Trans, useTranslation } from 'react-i18next'
|
||||
import { Link } from 'react-router-dom'
|
||||
import urlIllustrationNetBrutEn from './images/illustration-net-brut-en.png'
|
||||
import urlIllustrationNetBrut from './images/illustration-net-brut.png'
|
||||
import salaireBrutNetPreviewEN from './images/SalaireBrutNetPreviewEN.png'
|
||||
import salaireBrutNetPreviewFR from './images/SalaireBrutNetPreviewFR.png'
|
||||
|
||||
export default function Salarié() {
|
||||
const { t, i18n } = useTranslation()
|
||||
const META = {
|
||||
title: t(
|
||||
'pages.simulateurs.salarié.meta.titre',
|
||||
'Salaire brut / net : le convertisseur Urssaf'
|
||||
),
|
||||
description: t(
|
||||
'pages.simulateurs.salarié.meta.description',
|
||||
"Calcul du salaire net, net après impôt et coût total employeur. Beaucoup d'options disponibles (cadre, stage, apprentissage, heures supplémentaires, etc.)"
|
||||
),
|
||||
ogTitle: t(
|
||||
'pages.simulateurs.salarié.meta.ogTitle',
|
||||
'Salaire brut, net, net après impôt, coût total : le simulateur ultime pour salariés et employeurs'
|
||||
),
|
||||
ogDescription: t(
|
||||
'pages.simulateurs.salarié.meta.ogDescription',
|
||||
"En tant que salarié, calculez immédiatement votre revenu net après impôt à partir du brut mensuel ou annuel. En tant qu'employé, estimez le coût total d'une embauche à partir du brut. Ce simulateur est développé avec les experts de l'Urssaf, et il adapte les calculs à votre situation (statut cadre, stage, apprentissage, heures supplémentaire, titre-restaurants, mutuelle, temps partiel, convention collective, etc.)"
|
||||
),
|
||||
ogImage:
|
||||
i18n.language === 'fr' ? salaireBrutNetPreviewFR : salaireBrutNetPreviewEN
|
||||
}
|
||||
const isEmbedded = React.useContext(IsEmbeddedContext)
|
||||
return (
|
||||
<>
|
||||
<Meta {...META} />
|
||||
<h1>
|
||||
<Trans i18nKey="pages.simulateurs.salarié.titre">
|
||||
Simulateur de revenus pour salarié
|
||||
</Trans>
|
||||
</h1>
|
||||
<div style={{ margin: '2rem' }} />
|
||||
<SalarySimulation />
|
||||
{!isEmbedded && <SeoExplanations />}
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
function SeoExplanations() {
|
||||
const { i18n } = useTranslation()
|
||||
|
||||
return (
|
||||
<Trans i18nKey="pages.simulateurs.salarié.explication seo">
|
||||
<h2>Comment calculer le salaire net ?</h2>
|
||||
|
||||
<p>
|
||||
Lors de l'entretien d'embauche l'employeur propose en général une
|
||||
rémunération exprimée en « brut ». Le montant annoncé inclut ainsi les
|
||||
cotisations salariales, qui servent à financer la protection sociale du
|
||||
salarié et qui sont retranchées du salaire « net » perçu par le salarié.
|
||||
</p>
|
||||
<p>
|
||||
Vous pouvez utiliser notre simulateur pour convertir le{' '}
|
||||
<strong>salaire brut en net</strong> : il vous suffit pour cela saisir
|
||||
la rémunération annoncée dans la case salaire brut. La simulation
|
||||
peut-être affinée en répondant aux différentes questions (CDD, statut
|
||||
cadre, heures supplémentaires, temps partiel, titre-restaurants, etc.).
|
||||
</p>
|
||||
<img
|
||||
src={
|
||||
i18n.language === 'fr'
|
||||
? urlIllustrationNetBrut
|
||||
: urlIllustrationNetBrutEn
|
||||
}
|
||||
css={`
|
||||
width: 100%;
|
||||
`}
|
||||
/>
|
||||
<p>
|
||||
Par ailleurs depuis 2019, l'
|
||||
<RuleLink dottedName="impôt">impôt sur le revenu</RuleLink> est prélevé
|
||||
à la source. Pour ce faire, la direction générale des finances publiques
|
||||
(DGFiP) transmet à l'employeur le taux d'imposition calculé à partir de
|
||||
la déclaration de revenu du salarié. Si ce taux est inconnu, par exemple
|
||||
lors d'une première année d'activité, l'employeur utilise le{' '}
|
||||
<RuleLink dottedName="impôt . taux neutre d'impôt sur le revenu">
|
||||
taux neutre
|
||||
</RuleLink>
|
||||
.
|
||||
</p>
|
||||
|
||||
<h2>Comment calculer le coût d'embauche ?</h2>
|
||||
|
||||
<p>
|
||||
Si vous cherchez à embaucher, vous pouvez calculer le coût total de la
|
||||
rémunération de votre salarié, ainsi que les montants de cotisations
|
||||
patronales et salariales correspondants. Cela vous permet de définir le
|
||||
niveau de rémunération en connaissant le montant global de charge que
|
||||
cela représente pour votre entreprise.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
En plus du salaire, notre simulateur prend en compte le calcul des
|
||||
avantages en nature (téléphone, véhicule de fonction, etc.), ainsi que
|
||||
la mutuelle santé obligatoire.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Il existe des{' '}
|
||||
<RuleLink dottedName="contrat salarié . aides employeur">
|
||||
aides différées
|
||||
</RuleLink>{' '}
|
||||
à l'embauche qui ne sont pas toutes prises en compte par notre
|
||||
simulateur, vous pouvez les retrouver sur{' '}
|
||||
<a href="http://www.aides-entreprises.fr" target="_blank">
|
||||
le portail officiel
|
||||
</a>
|
||||
.
|
||||
</p>
|
||||
</Trans>
|
||||
)
|
||||
}
|
||||
|
||||
export const SalarySimulation = () => {
|
||||
const sitePaths = useContext(SitePathsContext)
|
||||
return (
|
||||
<>
|
||||
<Simulation
|
||||
config={salariéConfig}
|
||||
explanations={<SalaryExplanation />}
|
||||
customEndMessages={
|
||||
<>
|
||||
<Trans i18nKey="simulation-end.hiring.text">
|
||||
Vous pouvez maintenant concrétiser votre projet d'embauche.
|
||||
</Trans>
|
||||
<div style={{ textAlign: 'center', margin: '1rem' }}>
|
||||
<Link
|
||||
className="ui__ plain button"
|
||||
to={sitePaths.gérer.embaucher}
|
||||
>
|
||||
<Trans i18nKey="simulation-end.cta">
|
||||
Connaître les démarches
|
||||
</Trans>
|
||||
</Link>
|
||||
</div>
|
||||
</>
|
||||
}
|
||||
/>
|
||||
<br />
|
||||
<PreviousSimulationBanner />
|
||||
<Banner icon={'👨✈️'}>
|
||||
<Trans>
|
||||
Vous êtes dirigeant d'une SAS(U) ?{' '}
|
||||
<Link to={sitePaths.simulateurs.SASU}>
|
||||
Accéder au simulateur de revenu dédié
|
||||
</Link>
|
||||
</Trans>
|
||||
</Banner>
|
||||
</>
|
||||
)
|
||||
}
|
|
@ -1,46 +0,0 @@
|
|||
import Banner from 'Components/Banner'
|
||||
import PreviousSimulationBanner from 'Components/PreviousSimulationBanner'
|
||||
import Simulation from 'Components/Simulation'
|
||||
import SalaryExplanation from 'Components/simulationExplanation/SalaryExplanation'
|
||||
import { SitePathsContext } from 'Components/utils/SitePathsContext'
|
||||
import { default as React, useContext } from 'react'
|
||||
import { Trans } from 'react-i18next'
|
||||
import { Link } from 'react-router-dom'
|
||||
|
||||
export default function SalariéSimulation() {
|
||||
const sitePaths = useContext(SitePathsContext)
|
||||
return (
|
||||
<>
|
||||
<Simulation
|
||||
explanations={<SalaryExplanation />}
|
||||
customEndMessages={
|
||||
<>
|
||||
<Trans i18nKey="simulation-end.hiring.text">
|
||||
Vous pouvez maintenant concrétiser votre projet d'embauche.
|
||||
</Trans>
|
||||
<div style={{ textAlign: 'center', margin: '1rem' }}>
|
||||
<Link
|
||||
className="ui__ plain button"
|
||||
to={sitePaths.gérer.embaucher}
|
||||
>
|
||||
<Trans i18nKey="simulation-end.cta">
|
||||
Connaître les démarches
|
||||
</Trans>
|
||||
</Link>
|
||||
</div>
|
||||
</>
|
||||
}
|
||||
/>
|
||||
<br />
|
||||
<PreviousSimulationBanner />
|
||||
<Banner icon={'👨✈️'}>
|
||||
<Trans>
|
||||
Vous êtes dirigeant d'une SAS(U) ?{' '}
|
||||
<Link to={sitePaths.simulateurs.SASU}>
|
||||
Accéder au simulateur de revenu dédié
|
||||
</Link>
|
||||
</Trans>
|
||||
</Banner>
|
||||
</>
|
||||
)
|
||||
}
|
|
@ -1,11 +1,34 @@
|
|||
import SchemeComparaison from 'Components/SchemeComparaison'
|
||||
import React from 'react'
|
||||
import { Helmet } from 'react-helmet'
|
||||
import { Trans, useTranslation } from 'react-i18next'
|
||||
|
||||
export default function SchemeComparaisonPage() {
|
||||
const { t } = useTranslation()
|
||||
return (
|
||||
<>
|
||||
<Helmet>
|
||||
<title>
|
||||
{t(
|
||||
'comparaisonRégimes.page.titre',
|
||||
'Indépendant, assimilé salarié ou auto-entrepreneur : découvrez le régime qui vous correspond le mieux'
|
||||
)}
|
||||
</title>
|
||||
<meta
|
||||
name="description"
|
||||
content={t(
|
||||
'comparaisonRégimes.page.description',
|
||||
'Quel est le meilleur régime pour votre situation ? Découvrez leur différences et simulez vos revenus et votre retraite en une minute pour chacune des possibilités.'
|
||||
)}
|
||||
/>
|
||||
</Helmet>
|
||||
<h1>
|
||||
<Trans i18nKey="comparaisonRégimes.titre">
|
||||
Indépendant, assimilé salarié ou{' '}
|
||||
<span style={{ whiteSpace: 'nowrap' }}>auto-entrepreneur</span> : quel
|
||||
régime choisir ?
|
||||
</Trans>
|
||||
</h1>
|
||||
<p>
|
||||
<Trans i18nKey="comparaisonRégimes.description">
|
||||
Lorsque vous créez votre société, le choix du statut juridique va
|
||||
|
|
File diff suppressed because one or more lines are too long
Before Width: | Height: | Size: 29 KiB |
|
@ -1,12 +1,19 @@
|
|||
import { usePersistingState } from 'Components/utils/persistState'
|
||||
import { ScrollToTop } from 'Components/utils/Scroll'
|
||||
import { SitePathsContext } from 'Components/utils/SitePathsContext'
|
||||
import { default as React, useContext, useEffect, useMemo } from 'react'
|
||||
import React, { useContext, useEffect } from 'react'
|
||||
import { Trans } from 'react-i18next'
|
||||
import { Link, Route, Switch, useLocation } from 'react-router-dom'
|
||||
import useSimulatorsData from './metadata'
|
||||
import SimulateurPage from './Page'
|
||||
import ArtisteAuteur from './ArtisteAuteur'
|
||||
import AssimiléSalarié from './RémunérationSASU'
|
||||
import ChômagePartiel from './ChômagePartiel'
|
||||
import ProfessionLibérale from './ProfessionLibérale'
|
||||
import AutoEntrepreneur from './AutoEntrepreneur'
|
||||
import Home from './Home'
|
||||
import Indépendant from './Indépendant'
|
||||
import Salarié from './Salarié'
|
||||
import SchemeComparaison from './SchemeComparaison'
|
||||
import ÉconomieCollaborative from './ÉconomieCollaborative'
|
||||
|
||||
export default function Simulateurs() {
|
||||
const sitePaths = useContext(SitePathsContext)
|
||||
|
@ -19,20 +26,7 @@ export default function Simulateurs() {
|
|||
setLastState(state)
|
||||
}
|
||||
}, [setLastState, state])
|
||||
const simulatorsData = useSimulatorsData()
|
||||
const simulatorRoutes = useMemo(
|
||||
() =>
|
||||
Object.values(simulatorsData)
|
||||
.filter(({ path }) => path.startsWith(sitePaths.simulateurs.index))
|
||||
.map(s => (
|
||||
<Route
|
||||
key={s.path}
|
||||
path={s.path}
|
||||
render={() => <SimulateurPage {...s} />}
|
||||
/>
|
||||
)),
|
||||
[simulatorsData, sitePaths]
|
||||
)
|
||||
|
||||
return (
|
||||
<>
|
||||
<ScrollToTop key={pathname} />
|
||||
|
@ -66,7 +60,36 @@ export default function Simulateurs() {
|
|||
)}
|
||||
<Switch>
|
||||
<Route exact path={sitePaths.simulateurs.index} component={Home} />
|
||||
{simulatorRoutes}
|
||||
<Route path={sitePaths.simulateurs.salarié} component={Salarié} />
|
||||
<Route
|
||||
path={sitePaths.simulateurs.comparaison}
|
||||
component={SchemeComparaison}
|
||||
/>
|
||||
<Route path={sitePaths.simulateurs.SASU} component={AssimiléSalarié} />
|
||||
<Route
|
||||
path={sitePaths.simulateurs.indépendant}
|
||||
component={Indépendant}
|
||||
/>
|
||||
<Route
|
||||
path={sitePaths.simulateurs['auto-entrepreneur']}
|
||||
component={AutoEntrepreneur}
|
||||
/>
|
||||
<Route
|
||||
path={sitePaths.simulateurs['artiste-auteur']}
|
||||
component={ArtisteAuteur}
|
||||
/>
|
||||
<Route
|
||||
path={sitePaths.simulateurs['chômage-partiel']}
|
||||
component={ChômagePartiel}
|
||||
/>
|
||||
<Route
|
||||
path={sitePaths.simulateurs['profession-libérale']}
|
||||
component={ProfessionLibérale}
|
||||
/>
|
||||
<Route
|
||||
path={sitePaths.simulateurs.économieCollaborative.index}
|
||||
component={ÉconomieCollaborative}
|
||||
/>
|
||||
</Switch>
|
||||
</>
|
||||
)
|
||||
|
|
|
@ -1,745 +0,0 @@
|
|||
import RuleLink from 'Components/RuleLink'
|
||||
import SimulateurWarning from 'Components/SimulateurWarning'
|
||||
import Simulation from 'Components/Simulation'
|
||||
import AutoEntrepreneurExplanation from 'Components/simulationExplanation/AutoEntrepreneurExplanation'
|
||||
import SalaryExplanation from 'Components/simulationExplanation/SalaryExplanation'
|
||||
import Emoji from 'Components/utils/Emoji'
|
||||
import { SitePathsContext } from 'Components/utils/SitePathsContext'
|
||||
import React, { useContext, useMemo } from 'react'
|
||||
import { Trans, useTranslation } from 'react-i18next'
|
||||
import { SimulationConfig } from 'Reducers/rootReducer'
|
||||
import { constructLocalizedSitePath } from '../../sitePaths'
|
||||
import { RessourceAutoEntrepreneur } from '../Créer/CreationChecklist'
|
||||
import AideDéclarationIndépendant from '../Gérer/AideDéclarationIndépendant'
|
||||
import FormulaireMobilitéIndépendant from '../Gérer/DemandeMobilite'
|
||||
import ArtisteAuteur from './ArtisteAuteur'
|
||||
import ChômagePartielComponent from './ChômagePartiel'
|
||||
import autoEntrepreneurConfig from './configs/auto-entrepreneur.yaml'
|
||||
import chômageParielConfig from './configs/chômage-partiel.yaml'
|
||||
import sasuConfig from './configs/dirigeant-sasu.yaml'
|
||||
import indépendantConfig from './configs/indépendant.yaml'
|
||||
import professionLibéraleConfig from './configs/profession-libérale.yaml'
|
||||
import salariéConfig from './configs/salarié.yaml'
|
||||
import AutoEntrepreneurPreview from './images/AutoEntrepreneurPreview.png'
|
||||
import ChômagePartielPreview from './images/ChômagePartielPreview.png'
|
||||
import urlIllustrationNetBrutEn from './images/illustration-net-brut-en.png'
|
||||
import urlIllustrationNetBrut from './images/illustration-net-brut.png'
|
||||
import RémunérationSASUPreview from './images/RémunérationSASUPreview.png'
|
||||
import salaireBrutNetPreviewEN from './images/SalaireBrutNetPreviewEN.png'
|
||||
import salaireBrutNetPreviewFR from './images/SalaireBrutNetPreviewFR.png'
|
||||
import IndépendantSimulation from './IndépendantSimulation'
|
||||
import SalariéSimulation from './SalariéSimulation'
|
||||
import SchemeComparaisonPage from './SchemeComparaison'
|
||||
import ÉconomieCollaborative from './ÉconomieCollaborative'
|
||||
|
||||
const simulateurs = [
|
||||
'salarié',
|
||||
'auto-entrepreneur',
|
||||
'indépendant',
|
||||
'sasu',
|
||||
'chômage-partiel',
|
||||
'artiste-auteur',
|
||||
'comparaison-statuts',
|
||||
'économie-collaborative',
|
||||
'aide-déclaration-indépendant',
|
||||
'demande-mobilité',
|
||||
'profession-libérale',
|
||||
'médecin',
|
||||
'chirurgien-dentiste',
|
||||
'sage-femme',
|
||||
'auxiliaire-médical'
|
||||
] as const
|
||||
|
||||
export type SimulatorData = Record<
|
||||
typeof simulateurs[number],
|
||||
{
|
||||
meta?: {
|
||||
title: string
|
||||
description: string
|
||||
ogTitle?: string
|
||||
ogDescription?: string
|
||||
ogImage?: string
|
||||
}
|
||||
icône: string
|
||||
shortName: string
|
||||
path: string
|
||||
iframe?: string
|
||||
title?: string
|
||||
config?: SimulationConfig
|
||||
seoExplanations?: React.ReactNode
|
||||
private?: true
|
||||
component: () => JSX.Element
|
||||
}
|
||||
>
|
||||
|
||||
export function getSimulatorsData({
|
||||
t = (_, text) => text,
|
||||
sitePaths = constructLocalizedSitePath('fr'),
|
||||
language = 'fr'
|
||||
}): SimulatorData {
|
||||
return {
|
||||
salarié: {
|
||||
config: salariéConfig,
|
||||
component: SalariéSimulation,
|
||||
icône: '🤝',
|
||||
title: t(
|
||||
'pages.simulateurs.salarié.title',
|
||||
'Simulateur de revenus pour salarié'
|
||||
),
|
||||
iframe: 'simulateur-embauche',
|
||||
meta: {
|
||||
description: t(
|
||||
'pages.simulateurs.salarié.meta.description',
|
||||
"Calcul du salaire net, net après impôt et coût total employeur. Beaucoup d'options disponibles (cadre, stage, apprentissage, heures supplémentaires, etc.)"
|
||||
),
|
||||
ogDescription: t(
|
||||
'pages.simulateurs.salarié.meta.ogDescription',
|
||||
"En tant que salarié, calculez immédiatement votre revenu net après impôt à partir du brut mensuel ou annuel. En tant qu'employé, estimez le coût total d'une embauche à partir du brut. Ce simulateur est développé avec les experts de l'Urssaf, et il adapte les calculs à votre situation (statut cadre, stage, apprentissage, heures supplémentaire, titre-restaurants, mutuelle, temps partiel, convention collective, etc.)"
|
||||
),
|
||||
ogImage:
|
||||
language === 'fr' ? salaireBrutNetPreviewFR : salaireBrutNetPreviewEN,
|
||||
ogTitle: t(
|
||||
'pages.simulateurs.salarié.meta.ogTitle',
|
||||
'Salaire brut, net, net après impôt, coût total : le simulateur ultime pour salariés et employeurs'
|
||||
),
|
||||
title: t(
|
||||
'pages.simulateurs.salarié.meta.titre',
|
||||
'Salaire brut / net : le convertisseur Urssaf'
|
||||
)
|
||||
},
|
||||
path: sitePaths.simulateurs.salarié,
|
||||
shortName: t('pages.simulateurs.salarié.shortname', 'Salarié'),
|
||||
seoExplanations: (
|
||||
<Trans i18nKey="pages.simulateurs.salarié.seo">
|
||||
<h2>Comment calculer le salaire net ?</h2>
|
||||
<p>
|
||||
Lors de l'entretien d'embauche l'employeur propose en général une
|
||||
rémunération exprimée en « brut ». Le montant annoncé inclut ainsi
|
||||
les cotisations salariales, qui servent à financer la protection
|
||||
sociale du salarié et qui sont retranchées du salaire « net » perçu
|
||||
par le salarié.
|
||||
</p>
|
||||
<p>
|
||||
Vous pouvez utiliser notre simulateur pour convertir le{' '}
|
||||
<strong>salaire brut en net</strong> : il vous suffit pour cela
|
||||
saisir la rémunération annoncée dans la case salaire brut. La
|
||||
simulation peut-être affinée en répondant aux différentes questions
|
||||
(CDD, statut cadre, heures supplémentaires, temps partiel,
|
||||
titre-restaurants, etc.).
|
||||
</p>
|
||||
<img
|
||||
src={
|
||||
language === 'fr'
|
||||
? urlIllustrationNetBrut
|
||||
: urlIllustrationNetBrutEn
|
||||
}
|
||||
css={`
|
||||
width: 100%;
|
||||
`}
|
||||
/>
|
||||
<p>
|
||||
Par ailleurs depuis 2019, l'
|
||||
<RuleLink dottedName="impôt">impôt sur le revenu</RuleLink> est
|
||||
prélevé à la source. Pour ce faire, la direction générale des
|
||||
finances publiques (DGFiP) transmet à l'employeur le taux
|
||||
d'imposition calculé à partir de la déclaration de revenu du
|
||||
salarié. Si ce taux est inconnu, par exemple lors d'une première
|
||||
année d'activité, l'employeur utilise le{' '}
|
||||
<RuleLink dottedName="impôt . taux neutre d'impôt sur le revenu">
|
||||
taux neutre
|
||||
</RuleLink>
|
||||
.
|
||||
</p>
|
||||
<h2>Comment calculer le coût d'embauche ?</h2>
|
||||
<p>
|
||||
Si vous cherchez à embaucher, vous pouvez calculer le coût total de
|
||||
la rémunération de votre salarié, ainsi que les montants de
|
||||
cotisations patronales et salariales correspondants. Cela vous
|
||||
permet de définir le niveau de rémunération en connaissant le
|
||||
montant global de charge que cela représente pour votre entreprise.
|
||||
</p>
|
||||
<p>
|
||||
En plus du salaire, notre simulateur prend en compte le calcul des
|
||||
avantages en nature (téléphone, véhicule de fonction, etc.), ainsi
|
||||
que la mutuelle santé obligatoire.
|
||||
</p>
|
||||
<p>
|
||||
Il existe des{' '}
|
||||
<RuleLink dottedName="contrat salarié . aides employeur">
|
||||
aides différées
|
||||
</RuleLink>{' '}
|
||||
à l'embauche qui ne sont pas toutes prises en compte par notre
|
||||
simulateur, vous pouvez les retrouver sur{' '}
|
||||
<a href="http://www.aides-entreprises.fr" target="_blank">
|
||||
le portail officiel
|
||||
</a>
|
||||
.
|
||||
</p>
|
||||
</Trans>
|
||||
)
|
||||
},
|
||||
'auto-entrepreneur': {
|
||||
config: autoEntrepreneurConfig,
|
||||
icône: '🚶♂️',
|
||||
iframe: 'simulateur-autoentrepreneur',
|
||||
meta: {
|
||||
description: t(
|
||||
'pages.simulateurs.auto-entrepreneur.meta.description',
|
||||
"Calcul du revenu à partir du chiffre d'affaires, après déduction des cotisations et des impôts"
|
||||
),
|
||||
ogDescription: t(
|
||||
'pages.simulateurs.auto-entrepreneur.meta.ogDescription',
|
||||
"Grâce au simulateur de revenu auto-entrepreneur développé par l'Urssaf, vous pourrez estimer le montant de vos revenus en fonction de votre chiffre d'affaire mensuel ou annuel pour mieux gérer votre trésorerie. Ou dans le sens inverse : savoir quel montant facturer pour atteindre un certain revenu."
|
||||
),
|
||||
ogImage: AutoEntrepreneurPreview,
|
||||
ogTitle: t(
|
||||
'pages.simulateurs.auto-entrepreneur.meta.ogTitle',
|
||||
'Auto-entrepreneur : calculez rapidement votre revenu net à partir du CA et vice-versa'
|
||||
),
|
||||
title: t(
|
||||
'pages.simulateurs.auto-entrepreneur.meta.titre',
|
||||
'Auto-entrepreneurs : simulateur de revenus'
|
||||
)
|
||||
},
|
||||
component: function AutoEntrepreneurSimulation() {
|
||||
return (
|
||||
<>
|
||||
<SimulateurWarning simulateur="auto-entrepreneur" />
|
||||
<Simulation explanations={<AutoEntrepreneurExplanation />} />
|
||||
</>
|
||||
)
|
||||
},
|
||||
path: sitePaths.simulateurs['auto-entrepreneur'],
|
||||
shortName: t(
|
||||
'pages.simulateurs.auto-entrepreneur.shortname',
|
||||
'Auto-entrepreneur'
|
||||
),
|
||||
title: t(
|
||||
'pages.simulateurs.auto-entrepreneur.title',
|
||||
'Simulateur de revenus auto-entrepreneur'
|
||||
),
|
||||
seoExplanations: (
|
||||
<Trans i18nKey="pages.simulateurs.auto-entrepreneur.seo explanation">
|
||||
<h2>Comment calculer le revenu net d'un auto-entrepreneur ?</h2>
|
||||
<p>
|
||||
Un auto-entrepreneur doit payer des cotisations sociales à
|
||||
l'administration. Ces cotisations servent au financement de la
|
||||
sécurité sociale, et ouvrent des droits pour la retraite ou pour
|
||||
l'assurance maladie. Elle permettent également de financer la
|
||||
formation professionnelle. Leur montant varie en fonction du type
|
||||
d'activité.
|
||||
</p>
|
||||
<p>
|
||||
<Emoji emoji="👉" />{' '}
|
||||
<RuleLink dottedName="dirigeant . auto-entrepreneur . cotisations et contributions">
|
||||
Voir le détail du calcul des cotisations
|
||||
</RuleLink>
|
||||
</p>
|
||||
<p>
|
||||
Il ne faut pas oublier de retrancher toutes les dépenses effectuées
|
||||
dans le cadre de l'activité professionnelle (équipements, matière
|
||||
premières, local, transport). Bien qu'elles ne soient pas utilisées
|
||||
pour le calcul des cotisations et de l'impôt, elles doivent être
|
||||
prises en compte pour vérifier si l'activité est viable
|
||||
économiquement.
|
||||
</p>
|
||||
<p>
|
||||
La formule de calcul complète est donc :
|
||||
<blockquote>
|
||||
<strong>
|
||||
Revenu net = Chiffres d'affaires − Cotisations sociales −
|
||||
Dépenses professionnelles
|
||||
</strong>
|
||||
</blockquote>
|
||||
</p>
|
||||
<h2>
|
||||
Comment calculer l'impôt sur le revenu pour un auto-entrepreneur ?
|
||||
</h2>
|
||||
<p>
|
||||
Si vous avez opté pour le versement libératoire lors de la création
|
||||
de votre auto-entreprise, l'impôt sur le revenu est payé en même
|
||||
temps que les cotisations sociales.
|
||||
</p>
|
||||
<p>
|
||||
<Emoji emoji="👉" />{' '}
|
||||
<RuleLink dottedName="dirigeant . auto-entrepreneur . impôt . versement libératoire . montant">
|
||||
Voir comment est calculé le montant du versement libératoire
|
||||
</RuleLink>
|
||||
</p>
|
||||
<p>
|
||||
Sinon, vous serez imposé selon le barème standard de l'impôt sur le
|
||||
revenu. Le revenu imposable est alors calculé comme un pourcentage
|
||||
du chiffre d'affaires. C'est qu'on appel l'abattement forfaitaire.
|
||||
Ce pourcentage varie en fonction du type d'activité excercé. On dit
|
||||
qu'il est forfaitaire car il ne prends pas en compte les dépenses
|
||||
réelles effectuées dans le cadre de l'activité.
|
||||
</p>
|
||||
<p>
|
||||
<Emoji emoji="👉" />{' '}
|
||||
<RuleLink dottedName="dirigeant . auto-entrepreneur . impôt . revenu abattu">
|
||||
Voir le détail du calcul du revenu abattu pour un
|
||||
auto-entrepreneur
|
||||
</RuleLink>
|
||||
</p>
|
||||
<h2>
|
||||
<Trans>Ressources utiles</Trans>
|
||||
</h2>
|
||||
<div style={{ display: 'flex', flexWrap: 'wrap' }}>
|
||||
<RessourceAutoEntrepreneur />
|
||||
</div>
|
||||
</Trans>
|
||||
)
|
||||
},
|
||||
indépendant: {
|
||||
config: indépendantConfig,
|
||||
icône: '🏃',
|
||||
iframe: 'simulateur-independant',
|
||||
path: sitePaths.simulateurs.indépendant,
|
||||
shortName: t('pages.simulateurs.indépendant.shortname', 'Indépendant'),
|
||||
title: t(
|
||||
'pages.simulateurs.indépendant.title',
|
||||
'Simulateur de revenus pour indépendant'
|
||||
),
|
||||
meta: {
|
||||
title: t(
|
||||
'pages.simulateurs.indépendant.meta.title',
|
||||
'Indépendant : simulateur de revenus Urssaf'
|
||||
),
|
||||
description: t(
|
||||
'pages.simulateurs.indépendant.meta.description',
|
||||
"Calcul du revenu net après impôt et des cotisations à partir du chiffre d'affaires et inversement"
|
||||
)
|
||||
},
|
||||
component: IndépendantSimulation
|
||||
},
|
||||
sasu: {
|
||||
config: sasuConfig,
|
||||
icône: '👨✈️',
|
||||
iframe: 'simulateur-assimilesalarie',
|
||||
meta: {
|
||||
description: t(
|
||||
'pages.simulateurs.sasu.meta.description',
|
||||
'Calcul du salaire net à partir du total alloué à la rémunération et inversement'
|
||||
),
|
||||
ogDescription: t(
|
||||
'pages.simulateurs.sasu.meta.ogDescription',
|
||||
'En tant que dirigeant assimilé-salarié, calculez immédiatement votre revenu net après impôt à partir du total alloué à votre rémunération.'
|
||||
),
|
||||
ogImage: RémunérationSASUPreview,
|
||||
ogTitle: t(
|
||||
'pages.simulateurs.sasu.meta.ogTitle',
|
||||
'Rémunération du dirigeant de SASU : un simulateur pour connaître votre salaire net'
|
||||
),
|
||||
title: t(
|
||||
'pages.simulateurs.sasu.meta.titre',
|
||||
'Dirigeant de SASU : simulateur de revenus Urssaf'
|
||||
)
|
||||
},
|
||||
path: sitePaths.simulateurs.SASU,
|
||||
shortName: t('pages.simulateurs.sasu.shortname', 'Dirigeant de SASU'),
|
||||
title: t(
|
||||
'pages.simulateurs.sasu.title',
|
||||
'Simulateur de revenus pour dirigeant de SASU'
|
||||
),
|
||||
component: function SasuSimulation() {
|
||||
return (
|
||||
<>
|
||||
<SimulateurWarning simulateur="SASU" />
|
||||
<Simulation explanations={<SalaryExplanation />} />
|
||||
</>
|
||||
)
|
||||
},
|
||||
seoExplanations: (
|
||||
<Trans i18nKey="pages.simulateurs.sasu.seo-explanation">
|
||||
<h2>Comment calculer le salaire d'un dirigeant de SASU ? </h2>
|
||||
<p>
|
||||
Comme pour un salarié classique, le{' '}
|
||||
<strong>dirigeant de sasu</strong> paye des cotisations sociales sur
|
||||
la rémunération qu'il se verse. Les cotisations sont calculées de la
|
||||
même manière que pour le salarié : elles sont décomposées en partie
|
||||
employeur et partie salarié et sont exprimées comme un pourcentage
|
||||
du salaire brut.
|
||||
</p>
|
||||
<p>
|
||||
Le dirigeant assimilé-salarié ne paye pas de{' '}
|
||||
<strong>cotisations chômage</strong>. Par ailleurs, il ne bénéficie
|
||||
pas de la{' '}
|
||||
<RuleLink dottedName="contrat salarié . réduction générale">
|
||||
réduction générale de cotisations
|
||||
</RuleLink>{' '}
|
||||
ni des dispositifs encadrés par le code du travail comme les{' '}
|
||||
<RuleLink dottedName="contrat salarié . temps de travail . heures supplémentaires">
|
||||
heures supplémentaires
|
||||
</RuleLink>{' '}
|
||||
ou les primes.
|
||||
</p>
|
||||
<p>
|
||||
Il peut en revanche prétendre à la{' '}
|
||||
<RuleLink dottedName="dirigeant . assimilé salarié . réduction ACRE">
|
||||
réduction ACRE
|
||||
</RuleLink>{' '}
|
||||
en debut d'activité, sous certaines conditions.
|
||||
</p>
|
||||
<p>
|
||||
Vous pouvez utiliser notre simulateur pour calculer la{' '}
|
||||
<strong>rémunération nette</strong> à partir d'un montant superbrut
|
||||
alloué à la rémunération du dirigeant. Il vous suffit pour cela
|
||||
saisir le montant total alloué dans la case "total chargé". La
|
||||
simulation peut ensuite être affinée en répondant aux différentes
|
||||
questions.
|
||||
</p>
|
||||
</Trans>
|
||||
)
|
||||
},
|
||||
'artiste-auteur': {
|
||||
icône: '👩🎨',
|
||||
iframe: 'simulateur-artiste-auteur',
|
||||
meta: {
|
||||
title: t(
|
||||
'pages.simulateurs.artiste-auteur.meta.title',
|
||||
'Artiste-auteur: calcul des cotisations Urssaf'
|
||||
),
|
||||
description: t(
|
||||
'pages.simulateurs.artiste-auteur.meta.description',
|
||||
"Estimez les cotisations sociales sur les droits d'auteur et sur le revenu BNC"
|
||||
),
|
||||
ogTitle: 'Artiste-auteur : estimez vos cotisations Urssaf',
|
||||
ogDescription:
|
||||
"Renseignez vos revenus (droits d'auteur et bnc) et découvrez immédiatement le montant des cotisations que vous aurez à payer sur l'année."
|
||||
},
|
||||
path: sitePaths.simulateurs['artiste-auteur'],
|
||||
title: t(
|
||||
'pages.simulateurs.artiste-auteur.title',
|
||||
'Estimer mes cotisations d’artiste-auteur'
|
||||
),
|
||||
shortName: t(
|
||||
'pages.simulateurs.artiste-auteur.shortname',
|
||||
'Artiste-auteur'
|
||||
),
|
||||
component: ArtisteAuteur
|
||||
},
|
||||
'chômage-partiel': {
|
||||
component: ChômagePartielComponent,
|
||||
config: chômageParielConfig,
|
||||
path: sitePaths.simulateurs['chômage-partiel'],
|
||||
icône: '😷',
|
||||
iframe: 'simulateur-chomage-partiel',
|
||||
meta: {
|
||||
description: t(
|
||||
'pages.simulateurs.chômage-partiel.meta.description',
|
||||
"Calcul du revenu net pour l'employé et du reste à charge pour l'employeur après remboursement de l'Etat, en prenant en compte toutes les cotisations sociales."
|
||||
),
|
||||
ogDescription: t(
|
||||
'pages.simulateurs.chômage-partiel.meta.ogDescription',
|
||||
"Accédez à une première estimation en saisissant à partir d'un salaire brut. Vous pourrez ensuite personaliser votre situation (temps partiel, convention, etc). Prends en compte la totalité des cotisations, y compris celles spécifiques à l'indemnité (CSG et CRDS)."
|
||||
),
|
||||
ogImage: ChômagePartielPreview,
|
||||
ogTitle: t(
|
||||
'pages.simulateurs.chômage-partiel.meta.ogTitle',
|
||||
"Simulateur chômage partiel : découvrez l'impact sur le revenu net salarié et le coût total employeur."
|
||||
),
|
||||
title: t(
|
||||
'pages.simulateurs.chômage-partiel.meta.titre',
|
||||
"Calcul de l'indemnité chômage partiel : le simulateur Urssaf"
|
||||
)
|
||||
},
|
||||
shortName: t(
|
||||
'pages.simulateurs.chômage-partiel.shortname',
|
||||
'Chômage partiel'
|
||||
),
|
||||
title: t(
|
||||
'pages.simulateurs.chômage-partiel.title',
|
||||
'Covid-19 : Simulateur de chômage partiel'
|
||||
),
|
||||
seoExplanations: (
|
||||
<Trans i18nKey="pages.simulateurs.chômage-partiel.seo">
|
||||
<h2>Comment calculer l'indemnité d'activité partielle ?</h2>
|
||||
<p>
|
||||
L'indemnité d'activité partielle de base est fixée par la loi à{' '}
|
||||
<strong>70% du brut</strong>. Elle est proratisée en fonction du
|
||||
nombre d'heures chômées. Pour un salarié à 2300 € brut mensuel, qui
|
||||
travaille à 50% de son temps usuel, cela donne{' '}
|
||||
<strong>2300 € × 50% × 70% = 805 €</strong>
|
||||
</p>
|
||||
<p>
|
||||
A cette indemnité de base s'ajoute l'indemnité complémentaire pour
|
||||
les salaires proches du SMIC. Ce complément intervient lorsque le
|
||||
cumul de la rémunération et de l'indemnité de base est en dessous
|
||||
d'un SMIC net. Ces indemnités sont prises en charge par l'employeur,
|
||||
qui sera ensuite remboursé en parti ou en totalité par l'Etat.
|
||||
</p>
|
||||
<p>
|
||||
👉{' '}
|
||||
<RuleLink dottedName="contrat salarié . activité partielle . indemnités">
|
||||
Voir le détail du calcul de l'indemnité
|
||||
</RuleLink>
|
||||
</p>
|
||||
<h2> Comment calculer la part remboursée par l'État ?</h2>
|
||||
<p>
|
||||
L'Etat prend en charge une partie de l'indemnité partielle pour les
|
||||
salaires allant jusqu'à **4,5 SMIC**, avec un minimum à 8,03€ par
|
||||
heures chômée. Concrètement, cela abouti à une prise en charge à
|
||||
<strong>100%</strong> pour les salaires proches du SMIC. Celle-ci
|
||||
diminue progressivement jusqu'à se stabiliser à **93%** pour les
|
||||
salaires compris <strong>entre 2000 € et 7000 €</strong> (salaire
|
||||
correspondant à la limite de 4.5 SMIC).
|
||||
</p>
|
||||
<p>
|
||||
👉{' '}
|
||||
<RuleLink dottedName="contrat salarié . activité partielle . indemnisation entreprise">
|
||||
Voir le détail du calcul du remboursement de l'indemnité
|
||||
</RuleLink>
|
||||
</p>
|
||||
<h2> Comment déclarer une activité partielle ?</h2>
|
||||
<p>
|
||||
Face à la crise du coronavirus, les modalités de passage en activité
|
||||
partielle ont été allégées. L'employeur est autorisé a placer ses
|
||||
salariés en activité partielle avant que la demande officielle ne
|
||||
soit déposée. Celui-ci dispose ensuite d'un délai de{' '}
|
||||
<strong>30 jours</strong> pour se mettre en règle. Les indemnités
|
||||
seront versées avec un effet rétro-actif débutant à la mise en place
|
||||
du chômage partiel.
|
||||
</p>
|
||||
<p>
|
||||
👉{' '}
|
||||
<a href="https://www.service-public.fr/professionnels-entreprises/vosdroits/R31001">
|
||||
Effectuer la demande de chômage partiel
|
||||
</a>
|
||||
</p>
|
||||
<h2>
|
||||
{' '}
|
||||
Quelles sont les cotisations sociales à payer pour l'indemnité
|
||||
d'activité partielle ?
|
||||
</h2>
|
||||
<p>
|
||||
L'indemnité d'activité partielle est soumise à la CSG/CRDS et à une
|
||||
contribution maladie dans certains cas. Pour en savoir plus, voir la
|
||||
page explicative sur{' '}
|
||||
<a href="https://www.urssaf.fr/portail/home/actualites/toute-lactualite-employeur/activite-partielle--nouveau-disp.html">
|
||||
le site de l'URSSAF
|
||||
</a>
|
||||
.
|
||||
</p>
|
||||
</Trans>
|
||||
)
|
||||
},
|
||||
'comparaison-statuts': {
|
||||
component: SchemeComparaisonPage,
|
||||
icône: '📊',
|
||||
path: sitePaths.simulateurs.comparaison,
|
||||
title: t(
|
||||
'pages.simulateurs.comparaison.title',
|
||||
'Indépendant, assimilé salarié ou auto-entrepreneur : quel régime choisir ?'
|
||||
),
|
||||
meta: {
|
||||
description: t(
|
||||
'pages.simulateurs.comparaison.meta.description',
|
||||
'Auto-entrepreneur, indépendant ou assimilé salarié ? Avec ce comparatif, trouvez le régime qui vous correspond le mieux'
|
||||
),
|
||||
title: t(
|
||||
'pages.simulateurs.comparaison.meta.title',
|
||||
"Création d'entreprise : le comparatif des régimes sociaux"
|
||||
)
|
||||
},
|
||||
shortName: t(
|
||||
'pages.simulateurs.comparaison.shortname',
|
||||
'Comparaison des statuts'
|
||||
)
|
||||
},
|
||||
'économie-collaborative': {
|
||||
component: ÉconomieCollaborative,
|
||||
meta: {
|
||||
title: t(
|
||||
'pages.économie-collaborative.meta.title',
|
||||
'Déclaration des revenus des plateforme en ligne : guide intéractif'
|
||||
),
|
||||
description: t(
|
||||
'pages.économie-collaborative.meta.description',
|
||||
'Airbnb, Drivy, Blablacar, Leboncoin... Découvrez comment être en règle dans vos déclarations'
|
||||
)
|
||||
},
|
||||
icône: '🙋',
|
||||
path: sitePaths.simulateurs.économieCollaborative.index,
|
||||
shortName: t(
|
||||
'pages.économie-collaborative.shortname',
|
||||
'Guide économie collaborative'
|
||||
)
|
||||
},
|
||||
'aide-déclaration-indépendant': {
|
||||
component: AideDéclarationIndépendant,
|
||||
icône: '✍️',
|
||||
meta: {
|
||||
description: t(
|
||||
'pages.gérer.aide-déclaration-indépendant.meta.description',
|
||||
'Calculer facilement les montants des charges sociales à reporter dans votre déclaration de revenu 2019.'
|
||||
),
|
||||
title: t(
|
||||
'pages.gérer.aide-déclaration-indépendant.meta.title',
|
||||
'Déclaration de revenus indépendant : calcul du montant des cotisations'
|
||||
)
|
||||
},
|
||||
path: sitePaths.gérer.déclarationIndépendant,
|
||||
shortName: t(
|
||||
'pages.gérer.aide-déclaration-indépendant.shortname',
|
||||
'Aide à la déclaration de revenu'
|
||||
),
|
||||
title: t(
|
||||
'pages.gérer.aide-déclaration-indépendant.title',
|
||||
"Aide à la déclaration de revenus au titre de l'année 2019"
|
||||
)
|
||||
},
|
||||
'demande-mobilité': {
|
||||
component: FormulaireMobilitéIndépendant,
|
||||
icône: '🧳',
|
||||
meta: {
|
||||
title: t(
|
||||
'pages.gérer.demande-mobilité.meta.title',
|
||||
'Travailleur indépendant : demande de mobilité en Europe'
|
||||
),
|
||||
description: t(
|
||||
'pages.gérer.demande-mobilité.meta.description',
|
||||
"Formulaire interactif à compléter pour les indépendants souhaitant exercer leur activité dans d'autres pays d'Europe"
|
||||
)
|
||||
},
|
||||
path: sitePaths.gérer.formulaireMobilité,
|
||||
shortName: t(
|
||||
'pages.gérer.demande-mobilité.shortname',
|
||||
'Demande de mobilité en Europe'
|
||||
),
|
||||
private: true,
|
||||
iframe: 'demande-mobilité'
|
||||
},
|
||||
médecin: {
|
||||
config: médecinConfig,
|
||||
private: true,
|
||||
icône: '⚕️',
|
||||
iframe: 'médecin',
|
||||
path: sitePaths.simulateurs['profession-libérale'].médecin,
|
||||
shortName: t('pages.simulateurs.médecin.shortname', 'Médecin'),
|
||||
title: t(
|
||||
'pages.simulateurs.médecin.title',
|
||||
'Simulateur de revenus pour médecin en libéral'
|
||||
),
|
||||
component: IndépendantSimulation
|
||||
},
|
||||
'chirurgien-dentiste': {
|
||||
private: true,
|
||||
config: dentisteConfig,
|
||||
icône: '🦷',
|
||||
iframe: 'chirurgien-dentiste',
|
||||
path: sitePaths.simulateurs['profession-libérale']['chirurgien-dentiste'],
|
||||
shortName: t(
|
||||
'pages.simulateurs.chirurgien-dentiste.shortname',
|
||||
'Chirurgien-dentiste'
|
||||
),
|
||||
title: t(
|
||||
'pages.simulateurs.chirurgien-dentiste.title',
|
||||
'Simulateur de revenus pour chirurgien-dentiste en libéral'
|
||||
),
|
||||
component: IndépendantSimulation
|
||||
},
|
||||
'sage-femme': {
|
||||
private: true,
|
||||
config: sageFemmeConfig,
|
||||
icône: '👶',
|
||||
iframe: 'sage-femme',
|
||||
path: sitePaths.simulateurs['profession-libérale']['sage-femme'],
|
||||
shortName: t('pages.simulateurs.sage-femme.shortname', 'Sage-femme'),
|
||||
title: t(
|
||||
'pages.simulateurs.sage-femme.title',
|
||||
'Simulateur de revenus pour sage-femme en libéral'
|
||||
),
|
||||
component: IndépendantSimulation
|
||||
},
|
||||
'auxiliaire-médical': {
|
||||
private: true,
|
||||
config: auxiliaireConfig,
|
||||
icône: '🩹',
|
||||
iframe: 'auxiliaire-médical',
|
||||
path: sitePaths.simulateurs['profession-libérale'].auxiliaire,
|
||||
shortName: t(
|
||||
'pages.simulateurs.auxiliaire.shortname',
|
||||
'Axiliaire médical'
|
||||
),
|
||||
title: t(
|
||||
'pages.simulateurs.auxiliaire.title',
|
||||
'Simulateur de revenus pour auxiliaire médical en libéral'
|
||||
),
|
||||
component: IndépendantSimulation
|
||||
},
|
||||
'profession-libérale': {
|
||||
private: true,
|
||||
config: professionLibéraleConfig,
|
||||
icône: '💻',
|
||||
meta: {
|
||||
title: t(
|
||||
'pages.simulateurs.profession-libérale.meta.title',
|
||||
'Professions libérale : le simulateur Urssaf'
|
||||
),
|
||||
description: t(
|
||||
'pages.simulateurs.profession-libérale.meta.description',
|
||||
"Calcul du revenu net pour les indépendants en libéral à l'impôt sur le revenu (IR, BNC)"
|
||||
)
|
||||
},
|
||||
iframe: 'profession-liberale',
|
||||
path: sitePaths.simulateurs['profession-libérale'].index,
|
||||
shortName: t(
|
||||
'pages.simulateurs.profession-libérale.shortname',
|
||||
'Profession libérale'
|
||||
),
|
||||
title: t(
|
||||
'pages.simulateurs.profession-libérale.title',
|
||||
'Simulateur de revenus pour profession libérale'
|
||||
),
|
||||
component: IndépendantSimulation
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export default function useSimulatorsData(): SimulatorData {
|
||||
const { t, i18n } = useTranslation()
|
||||
const sitePaths = useContext(SitePathsContext)
|
||||
|
||||
return useMemo(
|
||||
() => getSimulatorsData({ t, sitePaths, language: i18n.language }),
|
||||
[t, sitePaths, i18n.language]
|
||||
)
|
||||
}
|
||||
|
||||
professionLibéraleConfig as SimulationConfig
|
||||
|
||||
const auxiliaireConfig: SimulationConfig = {
|
||||
...professionLibéraleConfig,
|
||||
situation: {
|
||||
...professionLibéraleConfig.situation,
|
||||
"entreprise . catégorie d'activité . libérale règlementée": 'oui',
|
||||
'dirigeant . indépendant . PL . métier': "'santé . auxiliaire médical'"
|
||||
}
|
||||
}
|
||||
|
||||
const dentisteConfig: SimulationConfig = {
|
||||
...professionLibéraleConfig,
|
||||
situation: {
|
||||
...professionLibéraleConfig.situation,
|
||||
"entreprise . catégorie d'activité . libérale règlementée": 'oui',
|
||||
'dirigeant . indépendant . PL . métier': "'santé . chirurgien-dentiste'"
|
||||
}
|
||||
}
|
||||
|
||||
const médecinConfig: SimulationConfig = {
|
||||
...professionLibéraleConfig,
|
||||
situation: {
|
||||
...professionLibéraleConfig.situation,
|
||||
"entreprise . catégorie d'activité . libérale règlementée": 'oui',
|
||||
'dirigeant . indépendant . PL . métier': "'santé . médecin'"
|
||||
}
|
||||
}
|
||||
|
||||
const sageFemmeConfig: SimulationConfig = {
|
||||
...professionLibéraleConfig,
|
||||
situation: {
|
||||
...professionLibéraleConfig.situation,
|
||||
"entreprise . catégorie d'activité . libérale règlementée": 'oui',
|
||||
'dirigeant . indépendant . PL . métier': "'santé . sage-femme'"
|
||||
}
|
||||
}
|
|
@ -1,14 +1,15 @@
|
|||
import classnames from 'classnames'
|
||||
import Animate from 'Components/ui/animate'
|
||||
import Checkbox from 'Components/ui/Checkbox'
|
||||
import InfoBulle from 'Components/ui/InfoBulle'
|
||||
import { ScrollToTop } from 'Components/utils/Scroll'
|
||||
import { SitePathsContext } from 'Components/utils/SitePathsContext'
|
||||
import { intersection } from 'ramda'
|
||||
import React, { useCallback, useContext } from 'react'
|
||||
import emoji from 'react-easy-emoji'
|
||||
import { Helmet } from 'react-helmet'
|
||||
import { Trans, useTranslation } from 'react-i18next'
|
||||
import { Link } from 'react-router-dom'
|
||||
import Animate from 'Components/ui/animate'
|
||||
import Checkbox from 'Components/ui/Checkbox'
|
||||
import InfoBulle from 'Components/ui/InfoBulle'
|
||||
import { debounce } from '../../../../../utils'
|
||||
import { toggleActivité } from './actions'
|
||||
import { activités, getTranslatedActivité } from './activitésData'
|
||||
|
@ -27,6 +28,9 @@ export default function ActivitésSelection() {
|
|||
)
|
||||
return (
|
||||
<>
|
||||
<Helmet>
|
||||
<title>{titre}</title>
|
||||
</Helmet>
|
||||
<Animate.fromBottom>
|
||||
<ScrollToTop />
|
||||
<h1>{titre}</h1>
|
||||
|
@ -146,15 +150,11 @@ export const ActivitéCard = ({
|
|||
selected,
|
||||
interactive
|
||||
}),
|
||||
style: {
|
||||
flex: 1,
|
||||
minWidth: '15rem'
|
||||
},
|
||||
key: title,
|
||||
...(interactive && { tabIndex: -1 }),
|
||||
onMouseDown: toggle
|
||||
},
|
||||
<div css="display: flex; flex-direction: column; height: 100%; width: 100%; align-items: center">
|
||||
<div css="display: flex; flex-direction: column; height: 100%; width: 100%">
|
||||
{selected !== undefined && (
|
||||
<div css="font-size: 1.5rem;">
|
||||
<Checkbox name={title} id={title} checked={selected} readOnly />
|
||||
|
|
|
@ -24,7 +24,7 @@ import styled from 'styled-components'
|
|||
import statsJson from '../../../../data/stats.json'
|
||||
import { capitalise0 } from '../../../../utils'
|
||||
import Privacy from '../../layout/Footer/Privacy'
|
||||
import useSimulatorsData from '../Simulateurs/metadata'
|
||||
import { useSimulatorsMetadata } from '../Simulateurs/Home'
|
||||
|
||||
const stats: StatsData = statsJson as any
|
||||
|
||||
|
@ -78,7 +78,7 @@ export default function Stats() {
|
|||
'oneMonthAgo'
|
||||
)
|
||||
const { palettes } = useContext(ThemeColorsContext)
|
||||
const simulators = Object.values(useSimulatorsData())
|
||||
const simulatorsMetadata = useSimulatorsMetadata()
|
||||
return (
|
||||
<>
|
||||
<ScrollToTop />
|
||||
|
@ -130,7 +130,9 @@ export default function Stats() {
|
|||
|
||||
{stats.simulators[choicesimulators].visites.map(
|
||||
({ label, nb_visits }) => {
|
||||
const details = simulators.find(({ path }) => path.includes(label))
|
||||
const details = simulatorsMetadata.find(({ sitePath }) =>
|
||||
sitePath.includes(label)
|
||||
)
|
||||
if (!details) {
|
||||
return null
|
||||
}
|
||||
|
@ -140,12 +142,12 @@ export default function Stats() {
|
|||
value={nb_visits}
|
||||
title={
|
||||
<>
|
||||
{details.shortName}{' '}
|
||||
{details.name}{' '}
|
||||
<Link
|
||||
className="distribution-chart__link_icone"
|
||||
to={{
|
||||
state: { fromSimulateurs: true },
|
||||
pathname: details.path
|
||||
pathname: details.sitePath
|
||||
}}
|
||||
title="Accéder au simulateur"
|
||||
css="font-size:0.75em"
|
||||
|
|
|
@ -4,12 +4,12 @@ import {
|
|||
} from 'Components/utils/colors'
|
||||
import { ScrollToTop } from 'Components/utils/Scroll'
|
||||
import urssafLogo from 'Images/urssaf.svg'
|
||||
import React, { Suspense, useContext, useMemo, useRef, useState } from 'react'
|
||||
import React, { Suspense, useContext, useRef, useState } from 'react'
|
||||
import emoji from 'react-easy-emoji'
|
||||
import { Trans } from 'react-i18next'
|
||||
import { MemoryRouter, useLocation } from 'react-router-dom'
|
||||
import { integrableModuleNames } from '../Dev/IntegrationTest'
|
||||
import Iframes from '../Iframes'
|
||||
import useSimulatorsData from '../Simulateurs/metadata'
|
||||
import './iframe.css'
|
||||
import apecLogo from './images/apec.png'
|
||||
import cciLogo from './images/cci.png'
|
||||
|
@ -20,14 +20,6 @@ const LazyColorPicker = React.lazy(() => import('../Dev/ColorPicker'))
|
|||
|
||||
function IntegrationCustomizer() {
|
||||
const { search } = useLocation()
|
||||
const simulators = useSimulatorsData()
|
||||
const integrableModuleNames = useMemo(
|
||||
() =>
|
||||
Object.values(simulators)
|
||||
.filter(s => s.iframe && !s.private)
|
||||
.map(s => s.iframe),
|
||||
[simulators]
|
||||
)
|
||||
const defaultModuleFromUrl =
|
||||
new URLSearchParams(search ?? '').get('module') ?? ''
|
||||
const [currentModule, setCurrentModule] = React.useState(
|
||||
|
|
|
@ -16,11 +16,16 @@ export default function Integration() {
|
|||
<ScrollToTop />
|
||||
{pathname !== sitePaths.integration.index && (
|
||||
<div className="ui__ card dark-bg" css="text-align: center">
|
||||
🛠{' '}
|
||||
<Link className="ui__ simple button" to={sitePaths.integration.index}>
|
||||
<Trans>Outils pour les développeurs</Trans>
|
||||
</Link>{' '}
|
||||
🛠
|
||||
<h2>
|
||||
🛠{' '}
|
||||
<Link
|
||||
className="ui__ simple button"
|
||||
to={sitePaths.integration.index}
|
||||
>
|
||||
<Trans>Outils pour les développeurs</Trans>
|
||||
</Link>{' '}
|
||||
🛠
|
||||
</h2>
|
||||
</div>
|
||||
)}
|
||||
<Switch>
|
||||
|
|
|
@ -55,14 +55,8 @@ const sitePathsFr = {
|
|||
comparaison: '/comparaison-régimes-sociaux',
|
||||
salarié: '/salaire-brut-net',
|
||||
'artiste-auteur': '/artiste-auteur',
|
||||
'profession-libérale': {
|
||||
index: '/profession-liberale',
|
||||
médecin: '/medecin',
|
||||
auxiliaire: '/auxiliaire-médical',
|
||||
'chirurgien-dentiste': '/chirurgien-dentiste',
|
||||
'sage-femme': '/sage-femme'
|
||||
},
|
||||
'chômage-partiel': '/chômage-partiel',
|
||||
'profession-libérale': '/profession-libérale/:subsimulator?',
|
||||
économieCollaborative: {
|
||||
index: '/économie-collaborative',
|
||||
votreSituation: '/votre-situation'
|
||||
|
@ -113,13 +107,6 @@ const sitePathsEn = {
|
|||
salarié: '/salary',
|
||||
'artiste-auteur': '/artist-author',
|
||||
'chômage-partiel': '/partial-unemployement',
|
||||
'profession-libérale': {
|
||||
index: '/liberal-profession',
|
||||
médecin: '/doctor',
|
||||
auxiliaire: '/medical-auxiliary',
|
||||
'chirurgien-dentiste': '/dental-surgeon',
|
||||
'sage-femme': '/midwife'
|
||||
},
|
||||
économieCollaborative: {
|
||||
index: '/sharing-economy',
|
||||
votreSituation: '/your-situation'
|
||||
|
|
|
@ -83,30 +83,15 @@ exports[`calculate simulations-artiste-auteur: salarié 2`] = `"[1603]"`;
|
|||
|
||||
exports[`calculate simulations-artiste-auteur: salarié 3`] = `"[12410]"`;
|
||||
|
||||
exports[`calculate simulations-auto-entrepreneur: ACRE 1`] = `
|
||||
"[20686,57,1667,0,20000]
|
||||
Notifications affichées : dirigeant . auto-entrepreneur . notification valeur annuelle"
|
||||
`;
|
||||
exports[`calculate simulations-auto-entrepreneur: ACRE 1`] = `"[20686,57,1667,0,20000]"`;
|
||||
|
||||
exports[`calculate simulations-auto-entrepreneur: ACRE 2`] = `
|
||||
"[33228,269,2500,0,30000]
|
||||
Notifications affichées : dirigeant . auto-entrepreneur . notification valeur annuelle"
|
||||
`;
|
||||
exports[`calculate simulations-auto-entrepreneur: ACRE 2`] = `"[33228,269,2500,0,30000]"`;
|
||||
|
||||
exports[`calculate simulations-auto-entrepreneur: ACRE 3`] = `
|
||||
"[45267,439,3333,0,40000]
|
||||
Notifications affichées : dirigeant . auto-entrepreneur . notification valeur annuelle"
|
||||
`;
|
||||
exports[`calculate simulations-auto-entrepreneur: ACRE 3`] = `"[45267,439,3333,0,40000]"`;
|
||||
|
||||
exports[`calculate simulations-auto-entrepreneur: aides 1`] = `
|
||||
"[5171,14,417,0,5000]
|
||||
Notifications affichées : dirigeant . auto-entrepreneur . notification valeur annuelle"
|
||||
`;
|
||||
exports[`calculate simulations-auto-entrepreneur: aides 1`] = `"[5171,14,417,0,5000]"`;
|
||||
|
||||
exports[`calculate simulations-auto-entrepreneur: aides 2`] = `
|
||||
"[51714,143,4167,0,50000]
|
||||
Notifications affichées : dirigeant . auto-entrepreneur . notification valeur annuelle"
|
||||
`;
|
||||
exports[`calculate simulations-auto-entrepreneur: aides 2`] = `"[51714,143,4167,0,50000]"`;
|
||||
|
||||
exports[`calculate simulations-auto-entrepreneur: impôt sur le revenu 1`] = `"[32092,591,2083,706,24294]"`;
|
||||
|
||||
|
@ -289,20 +274,11 @@ exports[`calculate simulations-rémunération-dirigeant (assimilé salarié): é
|
|||
|
||||
exports[`calculate simulations-rémunération-dirigeant (assimilé salarié): échelle de rémunération 8`] = `"[4751,0,0,52684,4,46]"`;
|
||||
|
||||
exports[`calculate simulations-rémunération-dirigeant (auto-entrepreneur): ACRE 1`] = `
|
||||
"[0,0,806,2046,2,0]
|
||||
Notifications affichées : dirigeant . auto-entrepreneur . notification valeur annuelle"
|
||||
`;
|
||||
exports[`calculate simulations-rémunération-dirigeant (auto-entrepreneur): ACRE 1`] = `"[0,0,806,2046,2,0]"`;
|
||||
|
||||
exports[`calculate simulations-rémunération-dirigeant (auto-entrepreneur): ACRE 2`] = `
|
||||
"[0,0,1611,4093,3,8]
|
||||
Notifications affichées : dirigeant . auto-entrepreneur . notification valeur annuelle"
|
||||
`;
|
||||
exports[`calculate simulations-rémunération-dirigeant (auto-entrepreneur): ACRE 2`] = `"[0,0,1611,4093,3,8]"`;
|
||||
|
||||
exports[`calculate simulations-rémunération-dirigeant (auto-entrepreneur): ACRE 3`] = `
|
||||
"[0,0,2337,6139,4,12]
|
||||
Notifications affichées : dirigeant . auto-entrepreneur . notification valeur annuelle"
|
||||
`;
|
||||
exports[`calculate simulations-rémunération-dirigeant (auto-entrepreneur): ACRE 3`] = `"[0,0,2337,6139,4,12]"`;
|
||||
|
||||
exports[`calculate simulations-rémunération-dirigeant (auto-entrepreneur): Contrats Madelin 1`] = `"[0,0,2070,8186,4,16]"`;
|
||||
|
||||
|
|
|
@ -8,11 +8,11 @@
|
|||
/* eslint-disable no-undef */
|
||||
import Engine from 'publicodes'
|
||||
import rules from '../../source/rules'
|
||||
import artisteAuteurConfig from '../../source/sites/mon-entreprise.fr/pages/Simulateurs/configs/artiste-auteur.yaml'
|
||||
import autoentrepreneurConfig from '../../source/sites/mon-entreprise.fr/pages/Simulateurs/configs/auto-entrepreneur.yaml'
|
||||
import independantConfig from '../../source/sites/mon-entreprise.fr/pages/Simulateurs/configs/indépendant.yaml'
|
||||
import remunerationDirigeantConfig from '../../source/sites/mon-entreprise.fr/pages/Simulateurs/configs/rémunération-dirigeant.yaml'
|
||||
import employeeConfig from '../../source/sites/mon-entreprise.fr/pages/Simulateurs/configs/salarié.yaml'
|
||||
import artisteAuteurConfig from '../../source/components/simulationConfigs/artiste-auteur.yaml'
|
||||
import autoentrepreneurConfig from '../../source/components/simulationConfigs/auto-entrepreneur.yaml'
|
||||
import independantConfig from '../../source/components/simulationConfigs/indépendant.yaml'
|
||||
import remunerationDirigeantConfig from '../../source/components/simulationConfigs/rémunération-dirigeant.yaml'
|
||||
import employeeConfig from '../../source/components/simulationConfigs/salarié.yaml'
|
||||
import aideDéclarationConfig from '../../source/sites/mon-entreprise.fr/pages/Gérer/AideDéclarationIndépendant/config.yaml'
|
||||
import artisteAuteurSituations from './simulations-artiste-auteur.yaml'
|
||||
import autoEntrepreneurSituations from './simulations-auto-entrepreneur.yaml'
|
||||
|
|
Loading…
Reference in New Issue