salaire : ajout des valeurs historiques -> 2020
This commit is contained in:
parent
4de3f93518
commit
890bb63ab1
|
|
@ -0,0 +1,16 @@
|
|||
/**
|
||||
* Round half away from zero ('commercial' rounding)
|
||||
* Uses correction to offset floating-point inaccuracies.
|
||||
* Works symmetrically for positive and negative numbers.
|
||||
*/
|
||||
export function round(num : number, decimalPlaces : number = 0) : number {
|
||||
const p = Math.pow(10, decimalPlaces);
|
||||
const n = (num * p) * (1 + Number.EPSILON);
|
||||
return Math.round(n) / p;
|
||||
}
|
||||
|
||||
export function floor(num : number, decimalPlaces : number = 0) : number {
|
||||
const p = Math.pow(10, decimalPlaces);
|
||||
const n = (num * p) * (1 + Number.EPSILON);
|
||||
return Math.floor(n) / p;
|
||||
}
|
||||
|
|
@ -17,14 +17,14 @@
|
|||
let aIndemniteZipZac: boolean = false;
|
||||
let estUltramarin: boolean = false;
|
||||
|
||||
let nbDemiGardes: number = 0;
|
||||
let nbDemiGardesSem: number = 0;
|
||||
let nbGardesSem: number = 0;
|
||||
let nbGardesWE: number = 0;
|
||||
let nbAstreintes: number = 0;
|
||||
let nbDeplacements: number = 0;
|
||||
|
||||
let dateCourante: Date = new Date();
|
||||
$: bases = recupBasesLegales(dateCourante.getFullYear(), dateCourante.getMonth() + 1);
|
||||
$: bases = recupBasesLegales(dateCourante);
|
||||
|
||||
// Options pour le monthpicker flatpicker-plus
|
||||
const mp_options: Options = {
|
||||
|
|
@ -36,7 +36,6 @@
|
|||
maxDate: new Date(),
|
||||
onChange: (dates: Date[], currentDateString: string, self: any, data?: any) => {
|
||||
dateCourante = dates[0];
|
||||
console.log('Nouvelle date : ' + dateCourante);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -136,7 +135,7 @@
|
|||
$: tauxPrimeOutremer = estUltramarin ? parseFloat(bases.tauxPrimeOutremer) : 0;
|
||||
|
||||
// Gardes et astreintes
|
||||
$: valDemiGarde = parseFloat(bases.demigarde);
|
||||
$: valDemiGardeSem = parseFloat(bases.demigardeSem);
|
||||
$: valGardeSem = parseFloat(bases.gardeSem); // Pas de gestion des gardes au dela du service normal pour le moment
|
||||
$: valGardeWE = parseFloat(bases.gardeWE); // Pas de gestion des gardes au dela du service normal pour le moment
|
||||
$: valAstreinte = parseFloat(bases.astreinte);
|
||||
|
|
@ -151,7 +150,7 @@
|
|||
indemniteTransport +
|
||||
indemniteHebergement +
|
||||
(tauxPrimeOutremer * base) / 100 +
|
||||
nbDemiGardes * valDemiGarde +
|
||||
nbDemiGardesSem * valDemiGardeSem +
|
||||
nbGardesSem * valGardeSem +
|
||||
nbGardesWE * valGardeWE +
|
||||
nbAstreintes * valAstreinte +
|
||||
|
|
@ -237,7 +236,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="flex flex-col gap-2">
|
||||
<PlusMoins bind:compteur={nbDemiGardes}>Demi-gardes</PlusMoins>
|
||||
<PlusMoins bind:compteur={nbDemiGardesSem}>Demi-gardes</PlusMoins>
|
||||
</div>
|
||||
<div class="flex flex-col gap-2">
|
||||
<PlusMoins bind:compteur={nbGardesSem}>Gardes semaine</PlusMoins>
|
||||
|
|
@ -282,10 +281,10 @@
|
|||
|
||||
<LigneSalaire
|
||||
type="nombre"
|
||||
label="Demi-garde"
|
||||
label="Demi-garde semaine"
|
||||
opt={true}
|
||||
base={valDemiGarde}
|
||||
nombre={nbDemiGardes}
|
||||
base={valDemiGardeSem}
|
||||
nombre={nbDemiGardesSem}
|
||||
/>
|
||||
<LigneSalaire
|
||||
type="nombre"
|
||||
|
|
|
|||
|
|
@ -1,40 +1,53 @@
|
|||
export function recupBasesLegales(annee: number, mois: number) {
|
||||
const base = {
|
||||
/* Salaires de bases :
|
||||
A partir de juillet 2023 - https://www.legifrance.gouv.fr/jorf/id/JORFTEXT000047774474
|
||||
A partir de juillet 2022 - https://www.legifrance.gouv.fr/loda/article_lc/LEGIARTI000046032166/2022-07-11
|
||||
De nov 2020 à juin 2022 - https://www.legifrance.gouv.fr/loda/id/LEGIARTI000042352097/2020-11-01/#LEGIARTI000042352097
|
||||
De fev 2017 à oct 2020 - https://www.legifrance.gouv.fr/loda/article_lc/LEGIARTI000042352732/2020-11-01
|
||||
import { floor } from "$lib/truncateFloat";
|
||||
|
||||
Gardes > 2020 :
|
||||
*/
|
||||
"baseDJ2": "28495.49",
|
||||
"baseDJ1": "28495.49",
|
||||
"base5e": "28448.22",
|
||||
"base4e": "28430.36",
|
||||
"base3e": "28408.30",
|
||||
"base2e": "21483.24",
|
||||
"base1ere": "19406.35",
|
||||
"baseFFI": "17745.47",
|
||||
"baseAnneeRecherche": "25931.90",
|
||||
"indemniteSujetion": "435.18",
|
||||
"primeDJ2eme": "6000",
|
||||
"primeDJ1re": "5000", // https://www.legifrance.gouv.fr/loda/article_lc/LEGIARTI000041582655
|
||||
"primeResp5eme": "4273.93",
|
||||
"primeResp4eme": "2154.10",
|
||||
"primeNonLogeNonNourri": "1010.64",
|
||||
"primeNonLogeNourri": "336.32",
|
||||
"primeLogeNonNourri": "674.31",
|
||||
"primeSASPAS": "125",
|
||||
"indemniteDeplacement": "130",
|
||||
"indemniteHebergement": "300",
|
||||
"tauxPrimeOutremer": "40",
|
||||
interface montant {
|
||||
label: string,
|
||||
basesDatees : montantDates,
|
||||
}
|
||||
|
||||
"gardeSem": "156.53",
|
||||
"gardeWE": "171.24",
|
||||
"demigarde": "78.26",
|
||||
"astreinte": "21.26",
|
||||
"deplaAstreinte": "78.26",
|
||||
type basesLegales = montant[];
|
||||
type montantDates = Array<[string | null, number]>;
|
||||
|
||||
function montantEnVigueur(vigueur : Date, bases : montantDates) : number {
|
||||
for (let b of bases) {
|
||||
const [date, montant] = b;
|
||||
if (date === null || vigueur >= new Date(date)) return montant;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
export function recupBasesLegales(vigueur : Date) {
|
||||
let base = { /* VALEURS EN VIGUEUR (DERNIERE MAJ NOV 2023) - cf 2e partie pour valeurs historiques */
|
||||
"baseDJ2": "28495.49", // juil 2023 - cf. historique
|
||||
"baseDJ1": "28495.49", // juil 2023 - cf. historique
|
||||
"base5e": "28448.22", // juil 2023 - cf. historique
|
||||
"base4e": "28430.36", // juil 2023 - cf. historique
|
||||
"base3e": "28408.30", // juil 2023 - cf. historique
|
||||
"base2e": "21483.24", // juil 2023 - cf. historique
|
||||
"base1ere": "19406.35", // juil 2023 - cf. historique
|
||||
"baseFFI": "17745.47", // juil 2023 - cf. historique
|
||||
"baseAnneeRecherche": "25931.90", // juil 2023 - cf. historique
|
||||
"indemniteSujetion": "435.18", // juil 2023 - cf. historique
|
||||
"primeDJ2eme": "6000", // fev 2020 - https://www.legifrance.gouv.fr/loda/article_lc/LEGIARTI000041582655
|
||||
"primeDJ1re": "5000", // fev 2020 - https://www.legifrance.gouv.fr/loda/article_lc/LEGIARTI000041582655
|
||||
"primeResp5eme": "4273.93", // juil 2023 - cf. historique
|
||||
"primeResp4eme": "2154.10", // juil 2023 - cf. historique
|
||||
"primeNonLogeNonNourri": "1010.64", // juil 2023 - cf. historique
|
||||
"primeNonLogeNourri": "336.32", // juil 2023 - cf. historique
|
||||
"primeLogeNonNourri": "674.31", // juil 2023 - cf. historique
|
||||
"primeSASPAS": "125", // mars 2014 - https://www.legifrance.gouv.fr/loda/id/JORFTEXT000028684829
|
||||
"indemniteDeplacement": "130", // mars 2014 - https://www.legifrance.gouv.fr/jorf/id/JORFTEXT000028684837
|
||||
"indemniteHebergement": "300", // nov 2020 - cf. historique
|
||||
"tauxPrimeOutremer": "40", // harmonisation avril 2023 - https://www.legifrance.gouv.fr/jorf/id/JORFTEXT000047387836
|
||||
"tauxPrimeOutremerNiv1" : "40", // TODO
|
||||
"tauxPrimeOutremerNiv2" : "40", // TODO
|
||||
|
||||
"gardeSem": "156.53", // juil 2023 - cf. historique
|
||||
"gardeWE": "171.24", // juil 2023 - cf. historique
|
||||
"demigardeSem": "78.26", // juil 2023 - cf. historique
|
||||
"demigardeWE": "84.35", // juil 2023 - cf. historique
|
||||
"astreinte": "21.26", // juil 2023 - cf. historique
|
||||
"deplaAstreinte": "78.26", // juil 2023 - cf. historique
|
||||
|
||||
"tauxCSGDeductible": "6.8", // janvier 2019
|
||||
"tauxCSGNonDeductible": "2.40", // janvier 2019
|
||||
|
|
@ -42,11 +55,242 @@ export function recupBasesLegales(annee: number, mois: number) {
|
|||
"assietteCSGCRDS": "0.9825",
|
||||
|
||||
// Retraite : https://www.ircantec.retraites.fr/employeur/parametres-utilises-ircantec
|
||||
"IRCANTECTrA": "2.8",
|
||||
"IRCANTECTrB": "6.95",
|
||||
"plafondSS": "3666",
|
||||
"tauxAssuranceViellessePlafonee": "6.9",
|
||||
"tauxAssuranceViellesseDeplaf": "0.4",
|
||||
}
|
||||
"IRCANTECTrA": "2.8", // jan 2017
|
||||
"IRCANTECTrB": "6.95", // jan 2017
|
||||
"plafondSS": "3666", // jan 2023 - cf. historique
|
||||
"tauxAssuranceViellessePlafonee": "6.9", // janvier 2017 - https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000029924557
|
||||
"tauxAssuranceViellesseDeplaf": "0.4", // ^ idem ^
|
||||
}
|
||||
|
||||
// Mise à jour avec les valeurs historiques (si nécessaire) - cf. ci-dessous
|
||||
basesHistoriques.forEach(bb => {
|
||||
const montant = montantEnVigueur(vigueur, bb.basesDatees);
|
||||
const label = bb.label as keyof typeof base;
|
||||
base[label] = montant.toFixed(2);
|
||||
});
|
||||
|
||||
return base;
|
||||
}
|
||||
|
||||
const basesHistoriques : basesLegales = [
|
||||
/* Les bases légales sont inscrites ci-dessous pour des dates à partir de janvier 2020 (sauf les DJ : fév 2020) */
|
||||
|
||||
/* DJ :
|
||||
A partir de juillet 2023 - https://www.legifrance.gouv.fr/jorf/id/JORFTEXT000047774474
|
||||
De juil 2022 à juin 2023 : https://www.legifrance.gouv.fr/loda/id/LEGIARTI000046032168/2022-07-11/
|
||||
De nov 2020 à juin 2022 : https://www.legifrance.gouv.fr/loda/id/LEGIARTI000042351456/2020-11-01/
|
||||
De fev 2020 à oct 2020 : https://www.legifrance.gouv.fr/loda/id/LEGIARTI000041572708/2020-02-14/
|
||||
*/
|
||||
{ label: 'baseDJ2', basesDatees: [
|
||||
[ '2023-07', 28495.49 ],
|
||||
[ '2022-07', 28074.38 ],
|
||||
[ '2020-11', 27015 ],
|
||||
[ null, 27025 ]
|
||||
]
|
||||
},
|
||||
{ label: 'baseDJ1', basesDatees: [
|
||||
[ '2023-07', 28495.49 ],
|
||||
[ '2022-07', 28074.38 ],
|
||||
[ '2020-11', 27015 ],
|
||||
[ null, 27025 ]
|
||||
]
|
||||
},
|
||||
|
||||
/* Salaires et indemnités / primes de base pour internes et FFI :
|
||||
A partir de juillet 2023 - https://www.legifrance.gouv.fr/loda/article_lc/LEGIARTI000046032166
|
||||
A partir de juillet 2022 - https://www.legifrance.gouv.fr/loda/article_lc/LEGIARTI000046147521/2022-08-06
|
||||
De nov 2020 à juin 2022 - https://www.legifrance.gouv.fr/loda/id/LEGIARTI000042352097
|
||||
De fev 2017 à oct 2020 - https://www.legifrance.gouv.fr/loda/article_lc/LEGIARTI000032841019
|
||||
*/
|
||||
{ label: 'base5e', basesDatees: [
|
||||
[ '2023-07', 28448.22 ],
|
||||
[ '2022-07', 28027.80 ],
|
||||
[ '2020-11', 27080 ],
|
||||
[ null, 25500.55 ]
|
||||
]
|
||||
},
|
||||
{ label: 'base4e', basesDatees: [
|
||||
[ '2023-07', 28430.36 ],
|
||||
[ '2022-07', 28010.20 ],
|
||||
[ '2020-11', 27063 ],
|
||||
[ null, 25500.55 ]
|
||||
]
|
||||
},
|
||||
{ label: 'base3e', basesDatees: [
|
||||
[ '2023-07', 28408.30 ],
|
||||
[ '2022-07', 27988.47 ],
|
||||
[ '2020-11', 27042 ],
|
||||
[ null, 25500.55 ]
|
||||
]
|
||||
},
|
||||
{ label: 'base2e', basesDatees: [
|
||||
[ '2023-07', 21483.24 ],
|
||||
[ '2022-07', 21165.75 ],
|
||||
[ '2020-11', 20450 ],
|
||||
[ null, 18383.46 ]
|
||||
]
|
||||
},
|
||||
{ label: 'base1ere', basesDatees: [
|
||||
[ '2023-07', 19406.35 ],
|
||||
[ '2022-07', 19119.55 ],
|
||||
[ '2020-11', 18473 ],
|
||||
[ null, 16605.13 ]
|
||||
]
|
||||
},
|
||||
{ label: 'baseFFI', basesDatees: [
|
||||
[ '2023-07', 17745.47 ],
|
||||
[ '2022-07', 17483.22 ],
|
||||
[ '2020-11', 16892 ],
|
||||
[ null, 15196.51 ]
|
||||
]
|
||||
},
|
||||
{ label: 'baseAnneeRecherche', basesDatees: [
|
||||
[ '2023-07', 27596.01 ],
|
||||
[ '2022-07', 27188.19 ],
|
||||
[ '2020-11', 24684.71 ],
|
||||
[ null, 24182.74 ]
|
||||
]
|
||||
},
|
||||
{ label: 'indemniteSujetion', basesDatees: [
|
||||
[ '2020-11', 435.18 ],
|
||||
[ null, 432.58 ]
|
||||
]
|
||||
},
|
||||
{ label: 'primeNonLogeNonNourri', basesDatees: [
|
||||
[ '2020-11', 1010.64 ],
|
||||
[ null, 1004.61 ]
|
||||
]
|
||||
},
|
||||
{ label: 'primeNonLogeNourri', basesDatees: [
|
||||
[ '2020-11', 336.32 ],
|
||||
[ null, 334.32 ]
|
||||
]
|
||||
},
|
||||
{ label: 'primeLogeNonNourri', basesDatees: [
|
||||
[ '2020-11', 674.31 ],
|
||||
[ null, 670.29 ]
|
||||
]
|
||||
},
|
||||
{ label: 'primeResp5eme', basesDatees: [
|
||||
[ '2023-07', 4273.93 ],
|
||||
[ '2022-07', 4210.77 ],
|
||||
[ '2020-11', 4068.38 ],
|
||||
[ null, 4044.12 ]
|
||||
]
|
||||
},
|
||||
{ label: 'primeResp4eme', basesDatees: [
|
||||
[ '2023-07', 2154.10 ],
|
||||
[ '2022-07', 2122.27 ],
|
||||
[ '2020-11', 2050.50 ],
|
||||
[ null, 2038.27 ]
|
||||
]
|
||||
},
|
||||
|
||||
/* Gardes d'internes
|
||||
A partir de juillet 2023 - https://www.legifrance.gouv.fr/loda/id/JORFTEXT000032575975
|
||||
De juil 2022 à juil 2023 - https://www.legifrance.gouv.fr/loda/id/LEGIARTI000046209558/2022-07-01/
|
||||
De nov 2020 à juil 2022 - https://www.legifrance.gouv.fr/loda/id/LEGIARTI000042485121/2020-11-01/
|
||||
De mai 2016 à oct 2020 - https://www.legifrance.gouv.fr/loda/id/LEGIARTI000032582930/2016-05-01/
|
||||
|
||||
NB: les montants des gardes et demi-gardes supplémentaires sont égaux à ceux du week-end
|
||||
|
||||
+ revalorisation de 50 % : en continu depuis aout 2022
|
||||
A partir de janvier 2024 - non publié pour le moment
|
||||
De sept 2023 à dec 2023 - https://www.legifrance.gouv.fr/jorf/article_jo/JORFARTI000048095628
|
||||
De avr 2023 à aout 2023 - https://www.legifrance.gouv.fr/jorf/article_jo/JORFARTI000047387923
|
||||
De déc 2022 à mars 2023 - https://www.legifrance.gouv.fr/jorf/article_jo/JORFARTI000046727758
|
||||
De sept 2022 à nov 2022 - https://www.srp-img.com/wp-content/uploads/2023/01/Courrier-%EF%BF%BD-
|
||||
lensemble-des-directeurs-detablissements-hospitaliers-et-aux-comptables-publics.pdf
|
||||
D'aout 2022 à sept 2022 - https://www.legifrance.gouv.fr/jorf/article_jo/JORFARTI000046229342
|
||||
*/
|
||||
{ label: 'gardeSem', basesDatees: [
|
||||
[ '2023-07', floor(156.23 * 1.5, 2) ],
|
||||
[ '2022-08', floor(154.22 * 1.5, 2) ],
|
||||
[ '2022-07', 154.22 ],
|
||||
[ '2020-11', 149 ],
|
||||
[ null, 119.02 ]
|
||||
]
|
||||
},
|
||||
{ label: 'gardeWE', basesDatees: [
|
||||
[ '2023-07', floor(171.24 * 1.5, 2) ],
|
||||
[ '2022-08', floor(168.71 * 1.5, 2) ],
|
||||
[ '2022-07', 168.71 ],
|
||||
[ '2020-11', 163 ],
|
||||
[ null, 130.02 ]
|
||||
]
|
||||
},
|
||||
{ label: 'demigardeSem', basesDatees: [
|
||||
[ '2023-07', floor(78.26 * 1.5, 2) ],
|
||||
[ '2022-08', floor(77.11 * 1.5, 2) ],
|
||||
[ '2022-07', 77.11 ],
|
||||
[ '2020-11', 74.5 ],
|
||||
[ null, 59.50 ]
|
||||
]
|
||||
},
|
||||
{ label: 'demigardeWE', basesDatees: [
|
||||
[ '2023-07', floor(85.62 * 1.5, 2) ],
|
||||
[ '2022-08', floor(84.35 * 1.5, 2) ],
|
||||
[ '2022-07', 84.35 ],
|
||||
[ '2020-11', 81.5 ],
|
||||
[ null, 65.01 ]
|
||||
]
|
||||
},
|
||||
|
||||
/* Astreintes d'internes
|
||||
A partir de juillet 2023 - https://www.legifrance.gouv.fr/loda/article_lc/LEGIARTI000048244852
|
||||
De juil 2022 à juil 2023 - https://www.legifrance.gouv.fr/loda/article_lc/LEGIARTI000046209612/2022-07-01/
|
||||
De nov 2020 à juil 2022 - https://www.legifrance.gouv.fr/loda/article_lc/LEGIARTI000042485117/2020-11-01/
|
||||
De nov 2015 à oct 2020 - https://www.legifrance.gouv.fr/loda/article_lc/LEGIARTI000031027721/2015-11-01/
|
||||
*/
|
||||
{ label: 'astreinte', basesDatees: [
|
||||
[ '2023-07', 21.26 ],
|
||||
[ '2022-07', 20.95 ],
|
||||
[ null, 20 ]
|
||||
]
|
||||
},
|
||||
{ label: 'deplaAstreinte', basesDatees: [
|
||||
[ '2023-07', 78.26 ],
|
||||
[ '2022-07', 77.11 ],
|
||||
[ '2020-11', 74.5 ],
|
||||
[ null, 59.50 ]
|
||||
]
|
||||
},
|
||||
|
||||
/* Indemnité forfaitaire d'hébergement (zones sous-denses)
|
||||
A partir de novembre 2020 - https://www.legifrance.gouv.fr/loda/id/JORFTEXT000037152345
|
||||
De nov 2018 à oct 2020 - https://www.legifrance.gouv.fr/loda/article_lc/LEGIARTI000037154721/2018-11-01
|
||||
*/
|
||||
{ label: 'indemniteHebergement', basesDatees: [
|
||||
[ '2020-11', 300 ],
|
||||
[ null, 200 ]
|
||||
]
|
||||
},
|
||||
|
||||
/* Majoration des émoluments pour les internes d'outre-mer
|
||||
Harmonisation à 40 % à partir de avril 2023 - https://www.legifrance.gouv.fr/jorf/id/JORFTEXT000047387836
|
||||
De oct 2020 à mars 2023 - https://www.legifrance.gouv.fr/jorf/id/JORFTEXT000042331244/
|
||||
*/
|
||||
{ label: 'tauxPrimeOutremerNiv1', basesDatees: [
|
||||
[ '2023-04', 40 ],
|
||||
[ '2020-10', 20 ],
|
||||
[ null, 0 ]
|
||||
]
|
||||
},
|
||||
{ label: 'tauxPrimeOutremerNiv2', basesDatees: [
|
||||
[ '2020-10', 40 ],
|
||||
[ null, 0 ]
|
||||
]
|
||||
},
|
||||
|
||||
/* Plafond mensuel de la sécurité sociale
|
||||
https://www.ircantec.retraites.fr/employeur/parametres-utilises-ircantec
|
||||
modifications en 2020, 2023 et 2024
|
||||
(https://boss.gouv.fr/portail/accueil/actualites-boss/2023/octobre/le-plafond-de-securite-sociale-a.html)
|
||||
*/
|
||||
{ label: 'plafondSS', basesDatees: [
|
||||
[ '2024-01', 3864 ],
|
||||
[ '2023-01', 3666 ],
|
||||
[ null, 3428 ]
|
||||
]
|
||||
},
|
||||
]
|
||||
Loading…
Reference in New Issue