import type { AppTour } from '../types';

/**
 * Visite de la liste des factures (TL-301).
 *
 * Faits vérifiés dans `FacturePageService` / `FactureNumerotation` :
 *  - « À encaisser » ne compte que les FACTURES émises non payées, par devise —
 *    ni les proformas, ni les avoirs, ni les brouillons ;
 *  - « En retard » n'est pas un statut enregistré : échéance passée et non payée ;
 *  - le numéro n'est donné qu'à l'émission ; la série repart à 1 chaque année ;
 *  - la reprise de numérotation ne peut qu'avancer ;
 *  - la période (PeriodeListe) range les pièces par DATE DE FACTURE et s'ouvre
 *    sur le mois en cours ; « Brouillons » et « Facturé HT » suivent la
 *    période, « À encaisser » et « En retard » portent sur TOUTES les périodes
 *    (avoirs partiels déduits) ; « Facturé HT » déduit les avoirs émis et
 *    ignore brouillons et proformas.
 *
 * Ancres dans `resources/js/pages/factures/index.tsx`.
 * Textes dans `lang/{fr,en}/tours.php`, clés `factures.<key>.title|content`.
 */
export const facturesTour: AppTour = {
    id: 'factures',
    components: ['factures/index'],
    steps: [
        { anchor: 'factures-periode', key: 'periode', order: 5 },
        { anchor: 'factures-kpis', key: 'kpis', order: 10 },
        { anchor: 'factures-tabs', key: 'tabs', order: 20 },
        { anchor: 'factures-filters', key: 'filters', order: 30 },
        { anchor: 'factures-new', key: 'new', order: 40, permission: 'facture.create', optional: true, openOnEnter: true },
        // PDF / Excel de la vue affichée (FactureExport) : même période, onglet, type et recherche.
        { anchor: 'factures-export', key: 'export', order: 45 },
        { anchor: 'factures-numbering', key: 'numbering', order: 50, permission: 'facture.emettre', optional: true },
        { anchor: 'factures-table', key: 'table', order: 60 },
        // Case d'en-tête de la suppression groupée : bureau seulement, et seulement avec `facture.delete`.
        { anchor: 'factures-selection', key: 'selection', order: 65, permission: 'facture.delete', optional: true },
    ],
};
