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

/**
 * Visite du formulaire de réservation (création et modification).
 *
 * Une visite pour les deux écrans : même formulaire, mêmes pièges. Les étapes
 * propres à l'un sont `optional`.
 *
 * Faits vérifiés dans `ReservationsController` / `ReservationService` :
 *  - le sélecteur « nouvelle / ancienne » change tout le circuit : une
 *    « ancienne » n'est PAS envoyée aux canaux, ne bloque aucune date et
 *    n'envoie aucun courriel ;
 *  - la disponibilité n'est vérifiée qu'au moment de l'envoi, par le canal
 *    lui-même — le refus revient traduit en français ;
 *  - la réduction ne s'applique qu'au sous-total des nuits, jamais au ménage
 *    ni aux frais de service ;
 *  - « Avance » crée un véritable encaissement — à la création SEULEMENT ;
 *  - en modification, rien n'est renvoyé aux canaux si les dates et le nombre
 *    de voyageurs n'ont pas changé.
 *
 * Textes dans `lang/{fr,en}/tours.php`, clés `reservationForm.<key>.title|content`.
 */
export const reservationFormTour: AppTour = {
    id: 'reservationForm',
    components: ['reservations/create', 'reservations/edit'],
    steps: [
        // Création seulement.
        { anchor: 'reservation-type', key: 'type', order: 10, optional: true },
        { anchor: 'reservation-client', key: 'client', order: 20, optional: true },
        { anchor: 'reservation-reduction', key: 'reduction', order: 30, optional: true },
        { anchor: 'reservation-advance', key: 'advance', order: 40, optional: true },
        { anchor: 'reservation-recap', key: 'recap', order: 50, optional: true },
        // Modification seulement, et seulement si le séjour a été prolongé.
        { anchor: 'reservation-edit-locked', key: 'locked', order: 60, optional: true },
    ],
};
