/* @flow */ import { startConversation } from 'Actions/actions' import { defineDirectorStatus, isAutoentrepreneur } from 'Actions/companyStatusActions' import classnames from 'classnames' 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 { compose, map, tryCatch } from 'ramda' import React, { useState } from 'react' import emoji from 'react-easy-emoji' import { connect } from 'react-redux' 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: () => void, defineDirectorStatus: string => void, 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 */ 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('👩‍🔧')}{' '} 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)

Accidents du travail couverts

Oui
Non

Assurance maladie

++
+

Indémnités journalières

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

Plafond de chiffre d'affaire

Non
)} {!conversationStarted && ( <>

Retraite

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

Période

)}
{!conversationStarted ? ( <>

Comparez vos revenus et votre retraite en 1 minute

) : (
)}
{conversationStarted && ( <>

Revenu net après impôts

{assimiléSalarié && ( )}
{indépendant && ( )}
{autoEntrepreneur && ( {plafondAutoEntrepreneurDépassé ? ( 'Plafond de CA dépassé' ) : ( )} )}

Retraite (estimation)

{assimiléSalarié && ( )}
{indépendant && indépendant.retraite.montant !== 0 ? ( ) : ( Pas implémenté )}
{autoEntrepreneur && ( )}
)} {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

)}

Comptabilité

Expert
Compliquée
Simplifiée
) } export default (compose( connect( state => { const analyse = branchAnalyseSelector(state, { situationBranchName: 'Auto-entrepreneur' }) return { plafondAutoEntrepreneurDépassé: analyse.controls && analyse.controls.find(({ test }) => 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 )(), { assimiléSalarié: 'Assimilé salarié', indépendant: 'Indépendant', autoEntrepreneur: 'Auto-entrepreneur' } ) } }, { startConversation, defineDirectorStatus, isAutoentrepreneur } ), withSimulationConfig(ComparaisonConfig) )(SchemeComparaison): React$Component)