/* @flow */
import { setSituationBranch, startConversation } from 'Actions/actions'
import {
defineDirectorStatus,
isAutoentrepreneur
} from 'Actions/companyStatusActions'
import classnames from 'classnames'
import { T } from 'Components'
import PeriodSwitch from 'Components/PeriodSwitch'
import Simulation from 'Components/Simulation'
// $FlowFixMe
import ComparaisonConfig from 'Components/simulationConfigs/rémunération-dirigeant.yaml'
import withSimulationConfig from 'Components/simulationConfigs/withSimulationConfig'
import withSitePaths from 'Components/utils/withSitePaths'
import { compose, tryCatch } from 'ramda'
import React, { useState } from 'react'
import emoji from 'react-easy-emoji'
import { connect } from 'react-redux'
import { Link } from 'react-router-dom'
import { branchAnalyseSelector } from 'Selectors/analyseSelectors'
import { règleAvecMontantSelector } from 'Selectors/regleSelectors'
import Animate from 'Ui/animate'
import AnimatedTargetValue from 'Ui/AnimatedTargetValue'
import './SchemeComparaison.css'
import type { RègleAvecMontant } from 'Types/RegleTypes'
type OwnProps = {
hideAutoEntrepreneur?: boolean,
hideAssimiléSalarié?: boolean
}
type Props = OwnProps & {
assimiléSalarié?: SimulationResult,
indépendant?: SimulationResult,
autoEntrepreneur?: SimulationResult,
conversationStarted: boolean,
startConversation: () => void,
setSituationBranch: number => void,
defineDirectorStatus: string => void,
sitePaths: any,
isAutoentrepreneur: boolean => void,
plafondAutoEntrepreneurDépassé: boolean
}
type SimulationResult = {
retraite: RègleAvecMontant,
revenuNetAvantImpôts: RègleAvecMontant,
revenuNetAprèsImpôts: RègleAvecMontant,
plafondDépassé?: boolean
}
const SchemeComparaison = ({
/* Own Props */
hideAutoEntrepreneur = false,
hideAssimiléSalarié = false,
/* Injected Props */
assimiléSalarié,
indépendant,
autoEntrepreneur,
conversationStarted,
defineDirectorStatus,
isAutoentrepreneur,
setSituationBranch,
startConversation
}: Props) => {
const [showMore, setShowMore] = useState(false)
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 créer sans risques
<>
Statuts juridiques possibles
SAS, SASU, SARL (gérant minoritaire)
{hideAssimiléSalarié ? (
EI, EIRL
) : (
EI, EIRL, EURL, SARL (gérant majoritaire)
)}
Auto-entreprise
>
<>
Sécurité sociale
Régime général
Sécurité sociale des indépendants
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
+++
++
+
{conversationStarted && (
<>
Période
>
)}
{!conversationStarted ? (
Comparez vos revenus et votre retraite en 1 minute
) : (
)}
{conversationStarted && (
<>
Revenu net après impôts
{assimiléSalarié && (
setSituationBranch(0)}
{...assimiléSalarié.revenuNetAprèsImpôts}
/>
)}
{indépendant && (
setSituationBranch(1)}
{...indépendant.revenuNetAprèsImpôts}
/>
)}
{autoEntrepreneur && (
{autoEntrepreneur.plafondDépassé ? (
'Plafond de CA dépassé'
) : (
setSituationBranch(2)}
{...autoEntrepreneur.revenuNetAprèsImpôts}
/>
)}
)}
Revenu net de cotisations (avant impôts)
{assimiléSalarié && (
setSituationBranch(0)}
{...assimiléSalarié.revenuNetAvantImpôts}
/>
)}
{indépendant && (
setSituationBranch(1)}
{...indépendant.revenuNetAvantImpôts}
/>
)}
{autoEntrepreneur && (
{autoEntrepreneur.plafondDépassé ? (
'—'
) : (
setSituationBranch(2)}
{...autoEntrepreneur.revenuNetAvantImpôts}
/>
)}
)}
Votre pension de retraite (estimation)
{assimiléSalarié &&
assimiléSalarié.retraite.applicable !== false ? (
setSituationBranch(0)}
{...assimiléSalarié.retraite}
garder
une
trace
/>
) : (
Pas implémenté
)}
{indépendant && indépendant.retraite.applicable !== false ? (
setSituationBranch(1)}
{...indépendant.retraite}
/>
) : (
Pas implémenté
)}
{autoEntrepreneur &&
(autoEntrepreneur.plafondDépassé ? (
'—'
) : autoEntrepreneur.retraite.applicable !== false ? (
setSituationBranch(2)}
{...autoEntrepreneur.retraite}
/>
) : (
Pas implémenté
))}
>
)}
{showMore ? (
<>
{!hideAutoEntrepreneur && (
<>
ACRE
1 an (exonération partielle de cotisations)
3 ans{' '}
(application de taux réduits de cotisations)
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{' '}
(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
>
) : (
Comparaison détaillée
)}
{!hideAutoEntrepreneur && (
Plafond de chiffre d'affaires
Non
Oui
(70 000 € en services / 170 000 € 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)
)
}
const RuleValueLink = withSitePaths(
({
lien,
montant,
sitePaths,
onClick
}: RègleAvecMontant & { sitePaths: any, onClick: () => void }) => (