Skip to content

Commit

Permalink
fix(indemnite-licenciement): mise en place d'un plafond sur la CC 573 (
Browse files Browse the repository at this point in the history
  • Loading branch information
m-maillot authored Jan 25, 2024
1 parent 51006eb commit b961f10
Show file tree
Hide file tree
Showing 3 changed files with 133 additions and 55 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -90,13 +90,16 @@ describe("Formules pour la CC 573", () => {
${40} | ${CatPro573.cadres} | ${QuestionOuiNon.non} | ${QuestionOuiNon.oui} | ${6} | ${"3 / 10 * Sref * A1"} | ${["A1 : Années de présence dans la tranche de 0 à 9 ans inclus (6 ans)", "Sref : Salaire de référence (1000 €)"]}
${40} | ${CatPro573.cadres} | ${QuestionOuiNon.non} | ${QuestionOuiNon.oui} | ${10} | ${"3 / 10 * Sref * A1 + 4 / 10 * Sref * A2"} | ${["A1 : Années de présence dans la tranche de 0 à 9 ans inclus (9 ans)", "A2 : Années de présence dans la tranche de 10 à 19 ans inclus (1 an)", "Sref : Salaire de référence (1000 €)"]}
${40} | ${CatPro573.cadres} | ${QuestionOuiNon.non} | ${QuestionOuiNon.oui} | ${23} | ${"3 / 10 * Sref * A1 + 4 / 10 * Sref * A2 + 5 / 10 * Sref * A3"} | ${["A1 : Années de présence dans la tranche de 0 à 9 ans inclus (9 ans)", "A2 : Années de présence dans la tranche de 10 à 19 ans inclus (10 ans)", "A3 : Années de présence dans la tranche à partir de 20 ans (4 ans)", "Sref : Salaire de référence (1000 €)"]}
${40} | ${CatPro573.cadres} | ${QuestionOuiNon.non} | ${QuestionOuiNon.non} | ${40} | ${"12 * Sref"} | ${["Sref : Salaire de référence (1000 €)"]}
${52} | ${CatPro573.cadres} | ${QuestionOuiNon.non} | ${QuestionOuiNon.oui} | ${6} | ${"3 / 10 * Sref * A1"} | ${["A1 : Années de présence dans la tranche de 0 à 9 ans inclus (6 ans)", "Sref : Salaire de référence (1000 €)"]}
${52} | ${CatPro573.cadres} | ${QuestionOuiNon.non} | ${QuestionOuiNon.oui} | ${10} | ${"3 / 10 * Sref * A1 + 4 / 10 * Sref * A2"} | ${["A1 : Années de présence dans la tranche de 0 à 9 ans inclus (9 ans)", "A2 : Années de présence dans la tranche de 10 à 19 ans inclus (1 an)", "Sref : Salaire de référence (1000 €)"]}
${52} | ${CatPro573.cadres} | ${QuestionOuiNon.non} | ${QuestionOuiNon.oui} | ${23} | ${"3 / 10 * Sref * A1 + 4 / 10 * Sref * A2 + 5 / 10 * Sref * A3 + 15% * (3 / 10 * Sref * A1) + 15% * (4 / 10 * Sref * A2) + 15% * (5 / 10 * Sref * A3)"} | ${["A1 : Années de présence dans la tranche de 0 à 9 ans inclus (9 ans)", "A2 : Années de présence dans la tranche de 10 à 19 ans inclus (10 ans)", "A3 : Années de présence dans la tranche à partir de 20 ans (4 ans)", "Sref : Salaire de référence (1000 €)"]}
${52} | ${CatPro573.cadres} | ${QuestionOuiNon.non} | ${QuestionOuiNon.oui} | ${40} | ${"12 * Sref + (15% * 12 * Sref)"} | ${["Sref : Salaire de référence (1000 €)"]}
${52} | ${CatPro573.cadres} | ${QuestionOuiNon.non} | ${QuestionOuiNon.non} | ${23} | ${"3 / 10 * Sref * A1 + 4 / 10 * Sref * A2 + 5 / 10 * Sref * A3"} | ${["A1 : Années de présence dans la tranche de 0 à 9 ans inclus (9 ans)", "A2 : Années de présence dans la tranche de 10 à 19 ans inclus (10 ans)", "A3 : Années de présence dans la tranche à partir de 20 ans (4 ans)", "Sref : Salaire de référence (1000 €)"]}
${57} | ${CatPro573.cadres} | ${QuestionOuiNon.non} | ${QuestionOuiNon.oui} | ${6} | ${"3 / 10 * Sref * A1"} | ${["A1 : Années de présence dans la tranche de 0 à 9 ans inclus (6 ans)", "Sref : Salaire de référence (1000 €)"]}
${57} | ${CatPro573.cadres} | ${QuestionOuiNon.non} | ${QuestionOuiNon.oui} | ${10} | ${"3 / 10 * Sref * A1 + 4 / 10 * Sref * A2"} | ${["A1 : Années de présence dans la tranche de 0 à 9 ans inclus (9 ans)", "A2 : Années de présence dans la tranche de 10 à 19 ans inclus (1 an)", "Sref : Salaire de référence (1000 €)"]}
${57} | ${CatPro573.cadres} | ${QuestionOuiNon.non} | ${QuestionOuiNon.oui} | ${23} | ${"3 / 10 * Sref * A1 + 4 / 10 * Sref * A2 + 5 / 10 * Sref * A3 + 20% * (3 / 10 * Sref * A1) + 20% * (4 / 10 * Sref * A2) + 20% * (5 / 10 * Sref * A3)"} | ${["A1 : Années de présence dans la tranche de 0 à 9 ans inclus (9 ans)", "A2 : Années de présence dans la tranche de 10 à 19 ans inclus (10 ans)", "A3 : Années de présence dans la tranche à partir de 20 ans (4 ans)", "Sref : Salaire de référence (1000 €)"]}
${57} | ${CatPro573.cadres} | ${QuestionOuiNon.non} | ${QuestionOuiNon.oui} | ${40} | ${"12 * Sref + (20% * 12 * Sref)"} | ${["Sref : Salaire de référence (1000 €)"]}
${57} | ${CatPro573.cadres} | ${QuestionOuiNon.non} | ${QuestionOuiNon.non} | ${23} | ${"3 / 10 * Sref * A1 + 4 / 10 * Sref * A2 + 5 / 10 * Sref * A3"} | ${["A1 : Années de présence dans la tranche de 0 à 9 ans inclus (9 ans)", "A2 : Années de présence dans la tranche de 10 à 19 ans inclus (10 ans)", "A3 : Années de présence dans la tranche à partir de 20 ans (4 ans)", "Sref : Salaire de référence (1000 €)"]}
`(
"ancienneté: $seniority an, age $age, type de licenciement $typeLicenciement, catégorie $category => $expectedCompensation €",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -116,57 +116,102 @@ describe("Indemnité conventionnel de licenciement pour la CC 573", () => {
});

describe("Cadres", () => {
test.each`
age | category | auMoins15AnsCadre | seniorityRight | seniority | salary | expectedCompensation
${32} | ${CatPro573.cadres} | ${QuestionOuiNon.oui} | ${0.99} | ${0.99} | ${3200} | ${0}
${32} | ${CatPro573.cadres} | ${QuestionOuiNon.oui} | ${0.99} | ${1} | ${3200} | ${0}
${32} | ${CatPro573.cadres} | ${QuestionOuiNon.oui} | ${1} | ${1} | ${3200} | ${640}
${32} | ${CatPro573.cadres} | ${QuestionOuiNon.oui} | ${1} | ${4} | ${3200} | ${2560}
${32} | ${CatPro573.cadres} | ${QuestionOuiNon.oui} | ${1} | ${5} | ${3200} | ${3200}
${40} | ${CatPro573.cadres} | ${QuestionOuiNon.oui} | ${1} | ${6} | ${3200} | ${5760}
${40} | ${CatPro573.cadres} | ${QuestionOuiNon.oui} | ${1} | ${10} | ${3200} | ${9920}
${40} | ${CatPro573.cadres} | ${QuestionOuiNon.oui} | ${1} | ${23} | ${3200} | ${27840}
${40} | ${CatPro573.cadres} | ${QuestionOuiNon.non} | ${1} | ${23} | ${3200} | ${27840}
${52} | ${CatPro573.cadres} | ${QuestionOuiNon.oui} | ${1} | ${6} | ${3200} | ${5760}
${52} | ${CatPro573.cadres} | ${QuestionOuiNon.oui} | ${1} | ${10} | ${3200} | ${9920}
${52} | ${CatPro573.cadres} | ${QuestionOuiNon.oui} | ${1} | ${23} | ${3200} | ${32016}
${52} | ${CatPro573.cadres} | ${QuestionOuiNon.non} | ${1} | ${23} | ${3200} | ${27840}
${57} | ${CatPro573.cadres} | ${QuestionOuiNon.oui} | ${1} | ${6} | ${3200} | ${5760}
${57} | ${CatPro573.cadres} | ${QuestionOuiNon.oui} | ${1} | ${10} | ${3200} | ${9920}
${57} | ${CatPro573.cadres} | ${QuestionOuiNon.oui} | ${1} | ${23} | ${3200} | ${33408}
${57} | ${CatPro573.cadres} | ${QuestionOuiNon.non} | ${1} | ${23} | ${3200} | ${27840}
`(
"ancienneté: $seniority an, salaire de référence: $salary, age $age, type de licenciement $typeLicenciement, catégorie $category => $expectedCompensation €",
({
seniority,
seniorityRight,
salary,
expectedCompensation,
category,
auMoins15AnsCadre,
age,
}) => {
const { result, missingArgs } = engine.setSituation(
{
"contrat salarié . convention collective": "'IDCC0573'",
"contrat salarié . convention collective . commerces de gros . catégorie professionnelle": `'${category}'`,
"contrat salarié . convention collective . commerces de gros . catégorie professionnelle . cadres . cadre durant au moins de 15 ans . age":
age,
"contrat salarié . convention collective . commerces de gros . catégorie professionnelle . cadres . cadre durant au moins de 15 ans question": `'${auMoins15AnsCadre}'`,
"contrat salarié . indemnité de licenciement . ancienneté conventionnelle en année":
seniority,
"contrat salarié . indemnité de licenciement . ancienneté conventionnelle requise en année":
seniorityRight,
"contrat salarié . indemnité de licenciement . salaire de référence conventionnel":
salary,
},
"contrat salarié . indemnité de licenciement . résultat conventionnel"
);
describe("moins de 50 ans", () => {
test.each`
age | category | auMoins15AnsCadre | seniorityRight | seniority | salary | expectedCompensation
${32} | ${CatPro573.cadres} | ${QuestionOuiNon.oui} | ${0.99} | ${0.99} | ${3200} | ${0}
${32} | ${CatPro573.cadres} | ${QuestionOuiNon.oui} | ${0.99} | ${1} | ${3200} | ${0}
${32} | ${CatPro573.cadres} | ${QuestionOuiNon.oui} | ${1} | ${1} | ${3200} | ${640}
${32} | ${CatPro573.cadres} | ${QuestionOuiNon.oui} | ${1} | ${4} | ${3200} | ${2560}
${32} | ${CatPro573.cadres} | ${QuestionOuiNon.oui} | ${1} | ${5} | ${3200} | ${3200}
${40} | ${CatPro573.cadres} | ${QuestionOuiNon.oui} | ${1} | ${6} | ${3200} | ${5760}
${40} | ${CatPro573.cadres} | ${QuestionOuiNon.oui} | ${1} | ${10} | ${3200} | ${9920}
${40} | ${CatPro573.cadres} | ${QuestionOuiNon.oui} | ${1} | ${23} | ${3200} | ${27840}
${40} | ${CatPro573.cadres} | ${QuestionOuiNon.non} | ${1} | ${23} | ${3200} | ${27840}
${40} | ${CatPro573.cadres} | ${QuestionOuiNon.non} | ${1} | ${40} | ${3200} | ${38400}
`(
"ancienneté: $seniority an, salaire de référence: $salary, age $age, type de licenciement $typeLicenciement, catégorie $category => $expectedCompensation €",
({
seniority,
seniorityRight,
salary,
expectedCompensation,
category,
auMoins15AnsCadre,
age,
}) => {
const { result, missingArgs } = engine.setSituation(
{
"contrat salarié . convention collective": "'IDCC0573'",
"contrat salarié . convention collective . commerces de gros . catégorie professionnelle": `'${category}'`,
"contrat salarié . convention collective . commerces de gros . catégorie professionnelle . cadres . cadre durant au moins de 15 ans . age":
age,
"contrat salarié . convention collective . commerces de gros . catégorie professionnelle . cadres . cadre durant au moins de 15 ans question": `'${auMoins15AnsCadre}'`,
"contrat salarié . indemnité de licenciement . ancienneté conventionnelle en année":
seniority,
"contrat salarié . indemnité de licenciement . ancienneté conventionnelle requise en année":
seniorityRight,
"contrat salarié . indemnité de licenciement . salaire de référence conventionnel":
salary,
},
"contrat salarié . indemnité de licenciement . résultat conventionnel"
);

expect(result.value).toEqual(expectedCompensation);
expect(missingArgs).toEqual([]);
expect(result.unit?.numerators).toEqual(["€"]);
}
);
expect(result.value).toEqual(expectedCompensation);
expect(missingArgs).toEqual([]);
expect(result.unit?.numerators).toEqual(["€"]);
}
);
});
describe("plus de 50 ans", () => {
// plafond : 12*Sref + (20%x12xSref)
test.each`
age | category | auMoins15AnsCadre | seniorityRight | seniority | salary | expectedCompensation
${52} | ${CatPro573.cadres} | ${QuestionOuiNon.oui} | ${1} | ${6} | ${3200} | ${5760}
${52} | ${CatPro573.cadres} | ${QuestionOuiNon.oui} | ${1} | ${10} | ${3200} | ${9920}
${52} | ${CatPro573.cadres} | ${QuestionOuiNon.oui} | ${1} | ${23} | ${3200} | ${32016}
${52} | ${CatPro573.cadres} | ${QuestionOuiNon.oui} | ${1} | ${40} | ${3200} | ${44160}
${52} | ${CatPro573.cadres} | ${QuestionOuiNon.non} | ${1} | ${23} | ${3200} | ${27840}
${52} | ${CatPro573.cadres} | ${QuestionOuiNon.non} | ${1} | ${40} | ${3200} | ${38400}
${57} | ${CatPro573.cadres} | ${QuestionOuiNon.oui} | ${1} | ${6} | ${3200} | ${5760}
${57} | ${CatPro573.cadres} | ${QuestionOuiNon.oui} | ${1} | ${10} | ${3200} | ${9920}
${57} | ${CatPro573.cadres} | ${QuestionOuiNon.oui} | ${1} | ${23} | ${3200} | ${33408}
${57} | ${CatPro573.cadres} | ${QuestionOuiNon.oui} | ${1} | ${40} | ${3200} | ${46080}
${57} | ${CatPro573.cadres} | ${QuestionOuiNon.non} | ${1} | ${23} | ${3200} | ${27840}
${57} | ${CatPro573.cadres} | ${QuestionOuiNon.non} | ${1} | ${40} | ${3200} | ${38400}
`(
"ancienneté: $seniority an, salaire de référence: $salary, age $age, type de licenciement $typeLicenciement, catégorie $category => $expectedCompensation €",
({
seniority,
seniorityRight,
salary,
expectedCompensation,
category,
auMoins15AnsCadre,
age,
}) => {
const { result, missingArgs } = engine.setSituation(
{
"contrat salarié . convention collective": "'IDCC0573'",
"contrat salarié . convention collective . commerces de gros . catégorie professionnelle": `'${category}'`,
"contrat salarié . convention collective . commerces de gros . catégorie professionnelle . cadres . cadre durant au moins de 15 ans . age":
age,
"contrat salarié . convention collective . commerces de gros . catégorie professionnelle . cadres . cadre durant au moins de 15 ans question": `'${auMoins15AnsCadre}'`,
"contrat salarié . indemnité de licenciement . ancienneté conventionnelle en année":
seniority,
"contrat salarié . indemnité de licenciement . ancienneté conventionnelle requise en année":
seniorityRight,
"contrat salarié . indemnité de licenciement . salaire de référence conventionnel":
salary,
},
"contrat salarié . indemnité de licenciement . résultat conventionnel"
);

expect(result.value).toEqual(expectedCompensation);
expect(missingArgs).toEqual([]);
expect(result.unit?.numerators).toEqual(["€"]);
}
);
});
});
});
Loading

0 comments on commit b961f10

Please sign in to comment.