Aide — RestoTrax
Ce guide couvre tous les écrans, ce que chacun garantit, et ce qu'il refuse. Il est écrit pour être lu une fois en entier, puis consulté par sa table des matières.
1. Les six écrans, et qui les utilise
| Écran | Adresse | Qui | Compte requis |
|---|---|---|---|
| Borne | /borne | le client, seul | non — elle est anonyme |
| Comptoir | /comptoir | le vendeur | oui |
| Mobile | /mobile | le serveur en salle | oui |
| Cuisine | /cuisine | la cuisine | oui |
| Écran d'appel | /appel | affiché au mur | non — c'est un écran public |
| Gestion | /admin | le patron | oui |
Les droits ne viennent jamais de l'écran. Le même téléphone dans la main du patron et dans celle d'un serveur embauché hier ne donne pas les mêmes pouvoirs : c'est la matrice des rôles qui décide, et elle seule.
2. Prendre une commande
2.1 Le canal, d'abord
Chaque commande commence par sur place, à emporter ou livraison. Ce n'est pas une politesse : le canal décide du prix et du taux de TVA. Il ne se devine pas après coup, et c'est une information qui ne se reconstitue jamais.
2.2 Choisir des plats
Les plats sont rangés par rayons. Sur la borne, un seul rayon est affiché à la fois et la barre du haut permet d'en changer d'un geste. Au comptoir, tous les rayons sont empilés — on y cherche à la souris.
Ce que le client voit et ce que le vendeur voit diffèrent volontairement :
- le client ne voit que ce qui est disponible. Un plat proposé puis refusé, c'est une déception et un remboursement ;
- le vendeur voit aussi les ruptures, grisées et marquées. C'est ce qu'il doit pouvoir annoncer à qui le demande.
2.3 Les menus se composent
Un menu n'entre pas directement dans le panier : il ouvre un composeur, un étage à la fois. Les suppléments sont affichés sur le choix qui les porte (« + 1,50 € »), jamais découverts au total — un prix qui change après le choix est la première cause d'abandon devant une borne.
Un menu entre ensuite au panier ventilé, une ligne par étage. C'est indispensable : un menu couvre plusieurs taux de TVA (un plat et une boisson n'ont pas le même), et une ligne unique en porterait un seul. Le client paierait le même prix, et la TVA déclarée serait fausse.
2.4 La livraison
Trois champs, et aucun n'est décoratif :
- l'adresse — sans elle, la commande ne pourra être ni livrée ni analysée ;
- le téléphone — pour rappeler le client, et c'est aussi sa carte de fidélité ;
- la distance en kilomètres — le périmètre est un rayon, et un rayon ne dit rien sans la distance de l'adresse.
Le refus nomme toujours son motif : « hors zone » et « sous le minimum » n'appellent pas la même réponse au téléphone.
2.5 La carte de fidélité
Le client donne son numéro de téléphone ; il sert uniquement à compter ses commandes. Au bout du seuil déclaré, la suivante est remisée.
Trois garanties :
- le même numéro écrit autrement reste le même client — « 06 12 34 56 78 », « 0612345678 » et « +33 6 12 34 56 78 » ouvrent la même carte ;
- un rechargement de page ne compte pas deux passages ;
- la remise se consomme et le compteur repart de zéro. Sans cela, toutes les commandes suivantes seraient remisées — et personne ne s'en plaindrait jamais.
La remise s'applique ligne à ligne, pour que chaque ligne garde son taux de TVA.
3. La cuisine
L'écran cuisine montre les commandes dans l'ordre d'arrivée, avec le temps écoulé — c'est la décision de la cuisine : quoi lancer d'abord. Au-delà du seuil déclaré, le ticket passe en rouge.
Aucun prix n'y figure. Ce serait du bruit là où il faut lire vite, et cela exposerait le chiffre d'affaires à tout le passage.
Le cycle de vie d'une commande :
commandée → en préparation → prête → servie
↘ (renvoyer) ↙
toutes sauf « servie » → annulée
- « prête » n'est pas « servie ». Confondre les deux effacerait le seul délai qu'on ne peut pas reconstituer : le temps pendant lequel un plat attend sur le passe. C'est lui qui dit s'il faut un runner de plus ;
- une commande servie ne s'annule plus. Après, ce n'est plus une annulation mais un geste commercial, qui ne se compte pas dans les mêmes statistiques ;
- une annulation exige un motif, et la commande est conservée. Sans les annulations, l'historique ne décrit que les succès.
4. L'écran d'appel
Affiché en salle, sans compte. Deux colonnes : « en préparation » et « prêt — à retirer », la seconde deux fois plus grosse, parce que c'est la seule qui appelle un geste.
Il n'affiche que des numéros. Ni nom, ni plat, ni montant, ni téléphone. Un écran de salle est lu par tout le monde : « California saumon pour 06 99 88 77 66 » dirait à la salle entière ce que mange le client et comment le joindre.
Le son
Un bouton « Activer le son » apparaît à l'allumage. Il faut le presser une fois, et cela n'est pas un oubli de notre part : aucun navigateur ne joue un son sans un geste humain préalable. C'est une protection contre les publicités sonores, elle s'applique aussi à nous, et elle ne se contourne pas.
Une fois armé, un carillon retentit uniquement quand un numéro devient prêt — jamais sur la liste entière. Un écran qui sonne à chaque rafraîchissement est un écran qu'on débranche.
Pour un afficheur poussif ou une salle où l'on ne veut pas de son : /appel?muet=1.
5. La gestion
5.1 La carte
/admin/carte — rayons, plats, nature (qui décide la TVA), temps de préparation, allergènes.
⚠️ Les allergènes saisis engagent l'exploitant. Ceux qui avaient été déduits des libellés ne valent pas déclaration : ils sont à confirmer en cuisine. Et « non renseigné » n'est jamais affiché comme « sans allergène ».
5.2 Les prix
/admin/prix — un prix par canal, et daté. Poser un prix clôt l'ancien au lieu de l'effacer : un ticket de mars se recalcule au prix de mars.
5.3 Les fiches techniques
/admin/fiches — les grammages, plat par plat. Sans eux, aucune marge n'est calculable, et l'application refuse d'en inventer une.
L'écran affiche ce qui reste à saisir, et distingue deux manques qu'il ne faut pas confondre :
- « à saisir » — rien n'a été écrit, c'est à vous ;
- « en attente d'une facture » — les grammages sont là, mais une matière n'a pas encore de prix. Celui-là se comble tout seul à la prochaine livraison. Le signaler comme une tâche vous enverrait travailler pour rien.
⚠️ Les quantités sont dans l'unité ACHETÉE. Le riz s'achète cru et se sert cuit : le noter cuit surévaluerait le coût matière de 140 %, sans qu'aucune erreur ne soit levée.
5.4 Les matières et les factures
/admin/matieres — ce qui entre en stock, et dans quelle unité. La changer après coup fausse tous les coûts.
/admin/relecture — rattacher un code fournisseur à une matière. Aucune suggestion n'est présélectionnée : une liste ouverte sur la meilleure suggestion se valide d'un clic distrait, et une matière mal rattachée fausse la marge de tous les plats qui la contiennent, pendant des mois. Une correspondance déclarée une fois ressert à chaque facture.
5.5 Les charges et le seuil de rentabilité
/admin/charges — le montant de chaque échéance, pas son équivalent mensuel : une facture d'électricité de 450 € tous les deux mois se saisit 450, pas 225.
Le seuil de rentabilité refuse de se calculer tant qu'aucun taux de marge n'est déclaré. Il pourrait l'être avec une valeur choisie au hasard : il serait alors crédible et faux, et l'on prendrait des décisions avec.
Une charge qui change de montant ne se corrige pas : on l'arrête, et on en déclare une nouvelle. Sinon le passé devient faux.
5.6 Les taux de TVA
/admin/tva — aucune vente n'est possible tant qu'ils ne sont pas déclarés. Le moteur refuse d'en inventer un : un 0 ferait passer la vente pour exonérée, un 20 la surtaxerait.
Chaque règle porte le texte appliqué : un contrôle doit pouvoir être expliqué, pas seulement subi. Ces taux relèvent du comptable.
5.7 La livraison
/admin/livraison — la zone se dit de deux façons, et il en faut au moins une : en nommant les communes, ou en donnant un rayon. Les deux peuvent coexister.
Le minimum peut varier avec la distance (paliers), ou relever du commerce (« je décide au cas par cas »). Tant que ni l'un ni l'autre n'est déclaré alors qu'un maximum a été annoncé, l'écran le rappelle — parce qu'une règle à moitié déclarée s'oublie.
5.8 Les comptes
/admin/agents — créer, changer un code, changer un rôle, retirer. Avec effet immédiat : retirer un droit le retire tout de suite, même sur un poste ouvert depuis le matin.
- aucun code n'est jamais affiché — ils ne sont pas conservés, seulement leur empreinte. Un code oublié se remplace, il ne se retrouve pas ;
- les codes triviaux (
0000,1234…) sont refusés, avec la raison ; - le dernier compte capable d'administrer ne peut être ni retiré ni rétrogradé. Sans lui, plus personne ne pourrait créer de compte ni rendre un droit, et cela ne se rattraperait qu'en intervenant sur le serveur.
6. Ce que l'application refuse de faire
Ces refus ne sont pas des manques : ce sont des garanties.
| Refus | Pourquoi |
|---|---|
| Vendre sans taux de TVA déclaré | un taux inventé se découvre au contrôle |
| Vendre de l'alcool sans son taux propre | 10 % au lieu de 20 % sous-déclarerait une TVA en silence |
| Calculer une marge sans fiche technique | une marge inventée oriente des décisions |
| Compter une matière sans prix comme gratuite | un coût nul afficherait 100 % de marge |
| Livrer sans connaître la distance | un rayon ne dit rien sans elle — la réponse est « on ne sait pas » |
| Deviner le canal | le prix et la TVA en dépendent |
| Annuler une commande sans motif | l'historique ne décrirait que les succès |
| Retirer le dernier administrateur | l'application deviendrait inadministrable |
7. ⚠️ L'encaissement
Il est fermé, et c'est délibéré. Tant que RestoTrax enregistre des commandes, c'est un journal de service. Le jour où il enregistre un règlement — même tapé à la main sur un terminal autonome — il entre dans la loi anti-fraude à la TVA : inaltérabilité, sécurisation, conservation, archivage.
Ce n'est pas l'intégration d'un terminal qui déclenche l'obligation, c'est l'enregistrement du paiement. La question est à instruire avec un comptable avant d'ouvrir cet écran, jamais pendant.
L'ouvrir demande deux gestes cumulatifs : déclarer un terminal (TPE_DIALECTE) et poser RESTOTRAX_ENCAISSER=1. Un seul aurait pu être fait par inadvertance ; les deux ensemble sont une décision.
8. Les données personnelles
L'application conserve des adresses de livraison et des numéros de téléphone (carte de fidélité). Tout vit dans un fichier, sur la machine de l'exploitant. Rien ne sort.
Le numéro de téléphone peut être conservé sous forme d'empreinte (FIDELITE_EMPREINTE=hmac) : la recherche continue de fonctionner puisque le client le fournit à chaque fois, mais une base qui fuite ne livre pas un fichier de numéros.
L'écran d'appel, lui, ne montre jamais ces données.
9. Que faire si…
…j'ai oublié mon code. Un autre administrateur vous en pose un nouveau depuis /admin/agents. Il ne peut pas retrouver l'ancien : il n'est pas conservé.
…un plat n'apparaît pas sur la borne. Il est en rupture, ou il n'a pas de prix pour ce canal. Le comptoir, lui, le montre en le grisant — avec la raison.
…un plat refuse d'être ajouté. Le message dit le motif exact : le plus souvent un prix absent pour ce canal, ou un taux de TVA non déclaré pour sa nature.
…le seuil de rentabilité ne s'affiche pas. Aucun taux de marge n'est déclaré. C'est voulu : un seuil calculé sur un taux inventé serait crédible et faux.
…l'écran d'appel reste muet. Le bouton « Activer le son » n'a pas été pressé depuis le dernier allumage.
…une commande est bloquée. Le refus nomme sa cause : soit la transition n'existe pas depuis cet état, soit le rôle n'a pas la permission. Les droits se lisent sur /admin/roles.