/* @flow */
import type { FicheDePaie } from 'Types/ResultViewTypes'
import withColours from 'Components/utils/withColours'
import { compose } from 'ramda'
import React, { Fragment } from 'react'
import { Trans } from 'react-i18next'
import { connect } from 'react-redux'
import FicheDePaieSelectors from 'Selectors/ficheDePaieSelectors'
import Montant from './Montant'
import './PaySlip.css'
import RuleLink from './RuleLink'
type ConnectedPropTypes = ?FicheDePaie & {
colours: { lightestColour: string }
}
const PaySlip = ({
colours: { lightestColour },
...ficheDePaie
}: ConnectedPropTypes) => {
if (!Object.values(ficheDePaie).length) {
return null
}
const {
salaireBrut,
avantagesEnNature,
salaireNetDeCotisations,
salaireDeBase,
salaireChargé,
indemnitésSalarié,
rémunérationNetteImposable,
nombreHeuresTravaillées,
salaireNet,
réductionsDeCotisations,
cotisations,
totalCotisations,
salaireNetAprèsImpôt,
impôt
} = ficheDePaie
return (
Nombre d'heures travaillées :{' '}
{nombreHeuresTravaillées}
{/* Section salaire brut */}
Salaire
{(avantagesEnNature.montant !== 0 ||
indemnitésSalarié.montant !== 0) && (
<>
{salaireDeBase.montant}
>
)}
{avantagesEnNature.montant !== 0 && (
<>
{avantagesEnNature.montant}
>
)}
{indemnitésSalarié.montant !== 0 && (
<>
{indemnitésSalarié.montant}
>
)}
{salaireBrut.montant}
{/* Section cotisations */}
Cotisations sociales
Part employeur
Part salariale
{cotisations.map(([section, cotisationList]) => (
{section}
{cotisationList.map(cotisation => (
{cotisation.montant.partPatronale}
{cotisation.montant.partSalariale}
))}
))}
Réductions
{-réductionsDeCotisations.montant}
{0}
{/* Total cotisation */}
Total des retenues
{totalCotisations.partPatronale}
{totalCotisations.partSalariale}
{/* Salaire chargé */}
{salaireChargé.montant}
{0}
{/* Section salaire net */}
Salaire net
{/* Rémunération nette imposable */}
{rémunérationNetteImposable.montant}
{/* Salaire net */}
{salaireNetDeCotisations.montant}
{avantagesEnNature.montant !== 0 ? (
<>
{/* Avantages en nature */}
{-avantagesEnNature.montant}
{/* Salaire net */}
{salaireNet.montant}
>
) : null}
{-impôt.montant}
{salaireNetAprèsImpôt.montant}
Le simulateur vous aide à comprendre votre bulletin de paie, sans lui
être opposable. Pour plus d'informations, rendez vous sur
service-public.fr
.
Il ne prend pour l'instant pas en compte les conventions et
accords collectifs, ni la myriade d'aides à explorer sur
aides-entreprises.fr.
)
}
export default compose(
withColours,
connect(
FicheDePaieSelectors,
{}
)
)(PaySlip)