🔨 Ajoute la reduction de cotisations pour les heures supplémentaires
TODO: uniformiser la façon de gérer les réductions sur la fiche de paie, entre employeur et salariépull/629/head
parent
18318008ac
commit
a247e5d57c
|
@ -37,14 +37,14 @@ export default compose(
|
|||
parsedRules
|
||||
}: ConnectedPropTypes) => {
|
||||
let getRule = getRuleFromAnalysis(analysis)
|
||||
console.log(
|
||||
getRule(
|
||||
'contrat salarié . temps de travail . heures supplémentaires . nombre effectuées'
|
||||
),
|
||||
analysis.cache[
|
||||
'contrat salarié . temps de travail . heures supplémentaires . nombre effectuées'
|
||||
]
|
||||
|
||||
const heuresSupplémentaires = getRule(
|
||||
'contrat salarié . temps de travail . heures supplémentaires'
|
||||
)
|
||||
const réductionHeuresSupplémentaires = getRule(
|
||||
'contrat salarié . cotisations . salariales . réduction heures supplémentaires'
|
||||
)
|
||||
console.log(réductionHeuresSupplémentaires)
|
||||
|
||||
return (
|
||||
<div
|
||||
|
@ -60,13 +60,13 @@ export default compose(
|
|||
<div className="payslip__salarySection">
|
||||
<Line
|
||||
rule={getRule('contrat salarié . temps de travail')}
|
||||
maximumFractionDigits={0}
|
||||
maximumFractionDigits={1}
|
||||
/>
|
||||
<Line
|
||||
rule={getRule(
|
||||
'contrat salarié . temps de travail . heures supplémentaires . nombre effectuées'
|
||||
)}
|
||||
maximumFractionDigits={0}
|
||||
maximumFractionDigits={1}
|
||||
/>
|
||||
</div>
|
||||
|
||||
|
@ -117,18 +117,26 @@ export default compose(
|
|||
</h5>
|
||||
<Line
|
||||
negative
|
||||
rule={getRule('contrat salarié . réductions de cotisations')}
|
||||
rule={getRule(
|
||||
'contrat salarié . cotisations . patronales . réductions de cotisations'
|
||||
)}
|
||||
/>
|
||||
<Value unit="€" nilValueSymbol="—">
|
||||
{0}
|
||||
</Value>
|
||||
<span />
|
||||
|
||||
{heuresSupplémentaires.nodeValue && (
|
||||
<>
|
||||
<RuleLink {...réductionHeuresSupplémentaires} />
|
||||
<span />
|
||||
<Value {...réductionHeuresSupplémentaires} />
|
||||
</>
|
||||
)}
|
||||
{/* Total cotisation */}
|
||||
<div className="payslip__total">
|
||||
<Trans>Total des retenues</Trans>
|
||||
</div>
|
||||
<Value
|
||||
nilValueSymbol="—"
|
||||
{...getRule('contrat salarié . cotisations . patronales à payer')}
|
||||
{...getRule('contrat salarié . cotisations . patronales . à payer')}
|
||||
unit="€"
|
||||
className="payslip__total"
|
||||
/>
|
||||
|
@ -140,9 +148,7 @@ export default compose(
|
|||
/>
|
||||
{/* Salaire chargé */}
|
||||
<Line rule={getRule('contrat salarié . rémunération . total')} />
|
||||
<Value nilValueSymbol="—" unit="€">
|
||||
{0}
|
||||
</Value>
|
||||
<span />
|
||||
</div>
|
||||
{/* Section salaire net */}
|
||||
<SalaireNetSection getRule={getRule} />
|
||||
|
|
|
@ -15,7 +15,7 @@ objectifs:
|
|||
|
||||
objectifs secondaires:
|
||||
- contrat salarié . temps de travail
|
||||
- contrat salarié . cotisations . patronales à payer
|
||||
- contrat salarié . cotisations . patronales . à payer
|
||||
|
||||
questions:
|
||||
à l'affiche:
|
||||
|
|
|
@ -7,7 +7,7 @@ objectifs:
|
|||
|
||||
objectifs secondaires:
|
||||
- contrat salarié . temps de travail
|
||||
- contrat salarié . cotisations . patronales à payer
|
||||
- contrat salarié . cotisations . patronales . à payer
|
||||
|
||||
questions:
|
||||
à l'affiche:
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import { map, mapObjIndexed, values } from 'ramda'
|
||||
import React from 'react'
|
||||
import { Node } from './common'
|
||||
import { makeJsx } from '../evaluation'
|
||||
import { mapObjIndexed, map, values } from 'ramda'
|
||||
import { Node } from './common'
|
||||
|
||||
export default function Allègement(nodeValue, rawExplanation) {
|
||||
// properties with a nodeValue of 0 are not interesting to display
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
import { decompose } from 'Engine/mecanisms/utils'
|
||||
import variations from 'Engine/mecanisms/variations'
|
||||
import { inferUnit } from 'Engine/units'
|
||||
import {
|
||||
add,
|
||||
any,
|
||||
|
@ -47,8 +49,6 @@ import Somme from './mecanismViews/Somme'
|
|||
import { disambiguateRuleReference, findRuleByDottedName } from './rules'
|
||||
import { anyNull, val } from './traverse-common-functions'
|
||||
import uniroot from './uniroot'
|
||||
import { inferUnit } from 'Engine/units'
|
||||
import variations from 'Engine/mecanisms/variations'
|
||||
|
||||
export let mecanismOneOf = (recurse, k, v) => {
|
||||
if (!is(Array, v)) throw new Error('should be array')
|
||||
|
|
|
@ -1076,6 +1076,37 @@
|
|||
- CRDS
|
||||
- APEC [salarié]
|
||||
- complémentaire santé [salarié]
|
||||
- réduction heures supplémentaires
|
||||
|
||||
- espace: contrat salarié . cotisations . salariales
|
||||
nom: réduction heures supplémentaires
|
||||
aide:
|
||||
type: réduction de cotisations
|
||||
unité: €
|
||||
période: flexible
|
||||
formule: 0 - rémunération . heures supplémentaires * taux des cotisations réduites
|
||||
# multiplication:
|
||||
# assiette: rémunération . heures supplémentaires
|
||||
# taux: taux des cotisations réduites
|
||||
références:
|
||||
Code de la sécurité sociale - Article D241-21: https://www.legifrance.gouv.fr/affichCodeArticle.do?idArticle=LEGIARTI000038056813&cidTexte=LEGITEXT000006073189
|
||||
urssaf: https://www.urssaf.fr/portail/home/employeur/beneficier-dune-exoneration/exonerations-generales/la-reduction-de-cotisations-sala/modalites-de-calcul-et-de-declar.html
|
||||
|
||||
- espace: contrat salarié . cotisations . salariales . réduction heures supplémentaires
|
||||
nom: taux des cotisations réduites
|
||||
période: aucune
|
||||
unité: '%'
|
||||
description: le taux effectif des cotisations d'assurance vieillesse à la charge du salarié
|
||||
formule:
|
||||
le minimum de:
|
||||
- 11.31%
|
||||
- multiplication:
|
||||
assiette:
|
||||
somme:
|
||||
- vieillesse [salarié]
|
||||
- retraite complémentaire [salarié]
|
||||
- contribution d'équilibre général [salarié]
|
||||
facteur: 1 / assiette
|
||||
|
||||
- espace: contrat salarié . cotisations
|
||||
nom: patronales
|
||||
|
@ -1516,9 +1547,9 @@
|
|||
|
||||
Des [aides différées](/documentation/aides-employeur) peuvent venir diminuer ce montant.
|
||||
|
||||
formule: rémunération . total sans réduction - réductions de cotisations
|
||||
formule: rémunération . total sans réduction - cotisations . patronales . réductions de cotisations
|
||||
|
||||
- espace: contrat salarié
|
||||
- espace: contrat salarié . cotisations . patronales
|
||||
nom: réductions de cotisations
|
||||
période: flexible
|
||||
unité: €
|
||||
|
@ -1528,8 +1559,8 @@
|
|||
- exonération JEI
|
||||
- réduction ACRE
|
||||
|
||||
- espace: contrat salarié . cotisations
|
||||
nom: patronales à payer
|
||||
- espace: contrat salarié . cotisations . patronales
|
||||
nom: à payer
|
||||
période: flexible
|
||||
unité: €
|
||||
formule: patronales - réductions de cotisations
|
||||
|
@ -1577,7 +1608,7 @@
|
|||
- espace: contrat salarié
|
||||
nom: cotisations
|
||||
période: flexible
|
||||
descitption: Total des cotisation patronales et salariales
|
||||
description: Total des cotisation patronales et salariales
|
||||
formule:
|
||||
somme:
|
||||
- patronales
|
||||
|
|
|
@ -15,10 +15,7 @@ import {
|
|||
values
|
||||
} from 'ramda'
|
||||
import { createSelector } from 'reselect'
|
||||
import {
|
||||
getRuleFromAnalysis,
|
||||
analysisWithDefaultsSelector
|
||||
} from 'Selectors/analyseSelectors'
|
||||
import { analysisWithDefaultsSelector } from 'Selectors/analyseSelectors'
|
||||
|
||||
import type { Analysis } from 'Types/Analysis'
|
||||
import type {
|
||||
|
@ -28,7 +25,6 @@ import type {
|
|||
Branche,
|
||||
FicheDePaie
|
||||
} from 'Types/ResultViewTypes'
|
||||
import { findRuleByDottedName } from 'Engine/rules'
|
||||
|
||||
import type { Règle } from 'Types/RegleTypes'
|
||||
|
||||
|
@ -123,6 +119,11 @@ export let analysisToCotisations = analysis => {
|
|||
.map(name => analysis.cache[name])
|
||||
.map(pathOr([], ['explanation', 'formule', 'explanation', 'explanation']))
|
||||
.reduce(concat, [])
|
||||
.filter(
|
||||
({ dottedName }) =>
|
||||
dottedName !==
|
||||
'contrat salarié . cotisations . salariales . réduction heures supplémentaires'
|
||||
)
|
||||
|
||||
const cotisations = pipe(
|
||||
groupBy(prop('dottedName')),
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
/* @flow */
|
||||
|
||||
import { getRuleFromAnalysis } from 'Engine/rules'
|
||||
import {
|
||||
add,
|
||||
compose,
|
||||
|
@ -12,19 +13,18 @@ import {
|
|||
mergeWith,
|
||||
pick,
|
||||
pipe,
|
||||
propEq,
|
||||
reduce,
|
||||
sort,
|
||||
propEq,
|
||||
without
|
||||
} from 'ramda'
|
||||
import { createSelector } from 'reselect'
|
||||
import {
|
||||
BLANK_COTISATION,
|
||||
mergeCotisations,
|
||||
analysisToCotisations
|
||||
} from './ficheDePaieSelectors'
|
||||
import { analysisWithDefaultsSelector } from 'Selectors/analyseSelectors'
|
||||
import { getRuleFromAnalysis } from 'Engine/rules'
|
||||
import {
|
||||
analysisToCotisations,
|
||||
BLANK_COTISATION,
|
||||
mergeCotisations
|
||||
} from './ficheDePaieSelectors'
|
||||
|
||||
import type {
|
||||
Cotisation,
|
||||
|
@ -113,7 +113,7 @@ const répartition = (analysis): ?Répartition => {
|
|||
salaireNet = getRule('contrat salarié . salaire . net'),
|
||||
salaireChargé = getRule('contrat salarié . rémunération . total'),
|
||||
réductionsDeCotisations = getRule(
|
||||
'contrat salarié . réductions de cotisations'
|
||||
'contrat salarié . cotisations . patronales . réductions de cotisations'
|
||||
)
|
||||
let CSG
|
||||
const autresCotisations = cotisations['protection sociale . autres']
|
||||
|
|
|
@ -3,12 +3,12 @@
|
|||
import { expect } from 'chai'
|
||||
// $FlowFixMe
|
||||
import salariéConfig from 'Components/simulationConfigs/salarié.yaml'
|
||||
import { getRuleFromAnalysis } from 'Engine/rules'
|
||||
import { analysisWithDefaultsSelector } from 'Selectors/analyseSelectors'
|
||||
import {
|
||||
analysisToCotisationsSelector,
|
||||
COTISATION_BRANCHE_ORDER
|
||||
} from 'Selectors/ficheDePaieSelectors'
|
||||
import { analysisWithDefaultsSelector } from 'Selectors/analyseSelectors'
|
||||
import { getRuleFromAnalysis } from 'Engine/rules'
|
||||
|
||||
let state = {
|
||||
form: {
|
||||
|
@ -57,7 +57,7 @@ describe('pay slip selector', function() {
|
|||
|
||||
it('should sum all cotisations', function() {
|
||||
let pat = getRuleFromAnalysis(analysis)(
|
||||
'contrat salarié . cotisations . patronales à payer'
|
||||
'contrat salarié . cotisations . patronales . à payer'
|
||||
),
|
||||
sal = getRuleFromAnalysis(analysis)(
|
||||
'contrat salarié . cotisations . salariales'
|
||||
|
|
Loading…
Reference in New Issue