28 lines
964 B
TypeScript
28 lines
964 B
TypeScript
/**
|
|
* 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<typeof getInvoicePeriodDate>[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);
|
|
}
|