/** * Date métier utilisée pour les listes de factures : date de facture si elle * est connue, sinon date de réception. Cette règle est partagée avec BAP. */ export function getInvoicePeriodDate(invoice: { invoiceDate?: Date | string | number | null; createdAt?: Date | string | number | null; }): Date | null { const value = invoice.invoiceDate ?? invoice.createdAt; if (!value) return null; const date = value instanceof Date ? value : new Date(value); return Number.isNaN(date.getTime()) ? null : date; } /** Indique si une facture correspond au filtre Année/Mois sélectionné. */ export function matchesInvoicePeriod( invoice: Parameters[0], year: string, month: string, ): boolean { if (year === "all") return true; const date = getInvoicePeriodDate(invoice); if (!date || date.getFullYear() !== Number(year)) return false; return month === "all" || date.getMonth() + 1 === Number(month); }