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

/**
 * Visite de l'éditeur de facture (TL-301).
 *
 * Le même écran sert la saisie d'un brouillon ET la consultation d'une pièce
 * émise : sur une pièce émise, les cartes de saisie ne sont pas rendues, d'où
 * les étapes `optional`. Totaux, aperçu et actions sont présents dans les deux
 * cas.
 *
 * Faits vérifiés dans `FactureService` / `FactureTotaux` / `FactureCycleController` :
 *  - aucun montant n'est calculé dans le navigateur : l'aperçu et les totaux
 *    reviennent du serveur, avec le gabarit du PDF ;
 *  - l'émission refuse une date future, ou antérieure à la dernière pièce émise ;
 *  - une pièce émise ne se modifie ni ne se supprime — un avoir la corrige ;
 *  - l'envoi part immédiatement, PDF joint, et n'est marqué « envoyé » que si le
 *    serveur de messagerie l'a accepté.
 *
 * Ancres dans `resources/js/pages/factures/edit.tsx`.
 * Textes dans `lang/{fr,en}/tours.php`, clés `factureEdit.<key>.title|content`.
 */
export const factureEditTour: AppTour = {
    id: 'factureEdit',
    components: ['factures/edit'],
    steps: [
        // Cartes de saisie : absentes sur une pièce émise.
        { anchor: 'factures-edit-document', key: 'document', order: 10, optional: true },
        { anchor: 'factures-edit-client', key: 'client', order: 20, optional: true },
        { anchor: 'factures-edit-lines', key: 'lines', order: 30, optional: true },
        // Fondement d'une ligne à 0 % de TVA : le champ n'existe que si une telle ligne existe.
        { anchor: 'factures-edit-exoneration', key: 'exoneration', order: 35, optional: true },
        { anchor: 'factures-edit-totals', key: 'totals', order: 40 },
        { anchor: 'factures-edit-preview', key: 'preview', order: 50 },
        // Absent sur une pièce émise, et sans le droit d'émettre.
        { anchor: 'factures-edit-emit', key: 'emit', order: 60, permission: 'facture.emettre', optional: true },
        { anchor: 'factures-edit-actions', key: 'actions', order: 70 },
        // Facture émise non payée seulement, avec les droits d'émettre ET de créer.
        { anchor: 'factures-edit-corriger', key: 'corriger', order: 75, permission: 'facture.emettre', optional: true },
    ],
};
