Les logiciels de gestion hôtelière et locative se coupent en deux à la frontière nuitée / mensuel : un PMS d’un côté, un registre de loyers de l’autre, et un propriétaire qui tient les deux à jour à la main. Le module Hébergements refuse cette coupure. Hôtel, complexe, appartement, condominium, maison de village et pension sont un seul type d’activité, avec un seul catalogue de types de chambres. Une même propriété prend une réservation de deux nuits et un bail d’un an depuis le même plan de chambres.
L’unité est le type de chambre, pas la chambre individuelle
Une propriété se décrit comme un ensemble de types de chambres — photos, tarif par nuit, quantité, description, équipements — plutôt que comme une liste de chambres configurées une à une. C’est la forme que prennent réellement la tarification et la disponibilité : huit chambres supérieures identiques sont un produit avec un compte de huit, et les traiter comme huit produits, c’est huit endroits où changer un tarif et huit occasions d’en oublier un. La navigation montre une grille ou une liste avec un prix « à partir de », la note et un badge de type.
La note vient de clients dont le séjour est prouvé
Cette note n’est pas un nombre saisi par le propriétaire. Comme toutes les notes dans Korat, elle est recalculée par un déclencheur à partir des avis, et seul un client dont la plateforme peut prouver le séjour peut en écrire un.
Tarifs saisonniers et promotions, calculés une fois et utilisés deux fois
Les tarifs bougent : Songkran (le nouvel an thaïlandais de mi-avril, une pointe de voyages), longs week-ends, basse saison, une promotion de quinze jours. Un type de chambre porte donc des règles tarifaires, chacune une plage de dates plus un ajustement en pourcentage ou en un montant fixe dans la devise propre à l’hébergement (souvent le baht, mais pas toujours — chaque commerce fixe la sienne). L’important n’est pas que les règles existent, c’est que le nombre affiché dans la liste et le nombre facturé à la réservation sortent du même utilitaire. Il n’y a pas de calcul d’affichage séparé qui pourrait prendre du retard sur le vrai.
L’échec classique de cette fonction, c’est un résultat de recherche calculé par un chemin de code et un paiement calculé par un autre : le client voit un prix que la propriété n’a jamais accepté, puis en paie un autre. Partager l’utilitaire rend ce désaccord structurellement impossible. Quand une règle promotionnelle s’applique, la carte montre le tarif de base barré avec un badge.
Une réservation est une demande que la propriété confirme
La réservation en ligne recueille les dates d’arrivée et de départ, le client et un numéro de téléphone, puis atterrit dans la boîte de réservations de la propriété. Le propriétaire la confirme. Le compteur en attente s’affiche sur le tableau de bord de la console sous forme de pastille rafraîchie toutes les quelques secondes, aux côtés des autres choses qu’un commerce est censé traiter — ce n’est donc pas une file que quelqu’un doit penser à ouvrir.
Les demandes de service en chambre arrivent dans la même console
En cours de séjour, un client peut envoyer des demandes de service en chambre depuis l’app ; elles arrivent dans la même console. C’est une petite fonction à l’effet démesuré sur la façon dont tourne une petite propriété, parce que l’alternative est un téléphone dans une chambre auquel personne ne répond, ou une marche jusqu’à la réception.
Une réservation est une réservation, pas un prépaiement. Le parcours recueille dates, client et téléphone, et la propriété confirme. Korat ne prend pas de carte à la réservation, ne bloque pas de caution et ne traite pas le règlement de la chambre.
Il en va de même pour une facture mensuelle : elle est générée, montrée au locataire et porte un indicateur de paiement que le propriétaire coche. Cet indicateur enregistre que l’argent est arrivé ; il ne le déplace pas.
Le plan des chambres et la console du propriétaire
La console donne quatre tuiles : un plan des chambres avec arrivées et départs, un gestionnaire de types de chambres incluant les règles de saison, la boîte de réservations et les locations mensuelles. Le plan est l’écran où vit une réception — occupation d’un coup d’œil et les deux actions qui la changent — tandis que le gestionnaire de types est l’endroit où tarifs, quantités, équipements et règles se modifient une seule fois.
Rapports, fichier client et RH : les tuiles communes
Autour s’ajoutent les tuiles communes à tous les types d’activité : rapports (chiffre d’affaires, nombre de commandes, panier moyen, répartition espèces / PromptPay / autre, cinq meilleures ventes, histogramme sur sept jours, réimpression de reçu et texte de reçu partageable — Une facture fiscale ne peut pas être émise : seul un assujetti à la TVA peut le faire, et rien dans ce système n’enregistre encore l’assujettissement d’un commerce.), CRM bâti sur le registre des ventes avec notes, étiquettes, historique, points et tampons, et RH avec pointage GPS, congés, plannings et paie.
Baux mensuels : le relevé devient une facture
C’est ici que le module cesse de ressembler à un système hôtelier. Un type de chambre porte sa propre configuration de loyer et de charges ; une chambre porte un locataire et une caution ; et chaque mois le propriétaire saisit les relevés d’eau et d’électricité. La facture est générée à partir de ces relevés — le relevé est l’entrée, la facture est la sortie, et le calcul n’est pas fait sur papier puis recopié en total invérifiable. Chaque facture porte un indicateur de paiement, donc la liste des impayés est une requête et non un souvenir.
C’est la partie de la gestion d’un petit immeuble qui produit le plus de litiges, précisément parce qu’elle se fait d’ordinaire dans un cahier. Garder les relevés à côté du bail permet de remonter d’une facture aux deux nombres dont elle sort — une bien meilleure réponse à « pourquoi est-ce plus cher ce mois-ci » qu’un recalcul depuis zéro. Le bail d’une chambre et la location d’un objet contre caution partagent un même module : voir locations.
Deux modules reviennent souvent dans une propriété. Les rendez-vous quand elle tient un spa ou une salle de soins, et le stationnement, qui délivre des abonnements mensuels liés à une plaque pour les résidents réguliers.
Permissions du personnel, et ce que le client ne voit jamais
L’accès à la console repose sur une matrice de permissions : treize capacités de base plus celles qu’ajoutent les modules installés, des préréglages de rôles — propriétaire, gérant, service, cuisine, employé — et des dérogations par personne. Les tuiles disparaissent quand un membre n’a pas la capacité, et un membre qui n’a encore aucune permission voit un état explicite « vous n’avez pas encore de permissions » plutôt qu’un écran vide qui se lit comme une panne.
Dans l’app Android, ces contrôles s’exécutent sur le client. La même matrice existe en base sous has_capability(business_id, capability), utilisée par les politiques de sécurité au niveau des lignes et développée côté serveur, pour que le serveur ne fasse jamais confiance à l’idée que le client se fait d’un rôle — mais il serait exagéré de dire que toute la console est appliquée côté serveur aujourd’hui, donc nous ne le disons pas.