Skip to content

Commit

Permalink
feat: 1480 non géré indemnite licenciement (#5733)
Browse files Browse the repository at this point in the history
* feat: 1480 non géré indemnite licenciement

* chore: clean

* chore: snap

* Revert "chore: snap"

This reverts commit b3a34a2.

* chore: review use enum

* chore: fix tests

* chore: review

* feat: add back fullySupported function

* chore: clean

---------

Co-authored-by: Victor <victor.zeinstra@gmail.com>
  • Loading branch information
Viczei and Victor committed Apr 9, 2024
1 parent a93d440 commit ad4ab9f
Show file tree
Hide file tree
Showing 192 changed files with 755 additions and 1,106 deletions.
41 changes: 18 additions & 23 deletions packages/code-du-travail-frontend/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@ Puis dans `types`, rajouter le type de votre convention collective

```ts
export type ReferenceSalaryProps<T> =
T extends SupportedCcIndemniteLicenciement.IDCC1516
T extends SupportedCc.IDCC1516
? CC1516ReferenceSalaryProps
T extends SupportedCcIndemniteLicenciement.IDCCXXX
T extends SupportedCc.IDCCXXX
? IDCCXXXReferenceSalaryProps
: LegalReferenceSalaryProps;
```
Expand All @@ -37,25 +37,20 @@ Ensuite, dans `index.ts`, on peut ajouter la classe qui va process l'ancienneté
```ts
switch (idcc) {
case SupportedCcIndemniteLicenciement.IDCC2511:
return new SeniorityLegal(
getMotifs(SupportedCcIndemniteLicenciement.IDCC2511)
) as ISeniority<T>;
case SupportedCcIndemniteLicenciement.default:
case SupportedCc.IDCC2511:
return new SeniorityLegal(getMotifs(SupportedCc.IDCC2511)) as ISeniority<T>;
case SupportedCc.default:
default:
return new SeniorityLegal(
getMotifs(SupportedCcIndemniteLicenciement.default)
) as ISeniority<T>;
return new SeniorityLegal(getMotifs(SupportedCc.default)) as ISeniority<T>;
}
```
Enfin si on souhaite pimper les types, on peut le faire dans `types`.
```ts
export type SeniorityProps<T> =
T extends SupportedCcIndemniteLicenciement.IDCC2511
? LegalSeniorityProps
: LegalSeniorityProps;
export type SeniorityProps<T> = T extends SupportedCc.IDCC2511
? LegalSeniorityProps
: LegalSeniorityProps;
```
### 3. Ajouter la formule de calcul (`code-du-travail-modeles`)
Expand All @@ -68,7 +63,7 @@ On peut créer une classe qui va implémenter l'interface `IFormula`
```ts
export class Formula1516
implements IFormula<SupportedCcIndemniteLicenciement.IDCC1516>
implements IFormula<SupportedCc.IDCC1516>
```
Ensuite, on peut modifier la fonction `computeFormula`, on ajoutant les bonnes `explanations`, comme on le voit ci-dessous :
Expand All @@ -90,9 +85,9 @@ Après dans l'`index.ts`, on peut ajouter la classe :
```ts
switch (idcc) {
case SupportedCcIndemniteLicenciement.IDCC1516:
case SupportedCc.IDCC1516:
return new Formula1516() as IFormula<T>;
case SupportedCcIndemniteLicenciement.default:
case SupportedCc.default:
default:
return new FormulaLegal() as IFormula<T>;
}
Expand All @@ -101,7 +96,7 @@ switch (idcc) {
Enfin si on souhaite pimper les types, on peut le faire dans `types`.
```ts
export type FormulaProps<T> = T extends SupportedCcIndemniteLicenciement.default
export type FormulaProps<T> = T extends SupportedCc.default
? LegalFormulaProps
: DefaultFormulaProps;
```
Expand Down Expand Up @@ -218,16 +213,16 @@ Puis, il faut ajouter le validator dans `src/outils/IndemniteLicenciement/valida

```ts
export const validateAgreement = (
idcc: SupportedCcIndemniteLicenciement,
idcc: SupportedCc,
step: IndemniteLicenciementStepName,
get: StoreApi<any>["getState"],
set: StoreApi<MainStore>["setState"]
): boolean => {
switch (true) {
case SupportedCcIndemniteLicenciement.IDCC1516 === idcc &&
case SupportedCc.IDCC1516 === idcc &&
step === IndemniteLicenciementStepName.Salaires:
return validateAgreement1516(get, set);
case SupportedCcIndemniteLicenciement.MA_CC === idcc &&
case SupportedCc.MA_CC === idcc &&
step === IndemniteLicenciementStepName.Salaires:
return validateMaCc(get, set);
default:
Expand All @@ -241,10 +236,10 @@ Enfin, il suffit de rajouter le composant d'injection dans `src/outils/Indemnite
```ts
export default function AgreementsInjector(props: Props) {
switch (true) {
case SupportedCcIndemniteLicenciement.IDCC1516 === props.idcc &&
case SupportedCc.IDCC1516 === props.idcc &&
props.step === IndemniteLicenciementStepName.Salaires:
return <Agreement1516 />;
case SupportedCcIndemniteLicenciement.MA_CC === props.idcc &&
case SupportedCc.MA_CC === props.idcc &&
props.step === IndemniteLicenciementStepName.Salaires:
return <MaCC />;
default:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ import {
} from "../../../../lib";
import { pushAgreementEvents } from "../../../common/Agreement";
import { AgreementRoute } from "../../../common/type/WizardType";
import { isCcFullySupportedIndemniteLicenciement } from "../../../IndemniteLicenciement/common";
import { Agreement } from "@socialgouv/cdtn-utils";
import { isCcFullySupportedIndemniteLicenciement } from "../../../IndemniteLicenciement/common";

const initialState: Omit<
CommonAgreementStoreData<PublicodesSimulator>,
Expand Down Expand Up @@ -141,7 +141,6 @@ const createCommonAgreementStore: StoreSlicePublicode<
},
onNextStep: () => {
const input = get().agreementData.input;
const error = get().agreementData.error;
const { isValid, errorState } = validateStep(input);
const { route, agreement, enterprise } = input;
if (isValid && route) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import {
NoticeUsed,
} from "../steps/ResultStep/Components/DecryptedResult";
import { PreavisRetraiteFormState } from "../form";
import { AgreementInfo } from "@socialgouv/modeles-social";
import { AgreementInfo, SupportedTypes } from "@socialgouv/modeles-social";

const agreementSupported = { notice: 2, status: AgreementStatus.Supported };
const getAgreementSupported = (notice) => ({
Expand Down Expand Up @@ -107,13 +107,13 @@ describe("Validation de l'aggregation des données", () => {
const supportedCcn: AgreementInfo[] = [
{
idcc: 292,
preavisRetraite: true,
indemniteLicenciement: true,
preavisRetraite: SupportedTypes.FULLY_SUPPORTED,
indemniteLicenciement: SupportedTypes.FULLY_SUPPORTED,
},
{
idcc: 321,
preavisRetraite: false,
indemniteLicenciement: true,
preavisRetraite: SupportedTypes.SOON_SUPPORTED,
indemniteLicenciement: SupportedTypes.SOON_SUPPORTED,
},
];

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { Paragraph } from "@socialgouv/cdtn-ui";
import {
AgreementInfo,
PublicodesPreavisRetraiteResult,
SupportedTypes,
supportedCcn,
} from "@socialgouv/modeles-social";
import React from "react";
Expand Down Expand Up @@ -106,7 +107,7 @@ export const createRootData = (
agreement = {
notice: agreementResult?.valueInDays ?? 0,
status: agreementFound
? agreementFound.preavisRetraite
? agreementFound.preavisRetraite === SupportedTypes.FULLY_SUPPORTED
? AgreementStatus.Supported
: AgreementStatus.Planned
: AgreementStatus.NotSupported,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { SupportedCcIndemniteLicenciement } from "@socialgouv/modeles-social";
import { SupportedCc } from "@socialgouv/modeles-social";
import React from "react";
import { IndemniteLicenciementStepName } from "..";
import {
Expand Down Expand Up @@ -39,91 +39,91 @@ import {
import { Agreement2120, Agreement2120Informations } from "./2120-banques";

type Props = {
idcc: SupportedCcIndemniteLicenciement | null;
idcc: SupportedCc | null | undefined;
step: IndemniteLicenciementStepName;
};

export default function AgreementsInjector(props: Props) {
switch (true) {
case SupportedCcIndemniteLicenciement.IDCC0016 === props.idcc &&
case SupportedCc.IDCC0016 === props.idcc &&
props.step === IndemniteLicenciementStepName.Salaires:
return <Agreement16 />;
case SupportedCcIndemniteLicenciement.IDCC0016 === props.idcc &&
case SupportedCc.IDCC0016 === props.idcc &&
props.step === IndemniteLicenciementStepName.Resultat:
return <Agreement16Informations />;
case SupportedCcIndemniteLicenciement.IDCC0029 === props.idcc &&
case SupportedCc.IDCC0029 === props.idcc &&
props.step === IndemniteLicenciementStepName.Salaires:
return <Agreement29 />;
case SupportedCcIndemniteLicenciement.IDCC0029 === props.idcc &&
case SupportedCc.IDCC0029 === props.idcc &&
props.step === IndemniteLicenciementStepName.Resultat:
return <Agreement29Informations />;
case SupportedCcIndemniteLicenciement.IDCC0044 === props.idcc &&
case SupportedCc.IDCC0044 === props.idcc &&
props.step === IndemniteLicenciementStepName.Salaires:
return <Agreement44 />;
case SupportedCcIndemniteLicenciement.IDCC0044 === props.idcc &&
case SupportedCc.IDCC0044 === props.idcc &&
props.step === IndemniteLicenciementStepName.Resultat:
return <Agreement44Informations />;
case SupportedCcIndemniteLicenciement.IDCC1516 === props.idcc &&
case SupportedCc.IDCC1516 === props.idcc &&
props.step === IndemniteLicenciementStepName.Salaires:
return <Agreement1516 />;
case SupportedCcIndemniteLicenciement.IDCC1516 === props.idcc &&
case SupportedCc.IDCC1516 === props.idcc &&
props.step === IndemniteLicenciementStepName.Resultat:
return <Agreement1516Informations />;
case SupportedCcIndemniteLicenciement.IDCC1527 === props.idcc &&
case SupportedCc.IDCC1527 === props.idcc &&
props.step === IndemniteLicenciementStepName.Salaires:
return <Agreement1527 />;
case SupportedCcIndemniteLicenciement.IDCC1527 === props.idcc &&
case SupportedCc.IDCC1527 === props.idcc &&
props.step === IndemniteLicenciementStepName.Resultat:
return <Agreement1527Informations />;
case SupportedCcIndemniteLicenciement.IDCC2596 === props.idcc &&
case SupportedCc.IDCC2596 === props.idcc &&
props.step === IndemniteLicenciementStepName.Salaires:
return <Agreement2596 />;
case SupportedCcIndemniteLicenciement.IDCC2596 === props.idcc &&
case SupportedCc.IDCC2596 === props.idcc &&
props.step === IndemniteLicenciementStepName.Resultat:
return <Agreement2596Informations />;
case SupportedCcIndemniteLicenciement.IDCC2609 === props.idcc &&
case SupportedCc.IDCC2609 === props.idcc &&
props.step === IndemniteLicenciementStepName.Salaires:
return <Agreement2609 />;
case SupportedCcIndemniteLicenciement.IDCC2614 === props.idcc &&
case SupportedCc.IDCC2614 === props.idcc &&
props.step === IndemniteLicenciementStepName.Salaires:
return <Agreement2614 />;
case SupportedCcIndemniteLicenciement.IDCC2609 === props.idcc &&
case SupportedCc.IDCC2609 === props.idcc &&
props.step === IndemniteLicenciementStepName.Resultat:
return <Agreement2609Informations />;
case SupportedCcIndemniteLicenciement.IDCC2120 === props.idcc &&
case SupportedCc.IDCC2120 === props.idcc &&
props.step === IndemniteLicenciementStepName.Salaires:
return <Agreement2120 />;
case SupportedCcIndemniteLicenciement.IDCC2120 === props.idcc &&
case SupportedCc.IDCC2120 === props.idcc &&
props.step === IndemniteLicenciementStepName.Resultat:
return <Agreement2120Informations />;
case SupportedCcIndemniteLicenciement.IDCC2148 === props.idcc &&
case SupportedCc.IDCC2148 === props.idcc &&
props.step === IndemniteLicenciementStepName.Salaires:
return <Agreement2148 />;
case SupportedCcIndemniteLicenciement.IDCC2148 === props.idcc &&
case SupportedCc.IDCC2148 === props.idcc &&
props.step === IndemniteLicenciementStepName.Resultat:
return <Agreement2148Informations />;
case SupportedCcIndemniteLicenciement.IDCC1672 === props.idcc &&
case SupportedCc.IDCC1672 === props.idcc &&
props.step === IndemniteLicenciementStepName.Salaires:
return <Agreement1672 />;
case SupportedCcIndemniteLicenciement.IDCC1672 === props.idcc &&
case SupportedCc.IDCC1672 === props.idcc &&
props.step === IndemniteLicenciementStepName.Resultat:
return <Agreement1672Informations />;
case SupportedCcIndemniteLicenciement.IDCC1483 === props.idcc &&
case SupportedCc.IDCC1483 === props.idcc &&
props.step === IndemniteLicenciementStepName.Salaires:
return <Agreement1483 />;
case SupportedCcIndemniteLicenciement.IDCC1483 === props.idcc &&
case SupportedCc.IDCC1483 === props.idcc &&
props.step === IndemniteLicenciementStepName.Resultat:
return <Agreement1483Informations />;
case SupportedCcIndemniteLicenciement.IDCC1702 === props.idcc &&
case SupportedCc.IDCC1702 === props.idcc &&
props.step === IndemniteLicenciementStepName.Salaires:
return <Agreement1702 />;
case SupportedCcIndemniteLicenciement.IDCC1702 === props.idcc &&
case SupportedCc.IDCC1702 === props.idcc &&
props.step === IndemniteLicenciementStepName.Resultat:
return <Agreement1702Informations />;
case SupportedCcIndemniteLicenciement.IDCC1740 === props.idcc &&
case SupportedCc.IDCC1740 === props.idcc &&
props.step === IndemniteLicenciementStepName.Salaires:
return <Agreement1740 />;
case SupportedCcIndemniteLicenciement.IDCC1740 === props.idcc &&
case SupportedCc.IDCC1740 === props.idcc &&
props.step === IndemniteLicenciementStepName.Resultat:
return <Agreement1740Informations />;
default:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,4 @@
import {
getSupportedAgreement,
SupportedCcIndemniteLicenciement,
} from "@socialgouv/modeles-social";
import { getSupportedAgreement, SupportedCc } from "@socialgouv/modeles-social";
import { Agreement } from "@socialgouv/cdtn-utils";
import { CommonInformationsStoreInput } from "../../../CommonSteps/Informations/store";
import { AncienneteStoreInput } from "../../steps/Anciennete/store";
Expand All @@ -15,12 +12,12 @@ export const customSeniorityValidator = (
information: CommonInformationsStoreInput,
agreeement?: Agreement
): any => {
let idcc: SupportedCcIndemniteLicenciement | null = null;
let idcc: SupportedCc | null | undefined = null;
if (agreeement) {
idcc = getSupportedAgreement(agreeement.num);
}
switch (idcc) {
case SupportedCcIndemniteLicenciement.IDCC1517:
case SupportedCc.IDCC1517:
return validateStep1517(state, stateContratTravail, information);
default: {
return validateStep(state, stateContratTravail, information);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { SupportedCcIndemniteLicenciement } from "@socialgouv/modeles-social";
import { SupportedCc } from "@socialgouv/modeles-social";
import { StoreApi } from "zustand";
import { IndemniteLicenciementStepName } from "..";
import { MainStore } from "../store";
Expand All @@ -18,52 +18,52 @@ import { validateAgreement1702 } from "./1702-ouvriers-travaux-public";
import { validateAgreement1740 } from "./1740-batiment-region-parisienne";

const validatorAgreement = (
idcc: SupportedCcIndemniteLicenciement | null,
idcc: SupportedCc | null | undefined,
step: IndemniteLicenciementStepName,
get: StoreApi<any>["getState"],
set: StoreApi<MainStore>["setState"]
): boolean => {
switch (true) {
case SupportedCcIndemniteLicenciement.IDCC1516 === idcc &&
case SupportedCc.IDCC1516 === idcc &&
step === IndemniteLicenciementStepName.Salaires:
return validateAgreement1516(get, set);
case SupportedCcIndemniteLicenciement.IDCC1527 === idcc &&
case SupportedCc.IDCC1527 === idcc &&
step === IndemniteLicenciementStepName.Salaires:
return validateAgreement1527(get, set);
case SupportedCcIndemniteLicenciement.IDCC0029 === idcc &&
case SupportedCc.IDCC0029 === idcc &&
step === IndemniteLicenciementStepName.Salaires:
return validateAgreement29(get, set);
case SupportedCcIndemniteLicenciement.IDCC0016 === idcc &&
case SupportedCc.IDCC0016 === idcc &&
step === IndemniteLicenciementStepName.Salaires:
return validateAgreement16(get, set);
case SupportedCcIndemniteLicenciement.IDCC0044 === idcc &&
case SupportedCc.IDCC0044 === idcc &&
step === IndemniteLicenciementStepName.Salaires:
return validateAgreement44(get, set);
case SupportedCcIndemniteLicenciement.IDCC2596 === idcc &&
case SupportedCc.IDCC2596 === idcc &&
step === IndemniteLicenciementStepName.Salaires:
return validateAgreement2596(get, set);
case SupportedCcIndemniteLicenciement.IDCC2609 === idcc &&
case SupportedCc.IDCC2609 === idcc &&
step === IndemniteLicenciementStepName.Salaires:
return validateAgreement2609(get, set);
case SupportedCcIndemniteLicenciement.IDCC2120 === idcc &&
case SupportedCc.IDCC2120 === idcc &&
step === IndemniteLicenciementStepName.Salaires:
return validateAgreement2120(get, set);
case SupportedCcIndemniteLicenciement.IDCC2148 === idcc &&
case SupportedCc.IDCC2148 === idcc &&
step === IndemniteLicenciementStepName.Salaires:
return validateAgreement2148(get, set);
case SupportedCcIndemniteLicenciement.IDCC2614 === idcc &&
case SupportedCc.IDCC2614 === idcc &&
step === IndemniteLicenciementStepName.Salaires:
return validateAgreement2614(get, set);
case SupportedCcIndemniteLicenciement.IDCC1672 === idcc &&
case SupportedCc.IDCC1672 === idcc &&
step === IndemniteLicenciementStepName.Salaires:
return validateAgreement1672(get, set);
case SupportedCcIndemniteLicenciement.IDCC1483 === idcc &&
case SupportedCc.IDCC1483 === idcc &&
step === IndemniteLicenciementStepName.Salaires:
return validateAgreement1483(get, set);
case SupportedCcIndemniteLicenciement.IDCC1702 === idcc &&
case SupportedCc.IDCC1702 === idcc &&
step === IndemniteLicenciementStepName.Salaires:
return validateAgreement1702(get, set);
case SupportedCcIndemniteLicenciement.IDCC1740 === idcc &&
case SupportedCc.IDCC1740 === idcc &&
step === IndemniteLicenciementStepName.Salaires:
return validateAgreement1740(get, set);
default:
Expand Down

0 comments on commit ad4ab9f

Please sign in to comment.