ajoute le calcul de la régularisation progressive pour un mois donné
parent
e9919ed3ad
commit
b3709778bc
|
@ -331,10 +331,10 @@ salarié . cotisations . exonérations . réduction générale:
|
|||
produit:
|
||||
- 1.6 * temps de travail . SMIC / cotisations . assiette - 1
|
||||
- T / 0.6
|
||||
plancher: 0%
|
||||
plancher: 0
|
||||
plafond: T
|
||||
unité: '%'
|
||||
arrondi: 2 décimales
|
||||
unité: ''
|
||||
arrondi: 4 décimales
|
||||
références:
|
||||
Code de la sécurité sociale: https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000048852497
|
||||
Urssaf.fr: https://www.urssaf.fr/accueil/employeur/beneficier-exonerations/reduction-generale-cotisation.html#ancre-les-trois-etapes-de-calcul
|
||||
|
@ -366,9 +366,9 @@ salarié . cotisations . exonérations . réduction générale:
|
|||
- 130%
|
||||
|
||||
salarié . cotisations . exonérations . T:
|
||||
privé: oui
|
||||
titre: Coefficient T
|
||||
unité: '%'
|
||||
unité: ''
|
||||
arrondi: 4 décimales
|
||||
somme:
|
||||
- sécurité sociale et chômage
|
||||
- valeur: retraite complémentaire . employeur . taux T1
|
||||
|
|
|
@ -84,3 +84,44 @@ const getRégularisationAnnuelle = (
|
|||
|
||||
return realRéductionGénéraleAnnuelle - currentRéductionGénéraleAnnuelle
|
||||
}
|
||||
|
||||
export const getRégularisationProgressive = (
|
||||
monthIndex: number,
|
||||
data: MonthState[],
|
||||
engine: Engine<DottedName>
|
||||
): number => {
|
||||
if (monthIndex > data.length - 1) {
|
||||
return 0
|
||||
}
|
||||
|
||||
const nbOfMonths = monthIndex + 1
|
||||
const partialData = data.slice(0, nbOfMonths)
|
||||
const currentRéductionGénéraleTotale = sumAll(
|
||||
partialData.map((monthData) => monthData.réductionGénérale)
|
||||
)
|
||||
const rémunérationBruteTotale = sumAll(
|
||||
partialData.map((monthData) => monthData.rémunérationBrute)
|
||||
)
|
||||
const SMICMensuel = engine.evaluate({
|
||||
valeur: 'salarié . temps de travail . SMIC',
|
||||
unité: 'heures/mois',
|
||||
}).nodeValue as number
|
||||
|
||||
// Si on laisse l'engine calculer T dans le calcul de la réduction générale,
|
||||
// le résultat ne sera pas bon à cause de l'assiette de cotisations du contexte
|
||||
const coefT = engine.evaluate({
|
||||
valeur: 'salarié . cotisations . exonérations . T' ,
|
||||
}).nodeValue as number
|
||||
|
||||
const realRéductionGénéraleTotale = engine.evaluate({
|
||||
valeur: réductionGénéraleDottedName,
|
||||
arrondi: 'non',
|
||||
contexte: {
|
||||
[rémunérationBruteDottedName]: rémunérationBruteTotale,
|
||||
'salarié . temps de travail . SMIC': nbOfMonths * SMICMensuel,
|
||||
'salarié . cotisations . exonérations . T': coefT,
|
||||
}
|
||||
}).nodeValue as number
|
||||
|
||||
return realRéductionGénéraleTotale - currentRéductionGénéraleTotale
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue