import type { INVOICE_STATUSES } from "../constants/index.js";

export type InvoiceStatus = (typeof INVOICE_STATUSES)[number];

export type Invoice = {
  id: string;
  organizationId: string;
  clientId: string;
  /** Numéro de facture tel qu'émis par l'utilisateur (peut contenir des lettres). */
  numero: string;
  /** Montant TTC en centimes (toujours int, jamais float). */
  amountTtcCents: number;
  /** Date d'émission, ISO 8601. */
  issueDate: string;
  /** Date d'échéance, ISO 8601. */
  dueDate: string;
  status: InvoiceStatus;
  /** Plan de relance associé (null si la facture n'est pas encore programmée). */
  planId: string | null;
  /** Clé MinIO du PDF source, si uploadé. */
  pdfStorageKey: string | null;
  notes: string | null;
  /** Combien de rubis cette facture a fait gagner (calculé côté API). */
  rubisEarned: number;
  createdAt: string;
  updatedAt: string;
};

/** Filtres de la liste factures, encodés dans les search params (TanStack Router). */
export type InvoiceListFilters = {
  status?: InvoiceStatus | "all";
  q?: string;
  clientId?: string;
  page?: number;
};
