diff --git a/shared/utils/anneeScolaire.ts b/shared/utils/anneeScolaire.ts index 6ec2487e1..f092fc7b6 100644 --- a/shared/utils/anneeScolaire.ts +++ b/shared/utils/anneeScolaire.ts @@ -24,12 +24,15 @@ export function getAnneesScolaireListFromDate(date: Date): string[] { */ export function getAnneeScolaireFromDate(date: Date): string { const year = date.getUTCFullYear(); - return date.getMonth() < AUGUST_MONTH_INDEX ? `${year - 1}-${year}` : `${year}-${year + 1}`; + return date.getUTCMonth() < AUGUST_MONTH_INDEX ? `${year - 1}-${year}` : `${year}-${year + 1}`; } /** * Retourne la date de l'instantané SIFA. (exemple : 31 décembre 2023 si pendant l'année scolaire 2023-2024) */ export function getSIFADate(date: Date): Date { - return zonedTimeToUtc(date.getMonth() < AUGUST_MONTH_INDEX ? subYears(endOfYear(date), 1) : endOfYear(date), "UTC"); + return zonedTimeToUtc( + date.getUTCMonth() < AUGUST_MONTH_INDEX ? subYears(endOfYear(date), 1) : endOfYear(date), + "UTC" + ); } diff --git a/ui/modules/mon-espace/SIFA/SIFAPage.tsx b/ui/modules/mon-espace/SIFA/SIFAPage.tsx index 329641d01..7e1b1c7dd 100644 --- a/ui/modules/mon-espace/SIFA/SIFAPage.tsx +++ b/ui/modules/mon-espace/SIFA/SIFAPage.tsx @@ -1,19 +1,36 @@ -import { Center, Heading, Spinner, Box, Flex, Text, HStack, VStack, Switch, Container } from "@chakra-ui/react"; +import { + Center, + Heading, + Spinner, + Box, + Flex, + Text, + HStack, + Switch, + Container, + FormControl, + FormLabel, + UnorderedList, + ListItem, +} from "@chakra-ui/react"; import { useQuery, useQueryClient } from "@tanstack/react-query"; import groupBy from "lodash.groupby"; import { useEffect, useMemo, useRef, useState } from "react"; import { useRecoilValue, useSetRecoilState } from "recoil"; -import { getAnneeScolaireFromDate, getSIFADate } from "shared"; +import { getSIFADate } from "shared"; import { _get, _getBlob } from "@/common/httpClient"; import { downloadObject } from "@/common/utils/browser"; import DownloadButton from "@/components/buttons/DownloadButton"; +import Link from "@/components/Links/Link"; +import Ribbons from "@/components/Ribbons/Ribbons"; import { organismeAtom } from "@/hooks/organismeAtoms"; import { usePlausibleTracking } from "@/hooks/plausible"; import useToaster from "@/hooks/useToaster"; import { effectifsStateAtom } from "@/modules/mon-espace/effectifs/engine/atoms"; import EffectifsTable from "@/modules/mon-espace/effectifs/engine/EffectifsTable"; import { Input } from "@/modules/mon-espace/effectifs/engine/formEngine/components/Input/Input"; +import { DownloadLine, ExternalLinkLine } from "@/theme/components/icons"; import { DoubleChevrons } from "@/theme/components/icons/DoubleChevrons"; function useOrganismesEffectifs(organismeId: string) { @@ -97,7 +114,7 @@ const SIFAPage = (props: SIFAPageProps) => { return ( - + {props.modePublique ? "Son" : "Mon"} Enquête SIFA { - + + + + + + + Pour faciliter la remontée d’information avec les données demandées par l’enquête + SIFA, le tableau de bord vous permet de réaliser les contrôles, compléter les éventuelles données + manquantes et générer un fichier compatible à déposer sur la{" "} + + plateforme SIFA + + + . + + + La remontée SIFA est annuelle. La date d’observation est fixée au{" "} + 31 décembre de l’année N et l’ouverture de l’application permettant la collecte est + prévue début janvier. + + + + + Fichier d’instruction SIFA (2022) + + + + PDF – 473 ko + + + + + + Attention + + + Vérifiez que tous vos apprentis soient bien présents dans le fichier. Sinon, complétez-le. + + + + + Vous avez {organismesEffectifs.length} effectifs au total, en contrat au 31 décembre{" "} - {getSIFADate(new Date()).getUTCFullYear()}, sur l'année scolaire{" "} - {getAnneeScolaireFromDate(getSIFADate(new Date()))}. Pour plus de facilité, vous pouvez effectuer une - recherche, ou filtrer par année. + {getSIFADate(new Date()).getUTCFullYear()}. - setSearchValue(value.trim())} - value={searchValue} - w="35%" - /> - - - - - - Filtrer: - - + + setSearchValue(value.trim())} + value={searchValue} + w="35%" + mb={0} + /> + + { setShowOnlyMissingSifa(e.target.checked); }} + mr={2} /> - Afficher uniquement les données manquantes pour SIFA - + + Afficher uniquement les données manquantes pour SIFA + + - + {Object.entries(organismesEffectifsGroupedBySco).map(([anneSco, orgaE]: [string, any]) => { diff --git a/ui/public/InstructionsSIFA_31122022.pdf b/ui/public/InstructionsSIFA_31122022.pdf new file mode 100644 index 000000000..97dabf8d0 Binary files /dev/null and b/ui/public/InstructionsSIFA_31122022.pdf differ