fix: Détection intelligente de l'année suivante pour les dates en janvier/février/mars
Problème: Quand on sélectionnait des dates en janvier 2026 depuis un contrat en décembre 2025, les dates étaient converties en janvier 2025. Solution: Amélioration de la fonction parseFrenchedDate pour détecter automatiquement si une date est dans l'année suivante: - Si le mois de la date est janvier/février/mars (1-3) - ET que le mois du contexte (dateDebut/dateFin) est oct/nov/déc (10-12) - Alors on utilise l'année suivante Exemple: Contrat du 15/12/2025 au 20/01/2026 - Les dates de janvier seront correctement converties en 2026 au lieu de 2025
This commit is contained in:
parent
c148c46796
commit
ec3d0b3ad7
1 changed files with 14 additions and 1 deletions
|
|
@ -33,6 +33,10 @@ export function formatDateFr(isoStr: string): string {
|
|||
/**
|
||||
* Convertit une date française (DD/MM) en ISO (YYYY-MM-DD)
|
||||
* Nécessite l'année de contexte
|
||||
*
|
||||
* Logique intelligente : si le mois de la date est janvier/février/mars (1-3)
|
||||
* et que le mois du contexte est octobre/novembre/décembre (10-12),
|
||||
* on suppose que c'est l'année suivante.
|
||||
*/
|
||||
export function parseFrenchedDate(frStr: string, yearContext: string): string {
|
||||
const cleaned = frStr.trim();
|
||||
|
|
@ -41,7 +45,16 @@ export function parseFrenchedDate(frStr: string, yearContext: string): string {
|
|||
const [day, month] = cleaned.split("/");
|
||||
if (!day || !month) return "";
|
||||
|
||||
const year = yearContext.split("-")[0];
|
||||
let year = yearContext.split("-")[0];
|
||||
const monthNum = parseInt(month, 10);
|
||||
const contextMonthNum = parseInt(yearContext.split("-")[1], 10);
|
||||
|
||||
// Si la date est en janvier/février/mars ET que le contexte est en oct/nov/déc
|
||||
// alors c'est probablement l'année suivante
|
||||
if (monthNum >= 1 && monthNum <= 3 && contextMonthNum >= 10 && contextMonthNum <= 12) {
|
||||
year = String(parseInt(year, 10) + 1);
|
||||
}
|
||||
|
||||
return `${year}-${month.padStart(2, "0")}-${day.padStart(2, "0")}`;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue