import { setSimulationConfig } from 'Actions/actions'
import {
defineDirectorStatus,
isAutoentrepreneur
} from 'Actions/companyStatusActions'
import classnames from 'classnames'
import Conversation from 'Components/conversation/Conversation'
import SeeAnswersButton from 'Components/conversation/SeeAnswersButton'
import Value from 'Components/EngineValue'
import dirigeantComparaison from 'Components/simulationConfigs/rémunération-dirigeant.yaml'
import Engine from 'Engine'
import revenusSVG from 'Images/revenus.svg'
import {
default as React,
useCallback,
useContext,
useMemo,
useState,
useEffect
} from 'react'
import emoji from 'react-easy-emoji'
import { Trans } from 'react-i18next'
import { useDispatch, useSelector } from 'react-redux'
import { situationSelector } from 'Selectors/simulationSelectors'
import InfoBulle from 'Ui/InfoBulle'
import './SchemeComparaison.css'
import { EngineContext } from './utils/EngineContext'
type SchemeComparaisonProps = {
hideAutoEntrepreneur?: boolean
hideAssimiléSalarié?: boolean
}
export default function SchemeComparaison({
hideAutoEntrepreneur = false,
hideAssimiléSalarié = false
}: SchemeComparaisonProps) {
const dispatch = useDispatch()
useEffect(() => {
dispatch(setSimulationConfig(dirigeantComparaison))
}, [])
const plafondAutoEntrepreneurDépassé = useContext(EngineContext)
.controls()
.find(
({ test }) =>
test.includes && test.includes('base des cotisations > plafond')
)
const [showMore, setShowMore] = useState(false)
const [conversationStarted, setConversationStarted] = useState(
!!Object.keys(useSelector(situationSelector)).length
)
const startConversation = useCallback(() => setConversationStarted(true), [
setConversationStarted
])
const parsedRules = useContext(EngineContext).getParsedRules()
const situation = useSelector(situationSelector)
const displayResult =
useSelector(situationSelector)['entreprise . charges'] != undefined
const assimiléEngine = useMemo(
() =>
new Engine(parsedRules).setSituation({
...situation,
dirigeant: "'assimilé salarié'"
}),
[situation]
)
const autoEntrepreneurEngine = useMemo(
() =>
new Engine(parsedRules).setSituation({
...situation,
dirigeant: "'auto-entrepreneur'"
}),
[situation]
)
const indépendantEngine = useMemo(
() =>
new Engine(parsedRules).setSituation({
...situation,
dirigeant: "'indépendant'"
}),
[situation]
)
return (
<>
{emoji('☂')} Assimilé salarié
Le régime tout compris
{emoji('👩🔧')}{' '}
{hideAssimiléSalarié ? (
Entreprise Individuelle
) : (
Indépendant
)}
La protection sociale à la carte
{emoji('🚶♂️')} Auto-entrepreneur
Pour commencer sans risques
Statuts juridiques possibles
SAS, SASU ou SARL avec gérant minoritaire
{hideAssimiléSalarié ? (
EI ou EIRL
) : (
EI, EIRL, EURL ou SARL avec gérant majoritaire
)}
Auto-entreprise
Couverture accidents du travail
Oui
Non
Assurance maladie{' '}
(médicaments, soins, hospitalisations)
Identique pour tous
Mutuelle santé
Obligatoire
Fortement conseillée
Indemnités journalières
++
++
+
Retraite
+++
++
+
{showMore ? (
<>
ACRE
1 an (automatique et inconditionnelle)
Entre 3 et 4 trimestres{' '}
(sous conditions d'éligibilité)
Déduction des charges
Oui (régime fiscal du réel)
Non
(mais abattement forfaitaire pour le calcul de l'impôt sur le
revenu)
Paiement des cotisations
Mensuel
Provision mensuelle ou trimestrielle
(avec régularisation après coup en fonction du revenu réel)
Mensuel ou trimestriel
Contrats prévoyance et retraite facultatives déductibles
Oui (sous certaines conditions)
Oui (Loi Madelin)
Non
Paiement de cotisations minimales
Non
Oui
Non
Revenu minimum pour l'ouverture des droits aux prestations
Oui
Non (cotisations minimales obligatoires)
Oui
{!hideAutoEntrepreneur && (
Plafond de chiffre d'affaires
Non
Oui
(72 500 € en services / 176 200 € en vente de biens,
restauration ou hébergement)
)}
Gestion comptable, sociale, juridique...
Accompagnement fortement conseillé
(expert comptable, comptable, centre de gestion agrée...)
Simplifiée{' '}
(peut être gérée par l'auto-entrepreneur)
>
) : (
)}
{!conversationStarted ? (
<>
Comparer mes revenus, pension de retraite et indemnité maladie
>
) : (
)}
{displayResult && (
<>
Revenu net de cotisations (avant impôts)
<>
{plafondAutoEntrepreneurDépassé && 'Plafond de CA dépassé'}
>
Pension de retraite
(avant impôts)
{' '}
Pension calculée pour 172 trimestres cotisés au régime général
sans variations de revenus.
{' '}
Pension calculée pour 172 trimestres cotisés au régime des
indépendants sans variations de revenus.
{plafondAutoEntrepreneurDépassé ? (
'—'
) : (
<>
{' '}
Pension calculée pour 172 trimestres cotisés en
auto-entrepreneur sans variations de revenus.
>
)}
Nombre de trimestres validés (pour la retraite)
{plafondAutoEntrepreneurDépassé ? (
'—'
) : (
)}
Indemnités journalières (en cas d'arrêt maladie)
(
{' '}
pour les accidents de trajet/travail et maladie pro
)
{plafondAutoEntrepreneurDépassé ? (
'—'
) : (
)}
>
)}
Créer mon entreprise en tant que :
{!hideAssimiléSalarié && (
)}
{!hideAutoEntrepreneur && (
)}
>
)
}