Administration
Agenda groupé par échéance, calendrier mois semaine jour, et la page Options avec les types de rendez-vous, intervenants, horaires et liens.
La section Rendez-vous compte trois entrées : Rendez-vous, Calendrier et Options.
Les deux premières sont sous booking.view, et l'écriture y demande booking.manage. Options a sa propre permission, booking.options : la page n'offre que des réglages, et qui prend les rendez-vous à l'accueil n'a pas à pouvoir recâbler l'horaire. L'entrée disparaît de la barre latérale sans la permission, et l'URL refuse de la même façon.
Les trois se composent librement dans un rôle. booking.view et booking.manage sans booking.options donnent un poste qui crée, déplace et annule des rendez-vous sans toucher aux types, aux intervenants, aux horaires ni aux liens. Le formulaire de création continue de proposer les types et les intervenants : les lire relève de booking.view.
Rendez-vous
/admin/booking/agenda, la page d'accueil de la section.
Quatre tuiles en haut, puis le prochain rendez-vous mis en avant, puis les rendez-vous empilés par échéance : En cours, Aujourd'hui, Demain, Cette semaine, Plus tard.
Un groupe vide disparaît au lieu d'annoncer son vide, ce qui garde la page aussi courte que la journée est calme. Le regroupement est calculé côté serveur, dans le fuseau du site : un admin ouvert depuis une autre province voit la journée telle que l'entreprise la vit.
Le bandeau du prochain rendez-vous est une fiche, pas un titre : l'heure et la date à gauche, derrière le filet de couleur du type, puis le nom, le type, la durée, l'intervenant, le lieu, l'état et la note du client. Il se lit, il ne se travaille pas : la carte entière ouvre la fiche, et les actions restent dans le menu plutôt que dans des boutons qui rivaliseraient avec le nom.
Les demandes en attente d'approbation apparaissent au-dessus, dans un bandeau ambre, parce qu'elles bloquent un créneau tant qu'elles ne sont pas tranchées.
Chaque ligne ouvre la fiche du rendez-vous et porte un menu d'actions :
| Action | Effet |
|---|---|
| Approuver | Confirme une demande en attente et envoie le courriel de confirmation. |
| Déplacer | Ouvre la liste des créneaux libres, puis prévient le client. |
| Marquer terminé | Écriture de suivi. Le créneau reste occupé. |
| Marquer absent | Idem, pour un client qui ne s'est pas présenté. |
| Annuler | Libère le créneau et prévient le client. |
Le formulaire de création répond lui-même aux choix qui n'en sont pas : s'il n'existe qu'un seul type de rendez-vous, il est retenu d'office, et s'il n'existe qu'un seul intervenant autorisé, il l'est aussi. Le champ reste affiché, pour que la réponse se lise et qu'elle change le jour où un second existe.
Cela ne vaut que là où le vide veut dire « pas encore répondu ». Le filtre « Tous les intervenants » du calendrier, la portée vide d'un lien de réservation et « Toute l'organisation » d'une exception veulent tous dire autre chose que l'unique entrée de leur liste, et restent donc vides.
Annuler et supprimer ne sont pas la même chose. L'annulation garde l'histoire et le lien du client continue d'expliquer ce qui s'est passé. La suppression est réservée à une erreur qui n'aurait jamais dû exister.
Calendrier
/admin/booking/calendrier. Les mêmes rendez-vous, en vue Mois, Semaine ou Jour, avec les filtres par intervenant et par type.
Cliquer un créneau vide ouvre la création avec la date et l'heure déjà posées. Cliquer un rendez-vous ouvre sa fiche.
La grille est le composant Calendar du core, qui ne sait rien des rendez-vous : le module lui passe des instants résolus et récupère l'instant cliqué.
Options
/admin/booking/options. Quatre onglets, un par objet à régler : Types de rendez-vous, Intervenants, Horaires et Liens de réservation. Ils se règlent une fois puis se laissent tranquilles, ce qui est la raison de les réunir : quatre entrées de plus dans la barre latérale les feraient ressembler à autant de travail quotidien que l'agenda.
L'onglet est dans l'adresse, /admin/booking/options/<onglet> : un rechargement le garde, un formulaire se referme sur celui d'où il a été ouvert, et un lien vers un onglet s'envoie.
Types de rendez-vous
/admin/booking/options/types. Ce qu'un client peut réserver.
| Réglage | Effet |
|---|---|
| Durée | La longueur du rendez-vous, de 5 à 1440 minutes. |
| Tampons avant et après | Du temps réservé autour, invisible au client, qui empêche le créneau voisin. |
| Pas de la grille | L'espacement des créneaux offerts, indépendant de la durée. |
| Places par créneau | Au-delà de 1, le créneau devient un atelier : N clients, une personne, une heure. |
| Lieu | Sur place, par téléphone, en visioconférence, ou autre. L'adresse et le lien ne partent qu'une fois le rendez-vous pris. |
| Prix indicatif | Affiché au client. Jamais encaissé. |
| Délai, horizon, confirmation | Vides, ils suivent l'environnement. Renseignés, ils le surchargent pour ce type. |
| Intervenants autorisés | Sans intervenant, le type n'est pas réservable du tout. S'il n'en existe qu'un, un nouveau type lui est confié d'office. |
| Questions supplémentaires | Texte, texte long, choix ou case à cocher, posées au client au moment de réserver. |
Une question supplémentaire garde son identifiant à vie. Les réponses sont stockées avec leur libellé : renommer une question plus tard ne rend pas illisibles les rendez-vous passés.
Intervenants
/admin/booking/options/intervenants. Les personnes qui reçoivent.
Une fiche appartient au module, pas au système de comptes : un intervenant externe n'a aucune raison d'avoir un accès admin. Le champ Compte LRVO relie les deux quand ils coïncident, et reste facultatif.
Le courriel est ce qui permet de prévenir la personne de ses propres rendez-vous. Sans lui, seule l'administration est avertie.
Horaire propre remplace entièrement l'horaire de l'organisation, jour par jour compris. Quelqu'un qui ne travaille que du lundi au mercredi déclare trois jours, et le reste est fermé : hériter du jeudi de l'organisation serait une surprise, pas une commodité.
Un intervenant qui porte des rendez-vous ne se supprime pas. L'interface propose la désactivation, qui l'écarte des nouvelles réservations sans toucher à l'existant.
Horaires
/admin/booking/options/horaires. L'horaire de l'organisation, et les exceptions datées.
Sept jours, autant de plages que nécessaire par jour. La pause du midi est le trou entre deux plages, pas un réglage. Une plage ne traverse pas minuit : une ouverture de 22 h à 2 h s'écrit en deux plages, sur deux jours.
Deux plages du même jour ne peuvent pas se chevaucher, et le refus nomme le jour et l'heure en cause.
Les exceptions bendent l'horaire à une date précise :
| Genre | Effet |
|---|---|
| Fermeture, sans heures | La journée entière est fermée. |
| Fermeture, avec heures | Cette tranche est retirée de la journée. |
| Ouverture, avec heures | Ces heures remplacent l'horaire de la journée. |
Une exception porte soit sur toute l'organisation, soit sur un intervenant. L'ordre d'application est le suivant :
- une fermeture globale de journée entière ferme tout le monde, même un intervenant à horaire propre ;
- sinon, la couche de l'intervenant s'il en a une ;
- sinon, la couche globale ;
- sinon, l'horaire hebdomadaire.
Les fermetures partielles, globales comme personnelles, sont retranchées en dernier : un bureau fermé de midi à treize heures l'est pour tout le monde, quoi qu'il ait été mis à la place du reste de la journée.
Liens de réservation
/admin/booking/options/liens. Voir Réservation en ligne.
Panneau du tableau de bord
Le module pose une tuile sur /admin : les cinq prochains rendez-vous, et une ligne d'alerte quand des demandes attendent une approbation. Elle disparaît pour qui n'a pas booking.view, et sa donnée n'est même pas collectée dans ce cas.
La tuile ne porte aucun compteur : les chiffres se lisent sur l'agenda, en tête de la page qui les explique. Ici, la liste dit déjà par son nom et par son heure ce qu'un compteur aurait redit en chiffre.
Les cinq rendez-vous sont groupés par échéance, dans les mots de l'agenda : En cours, Aujourd'hui, Demain, puis une date par journée. Chaque ligne ne porte que son heure, et c'est le titre du groupe qui la date : une heure seule se lit comme une heure d'aujourd'hui. La coupe est faite sur le serveur, dans le fuseau du site.
Un rendez-vous commencé reste dans la liste jusqu'à sa fin, sous En cours. Le badge de statut n'apparaît que là où le statut appelle quelque chose : un rendez-vous confirmé n'en porte pas.
La tuile passe devant celles de @lrvo/module-drive et derrière celle de @lrvo/module-billing : les rendez-vous du jour se lisent avant les fichiers récents.