-- Un sejour disparu du flux n'est pas forcement annule : il est le plus souvent TERMINE.
--
-- Airbnb et Booking ne publient que les sejours a venir. Une location passee sort du
-- calendrier au bout de quelques jours, exactement comme le ferait une annulation : dans
-- les deux cas l'evenement cesse d'etre la. La reconciliation ne voyait que la
-- disparition et concluait a l'annulation, si bien que TOUT sejour finissait par
-- s'afficher « Sejour annule » — y compris ceux qui s'etaient parfaitement deroules.
--
-- La date tranche : un sejour dont le depart est passe et qui quitte le flux est termine ;
-- un sejour a venir qui le quitte est bien annule.

ALTER TABLE reservations
  MODIFY COLUMN statut ENUM('active', 'annulee', 'terminee')
    NOT NULL DEFAULT 'active';

-- Reparation des sejours deja mal classes.
--
-- Seules les reservations VENUES D'UN FLUX sont concernees : une annulation saisie a la
-- main est une decision du concierge, pas une deduction, et doit le rester meme si le
-- sejour est passe depuis. annulee_le est efface, cette date n'ayant plus d'objet.
UPDATE reservations
   SET statut = 'terminee', annulee_le = NULL, modifie_le = NOW()
 WHERE statut = 'annulee'
   AND source_ical_id IS NOT NULL
   AND fin <= CURDATE();
