diff --git a/package.json b/package.json index 874e1f5b3..bd0af86ec 100644 --- a/package.json +++ b/package.json @@ -189,4 +189,4 @@ "node": "16.16" }, "packageManager": "yarn@3.2.4" -} \ No newline at end of file +} diff --git a/src/backend/infrastructure/gateways/comparaison-loader/TypeOrmComparaisonLoader.ts b/src/backend/infrastructure/gateways/comparaison-loader/TypeOrmComparaisonLoader.ts index 22803e378..b32bdb0ac 100644 --- a/src/backend/infrastructure/gateways/comparaison-loader/TypeOrmComparaisonLoader.ts +++ b/src/backend/infrastructure/gateways/comparaison-loader/TypeOrmComparaisonLoader.ts @@ -186,7 +186,7 @@ export class TypeOrmComparaisonLoader implements ComparaisonLoader { acceuilDeJourMoyenne: moyenne.acceuildejourmoyenne !== null ? this.transformInRate(moyenne.acceuildejourmoyenne, 1) : null, hebergementPermanentMoyenne: moyenne.hebergementpermanentmoyenne !== null ? this.transformInRate(moyenne.hebergementpermanentmoyenne, 1) : null, hebergementTemporaireMoyenne: moyenne.hebergementtemporairemoyenne !== null ? this.transformInRate(moyenne.hebergementtemporairemoyenne, 1) : null, - fileActivePersonnesAccompagnesMoyenne: moyenne.fileactivepersonnesaccompagnesmoyenne, + fileActivePersonnesAccompagnesMoyenne: moyenne.fileactivepersonnesaccompagnesmoyenne ? this.makeNumberArrondi(Number(moyenne.fileactivepersonnesaccompagnesmoyenne), 2) : null, rotationPersonnelMoyenne: moyenne.rotationpersonnelmoyenne !== null ? this.transformInRate(moyenne.rotationpersonnelmoyenne, 1) : null, absenteismeMoyenne: moyenne.absenteismemoyenne !== null ? this.transformInRate(moyenne.absenteismemoyenne, 1) : null, prestationExterneMoyenne: moyenne.prestationexternemoyenne !== null ? this.transformInRate(moyenne.prestationexternemoyenne, 1) : null, @@ -204,9 +204,10 @@ export class TypeOrmComparaisonLoader implements ComparaisonLoader { if (numericValue !== null && !isNaN(numericValue)) { // If numericValue is a valid number, return the rounded number - return Number(numericValue.toFixed(num)); + if (num === 0) return Math.round(numericValue) + return Math.round(numericValue * (10 * num)) / (10 * num) } else { - // If it's not a valid number, return null or handle as needed + // If it's not a valid number, return null return null; } } diff --git a/src/backend/infrastructure/gateways/utilisateur-loader/TypeOrmUtilisateurLoader.ts b/src/backend/infrastructure/gateways/utilisateur-loader/TypeOrmUtilisateurLoader.ts index 22f485c2c..9642ac43f 100644 --- a/src/backend/infrastructure/gateways/utilisateur-loader/TypeOrmUtilisateurLoader.ts +++ b/src/backend/infrastructure/gateways/utilisateur-loader/TypeOrmUtilisateurLoader.ts @@ -18,7 +18,7 @@ import { UtilisateurLoader } from "../../../métier/gateways/UtilisateurLoader"; import { sendEmail } from "../../../sendEmail"; export class TypeOrmUtilisateurLoader implements UtilisateurLoader { - constructor(private readonly orm: Promise) {} + constructor(private readonly orm: Promise) { } async getUserByCode(code: string): Promise { return await (await this.orm).getRepository(UtilisateurModel).findOne({ where: { code: code } }); } @@ -259,6 +259,9 @@ export class TypeOrmUtilisateurLoader implements UtilisateurLoader { orders = { nom: "ASC" }; } + // eslint-disable-next-line no-console + console.log('conditions', conditions); + const data = await utilisateurRepo.find({ // @ts-ignore where: conditions, diff --git "a/src/frontend/test-helpers/test-builder/\303\211tablissementTerritorialM\303\251dicoSocialViewModelTestBuilder.ts" "b/src/frontend/test-helpers/test-builder/\303\211tablissementTerritorialM\303\251dicoSocialViewModelTestBuilder.ts" index 4d46c962c..df8f98328 100644 --- "a/src/frontend/test-helpers/test-builder/\303\211tablissementTerritorialM\303\251dicoSocialViewModelTestBuilder.ts" +++ "b/src/frontend/test-helpers/test-builder/\303\211tablissementTerritorialM\303\251dicoSocialViewModelTestBuilder.ts" @@ -121,7 +121,7 @@ export class ÉtablissementTerritorialMédicoSocialViewModelTestBuilder { public static activités: ÉtablissementTerritorialMédicoSocial["activités"] = [ { - année: 2019, + année: 2020, duréeMoyenneSéjourAccompagnementPersonnesSorties: { dateMiseÀJourSource: "2021-07-07", value: 1013, @@ -153,7 +153,7 @@ export class ÉtablissementTerritorialMédicoSocialViewModelTestBuilder { }, }, { - année: 2020, + année: 2021, duréeMoyenneSéjourAccompagnementPersonnesSorties: { dateMiseÀJourSource: "2021-07-07", value: 994, @@ -185,7 +185,7 @@ export class ÉtablissementTerritorialMédicoSocialViewModelTestBuilder { }, }, { - année: 2021, + année: 2022, duréeMoyenneSéjourAccompagnementPersonnesSorties: { dateMiseÀJourSource: "2021-07-07", value: 990, @@ -324,7 +324,7 @@ export class ÉtablissementTerritorialMédicoSocialViewModelTestBuilder { public static budgetEtFinances: ÉtablissementTerritorialMédicoSocial["budgetEtFinances"] = [ { - année: 2019, + année: 2020, cadreBudgétaire: CadreBudgétaire.ERRD, chargesEtProduits: { charges: null, @@ -362,7 +362,7 @@ export class ÉtablissementTerritorialMédicoSocialViewModelTestBuilder { }, }, { - année: 2020, + année: 2021, cadreBudgétaire: CadreBudgétaire.ERRD, chargesEtProduits: { charges: null, @@ -400,7 +400,7 @@ export class ÉtablissementTerritorialMédicoSocialViewModelTestBuilder { }, }, { - année: 2021, + année: 2022, cadreBudgétaire: CadreBudgétaire.ERRD, chargesEtProduits: { charges: null, diff --git a/src/frontend/ui/commun/StringFormater.ts b/src/frontend/ui/commun/StringFormater.ts index b2dd57f64..f0674b8cd 100644 --- a/src/frontend/ui/commun/StringFormater.ts +++ b/src/frontend/ui/commun/StringFormater.ts @@ -45,6 +45,6 @@ export namespace StringFormater { } export function transformInRate(number: number): number { - return Number((number * 100).toFixed(1)); + return Math.round((number * 100) * 10) / 10; } } diff --git a/src/frontend/ui/comparaison/ComparaisonPage.tsx b/src/frontend/ui/comparaison/ComparaisonPage.tsx index 7c789ed34..d6d88392b 100644 --- a/src/frontend/ui/comparaison/ComparaisonPage.tsx +++ b/src/frontend/ui/comparaison/ComparaisonPage.tsx @@ -1,7 +1,8 @@ import Head from "next/head"; -import { ReactChild, useEffect, useState } from "react"; +import { ReactChild, useContext, useEffect, useState } from "react"; import { DatesMisAjourSources } from "../../../backend/métier/entities/ResultatDeComparaison"; +import { ComparaisonContext } from "../commun/contexts/ComparaisonContext"; import { useDependencies } from "../commun/contexts/useDependencies"; import { InfoBulle } from "../commun/InfoBulle/InfoBulle"; import { StringFormater } from "../commun/StringFormater"; @@ -20,6 +21,8 @@ interface ComparaisonPageProps { } export const ComparaisonPage = ({ listeAnnees, datesMisAjour }: ComparaisonPageProps) => { + const comparaisonContext = useContext(ComparaisonContext); + const [selectedRows, setSelectedRows] = useState([]); const { wording } = useDependencies(); const [annéeEnCours, setAnnéeEnCours] = useState(listeAnnees[listeAnnees.length - 1]); @@ -71,9 +74,9 @@ export const ComparaisonPage = ({ listeAnnees, datesMisAjour }: ComparaisonPageP }, { label: "Réalisation de l'activité", key: "realisationActivite", info: true, sort: true, orderBy: "taux_realisation_activite" }, { label: "Activité personnes accompagnées", key: "fileActivePersonnesAccompagnes", info: true, sort: true, orderBy: "file_active_personnes_accompagnees" }, - { label: "HP", key: "hebergementPermanent", info: true, sort: true, orderBy: "taux_occupation_en_hebergement_permanent" }, - { label: "HT", key: "hebergementTemporaire", info: true, sort: true, orderBy: "taux_occupation_en_hebergement_temporaire" }, - { label: "AJ", key: "acceuilDeJour", info: true, sort: true, orderBy: "taux_occupation_accueil_de_jour" }, + { label: "TO HP", key: "hebergementPermanent", info: true, sort: true, orderBy: "taux_occupation_en_hebergement_permanent" }, + { label: "TO HT", key: "hebergementTemporaire", info: true, sort: true, orderBy: "taux_occupation_en_hebergement_temporaire" }, + { label: "TO AJ", key: "acceuilDeJour", info: true, sort: true, orderBy: "taux_occupation_accueil_de_jour" }, { label: "Prestations externes vs directes", key: "prestationExterne", info: true, sort: true, orderBy: "taux_prestation_externes" }, { label: "Rotation du personnel", key: "rotationPersonnel", info: true, sort: true, orderBy: "taux_rotation_personnel" }, { label: "ETP vacants", key: "etpVacant", info: true, sort: true, orderBy: "taux_etp_vacants" }, @@ -116,6 +119,11 @@ export const ComparaisonPage = ({ listeAnnees, datesMisAjour }: ComparaisonPageP setDeleteET(!deleteEt); }; + const onClickAjoutEtablissement = () => { + comparaisonContext?.setTerme(""); + setIsShowAjoutEtab(true); + }; + return ( <>
@@ -135,7 +143,7 @@ export const ComparaisonPage = ({ listeAnnees, datesMisAjour }: ComparaisonPageP
{!isShowAjoutEtab && ( - )} diff --git a/src/frontend/ui/comparaison/ExportExcel.tsx b/src/frontend/ui/comparaison/ExportExcel.tsx index 5deafbefa..501319ba4 100644 --- a/src/frontend/ui/comparaison/ExportExcel.tsx +++ b/src/frontend/ui/comparaison/ExportExcel.tsx @@ -17,7 +17,7 @@ export function getCurrentDate() { } function getType(type: string | undefined) { - if(type === "Médico-social") return "Social et Médico-Social" + if (type === "Médico-social") return "Social et Médico-Social" else return type; } @@ -53,51 +53,51 @@ function getFavoris(favoris: RechercheViewModel[] | undefined, numeroFiness: str function transformData(data: any, favoris: RechercheViewModel[] | undefined) { return data.resultat.map((etab: ResultatSMS) => [ - etab.type || "-", + etab.type ?? "-", getFavoris(favoris, etab.numéroFiness), - etab.socialReason || "-", - etab.numéroFiness || "-", - etab.capacite || "-", - etab.realisationActivite || "-", - etab.fileActivePersonnesAccompagnes || "-", - etab.hebergementPermanent || "-", - etab.hebergementTemporaire || "-", - etab.acceuilDeJour || "-", - etab.prestationExterne || "-", - etab.rotationPersonnel || "-", - etab.etpVacant || "-", - etab.absenteisme || "-", - etab.tauxCaf || "-", - etab.vetusteConstruction || "-", - etab.roulementNetGlobal || "-", - etab.resultatNetComptable || "-" + etab.socialReason ?? "-", + etab.numéroFiness ?? "-", + etab.capacite ?? "-", + etab.realisationActivite ?? "-", + etab.fileActivePersonnesAccompagnes ?? "-", + etab.hebergementPermanent ?? "-", + etab.hebergementTemporaire ?? "-", + etab.acceuilDeJour ?? "-", + etab.prestationExterne ?? "-", + etab.rotationPersonnel ?? "-", + etab.etpVacant ?? "-", + etab.absenteisme ?? "-", + etab.tauxCaf ?? "-", + etab.vetusteConstruction ?? "-", + etab.roulementNetGlobal ?? "-", + etab.resultatNetComptable ?? "-" ]); } -function transformMoyenne(moyenne: MoyenneSMS ): (string | number)[] { +function transformMoyenne(moyenne: MoyenneSMS): (string | number)[] { return [ "Moyenne", "-", "-", "-", - moyenne.capaciteMoyenne || "-", - moyenne.realisationAcitiviteMoyenne || "-", - moyenne.fileActivePersonnesAccompagnesMoyenne || "-", - moyenne.hebergementPermanentMoyenne || "-", - moyenne.hebergementTemporaireMoyenne || "-", - moyenne.acceuilDeJourMoyenne || "-", - moyenne.prestationExterneMoyenne || "-", - moyenne.rotationPersonnelMoyenne || "-", - moyenne.etpVacantMoyenne || "-", - moyenne.absenteismeMoyenne || "-", - moyenne.tauxCafMoyenne || "-", - moyenne.vetusteConstructionMoyenne || "-", - moyenne.roulementNetGlobalMoyenne || "-", - moyenne.resultatNetComptableMoyenne || "-" + moyenne.capaciteMoyenne ?? "-", + moyenne.realisationAcitiviteMoyenne ?? "-", + moyenne.fileActivePersonnesAccompagnesMoyenne ?? "-", + moyenne.hebergementPermanentMoyenne ?? "-", + moyenne.hebergementTemporaireMoyenne ?? "-", + moyenne.acceuilDeJourMoyenne ?? "-", + moyenne.prestationExterneMoyenne ?? "-", + moyenne.rotationPersonnelMoyenne ?? "-", + moyenne.etpVacantMoyenne ?? "-", + moyenne.absenteismeMoyenne ?? "-", + moyenne.tauxCafMoyenne ?? "-", + moyenne.vetusteConstructionMoyenne ?? "-", + moyenne.roulementNetGlobalMoyenne ?? "-", + moyenne.resultatNetComptableMoyenne ?? "-" ] } -function ExportToExcel(header: string[], headerType: (string|undefined)[], headers: string[], data: (string | Number)[][], fileName: string, moyenneResultat: (string | Number)[]) { +function ExportToExcel(header: string[], headerType: (string | undefined)[], headers: string[], data: (string | Number)[][], fileName: string, moyenneResultat: (string | Number)[]) { const ws = XLSX.utils.aoa_to_sheet([header, headerType, [""], headers, moyenneResultat, ...data]); const wb = XLSX.utils.book_new(); XLSX.utils.book_append_sheet(wb, ws, "Comparaison"); @@ -138,7 +138,7 @@ async function generateAndExportExcel( "Fond de roulement net global (en €)", "Résultat net comptable (en €)" ]; - ExportToExcel(headerYear, headerType, headers, dataTransormed, fileName, moyenneTransformed); + ExportToExcel(headerYear, headerType, headers, dataTransormed, fileName, moyenneTransformed); } const ExportExcel = ({ diff --git a/src/frontend/ui/comparaison/ajout-etablissements/AjoutEtablissements.tsx b/src/frontend/ui/comparaison/ajout-etablissements/AjoutEtablissements.tsx index 59eddc83f..966048da8 100644 --- a/src/frontend/ui/comparaison/ajout-etablissements/AjoutEtablissements.tsx +++ b/src/frontend/ui/comparaison/ajout-etablissements/AjoutEtablissements.tsx @@ -137,8 +137,7 @@ export const AjoutEtablissements = ({ setIsShowAjoutEtab, setReloadTable }: Ajou