/* @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, map, 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, noUserInput: boolean, startConversation: () => void, setSituationBranch: number => void, defineDirectorStatus: string => void, sitePaths: any, isAutoentrepreneur: boolean => void, plafondAutoEntrepreneurDépassé: boolean } type SimulationResult = { retraite: RègleAvecMontant, revenuNet: RègleAvecMontant } const SchemeComparaison = ({ /* Own Props */ hideAutoEntrepreneur = false, hideAssimiléSalarié = false, /* Injected Props */ sitePaths, assimiléSalarié, indépendant, plafondAutoEntrepreneurDépassé, 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 à la carte

{emoji('🚶‍♂️')}{' '} Auto-entrepreneur Pour les petites activités

Statuts juridiques possibles

SAS, SASU, SARL minoritaire
EI, EURL, SARL majoritaire
Micro-entreprise
{!hideAssimiléSalarié && ( <>

Sécurité sociale

Régime général
Sécurité sociale des indépendants (SSI)

Couverture accidents du travail

Oui
Non

Assurance maladie

++
+

Indemnités journalières

++
+
)} {!conversationStarted && ( <>

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é.revenuNet} /> )}
{indépendant && ( setSituationBranch(1)} {...indépendant.revenuNet} /> )}
{autoEntrepreneur && ( {plafondAutoEntrepreneurDépassé ? ( 'Plafond de CA dépassé' ) : ( setSituationBranch(2)} {...autoEntrepreneur.revenuNet} /> )} )}

Retraite brute (estimation)

{assimiléSalarié && assimiléSalarié.retraite.montant !== 0 ? ( setSituationBranch(1)} {...assimiléSalarié.retraite} /> ) : ( Pas implémenté )}
{indépendant && indépendant.retraite.montant !== 0 ? ( setSituationBranch(1)} {...indépendant.retraite} /> ) : ( Pas implémenté )}
{autoEntrepreneur && autoEntrepreneur.retraite.montant !== 0 ? ( setSituationBranch(1)} {...autoEntrepreneur.retraite} /> ) : ( Pas implémenté )}
)} {showMore ? ( <> {!hideAutoEntrepreneur && ( <>

ACCRE

Une année, plafonné
3 années, progressif, non plafonné

Déduction des charges

Régime réel
Abattement forfaitaire
)}

Paiment des cotisations

Mensuel (à la source)
Annuel avec deux ans de décalage
Mensuel ou trimestriel

Complémentaires retraite et santé déductibles

Oui (jusqu'à 50%)
Oui (Loi Madelin)
Non

Cotisations minimales

Non
Oui
Non

Seuil d'activation des droits

Oui
Non
Oui
) : (

Comparaison détaillée

)} {!hideAutoEntrepreneur && (

Plafond de chiffre d'affaires

Non
)}

Comptabilité

Experte
Complexe
Simple
) } const RuleValueLink = withSitePaths( ({ lien, montant, sitePaths, onClick }: RègleAvecMontant & { sitePaths: any, onClick: () => void }) => ( ) ) export default (compose( withSimulationConfig(ComparaisonConfig), connect( state => { const analyse = branchAnalyseSelector(state, { situationBranchName: 'Auto-entrepreneur' }) return { plafondAutoEntrepreneurDépassé: analyse.controls && analyse.controls.find( ({ test }) => test.includes && test.includes('base des cotisations > plafond') ), conversationStarted: state.conversationStarted, ...map( situationBranchName => tryCatch( () => ({ retraite: règleAvecMontantSelector(state, { situationBranchName })('protection sociale . retraite'), revenuNet: règleAvecMontantSelector(state, { situationBranchName })('revenu net') }), () => null )(), { autoEntrepreneur: 'Auto-entrepreneur', indépendant: 'Indépendant', assimiléSalarié: 'Assimilé salarié' } ) } }, { startConversation, defineDirectorStatus, isAutoentrepreneur, setSituationBranch } ) )(SchemeComparaison): React$Component)