@socialgouv/modeles-social 4.58.2 → 4.60.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +39 -0
- package/package.json +3 -3
- package/src/__test__/batiment-ouvriers-parisien/depart-mise.spec.ts +118 -0
- package/src/__test__/check-description-question.spec.ts +5 -5
- package/src/__test__/commerce-detail-non-alimentaire/preavis-retraite/depart-mise.spec.ts +100 -0
- package/src/__test__/ent-services-personne/preavis-retraite/depart-mise.spec.ts +110 -0
- package/src/__test__/pharmacie/preavis-retraite/depart-mise.spec.ts +143 -0
- package/src/__test__/societes-assurances/preavis-retraite/depart-mise.spec.ts +113 -0
- package/src/modeles/conventions/automobiles.yaml +3 -3
- package/src/modeles/conventions/batiment_region_parisienne.yaml +19 -1
- package/src/modeles/conventions/bureaux_etudes_techniques.yaml +1 -1
- package/src/modeles/conventions/cabinets_medicaux.yaml +1 -1
- package/src/modeles/conventions/commerces_de_detail_non_alimentaires.yaml +49 -1
- package/src/modeles/conventions/commerces_de_gros.yaml +1 -1
- package/src/modeles/conventions/commerces_detail_alimentation.yaml +2 -2
- package/src/modeles/conventions/commerces_detail_fruits_legumes.yaml +1 -1
- package/src/modeles/conventions/comptables.yaml +2 -2
- package/src/modeles/conventions/education_loisirs.yaml +1 -1
- package/src/modeles/conventions/entreprises_proprete.yaml +1 -1
- package/src/modeles/conventions/entreprises_services_a_la_personne.yaml +30 -1
- package/src/modeles/conventions/gardien_concierge.yaml +2 -2
- package/src/modeles/conventions/habillement_commerce_succursales.yaml +1 -1
- package/src/modeles/conventions/handicap.yaml +1 -1
- package/src/modeles/conventions/hospitalisation_privee_but_non_lucratif.yaml +2 -2
- package/src/modeles/conventions/hospitalisation_privees.yaml +1 -1
- package/src/modeles/conventions/hotels_cafes_restaurants.yaml +1 -1
- package/src/modeles/conventions/immobilier.yaml +1 -1
- package/src/modeles/conventions/industrie_pharmaceutique.yaml +1 -1
- package/src/modeles/conventions/industries_chimiques.yaml +3 -3
- package/src/modeles/conventions/personnel_presta_service_tertiaire.yaml +1 -1
- package/src/modeles/conventions/pharmacie.yaml +49 -0
- package/src/modeles/conventions/plasturgie.yaml +2 -2
- package/src/modeles/conventions/prevention_secu_ent.yaml +1 -1
- package/src/modeles/conventions/restauration_collectivites.yaml +1 -1
- package/src/modeles/conventions/restauration_rapide.yaml +1 -1
- package/src/modeles/conventions/sedima.yaml +3 -3
- package/src/modeles/conventions/societes_assurances.yaml +58 -1
- package/src/modeles/conventions/transport_aerien_personnel_au_sol.yaml +1 -1
- package/src/modeles/conventions/transports_routiers.yaml +2 -2
- package/src/modeles/conventions/1996_pharmacie_officine.yaml +0 -7
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,45 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [4.60.2](https://github.com/SocialGouv/code-du-travail-numerique/compare/v4.60.1...v4.60.2) (2021-12-06)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @socialgouv/modeles-social
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
## [4.60.1](https://github.com/SocialGouv/code-du-travail-numerique/compare/v4.60.0...v4.60.1) (2021-12-06)
|
|
15
|
+
|
|
16
|
+
**Note:** Version bump only for package @socialgouv/modeles-social
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
# [4.60.0](https://github.com/SocialGouv/code-du-travail-numerique/compare/v4.59.0...v4.60.0) (2021-11-24)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
### Features
|
|
26
|
+
|
|
27
|
+
* **modeles:** add cc 1517 retirement ([#4001](https://github.com/SocialGouv/code-du-travail-numerique/issues/4001)) ([55472a6](https://github.com/SocialGouv/code-du-travail-numerique/commit/55472a6fbd544f775da7da80eca8e45f816a9f9a))
|
|
28
|
+
* **modeles:** add cc 1672 retirement ([#4002](https://github.com/SocialGouv/code-du-travail-numerique/issues/4002)) ([8fde611](https://github.com/SocialGouv/code-du-travail-numerique/commit/8fde6114b15fa1e47b214221f8af13e653231b18))
|
|
29
|
+
* **modeles:** add cc 1740 retirement ([#4000](https://github.com/SocialGouv/code-du-travail-numerique/issues/4000)) ([055f926](https://github.com/SocialGouv/code-du-travail-numerique/commit/055f92630fc90baf0c6dde267f4e710631622e75))
|
|
30
|
+
* **modeles:** add cc 1996 retirement ([#4003](https://github.com/SocialGouv/code-du-travail-numerique/issues/4003)) ([b4fc604](https://github.com/SocialGouv/code-du-travail-numerique/commit/b4fc604553f1614de67508726f6ef9027743463b))
|
|
31
|
+
* **modeles:** add cc 3127 retirement ([#4004](https://github.com/SocialGouv/code-du-travail-numerique/issues/4004)) ([ab89b51](https://github.com/SocialGouv/code-du-travail-numerique/commit/ab89b519944f5d585dd874295c30789ffa911afc))
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
# [4.59.0](https://github.com/SocialGouv/code-du-travail-numerique/compare/v4.58.2...v4.59.0) (2021-11-18)
|
|
38
|
+
|
|
39
|
+
**Note:** Version bump only for package @socialgouv/modeles-social
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
6
45
|
## [4.58.2](https://github.com/SocialGouv/code-du-travail-numerique/compare/v4.58.1...v4.58.2) (2021-11-17)
|
|
7
46
|
|
|
8
47
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@socialgouv/modeles-social",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.60.2",
|
|
4
4
|
"description": "Les règles publicodes des simulateurs de code du travail numérique",
|
|
5
5
|
"main": "./lib/index.js",
|
|
6
6
|
"types": "./lib/index.d.ts",
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"@types/jest": "^27.0.1",
|
|
16
16
|
"eslint": "^7.32.0",
|
|
17
17
|
"jest": "^27.0.6",
|
|
18
|
-
"lint-staged": "^
|
|
18
|
+
"lint-staged": "^12.1.2",
|
|
19
19
|
"nodemon": "^2.0.12",
|
|
20
20
|
"ts-jest": "^27.0.5",
|
|
21
21
|
"typescript": "^4.3.5"
|
|
@@ -40,5 +40,5 @@
|
|
|
40
40
|
"yarn lint --fix"
|
|
41
41
|
]
|
|
42
42
|
},
|
|
43
|
-
"gitHead": "
|
|
43
|
+
"gitHead": "fc29530ad8acaa587b2cf2b01e2c0386d8368166"
|
|
44
44
|
}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import Engine from "publicodes";
|
|
2
|
+
|
|
3
|
+
import { getNotifications } from "../..";
|
|
4
|
+
import { mergeModels } from "../../internal/merger";
|
|
5
|
+
import { getReferences } from "../../utils/GetReferences";
|
|
6
|
+
import {
|
|
7
|
+
DepartRetraiteReferences,
|
|
8
|
+
MiseRetraiteReferences,
|
|
9
|
+
} from "../common/legal-references";
|
|
10
|
+
|
|
11
|
+
const engine = new Engine(mergeModels());
|
|
12
|
+
|
|
13
|
+
const CommonReference = {
|
|
14
|
+
article: "Article 1.1.12.a",
|
|
15
|
+
url: "https://www.legifrance.gouv.fr/conv_coll/article/KALIARTI000005801005?idConteneur=KALICONT000005635685",
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
const DepartRetraiteCcReferences = [
|
|
19
|
+
...DepartRetraiteReferences,
|
|
20
|
+
CommonReference,
|
|
21
|
+
];
|
|
22
|
+
|
|
23
|
+
const MiseRetraiteCcReferences = [...MiseRetraiteReferences, CommonReference];
|
|
24
|
+
|
|
25
|
+
describe("Préavis de retraite de la CC 1740", () => {
|
|
26
|
+
describe("Vérification des départs à la retraite et des références juridiques", () => {
|
|
27
|
+
test.each`
|
|
28
|
+
seniority | expectedResult
|
|
29
|
+
${5} | ${2}
|
|
30
|
+
${6} | ${1}
|
|
31
|
+
${24} | ${2}
|
|
32
|
+
`(
|
|
33
|
+
"Pour un salarié possédant $seniority mois d'ancienneté, son préavis devrait être $expectedResult mois",
|
|
34
|
+
({ seniority, expectedResult }) => {
|
|
35
|
+
const situation = engine.setSituation({
|
|
36
|
+
"contrat salarié . ancienneté": seniority,
|
|
37
|
+
"contrat salarié . convention collective": "'IDCC1740'",
|
|
38
|
+
"contrat salarié . mise à la retraite": "non",
|
|
39
|
+
"contrat salarié . travailleur handicapé": "non",
|
|
40
|
+
});
|
|
41
|
+
const result = situation.evaluate(
|
|
42
|
+
"contrat salarié . préavis de retraite"
|
|
43
|
+
);
|
|
44
|
+
const references = getReferences(situation);
|
|
45
|
+
|
|
46
|
+
expect(result.nodeValue).toEqual(expectedResult);
|
|
47
|
+
expect(result.unit?.numerators).toEqual(["mois"]);
|
|
48
|
+
expect(result.missingVariables).toEqual({});
|
|
49
|
+
expect(references).toHaveLength(DepartRetraiteCcReferences.length);
|
|
50
|
+
expect(references).toEqual(
|
|
51
|
+
expect.arrayContaining(DepartRetraiteCcReferences)
|
|
52
|
+
);
|
|
53
|
+
}
|
|
54
|
+
);
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
describe("Vérification des mises à la retraite et des références juridiques", () => {
|
|
58
|
+
test.each`
|
|
59
|
+
seniority | expectedResult
|
|
60
|
+
${5} | ${2}
|
|
61
|
+
${6} | ${2}
|
|
62
|
+
${24} | ${2}
|
|
63
|
+
`(
|
|
64
|
+
"Pour un salarié possédant $seniority mois d'ancienneté, son préavis devrait être $expectedResult mois",
|
|
65
|
+
({ seniority, expectedResult }) => {
|
|
66
|
+
const situation = engine.setSituation({
|
|
67
|
+
"contrat salarié . ancienneté": seniority,
|
|
68
|
+
"contrat salarié . convention collective": "'IDCC1740'",
|
|
69
|
+
"contrat salarié . mise à la retraite": "oui",
|
|
70
|
+
"contrat salarié . travailleur handicapé": "non",
|
|
71
|
+
});
|
|
72
|
+
const result = situation.evaluate(
|
|
73
|
+
"contrat salarié . préavis de retraite"
|
|
74
|
+
);
|
|
75
|
+
const references = getReferences(situation);
|
|
76
|
+
|
|
77
|
+
expect(result.nodeValue).toEqual(expectedResult);
|
|
78
|
+
expect(result.unit?.numerators).toEqual(["mois"]);
|
|
79
|
+
expect(result.missingVariables).toEqual({});
|
|
80
|
+
expect(references).toHaveLength(MiseRetraiteCcReferences.length);
|
|
81
|
+
expect(references).toEqual(
|
|
82
|
+
expect.arrayContaining(MiseRetraiteCcReferences)
|
|
83
|
+
);
|
|
84
|
+
}
|
|
85
|
+
);
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
describe("Vérification des notifications", () => {
|
|
89
|
+
test("Pour un salarié en départ à la retraite, une notification doit s'afficher", () => {
|
|
90
|
+
const notifications = getNotifications(
|
|
91
|
+
engine.setSituation({
|
|
92
|
+
"contrat salarié . ancienneté": 5,
|
|
93
|
+
"contrat salarié . convention collective": "'IDCC1740'",
|
|
94
|
+
"contrat salarié . mise à la retraite": "non",
|
|
95
|
+
"contrat salarié . travailleur handicapé": "non",
|
|
96
|
+
})
|
|
97
|
+
);
|
|
98
|
+
expect(notifications).toHaveLength(1);
|
|
99
|
+
expect(notifications[0].description).toBe(
|
|
100
|
+
"Le salarié doit notifier à l’employeur son départ en retraite par une lettre recommandée avec accusé de réception. Le départ en retraite aura lieu le premier jour d’un mois civil. Exemple: Si le 6 mars 2020 un salarié notifie sa décision de partir à la retraite à son employeur, le préavis à effectuer débutera le 1er avril 2020."
|
|
101
|
+
);
|
|
102
|
+
});
|
|
103
|
+
test("Pour un salarié en mise à la retraite, une notification doit s'afficher", () => {
|
|
104
|
+
const notifications = getNotifications(
|
|
105
|
+
engine.setSituation({
|
|
106
|
+
"contrat salarié . ancienneté": 5,
|
|
107
|
+
"contrat salarié . convention collective": "'IDCC1740'",
|
|
108
|
+
"contrat salarié . mise à la retraite": "oui",
|
|
109
|
+
"contrat salarié . travailleur handicapé": "non",
|
|
110
|
+
})
|
|
111
|
+
);
|
|
112
|
+
expect(notifications).toHaveLength(1);
|
|
113
|
+
expect(notifications[0].description).toBe(
|
|
114
|
+
"L’employeur doit notifier au salarié sa mise à la retraite par lettre recommandée avec accusé de réception. La mise à la retraite aura lieu le premier jour d'un mois civil. Exemple : Si le 6 mars 2020 un employeur notifie sa décision de mettre à la retraite son salarié, le préavis à effectuer débutera le 1er avril 2020."
|
|
115
|
+
);
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
});
|
|
@@ -7,11 +7,11 @@ const engine = new Engine(mergeModels());
|
|
|
7
7
|
describe("Validation de la présence des descriptions pour afficher des aides", () => {
|
|
8
8
|
describe.each`
|
|
9
9
|
title | expectedDescription
|
|
10
|
-
${"Catégorie professionnelle"} | ${"La catégorie professionnelle du salarié est habituellement mentionnée sur le <
|
|
11
|
-
${"Échelon"} | ${"L'échelon du salarié est habituellement mentionné sur le <
|
|
12
|
-
${"Groupe"} | ${"Le groupe du salarié est habituellement mentionné sur le <
|
|
13
|
-
${"Coefficient"} | ${"La coefficient du salarié est habituellement mentionné sur le <
|
|
14
|
-
${"Niveau"} | ${"Le niveau du salarié est habituellement mentionné sur le <
|
|
10
|
+
${"Catégorie professionnelle"} | ${"La catégorie professionnelle du salarié est habituellement mentionnée sur le <strong>bulletin de salaire</strong>."}
|
|
11
|
+
${"Échelon"} | ${"L'échelon du salarié est habituellement mentionné sur le <strong>bulletin de salaire</strong>."}
|
|
12
|
+
${"Groupe"} | ${"Le groupe du salarié est habituellement mentionné sur le <strong>bulletin de salaire</strong>."}
|
|
13
|
+
${"Coefficient"} | ${"La coefficient du salarié est habituellement mentionné sur le <strong>bulletin de salaire</strong>."}
|
|
14
|
+
${"Niveau"} | ${"Le niveau du salarié est habituellement mentionné sur le <strong>bulletin de salaire</strong>."}
|
|
15
15
|
`(
|
|
16
16
|
"Vérification de la présence d'une description pour les questions $title",
|
|
17
17
|
({ title, expectedDescription }) => {
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import Engine from "publicodes";
|
|
2
|
+
|
|
3
|
+
import { mergeModels } from "../../../internal/merger";
|
|
4
|
+
import { getReferences } from "../../../utils/GetReferences";
|
|
5
|
+
import {
|
|
6
|
+
DepartRetraiteReferences,
|
|
7
|
+
MiseRetraiteReferences,
|
|
8
|
+
} from "../../common/legal-references";
|
|
9
|
+
|
|
10
|
+
const engine = new Engine(mergeModels());
|
|
11
|
+
|
|
12
|
+
const CommonReference = {
|
|
13
|
+
article: "Chapitre VI, article 1er",
|
|
14
|
+
url: "https://www.legifrance.gouv.fr/conv_coll/id/KALIARTI000026803725/?idConteneur=KALICONT000005635870",
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
const DepartRetraiteCcReferences = [
|
|
18
|
+
...DepartRetraiteReferences,
|
|
19
|
+
CommonReference,
|
|
20
|
+
];
|
|
21
|
+
|
|
22
|
+
const MiseRetraiteCcReferences = [...MiseRetraiteReferences, CommonReference];
|
|
23
|
+
|
|
24
|
+
describe("Préavis de retraite de la CC 1517", () => {
|
|
25
|
+
describe("Vérification des départs à la retraite et des références juridiques", () => {
|
|
26
|
+
test.each`
|
|
27
|
+
category | seniority | expectedResult
|
|
28
|
+
${"Employés (Niveaux I à V)"} | ${5} | ${2}
|
|
29
|
+
${"Employés (Niveaux I à V)"} | ${6} | ${1}
|
|
30
|
+
${"Employés (Niveaux I à V)"} | ${24} | ${2}
|
|
31
|
+
${"Agents de maîtrise (Niveau VI)"} | ${5} | ${2}
|
|
32
|
+
${"Agents de maîtrise (Niveau VI)"} | ${6} | ${1}
|
|
33
|
+
${"Agents de maîtrise (Niveau VI)"} | ${24} | ${2}
|
|
34
|
+
${"Cadres (Niveaux VII à IX)"} | ${5} | ${3}
|
|
35
|
+
${"Cadres (Niveaux VII à IX)"} | ${6} | ${1}
|
|
36
|
+
${"Cadres (Niveaux VII à IX)"} | ${24} | ${2}
|
|
37
|
+
`(
|
|
38
|
+
"Pour un $category possédant $seniority mois d'ancienneté, son préavis devrait être $expectedResult mois",
|
|
39
|
+
({ category, seniority, expectedResult }) => {
|
|
40
|
+
const situation = engine.setSituation({
|
|
41
|
+
"contrat salarié . ancienneté": seniority,
|
|
42
|
+
"contrat salarié . convention collective": "'IDCC1517'",
|
|
43
|
+
"contrat salarié . convention collective . commerces de detail non alimentaires . catégorie professionnelle": `'${category}'`,
|
|
44
|
+
"contrat salarié . mise à la retraite": "non",
|
|
45
|
+
"contrat salarié . travailleur handicapé": "non",
|
|
46
|
+
});
|
|
47
|
+
const result = situation.evaluate(
|
|
48
|
+
"contrat salarié . préavis de retraite"
|
|
49
|
+
);
|
|
50
|
+
const references = getReferences(situation);
|
|
51
|
+
|
|
52
|
+
expect(result.nodeValue).toEqual(expectedResult);
|
|
53
|
+
expect(result.unit?.numerators).toEqual(["mois"]);
|
|
54
|
+
expect(result.missingVariables).toEqual({});
|
|
55
|
+
expect(references).toHaveLength(DepartRetraiteCcReferences.length);
|
|
56
|
+
expect(references).toEqual(
|
|
57
|
+
expect.arrayContaining(DepartRetraiteCcReferences)
|
|
58
|
+
);
|
|
59
|
+
}
|
|
60
|
+
);
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
describe("Vérification des mises à la retraite et des références juridiques", () => {
|
|
64
|
+
test.each`
|
|
65
|
+
category | seniority | expectedResult
|
|
66
|
+
${"Employés (Niveaux I à V)"} | ${5} | ${1}
|
|
67
|
+
${"Employés (Niveaux I à V)"} | ${6} | ${1}
|
|
68
|
+
${"Employés (Niveaux I à V)"} | ${24} | ${2}
|
|
69
|
+
${"Agents de maîtrise (Niveau VI)"} | ${5} | ${2}
|
|
70
|
+
${"Agents de maîtrise (Niveau VI)"} | ${6} | ${2}
|
|
71
|
+
${"Agents de maîtrise (Niveau VI)"} | ${24} | ${2}
|
|
72
|
+
${"Cadres (Niveaux VII à IX)"} | ${5} | ${3}
|
|
73
|
+
${"Cadres (Niveaux VII à IX)"} | ${6} | ${3}
|
|
74
|
+
${"Cadres (Niveaux VII à IX)"} | ${24} | ${3}
|
|
75
|
+
`(
|
|
76
|
+
"Pour un $category possédant $seniority mois d'ancienneté, son préavis devrait être $expectedResult mois",
|
|
77
|
+
({ category, seniority, expectedResult }) => {
|
|
78
|
+
const situation = engine.setSituation({
|
|
79
|
+
"contrat salarié . ancienneté": seniority,
|
|
80
|
+
"contrat salarié . convention collective": "'IDCC1517'",
|
|
81
|
+
"contrat salarié . convention collective . commerces de detail non alimentaires . catégorie professionnelle": `'${category}'`,
|
|
82
|
+
"contrat salarié . mise à la retraite": "oui",
|
|
83
|
+
"contrat salarié . travailleur handicapé": "non",
|
|
84
|
+
});
|
|
85
|
+
const result = situation.evaluate(
|
|
86
|
+
"contrat salarié . préavis de retraite"
|
|
87
|
+
);
|
|
88
|
+
const references = getReferences(situation);
|
|
89
|
+
|
|
90
|
+
expect(result.nodeValue).toEqual(expectedResult);
|
|
91
|
+
expect(result.unit?.numerators).toEqual(["mois"]);
|
|
92
|
+
expect(result.missingVariables).toEqual({});
|
|
93
|
+
expect(references).toHaveLength(MiseRetraiteCcReferences.length);
|
|
94
|
+
expect(references).toEqual(
|
|
95
|
+
expect.arrayContaining(MiseRetraiteCcReferences)
|
|
96
|
+
);
|
|
97
|
+
}
|
|
98
|
+
);
|
|
99
|
+
});
|
|
100
|
+
});
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import Engine from "publicodes";
|
|
2
|
+
|
|
3
|
+
import { mergeModels } from "../../../internal/merger";
|
|
4
|
+
import { getReferences } from "../../../utils/GetReferences";
|
|
5
|
+
import {
|
|
6
|
+
DepartRetraiteReferences,
|
|
7
|
+
MiseRetraiteReferences,
|
|
8
|
+
} from "../../common/legal-references";
|
|
9
|
+
|
|
10
|
+
const engine = new Engine(mergeModels());
|
|
11
|
+
|
|
12
|
+
const CommonDepartReference = [
|
|
13
|
+
{
|
|
14
|
+
article:
|
|
15
|
+
'Partie 2, chapitre IV, section 1 "Cessation du contrat à durée indéterminée", article 1.1',
|
|
16
|
+
url: "https://www.legifrance.gouv.fr/conv_coll/id/KALIARTI000027034201/?idConteneur=KALICONT000027084096",
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
article:
|
|
20
|
+
'Partie 2, chapitre IV, section 1 "Cessation du contrat à durée indéterminée", article 4',
|
|
21
|
+
url: "https://www.legifrance.gouv.fr/conv_coll/id/KALIARTI000027034201/?idConteneur=KALICONT000027084096",
|
|
22
|
+
},
|
|
23
|
+
];
|
|
24
|
+
|
|
25
|
+
const CommonMiseReference = [
|
|
26
|
+
{
|
|
27
|
+
article:
|
|
28
|
+
'Partie 2, chapitre IV, section 1 "Cessation du contrat à durée indéterminée", article 1.1',
|
|
29
|
+
url: "https://www.legifrance.gouv.fr/conv_coll/id/KALIARTI000027034201/?idConteneur=KALICONT000027084096",
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
article:
|
|
33
|
+
'Partie 2, chapitre IV, section 1 "Cessation du contrat à durée indéterminée", article 3',
|
|
34
|
+
url: "https://www.legifrance.gouv.fr/conv_coll/id/KALIARTI000027034201/?idConteneur=KALICONT000027084096",
|
|
35
|
+
},
|
|
36
|
+
];
|
|
37
|
+
|
|
38
|
+
const DepartRetraiteCcReferences = [
|
|
39
|
+
...DepartRetraiteReferences,
|
|
40
|
+
...CommonDepartReference,
|
|
41
|
+
];
|
|
42
|
+
|
|
43
|
+
const MiseRetraiteCcReferences = [
|
|
44
|
+
...MiseRetraiteReferences,
|
|
45
|
+
...CommonMiseReference,
|
|
46
|
+
];
|
|
47
|
+
|
|
48
|
+
describe("Préavis de retraite de la CC 3127", () => {
|
|
49
|
+
describe("Vérification des départs à la retraite et des références juridiques", () => {
|
|
50
|
+
test.each`
|
|
51
|
+
seniority | expectedResult
|
|
52
|
+
${5} | ${0}
|
|
53
|
+
${6} | ${1}
|
|
54
|
+
${24} | ${2}
|
|
55
|
+
`(
|
|
56
|
+
"Pour un salarié possédant $seniority mois d'ancienneté, son préavis devrait être $expectedResult mois",
|
|
57
|
+
({ seniority, expectedResult }) => {
|
|
58
|
+
const situation = engine.setSituation({
|
|
59
|
+
"contrat salarié . ancienneté": seniority,
|
|
60
|
+
"contrat salarié . convention collective": "'IDCC3127'",
|
|
61
|
+
"contrat salarié . mise à la retraite": "non",
|
|
62
|
+
"contrat salarié . travailleur handicapé": "non",
|
|
63
|
+
});
|
|
64
|
+
const result = situation.evaluate(
|
|
65
|
+
"contrat salarié . préavis de retraite"
|
|
66
|
+
);
|
|
67
|
+
const references = getReferences(situation);
|
|
68
|
+
|
|
69
|
+
expect(result.nodeValue).toEqual(expectedResult);
|
|
70
|
+
expect(result.unit?.numerators).toEqual(["mois"]);
|
|
71
|
+
expect(result.missingVariables).toEqual({});
|
|
72
|
+
expect(references).toHaveLength(DepartRetraiteCcReferences.length);
|
|
73
|
+
expect(references).toEqual(
|
|
74
|
+
expect.arrayContaining(DepartRetraiteCcReferences)
|
|
75
|
+
);
|
|
76
|
+
}
|
|
77
|
+
);
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
describe("Vérification des mises à la retraite et des références juridiques", () => {
|
|
81
|
+
test.each`
|
|
82
|
+
seniority | expectedResult
|
|
83
|
+
${5} | ${0}
|
|
84
|
+
${6} | ${1}
|
|
85
|
+
${24} | ${2}
|
|
86
|
+
`(
|
|
87
|
+
"Pour un salarié possédant $seniority mois d'ancienneté, son préavis devrait être $expectedResult mois",
|
|
88
|
+
({ seniority, expectedResult }) => {
|
|
89
|
+
const situation = engine.setSituation({
|
|
90
|
+
"contrat salarié . ancienneté": seniority,
|
|
91
|
+
"contrat salarié . convention collective": "'IDCC3127'",
|
|
92
|
+
"contrat salarié . mise à la retraite": "oui",
|
|
93
|
+
"contrat salarié . travailleur handicapé": "non",
|
|
94
|
+
});
|
|
95
|
+
const result = situation.evaluate(
|
|
96
|
+
"contrat salarié . préavis de retraite"
|
|
97
|
+
);
|
|
98
|
+
const references = getReferences(situation);
|
|
99
|
+
|
|
100
|
+
expect(result.nodeValue).toEqual(expectedResult);
|
|
101
|
+
expect(result.unit?.numerators).toEqual(["mois"]);
|
|
102
|
+
expect(result.missingVariables).toEqual({});
|
|
103
|
+
expect(references).toHaveLength(MiseRetraiteCcReferences.length);
|
|
104
|
+
expect(references).toEqual(
|
|
105
|
+
expect.arrayContaining(MiseRetraiteCcReferences)
|
|
106
|
+
);
|
|
107
|
+
}
|
|
108
|
+
);
|
|
109
|
+
});
|
|
110
|
+
});
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import Engine from "publicodes";
|
|
2
|
+
|
|
3
|
+
import { getNotifications } from "../../..";
|
|
4
|
+
import { mergeModels } from "../../../internal/merger";
|
|
5
|
+
import { getReferences } from "../../../utils/GetReferences";
|
|
6
|
+
import {
|
|
7
|
+
DepartRetraiteReferences,
|
|
8
|
+
MiseRetraiteReferences,
|
|
9
|
+
} from "../../common/legal-references";
|
|
10
|
+
|
|
11
|
+
const engine = new Engine(mergeModels());
|
|
12
|
+
|
|
13
|
+
const MiseRetraiteNonCadresReferences = [
|
|
14
|
+
...MiseRetraiteReferences,
|
|
15
|
+
{
|
|
16
|
+
article: "Article 20",
|
|
17
|
+
url: "https://www.legifrance.gouv.fr/conv_coll/article/KALIARTI000005829411",
|
|
18
|
+
},
|
|
19
|
+
];
|
|
20
|
+
|
|
21
|
+
const DepartRetraiteCadresReferences = [
|
|
22
|
+
...DepartRetraiteReferences,
|
|
23
|
+
{
|
|
24
|
+
article: "Dispositions particulières applicables aux cadres, article 6",
|
|
25
|
+
url: "https://www.legifrance.gouv.fr/conv_coll/article/KALIARTI000005829442?idConteneur=KALICONT000005635528",
|
|
26
|
+
},
|
|
27
|
+
];
|
|
28
|
+
|
|
29
|
+
const MiseRetraiteCadresReferences = [
|
|
30
|
+
...MiseRetraiteReferences,
|
|
31
|
+
{
|
|
32
|
+
article: "Dispositions particulières applicables aux cadres, article 6",
|
|
33
|
+
url: "https://www.legifrance.gouv.fr/conv_coll/article/KALIARTI000005829442?idConteneur=KALICONT000005635528",
|
|
34
|
+
},
|
|
35
|
+
];
|
|
36
|
+
|
|
37
|
+
describe("Préavis de retraite de la CC 1996", () => {
|
|
38
|
+
describe("Vérification des départs à la retraite et des références juridiques", () => {
|
|
39
|
+
test.each`
|
|
40
|
+
category | seniority | expectedResult | expectedReferences
|
|
41
|
+
${"Non-cadres"} | ${5} | ${0} | ${DepartRetraiteReferences}
|
|
42
|
+
${"Non-cadres"} | ${6} | ${1} | ${DepartRetraiteReferences}
|
|
43
|
+
${"Non-cadres"} | ${24} | ${2} | ${DepartRetraiteReferences}
|
|
44
|
+
${"Cadres"} | ${5} | ${3} | ${DepartRetraiteCadresReferences}
|
|
45
|
+
${"Cadres"} | ${6} | ${1} | ${DepartRetraiteCadresReferences}
|
|
46
|
+
${"Cadres"} | ${24} | ${2} | ${DepartRetraiteCadresReferences}
|
|
47
|
+
`(
|
|
48
|
+
"Pour un $category possédant $seniority mois d'ancienneté, son préavis devrait être $expectedResult mois",
|
|
49
|
+
({ category, seniority, expectedResult, expectedReferences }) => {
|
|
50
|
+
const situation = engine.setSituation({
|
|
51
|
+
"contrat salarié . ancienneté": seniority,
|
|
52
|
+
"contrat salarié . convention collective": "'IDCC1996'",
|
|
53
|
+
"contrat salarié . convention collective . pharmacie . catégorie professionnelle": `'${category}'`,
|
|
54
|
+
"contrat salarié . mise à la retraite": "non",
|
|
55
|
+
"contrat salarié . travailleur handicapé": "non",
|
|
56
|
+
});
|
|
57
|
+
const result = situation.evaluate(
|
|
58
|
+
"contrat salarié . préavis de retraite"
|
|
59
|
+
);
|
|
60
|
+
const references = getReferences(situation);
|
|
61
|
+
|
|
62
|
+
expect(result.nodeValue).toEqual(expectedResult);
|
|
63
|
+
expect(result.unit?.numerators).toEqual(["mois"]);
|
|
64
|
+
expect(result.missingVariables).toEqual({});
|
|
65
|
+
expect(references).toHaveLength(expectedReferences.length);
|
|
66
|
+
expect(references).toEqual(expect.arrayContaining(expectedReferences));
|
|
67
|
+
}
|
|
68
|
+
);
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
describe("Vérification des mises à la retraite et des références juridiques", () => {
|
|
72
|
+
test.each`
|
|
73
|
+
category | seniority | expectedResult | expectedReferences
|
|
74
|
+
${"Non-cadres"} | ${5} | ${1} | ${MiseRetraiteNonCadresReferences}
|
|
75
|
+
${"Non-cadres"} | ${6} | ${1} | ${MiseRetraiteNonCadresReferences}
|
|
76
|
+
${"Non-cadres"} | ${24} | ${2} | ${MiseRetraiteNonCadresReferences}
|
|
77
|
+
${"Cadres"} | ${5} | ${3} | ${MiseRetraiteCadresReferences}
|
|
78
|
+
${"Cadres"} | ${6} | ${3} | ${MiseRetraiteCadresReferences}
|
|
79
|
+
${"Cadres"} | ${24} | ${3} | ${MiseRetraiteCadresReferences}
|
|
80
|
+
`(
|
|
81
|
+
"Pour un $category possédant $seniority mois d'ancienneté, son préavis devrait être $expectedResult mois",
|
|
82
|
+
({ category, seniority, expectedResult, expectedReferences }) => {
|
|
83
|
+
const situation = engine.setSituation({
|
|
84
|
+
"contrat salarié . ancienneté": seniority,
|
|
85
|
+
"contrat salarié . convention collective": "'IDCC1996'",
|
|
86
|
+
"contrat salarié . convention collective . pharmacie . catégorie professionnelle": `'${category}'`,
|
|
87
|
+
"contrat salarié . mise à la retraite": "oui",
|
|
88
|
+
"contrat salarié . travailleur handicapé": "non",
|
|
89
|
+
});
|
|
90
|
+
const result = situation.evaluate(
|
|
91
|
+
"contrat salarié . préavis de retraite"
|
|
92
|
+
);
|
|
93
|
+
const references = getReferences(situation);
|
|
94
|
+
|
|
95
|
+
expect(result.nodeValue).toEqual(expectedResult);
|
|
96
|
+
expect(result.unit?.numerators).toEqual(["mois"]);
|
|
97
|
+
expect(result.missingVariables).toEqual({});
|
|
98
|
+
expect(references).toHaveLength(expectedReferences.length);
|
|
99
|
+
expect(references).toEqual(expect.arrayContaining(expectedReferences));
|
|
100
|
+
}
|
|
101
|
+
);
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
describe("Vérification des notifications", () => {
|
|
105
|
+
test("Pour un cadre en mise a la retraite une notification doit s'afficher", () => {
|
|
106
|
+
const notifications = getNotifications(
|
|
107
|
+
engine.setSituation({
|
|
108
|
+
"contrat salarié . ancienneté": 5,
|
|
109
|
+
"contrat salarié . convention collective": "'IDCC1996'",
|
|
110
|
+
"contrat salarié . convention collective . pharmacie . catégorie professionnelle": `'Cadres'`,
|
|
111
|
+
"contrat salarié . mise à la retraite": "oui",
|
|
112
|
+
"contrat salarié . travailleur handicapé": "non",
|
|
113
|
+
})
|
|
114
|
+
);
|
|
115
|
+
expect(notifications).toHaveLength(1);
|
|
116
|
+
expect(notifications[0].description).toBe(
|
|
117
|
+
"Il s'agit d'un délai minimum."
|
|
118
|
+
);
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
test.each`
|
|
122
|
+
category | type
|
|
123
|
+
${"Cadres"} | ${"depart"}
|
|
124
|
+
${"Non-cadres"} | ${"depart"}
|
|
125
|
+
${"Non-cadres"} | ${"mise"}
|
|
126
|
+
`(
|
|
127
|
+
"Pour les autres cas aucune notification doit s'afficher",
|
|
128
|
+
({ category, type }) => {
|
|
129
|
+
const notifications = getNotifications(
|
|
130
|
+
engine.setSituation({
|
|
131
|
+
"contrat salarié . ancienneté": 5,
|
|
132
|
+
"contrat salarié . convention collective": "'IDCC1996'",
|
|
133
|
+
"contrat salarié . convention collective . pharmacie . catégorie professionnelle": `'${category}'`,
|
|
134
|
+
"contrat salarié . mise à la retraite":
|
|
135
|
+
type === "mise" ? "oui" : "non",
|
|
136
|
+
"contrat salarié . travailleur handicapé": "non",
|
|
137
|
+
})
|
|
138
|
+
);
|
|
139
|
+
expect(notifications).toHaveLength(0);
|
|
140
|
+
}
|
|
141
|
+
);
|
|
142
|
+
});
|
|
143
|
+
});
|