Manuel HorecaPOS
Ce manuel comporte trois parties : d'abord pour le personnel (service), puis pour le manager et enfin pour l'administrateur. Chaque partie s'appuie sur la précédente : un manager peut faire tout ce que fait le service, et l'administrateur peut tout faire.
Ce que votre rôle peut faire exactement est défini par l'administrateur dans Paramètres → Droits. Si vous ne voyez pas un bouton, votre rôle n'y a pas (encore) droit.
Ce manuel se trouve aussi dans la caisse : appuyez sur le bouton © en bas à droite de chaque écran et choisissez Manuel, ou ouvrez http://<kassa-pc>:3000/handleiding. Voir aussi l'introduction et la documentation API.
Partie 1 · Personnel
Premiers pas
Se connecter. Ouvrez la caisse sur la caisse, la tablette ou le téléphone et saisissez votre code PIN (4 à 8 chiffres). Vous voyez ensuite le plan de salle.
Ouvrir une table. Appuyez sur une table. Une table libre reçoit une nouvelle commande ; sur une table occupée, vous continuez la commande existante. En haut, vous passez d'une salle à l'autre (par exemple Salle et Terrasse). Au comptoir, utilisez Vente rapide, pour les commandes à emporter À emporter.
Commander. Choisissez une catégorie de produits et appuyez sur les produits. Ils apparaissent sur le ticket à gauche. Choisissez éventuellement d'abord le service (1 = tout de suite, 2 et 3 attendent que vous les envoyiez). Appuyez sur Commander : les bons partent alors en cuisine et au bar. Tant que vous n'avez pas appuyé sur Commander, vous pouvez simplement supprimer des lignes.
Encaisser. Appuyez sur Encaisser, choisissez Carte bancaire / Bancontact, Espèces ou Bon cadeau, éventuellement un pourboire, et confirmez. Pour un paiement par carte, le paiement démarre automatiquement sur le terminal. Le ticket est imprimé ; vous pouvez aussi l'envoyer par e-mail.
Se déconnecter. Déconnectez-vous quand vous avez terminé, pour que personne d'autre ne travaille sous votre nom. Après 8 heures, vous êtes déconnecté automatiquement.
Pas d'internet ? La caisse continue de fonctionner. Si Pas d'internet · carte bancaire manuelle s'affiche en haut, saisissez le montant sur le terminal lui-même et choisissez dans l'écran d'encaissement Déjà payé sur le terminal.
Plusieurs groupes à une même table
Plusieurs groupes peuvent être assis à une même table, chacun avec sa propre addition et son propre ticket.
- Appuyez sur une table : libre = nouvelle commande ; un groupe = directement ce groupe ; plusieurs groupes = choisir d'abord, ou + Nouveau groupe (le nom peut rester vide).
- En haut de l'écran de commande se trouve la barre des groupes : passer d'un groupe à l'autre, + Groupe, Nom du groupe (p. ex. "Jansen") et Diviser / déplacer.
- Diviser / déplacer : choisissez par ligne combien d'articles sont déplacés (pour 3× Pils p. ex. 1) et vers quel groupe, ou créez un nouveau groupe. Vous déplacez ainsi ce qui se trouve sur la mauvaise addition, ou vous partagez après coup "chacun paie sa part". Si un groupe devient vide, il disparaît.
- Plusieurs parties à la fois : avec + Encore une partie, vous préparez une partie et choisissez la suivante (p. ex. le poisson et un Dry Martini vers la table 2, le reste vers la table 35). Une partie peut aussi aller vers + Autre table (comme nouveau groupe). Avec Déplacer, tout se fait en une fois. ½ coupe une ligne en deux, même une demi-bouteille (0,667 devient 2 × 0,3335).
- Fusionner : tout le contenu d'une ou plusieurs autres tables (ou de groupes de cette table) sur cette addition, en une fois.
- Belgique : répartir ou fusionner en une fois correspond à un seul changement de table dans la boîte noire, comme le veut le SPF Finances (UC242, UC251, UC252, UC4119bis). Si un article est supprimé après la commande ou si une remise est appliquée à une ligne déjà commandée, cela part avec le message suivant de cette table (commande, addition provisoire, changement de table), sinon avec la vente : l'ancienne ligne en négatif et la nouvelle en positif (UC226, UC4102, UC4104, UC4107, UC4110).
- Sur l'écran des tables, une pastille orange indique le nombre de groupes ; le montant est le total de tous les groupes.
- Le ticket de caisse et le bon de cuisine affichent "Table 5 - groupe 2" ou "Table 5 - Jansen".
Partager l'addition à l'encaissement
L'encaissement fonctionne comme d'habitude : Tout en une fois. Dans l'écran d'encaissement, l'addition peut désormais aussi être partagée, avec les boutons sous Retour et Encaisser (ainsi ils restent toujours visibles, sans balayer) :
- Partager équitablement : choisissez avec − et + le nombre de personnes (par défaut le nombre de couverts, ou 2 si la caisse ne suit pas les couverts). L'écran affiche le montant par personne ; chacun paie sa part par carte, en espèces ou par carte cadeau (avec pourboire s'il le souhaite). Après chaque part, le décompte s'affiche ("encore 3 personnes") ; le dernier paie exactement le reste.
- Montant libre : quelqu'un paie un montant fixe (p. ex. € 20) ; le reste reste ouvert.
- Par produit… : ouvre Diviser / déplacer pour placer des produits sur une addition séparée et l'encaisser à part (comme ci-dessus).
Un paiement partiel enregistre uniquement le paiement ; l'addition reste ouverte et l'écran de commande affiche "déjà payé … · reste à payer …". Le ticket (avec tous les paiements) est émis au dernier paiement, comme pour un encaissement normal. Le paiement par carte via le couplage porte exactement sur le montant partiel. Dès qu'une partie a été payée, il n'est plus possible de déplacer des lignes vers un autre groupe ni d'ajouter des remises ; supprimer n'est possible que s'il reste assez à payer. Chaque paiement partiel est noté dans le journal.
Vente rapide et à emporter (sans table)
En haut à droite de l'écran des tables se trouvent Vente rapide et À emporter. Les deux ouvrent directement une commande sans table. La vente rapide est la vente au comptoir (TVA sur place) ; À emporter utilise le taux de TVA à emporter de chaque produit. Avec "Nom du client", vous ajoutez un nom ; il figure sur le ticket ("À emporter – Jansen") et en haut du bon de cuisine. Les commandes ouvertes sans table apparaissent sous les boutons des salles ("Sans table : À emporter #12 – Jansen"), pour que vous les retrouviez. Si vous revenez en arrière sans rien vendre, la commande vide disparaît automatiquement.
Les deux boutons peuvent être activés ou désactivés par établissement dans Paramètres → Établissement, juste sous le thème clair/sombre (activé par défaut). Désactivé = bouton masqué ; les commandes sans table déjà ouvertes restent visibles.
Livraison et créneaux
Les commandes que vous prenez vous-même à la caisse, par exemple par téléphone ou au comptoir, avec les mêmes règles que la boutique en ligne : zones de livraison et nombre maximum de commandes par créneau. À activer sous Paramètres → Établissement → Livraison et créneaux, juste sous les boutons Vente rapide et À emporter (désactivé par défaut).
- Bouton Livraison sur l'écran des tables (à côté de À emporter) : saisissez le nom, le téléphone et l'adresse (avec Saisie rapide de l'adresse activée : recherche par code postal et numéro). La caisse trouve la zone de livraison et affiche les frais de livraison, le minimum et "gratuit dès". Si l'adresse est en dehors des zones, la livraison n'est pas possible.
- Zones de livraison : par code postal (plages et codes postaux individuels, ex.
5000-5049, 5051, 5052 AB), dans un rayon en km autour de l'établissement (à vol d'oiseau) ou une zone sur la carte que vous tracez vous-même. Le rayon et la zone ne fonctionnent qu'avec des adresses néerlandaises (emplacement via PDOK). Par zone : frais de livraison, minimum, gratuit dès et minutes supplémentaires ; la première zone correspondante en partant du haut s'applique, les types peuvent donc être combinés (ex. d'abord quelques codes postaux, puis une zone, puis un rayon pour le reste). Aucune zone définie = livraison partout, sans frais ni minimum. Les zones de la boutique en ligne se configurent séparément (gestion de la boutique). - Zone sur la carte : pour une zone de livraison, choisissez le type Zone sur la carte puis Tracer sur la carte. Cliquez sur la carte pour placer des points (au moins 3) ; faites glisser un point pour le déplacer, cliquez sur un point pour le supprimer et faites glisser la pastille au milieu d'un bord pour ajouter un point intermédiaire. La carte affiche aussi les zones par rayon et l'établissement. Les tuiles de la carte proviennent d'OpenStreetMap, la carte nécessite donc internet ; la livraison elle-même non (sauf pour rechercher l'adresse). Si l'adresse ne peut pas être recherchée, la caisse l'indique au lieu de "hors des zones de livraison".
- Les frais de livraison figurent sur la commande comme ligne "Frais de livraison" et sont recalculés après chaque modification (gratuit dès, aucun produit = aucun frais), tant que rien n'a été payé. En dessous du minimum, l'encaissement n'est pas possible ; l'écran de commande indique combien il manque, avec le bouton Plutôt à emporter (frais de livraison et minimum supprimés).
- Heure : Dès que possible (maintenant + délai de livraison, plus les minutes supplémentaires de la zone) ou un créneau d'aujourd'hui. Si des horaires d'ouverture sont définis pour Thuisbezorgd, ils s'appliquent aussi ici.
- Maximum par créneau (0 = pas de maximum ; créneau de 5 à 60 minutes) : pour À emporter et Livraison ensemble ; les commandes de la boutique en ligne dans la caisse comptent aussi. Si un maximum est défini, À emporter demande aussi une heure et les créneaux complets ne peuvent pas être choisis. Deux caisses visent la dernière place en même temps : une seule l'obtient.
- Le bon de cuisine indique l'adresse, le nom, le téléphone et l'heure ; dans "Sans table" et en haut du bon de cuisine, p. ex. "Livraison – 18:30 Jansen".
Extensions (tout est désactivé par défaut ; sans ces réglages, tout fonctionne exactement comme ci-dessus) :
- Horaires propres pour la vente à emporter et la livraison (par jour de la semaine, p. ex.
16:00-21:00ou11:30-14:00, 17:00-22:00; après minuit possible :17:00-01:00; vide = fermé ce jour-là). Désactivé = comme avant (les horaires de Thuisbezorgd, s'il y en a, sinon toute la journée). - Jours de fermeture (p. ex.
25-12-2026, 26-12-2026) : ni vente à emporter ni livraison ces jours-là. - Commande à l'avance : de 0 (aujourd'hui uniquement, comme avant) à 14 jours. Dans la fenêtre Livraison/À emporter, vous choisissez alors d'abord le jour ; un jour ultérieur figure sur le bon de cuisine devant l'heure.
- Affluence : autant de minutes supplémentaires pour "dès que possible" (caisse et boutique en ligne). Réglable aussi rapidement avec le bouton Boutique en ligne dans la barre supérieure.
- Adresses belges (code postal à 4 chiffres) : pour un rayon ou une zone sur la carte, la caisse recherche l'emplacement via OpenStreetMap (Nominatim ; rue et localité requises).
- La boutique en ligne suit la caisse : la caisse fait foi. La boutique en ligne utilise alors les zones de livraison, les délais de livraison et de retrait, le créneau, le maximum par créneau, les horaires d'ouverture (s'ils sont définis ici), les jours de fermeture et les jours à l'avance de la caisse, et compte dans le créneau les commandes prises à la caisse. Désactivé = la boutique en ligne a ses propres paramètres (gestion de la boutique), comme avant. L'activation ou non de la vente à emporter/livraison reste du ressort de la boutique en ligne.
Code : lib/bezorgen.ts, routes/bezorgen.ts, BezorgDialoog.tsx, BezorgInstellingen.tsx, BezorgKaart.tsx et lib/kaart.ts (la carte, sans paquet supplémentaire ; le même code se trouve dans la boutique en ligne sous public/kaart.js).
Téléphonie : reconnaître le client lors d'une commande par téléphone
Paramètres → Téléphonie (désactivé par défaut ; la désactivation conserve tout). Deux interrupteurs distincts :
- Rechercher le client par numéro de téléphone en livraison et à emporter : tapez le numéro dans l'écran de livraison et la caisse affiche le client avec son adresse et ses commandes précédentes ; Reprendre les données remplit le nom, l'e-mail et l'adresse. Fonctionne aussi sans standard téléphonique.
- Identification de l'appelant : quand un client appelle, le standard (ou le poste, la FRITZ!Box, le modem ou le téléphone Android) transmet le numéro. Une notification apparaît sur les écrans avec l'appelant : nom, adresse, les dernières commandes (avec les plats et le montant, y compris de la boutique en ligne, de Thuisbezorgd et des plateformes de livraison), le total et une réservation. Prendre une commande en livraison ou Prendre une commande à emporter ouvre l'écran de livraison avec tout déjà rempli (avec Livraison et créneaux activés) ; la commande est liée à l'appel et la notification disparaît sur tous les écrans. Bouton 📞 dans la barre du haut : les appels des 24 dernières heures. Désactivable par écran (Afficher les notifications sur cet écran).
La recherche porte sur la carte de fidélité, les commandes en livraison et à emporter de la caisse, la boutique en ligne, Thuisbezorgd, les plateformes de livraison et les réservations. Les numéros sont normalisés (+31 6 1234 5678, 0031612345678 et 06-12345678 sont identiques ; numéros belges aussi).
Comment le numéro arrive (plusieurs à la fois possible ; un même appel compte une fois) :
| Source | Pour | Configuration |
|---|---|---|
| Webhook / action URL | 3CX (intégration CRM), Aircall, Voys / VoIPGRID, Yeastar série P, postes avec une action URL pour un appel entrant (Fanvil, Grandstream, Mitel 6800/6900, Snom, Yealink : fonctionne avec tout standard et tout opérateur), services d'intégration (Zapier, Make, n8n, Power Automate) | l'adresse de Paramètres → Téléphonie (/api/telefonie/oproep?sleutel=...&nummer=...), GET ou POST, JSON, formulaire ou query ; aussi via le portail : https://<portaal>/telefonie/<kassa-id>/oproep?sleutel=... |
| Asterisk (AMI) | Asterisk, FreePBX, Issabel, VitalPBX, Grandstream UCM | adresse, port (5038 ; Grandstream UCM 7777), utilisateur AMI et mot de passe (droits call) |
| FRITZ!Box | FRITZ!Box avec téléphonie | adresse (fritz.box) et port 1012 ; activer une fois le callmonitor avec #96*5* |
| Modem USB d'identification de l'appelant | ligne fixe analogique avec affichage du numéro | port série (COM3, /dev/ttyACM0), baud et commande d'initialisation (par défaut AT+VCID=1) |
| Téléphone Android | le téléphone intégré d'un téléphone Android de l'établissement | app HorecaPOS sur ce téléphone, Paramètres → Téléphonie → Associer ce téléphone (Android 10+ : choisir l'app comme app d'identification de l'appelant) |
La réponse contient l'appelant, aussi sous forme de contact (firstname, lastname, phone, email, address) pour un modèle CRM de 3CX. Les appels sortants et internes ne sont pas affichés ; Uniquement ces lignes limite à certaines lignes ou certains postes. Les appels sont effacés après la durée de conservation (par défaut 30 jours, RGPD). Appel test simule l'appel d'un numéro.
Code : apps/pos-server/src/lib/telefonie.ts, routes/telefonie.ts, packages/shared/src/telefonie.ts ; écrans Telefonie.tsx, BezorgDialoog.tsx ; Android android-app/native/java/Beller*.java. Journal : Téléphonie.
Livreurs maison : tournées, remise de caisse et suivi de livraison
Pour les établissements qui ont leurs propres livreurs. Activez-le dans Paramètres → Établissement → Livraison → Livreurs maison (désactivé par défaut). Le livreur n'a pas besoin d'application : il utilise une page dans le navigateur de son propre téléphone (s'il le souhaite, il peut utiliser l'appli Optimum Bezorger : voir Appli livreur ci-dessous).
Créer une tournée. La caisse affiche le bouton Tournées (avec le nombre de livraisons encore à partir plus les tournées en route).
- Sous Prêtes à livrer, cochez les commandes qui partent. Ce sont les commandes à livrer de la caisse, de la boutique en ligne et de Thuisbezorgd (uniquement livraison par vos soins ; pas celles livrées par un livreur Thuisbezorgd).
- Choisissez le livreur (un employé) et le fonds de caisse qu'il emporte (par défaut le montant du paramètre), puis touchez Créer la tournée.
- Un QR code apparaît. Le livreur le scanne avec son propre téléphone et voit pour chaque adresse le nom, l'adresse avec un bouton Itinéraire (navigation), Appeler, la remarque, l'heure souhaitée et le montant à encaisser. Il y a un calculateur de monnaie (le client donne 50 € → rendre 31,50 €). Aucune connexion n'est nécessaire. Ne partagez le lien qu'avec le livreur : quiconque l'a voit les adresses de cette tournée. QR code pour le livreur crée un nouveau lien ; l'ancien ne fonctionne alors plus.
- Touchez Partir quand le livreur s'en va. Le fonds de caisse sort du tiroir (sortie d'argent, avec le motif). Le client est prévenu que la commande est en route :
- pour une commande de la caisse par SMS et/ou e-mail, si Messages au client est activé (voir Livraison et créneaux) ;
- pour la boutique en ligne selon ses réglages (e-mail, SMS ou notification push) ;
- pour Thuisbezorgd via Thuisbezorgd.
Tant que la tournée n'est pas partie, elle peut encore être annulée.
- En route, le livreur touche pour chaque adresse Livrée, espèces, Livrée, carte (son propre terminal de paiement) ou Livrée (déjà payé). La caisse le voit aussitôt. Si le livreur ne peut pas le signaler, cela peut aussi se faire dans la caisse. De retour à l'établissement, le livreur touche Je suis de retour à l'établissement.
Remise de caisse. Après la tournée, touchez Encaisser (droit Gérer le tiroir-caisse) :
- Pour chaque commande, choisissez espèces, carte à la porte, déjà payé ou non livrée (retour). Ce que le livreur a signalé est déjà rempli.
- La caisse encaisse chaque commande avec un montant ouvert, sans nouveau ticket de caisse (le client a déjà son ticket ; réimpression possible dans Tickets). Une commande non livrée est retirée de la tournée et reste ouverte, pour pouvoir partir dans une tournée suivante.
- Vous voyez le montant attendu : le fonds de caisse plus les espèces reçues. Saisissez ce que le livreur remet, ou comptez par billet et pièce (Compter par billet et pièce). La caisse indique si c'est correct, ou combien il y a en trop ou en moins.
- Le fonds de caisse retourne dans le tiroir (entrée d'argent). L'écart figure dans la tournée et dans le journal, et apparaît aussi comme écart de caisse dans le rapport Z.
Suivi de livraison (à activer séparément dans le paramètre). À l'état en route, le client reçoit un lien vers une page de suivi sur le portail. Ce lien figure dans le SMS ou l'e-mail, et dans la boutique en ligne sur la page de statut (Suivre votre livreur). La page de suivi indique :
- si la commande est en préparation, en route ou livrée ;
- l'heure prévue : depuis la position du livreur en passant par les adresses précédentes, sinon l'heure souhaitée ;
- combien d'adresses passent encore avant (sans afficher les autres adresses) ;
- avec Le livreur en direct sur la carte, également le livreur, l'établissement et l'adresse du client sur une carte (OpenStreetMap). Le livreur active lui-même le partage de position sur son téléphone (Partager ma position). La position n'est transmise que tant que la page est ouverte ; la page garde l'écran allumé.
Les pages s'affichent dans la langue du téléphone (toutes les langues du portail). Dans la caisse, vous voyez pour chaque tournée quand la position a été transmise pour la dernière fois (avec un lien vers la carte).
Confidentialité. Le portail conserve les données d'une tournée (noms, adresses, numéros de téléphone, position) uniquement pendant la tournée. Tout est supprimé à l'encaissement, sinon au bout de 24 heures. Le client ne voit que sa propre commande. La position du livreur n'est visible que pendant la tournée, et plus dès que le livreur est revenu.
Planification des tournées (facultatif)
Activez-la dans Paramètres → Établissement → Livraison → Planification des tournées (désactivée par défaut ; fonctionne avec les livreurs maison). La fenêtre Tournées affiche alors le bouton Proposer des tournées. La caisse regroupe en tournées les commandes encore à livrer :
- les commandes proches les unes des autres et dont les heures souhaitées tombent dans le créneau (par défaut 30 minutes) sont regroupées ;
- jusqu'au nombre maximal d'adresses par tournée (par défaut 4), tant que la tournée (aller, toutes les adresses et retour à l'établissement) ne dépasse pas la durée maximale (par défaut 45 minutes) ;
- pour chaque tournée, le meilleur ordre, la distance (km), le temps de trajet aller-retour et, par adresse, l'heure d'arrivée prévue pour un départ immédiat. Si elle est postérieure à l'heure souhaitée, la mention plus tard que demandé s'affiche.
Utiliser cette tournée coche ces commandes, dans cet ordre ; choisissez le livreur et touchez Créer la tournée. Pour une tournée qui n'est pas encore partie, Meilleur ordre place les adresses dans l'ordre le plus rapide (aussi sur le téléphone du livreur). Chaque tournée affiche la distance et le temps de trajet.
Paramètres : adresses par tournée, durée maximale d'une tournée, le créneau, la vitesse du livreur (vélo ~15, scooter ~25, voiture ~35 km/h en ville) et les minutes par adresse (stationner, sonner, encaisser ; par défaut 2). Le manager peut aussi régler ces valeurs : dans la fenêtre Tournées avec le bouton Configurer la planification des tournées (droit Configurer la planification des tournées, activé par défaut pour le manager ; modifiable dans Paramètres → Droits). Activer ou désactiver la planification des tournées et le service d'itinéraires (adresse, clé API) restent du ressort de l'administrateur.
Distance et temps de trajet, au choix de l'administrateur :
- Estimation (par défaut) : distance à vol d'oiseau multipliée par 1,35 (facteur de détour) à la vitesse du livreur. Fonctionne sans internet et sans compte.
- OSRM : itinéraires routiers via un serveur OSRM. Saisissez l'adresse (
https://, ouhttp://sur le réseau local). Le serveur de démonstration public (https://router.project-osrm.org) est réservé à un usage occasionnel ; pour un usage quotidien, installez votre propre serveur OSRM ou passez par un prestataire. - OpenRouteService : itinéraires routiers avec votre propre clé API (gratuite sur openrouteservice.org, avec une limite quotidienne). L'adresse est par défaut
https://api.openrouteservice.orget peut pointer vers votre propre serveur. La clé reste sur la caisse ; les écrans indiquent seulement qu'elle est renseignée.
Tester permet d'essayer le service. Si le service échoue, la planification revient à l'estimation et le signale. Une adresse dont la localisation est inconnue (pas de code postal ni de numéro valides) apparaît dans la proposition sous sans localisation connue et n'est pas planifiée. L'export de configuration inclut les paramètres, mais pas la clé.
Code : lib/ritplanning.ts.
Appli livreur (facultatif)
Activez-la dans Paramètres → Établissement → Livraison → Appli livreur (désactivée par défaut ; fonctionne avec les livreurs maison et le portail de gestion). Chaque livreur couple alors son propre téléphone une seule fois, au lieu de scanner un QR code à chaque tournée :
- Dans Téléphones couplés, choisissez le livreur (un employé), éventuellement le nom du téléphone, puis touchez Coupler un téléphone.
- Un QR code apparaît. Le livreur le scanne dans l'appli Optimum Bezorger (bouton Coupler), ou avec l'appareil photo du téléphone : la page s'ouvre alors dans le navigateur. Elle fonctionne aussi sans l'appli et peut être ajoutée à l'écran d'accueil.
- Le couplage reste valable jusqu'à ce que vous le révoquiez ; le téléphone ne voit alors immédiatement plus rien. Un nouveau couplage pour le même employé remplace l'ancien (par exemple avec un nouveau téléphone).
L'appli ou la page affiche toutes les tournées du livreur (chaque tournée que la caisse crée pour ce livreur), avec les mêmes boutons que pour une tournée : Itinéraire, Appeler, montant à encaisser avec calculateur de monnaie, Livrée et Je suis de retour à l'établissement. Activables séparément :
- Prise de commandes par le livreur : le livreur voit les livraisons qui attendent encore une tournée, coche ce qu'il emporte et touche Emporter. La caisse crée la tournée (ou les ajoute si ce livreur a déjà une tournée pas encore partie) ; le fonds de caisse standard part avec. Ce qu'un autre a déjà pris n'est plus disponible.
- Départ par le livreur : Partir dans l'appli fait la même chose que dans la caisse (fonds de caisse sorti du tiroir, les clients sont prévenus).
- Carte en direct : dans Tournées se trouve le bouton Carte avec l'établissement, tous les livreurs en service et les adresses encore à livrer. Le livreur active et désactive En service lui-même. L'appli transmet la position même écran éteint (Android : une notification dans la barre tant que le partage est actif) ; la page web uniquement tant qu'elle est ouverte. Sans ce paramètre, la position n'est partagée que pendant une tournée avec suivi de livraison.
L'appli Android est disponible sur Google Play et sur la page de téléchargement du portail (/download/). Une version pour iPhone est prête, mais ne sortira qu'une fois qu'il y aura un compte développeur Apple ; d'ici là, les iPhone utilisent la page web. Une tournée que le livreur a prise lui-même affiche prise par le livreur dans l'appli.
Code : lib/bezorgersapp.ts, dans le portail src/volgen.mjs et l'appli dans le dépôt horecapos-bezorger.
Le journal indique qui a créé une tournée, l'a fait partir, l'a signalée livrée et l'a encaissée, avec les montants. Désactiver : pas de bouton Tournées ; les tournées et les paramètres sont conservés.
Sur le portail : /bezorger/<sleutel> et /volg/<code>. Code : lib/bezorgers.ts, routes/bezorgers.ts, Bezorgers.tsx et dans le portail src/volgen.mjs.
Alerte en cas de délai de préparation trop long
Une commande à emporter ou en livraison prête plus tard que promis : la caisse le détecte, le signale et peut immédiatement envoyer des excuses au client, éventuellement avec un bon d'avoir. Activez-la dans Paramètres → Établissement → Livraison → Alerte en cas de délai de préparation trop long (désactivée par défaut).
- Quelles commandes : à emporter et en livraison avec une heure promise, depuis la caisse (livraison et créneaux horaires), la boutique en ligne et Thuisbezorgd.nl / Takeaway.com.
- En retard : toujours pas prête ou en route ce nombre de minutes (par défaut 10) après l'heure promise. Prête ou en route signifie : tout prêt sur l'écran cuisine, le statut prête ou en route dans la boutique en ligne ou chez Thuisbezorgd, le message ✉ Prête / ✉ En route au client, ou payée. La caisse vérifie chaque minute.
- Alerte : bouton En retard dans la barre du haut avec le nombre (avec un son pour chaque nouvelle), avec pour chaque commande l'heure promise et le nombre de minutes de retard. Une commande disparaît automatiquement dès qu'elle est prête ou en route, ou avec Traité ; en dessous figurent celles des dernières 24 heures, avec l'heure à laquelle elles étaient prêtes. Tout est consigné dans le journal.
- Boutique en ligne : la page de statut du client indique que cela prend plus de temps, avec la nouvelle heure prévue.
- Ce n'est pas possible avec Thuisbezorgd (le client appartient à Thuisbezorgd) : seulement l'alerte. Un texte personnalisé est possible ;
{naam},{zaak},{code},{korting}et{geldig}sont remplis automatiquement. - Bon d'avoir (uniquement avec les Codes promo activés) : avec les excuses, un code promo personnel pour la prochaine commande (p. ex.
SORRY-7K4Q2M), un montant ou un pourcentage, à usage unique, valable un certain nombre de jours, en caisse et dans la boutique en ligne. Ces codes n'apparaissent pas dans la liste des Codes promo. Si l'envoi échoue, le code expire. Avec le bouton de la caisse, uniquement avec le droit Accorder une remise. - Désactivé : les alertes et les codes émis sont conservés (aussi dans la sauvegarde) ; le paramètre est inclus dans l'export de configuration.
Code : lib/telaat.ts, routes/telaat.ts, TeLaat.tsx et packages/shared/src/telaat.ts.
Le bouton Commander : ce qu'il fait et quand vous en avez besoin
Toucher un produit et toucher Commander sont deux étapes différentes :
- Toucher un produit l'ajoute immédiatement à l'addition (dans la liste à gauche), comme nouveau. Vous seul le voyez : la cuisine et le bar n'en savent encore rien. Une nouvelle ligne est un brouillon : vous pouvez encore la supprimer ou modifier la quantité ou les options, sans annulation.
- Commander envoie toutes les nouvelles lignes en une seule fois : les bons partent vers les imprimantes de la cuisine et du bar (et l'écran cuisine), puis les lignes passent à l'état commandé. Pour les supprimer, il faut alors une Annulation (droit annulation). Le bouton indique combien de nouvelles lignes sont prêtes, p. ex. Commander (3) ; s'il n'y a pas de nouvelles lignes, le bouton est grisé.
Pourquoi ces deux étapes ? À table, vous prenez toute la commande (boissons, entrée, plat), vous l'ajustez encore si le client change d'avis, puis vous l'envoyez en une fois à la cuisine, avec un bon par poste au lieu d'un bon par produit. La cuisine peut ainsi commencer bien avant le paiement.
Ce qui se passe aussi quand vous touchez Commander :
- Services : le service 1 part immédiatement en cuisine ; les services 2, 3 et 4 partent avec la mention ATTENTE et la cuisine ne commence que lorsque vous lancez ce service (voir Services).
- Tournées : chaque Commander correspond à une tournée ; c'est là-dessus que fonctionne ↻ Nouvelle tournée.
- Le stock est décompté et une tireuse à dosage est débloquée.
- All-you-can-eat : si c'est trop, trop tôt ou trop tard pour la formule, la caisse demande d'abord si c'est quand même autorisé.
- Belgique (GKS 2.0) : les lignes sont d'abord envoyées en pro forma à la boîte noire ; si cela échoue, rien ne part en cuisine et elles restent à l'état nouveau.
- Pas de connexion : la commande est conservée et part en cuisine dès que la connexion revient. Imprimante éteinte : la commande passe quand même, le bon est placé dans la file d'impression (voir Imprimante cuisine éteinte ou pas d'écran cuisine).
Encaisser directement, c'est possible aussi. Si vous touchez Encaisser alors que de nouvelles lignes figurent encore sur l'addition, la caisse les commande d'abord automatiquement, pour que la cuisine et le bar reçoivent toujours leur bon. Au bar ou pour la vente à emporter, inutile donc de toucher d'abord Commander : touchez les produits et Encaisser directement. Si cette commande automatique échoue (pas de connexion, règle all-you-can-eat, boîte noire), l'écran d'encaissement reste fermé et vous voyez pourquoi.
Vous préférez ne pas envoyer de bon au bar quand vous encaissez directement ? Dans Paramètres → Établissement → Commande et encaissement, cochez Encaissement direct sans bon de préparation. Seul ce que vous envoyez avec Commander part alors vers la cuisine et le bar ; ce que vous encaissez directement ne génère pas de bon de préparation.
Grand ou petit bouton Encaisser
Avec la case Grand bouton "Encaisser" cochée, l'écran de commande affiche un grand bouton Encaisser juste sous les produits commandés : large, haut et avec le montant, pour le toucher rapidement. Si une partie de l'addition est déjà payée, le bouton indique le montant restant. Le petit bouton en bas à côté de Commander disparaît alors.
Avec le grand bouton, les boutons de l'écran d'encaissement sont grands aussi : Encaisser (pour Carte bancaire, Bon cadeau et les autres modes de paiement) et, pour Espèces, Encaisser l'appoint et Encaisser sont larges et hauts, faciles à toucher, même avec les doigts sales (par exemple chez un boucher). Les modes de paiement sont un peu plus grands et les boutons de pourboire un peu plus petits, pour que tout reste à l'écran.
Sur une nouvelle installation, la case est décochée : on a alors le petit bouton en bas à côté de Commander et un écran d'encaissement avec des boutons normaux. Vous préférez en grand ? Dans Paramètres → Établissement, juste sous le thème clair/sombre, cochez Grand bouton "Encaisser". Une caisse déjà en service garde ce qu'elle avait. Le choix s'applique à toutes les caisses et tablettes de l'établissement.
Marquer un produit comme « épuisé »
Tout le monde peut, dans l'écran de commande, appuyer longuement sur un produit (ou faire un clic droit) et choisir Épuisé. Le produit devient alors gris et ne peut plus être commandé sur aucune caisse. De la même manière, vous le remettez avec De nouveau disponible. Chaque modification est notée dans le journal. L'administrateur peut toujours le faire aussi dans Paramètres → Produits. Le serveur de caisse refuse lui aussi un produit marqué "épuisé" ("Cola" est épuisé), donc aussi depuis une tablette qui n'avait pas encore reçu la modification ou des commandes conservées hors ligne ; cette tablette affiche alors "Envoi impossible".
Écran cuisine (KDS)
En plus (et non à la place) des imprimantes de bons, la cuisine ou le bar peut utiliser un écran. Ouvrez sur une tablette/un PC en cuisine http://<kassaserver>:3000/keuken, connectez-vous avec un code PIN et choisissez le poste : ce sont les mêmes noms que les imprimantes (cuisine, bar, ...), donc l'écran affiche exactement ce qui figurerait sur ce bon. "Tout" affiche tous les postes.
- Un bon par commande, le plus ancien en premier, avec table/à emporter, numéro et temps d'attente (orange après 10, rouge après 20 minutes).
- Les services sont séparés ; un service pas encore envoyé apparaît en gris comme "EN ATTENTE d'envoi". Les annulations sont barrées.
- Appuyez sur une ligne pour la marquer prête, ou sur Prêt pour tout le bon. Le personnel de salle voit alors dans la barre du haut "Cuisine : Table 5 est prête". Avec Paramètres → Établissement → Écran cuisine → Son pour le serveur (désactivé par défaut), la caisse émet en plus un bip ("ding-dong", sans fichier son). Le navigateur n'autorise le son qu'après le premier appui sur l'écran ; montez le volume de la tablette.
- Récupérer affiche ce qui a été signalé prêt au cours de la dernière heure ; ce qui a été validé par erreur peut ainsi revenir.
L'écran se met à jour instantanément. Les bons continuent de s'imprimer normalement ; si vous n'utilisez pas l'écran, rien ne change pour vous.
Écran cuisine : transfert, ordre et service
Paramètres → Imprimantes → Écran cuisine. Chaque fonction s’active séparément, désactivée par défaut ; la désactiver conserve tout.
- Transfert entre postes, par exemple froid → chaud → passe. Pour chaque poste, vous définissez un poste suivant fixe ; le bon affiche alors un bouton → chaud (et toujours Transférer vers… pour choisir un autre poste). Seules les lignes ouvertes de ce poste sont transférées. Un poste n’a pas besoin d’imprimante : indiquez des postes comme passe dans Postes sans imprimante. Prêt (et l’alerte à la salle) n’arrive qu’au dernier poste. Sous "Tout", une ligne transférée indique où elle se trouve. Chaque étape figure sur la ligne et dans le journal.
- Réordonner : glissez les bons (souris) ou déplacez-les avec ◀ ▶ (écran tactile). L’ordre vaut par poste et pour tous les écrans de ce poste ; les nouveaux bons s’ajoutent à la fin.
- Service suivant depuis l’écran cuisine : un bon avec un service en attente affiche Demander le service 2. La salle reçoit alors "La cuisine demande le service 2 pour la table 5" (avec un son) et envoie comme d’habitude ; l’écran cuisine affiche "Service 2 demandé · n min" jusqu’à l’envoi du service. Ou choisissez Envoyer : l’écran cuisine envoie alors lui-même le service, avec le bon "ENVOI SERVICE 2", comme le bouton de la caisse.
Imprimante cuisine éteinte ou pas d'écran cuisine
La caisse continue toujours de fonctionner, même si l'imprimante de la cuisine ou du bar est éteinte (ou à court de papier, ou le câble débranché) et même sans écran cuisine :
- La commande passe toujours. Les lignes passent aussitôt à commandé, l'addition est juste et l'encaissement reste possible. Les imprimantes sont sollicitées en même temps et chaque imprimante dispose au maximum d'environ 4 secondes : une imprimante éteinte ne fait pas attendre longtemps les autres (ni le personnel).
- File d'impression. Un bon qui n'a pas pu être imprimé est placé dans la file d'impression. Le serveur de caisse réessaie toutes les 30 secondes, pendant un quart d'heure ; dès que l'imprimante refonctionne, le bon sort, avec en haut IMPRIMÉ PLUS TARD. Si un bon suivant passe à nouveau sur cette imprimante, les bons en attente suivent immédiatement.
- Après un quart d'heure, les nouvelles tentatives s'arrêtent automatiquement ; Réimprimer maintenant reste alors possible.
- Écran cuisine. Si la commande figure sur l'écran cuisine, la cuisine la voit aussi quand l'imprimante est éteinte. Si vous n'utilisez pas d'écran cuisine, vous ne manquez rien : la caisse n'attend nulle part le "Prêt" de la cuisine.
- La file d'attente est uniquement en mémoire du serveur de caisse (elle est vide après un redémarrage).
- Le ticket de caisse aussi : s'il échoue, l'encaissement est quand même effectué (la caisse indique "échec de l'impression") et vous pouvez imprimer une copie plus tard dans Tickets.
Services (entrée, plat ...)
Les boutons de service ne s'affichent que lorsqu'ils sont nécessaires : dès qu'un menu (produit composé) figure sur la commande, ou lorsque quelque chose se trouve déjà en service 2 à 4. Avec des produits ordinaires, comme un cola, vous ne les voyez pas et tout part directement en cuisine. Il n'y a rien à régler.
Sous la liste de commande se trouve Service 1 2 3 4. Par défaut, le service 1 est actif et tout fonctionne comme d'habitude : "Commander" envoie tout directement en cuisine, sans en-têtes de service sur le bon. Si vous choisissez le service 2 (ou plus) avant de saisir les produits :
- ils partent bien en cuisine lors de "Commander", sous "-- Service 2 · EN ATTENTE d'envoi --", pour que la cuisine puisse préparer ;
- la liste de commande affiche "Service 2 · en attente" avec un bouton Envoyer ;
- lors de l'envoi, la cuisine reçoit un bon " ENVOI SERVICE 2 " avec ce qui doit être préparé maintenant.
Le service 1 part toujours immédiatement. Si le service 2 a déjà été appelé, un plat ajouté plus tard dans le service 2 part aussi immédiatement.
Allergènes par produit
Désactivé par défaut : les allergènes ne sont alors visibles nulle part. Activation via Paramètres → Établissement → Saisir et afficher les allergènes par produit.
- Paramètres → Produits : pour chaque produit, cochez les 14 allergènes UE (gluten, crustacés, œufs, poisson, arachides, soja, lait, fruits à coque, céleri, moutarde, graines de sésame, sulfites, lupin, mollusques). Dans la liste des produits, les abréviations figurent après le nom.
- Écran de commande : sur chaque bouton de produit, les abréviations en petit (p. ex.
Gl Me), et le bouton ⚠ Allergènes dans la barre des groupes affiche en toutes lettres les allergènes de chaque produit de la catégorie choisie, avec l'explication des abréviations. - Les modifications d'allergènes sont notées dans le journal (ancien → nouveau). Si le paramètre est désactivé, les allergènes déjà saisis sont conservés.
À volonté
Désactivé par défaut. À activer via Paramètres → Établissement → All-you-can-eat (administrateur uniquement). Vous créez une ou plusieurs formules, p. ex. Poisson, Viande et Sushi, chacune avec :
- un nom (figure sur le ticket : "Poisson adulte", "Poisson enfant") ;
- un prix par adulte et par enfant (TVA comprise) et le taux de TVA (par défaut NL
LAAG, BEB) ; - les plats inclus (€ 0) : des catégories de produits entières et/ou des produits individuels (aussi d'autres catégories, p. ex. frites avec Poisson et Viande) ;
- une limite de temps en minutes (0 = aucune) ;
- des tournées : au maximum tant de plats par personne et par tournée (0 = illimité) et au minimum tant de minutes entre deux tournées (0 = aucun) ;
- un supplément gaspillage par pièce (0 = aucun).
Avec ↑ ↓, vous définissez l'ordre. Il compte quand un plat appartient à plusieurs formules : il va alors à celle du haut choisie par le groupe. Supprimer retire une formule pour les nouvelles tables ; les tables en cours gardent leurs lignes de prix (moins de personnes reste possible, plus non).
À table :
- Sur l'écran de commande, au-dessus du ticket, se trouve + All-you-can-eat. Choisissez par formule le nombre d'adultes et d'enfants ; le mélange est permis (p. ex. 2× Poisson et 2× Viande). Le prix apparaît sous forme de lignes sur l'addition ; elles ne sont pas envoyées en cuisine. Le nombre de couverts du groupe devient le total des participants (si la caisse suit les couverts).
- La barre affiche par formule : personnes, temps restant (en rouge quand le temps est écoulé), la tournée en cours avec le maximum, et le temps restant avant la tournée suivante. Les plats inclus portent la mention AYCE sur les boutons et figurent sur le ticket avec le label AYCE à € 0. Tout ce qui n'appartient à aucune formule choisie (boissons, desserts ...) reste payant normalement.
- Commander : chaque "Commander" avec des plats gratuits compte comme une tournée, par formule (uniquement les formules dont des plats sont inclus). Ce qui a été saisi hors ligne et envoyé plus tard n'est pas bloqué.
- Modifier : ajuster les nombres par formule. Moins de personnes compte comme une annulation (droit "annulation"). Mettre une formule à 0 (ou Arrêter pour tout) est possible tant qu'aucun plat de cette formule ne figure sur l'addition.
- Supplément (uniquement si une formule choisie a un supplément gaspillage) : choisissez le nombre (et la formule, s'il y en a plusieurs) ; "Supplément gaspillage × nombre" est ajouté à l'addition.
- L'encaissement, le partage, les remises et le ticket fonctionnent comme d'habitude : les prix des formules, le supplément et les boissons sont des lignes normales avec leur propre TVA.
- Si l'administrateur désactive le mode à volonté alors que des groupes sont en cours, les plats nouvellement saisis reprennent leur prix normal ; ce qui figure déjà sur l'addition reste.
- Dans la boutique en ligne (facultatif, désactivé par défaut) : avec Aussi lors de la commande à table via le QR code (boutique en ligne), le client qui commande à une table avec une formule voit les plats qui en font partie comme Inclus pour € 0, avec l'état en haut (personnes, tournée, temps). Une commande est une tournée, avec les mêmes règles que Commander ; trop de plats, trop tôt ou trop tard : la boutique refuse immédiatement. Les boissons et les autres plats, le client les paie normalement ; tout va sur l'addition de la table. Désactivé = la boutique applique les prix normaux, comme avant.
Bons cadeaux
Deux interrupteurs dans Paramètres → Établissement → Bons cadeaux :
- Bon cadeau comme mode de paiement à l'encaissement : activé par défaut, comme toujours. Désactivé = le bouton Bon cadeau n'apparaît pas à l'encaissement (ni dans Rembourser via lors d'un retour), et le serveur de caisse refuse les paiements par bon cadeau.
- Vendre des bons cadeaux avec solde : désactivé par défaut. Activé :
- L'écran de commande affiche le bouton Bon cadeau : choisissez le montant (€ 10, 25, 50, 100 ou un autre montant) et laissez la caisse générer un code, ou scannez le code d'une carte préimprimée. Le bon apparaît comme une ligne sur l'addition (code TVA BON : pas de chiffre d'affaires, pas de TVA, rien n'est envoyé en cuisine). Vous pouvez aussi y consulter le solde pour un client.
- Après l'encaissement, le bon est actif et l'imprimante de tickets imprime un bon cadeau avec le montant, le code et un QR code.
- Utilisation : à l'encaissement, choisissez Bon cadeau puis scannez ou saisissez le code (le bouton Solde affiche le solde). Le montant est déduit du solde. Si le solde est inférieur à l'addition, tout le solde est utilisé comme paiement partiel et le reste se paie par carte bancaire ou en espèces. Le solde peut être utilisé en plusieurs fois.
- Code laissé vide = bon cadeau sans code, comme avant (p. ex. un ancien bon papier).
- Rapport → Bons cadeaux (droit Gérer les bons cadeaux, par défaut manager et administrateur) : recherche par code, crédit restant, historique par bon, bloquer (perdu/volé) et corriger le solde avec un motif. Tout est noté dans le journal.
- Rapports : les bons cadeaux vendus ne comptent pas dans le chiffre d'affaires et figurent à part (Bons cadeaux vendus) ; l'argent reçu apparaît bien dans les modes de paiement. Ce qui est payé avec un bon cadeau est du chiffre d'affaires normal (avec TVA) sous le mode de paiement Bon cadeau.
- Comptabilité : les bons vendus passent au crédit et les bons utilisés au débit du compte Bons cadeaux (crédit des clients).
- Un bon cadeau vendu peut être repris via Tickets → Retour tant qu'il n'a pas encore été utilisé (solde = valeur). Après le retour, le bon est annulé (solde 0, bloqué ; visible dans l'historique du bon). S'il a déjà été (partiellement) utilisé, mettez le solde à 0 dans Rapport → Bons cadeaux et remboursez le reste séparément. Une remise sur un bon cadeau n'est pas possible.
Solde rechargeable (optionnel)
Pour les clubs, buvettes sportives, maisons de jeunes et événements : un bon cadeau avec solde devient une carte rechargeable. À activer dans Paramètres → Établissement → Solde rechargeable, sous les bons cadeaux (désactivé par défaut ; ne fonctionne que si Vendre des bons cadeaux avec solde est activé).
- Carte ou bracelet : vendez un bon cadeau avec Carte pré-imprimée et scannez la carte (un lecteur NFC/RFID qui fonctionne comme un clavier, ou un code-barres). Le numéro de la carte devient alors le code ; le client paie avec, comme avec un bon cadeau.
- Recharger : écran de commande → Bon cadeau → Recharger le solde : scannez le bon ou la carte et saisissez le montant. Il apparaît comme une ligne sur l'addition (code TVA BON : pas de chiffre d'affaires, pas de TVA, comme un bon cadeau vendu) et est crédité sur le solde après l'encaissement. L'historique du bon indique Rechargé.
- Solde maximal par bon ou carte (par défaut € 500, réglable jusqu'à 5 000 €).
- Rembourser le reste (case à cocher, désactivée par défaut ; droit Gérer le tiroir-caisse) : après Consulter le solde apparaît Rembourser le reste. Le solde passe à € 0 et le montant figure comme argent sorti du tiroir sur les rapports X et Z (Tegoed terugbetaald …).
- Une recharge peut être annulée via Tickets → Retour tant que le solde est encore au moins égal à ce montant ; le bon ou la carte reste valable.
- Recharger sur la borne (optionnel) : voir Borne de commande en libre-service.
Chèques-repas
Uniquement pour les établissements en Belgique, désactivé par défaut : Paramètres → Établissement → Encaisser → Chèques-repas. Les chèques-repas sont un avantage salarial : l'employeur les charge sur une carte de l'employé (Edenred, Monizze ou Pluxee). Le client paie avec sur le terminal de paiement habituel ; aucune liaison avec les émetteurs n'est nécessaire.
- Activé : à l'encaissement, le bouton Chèque-repas apparaît. Choisissez l'émetteur (uniquement ceux que l'établissement accepte) et laissez le client présenter sa carte au terminal de paiement, comme pour un paiement par carte bancaire. Sans liaison avec le terminal : le client paie sur le terminal de paiement lui-même et vous touchez Encaisser.
- Ni pourboire ni monnaie rendue avec les chèques-repas. Si le solde est insuffisant, le client paie le reste autrement (l'addition reste ouverte jusqu'à ce que tout soit payé).
- Uniquement pour certaines catégories de produits (facultatif, p. ex. la nourriture mais pas l'alcool) : les chèques-repas couvrent alors au maximum le montant de ces produits sur l'addition. L'écran d'encaissement indique combien ; le client paie le reste autrement.
- Sur le ticket de caisse : Chèque-repas Pluxee (suivi de l'émetteur).
- Rapport Z et rapport X : une ligne par émetteur (Chèque-repas Edenred, … Monizze, … Pluxee).
- Comptabilité : un compte général par émetteur (Chèques-repas Pluxee (à recevoir), etc., par défaut 416100, 416200 et 416300), car l'argent vient de l'émetteur et non de la banque du terminal de paiement.
- Requis : une convention avec chaque émetteur dont vous acceptez les chèques, et un terminal de paiement qui accepte ces cartes (renseignez-vous auprès du fournisseur du terminal de paiement).
Devise étrangère
Encaisser en espèces dans une autre devise, p. ex. pour des touristes britanniques ou américains, ou en zone frontalière avec le franc suisse. Désactivé par défaut : Paramètres → Établissement → Encaisser → Devise étrangère. Ajoutez les devises (CHF, CZK, DKK, GBP, HUF, NOK, PLN, SEK, TRY, USD) avec un taux par devise : combien d'euros vous comptez pour 1 unité (p. ex. 1 GBP = € 1,15).
- Saisi manuellement : un taux fixe ; adaptez-le vous-même lorsqu'il change.
- En direct (BCE) : le taux du jour de la Banque centrale européenne (taux de référence, chaque jour ouvré vers 16:00 ; gratuit, sans compte). Avec une majoration en pour cent (0-20), le taux baisse d'autant, afin que l'établissement ne paie pas lui-même le change. La caisse récupère elle-même les taux s'ils datent de plus de 6 heures ; Mettre à jour les récupère immédiatement. Sans internet, le dernier taux reste en place.
- Activé : à l'encaissement apparaît le bouton Devise étrangère. Choisissez la devise ; la caisse affiche le montant dans cette devise. Saisissez ce que donne le client : la caisse convertit et rend la monnaie en euros. Si le client ne veut rien en retour, cochez Monnaie en pourboire : la monnaie figure comme pourboire sur le ticket, en Belgique dans cette devise (GKS 2.0, UC296).
- Si le client donne moins que le montant total, c'est une partie ; il paie le reste autrement.
- Sur le ticket de caisse : la devise, le montant et le taux, ainsi que la monnaie rendue en euros.
- Rapports X et Z : une ligne par devise (Devise étrangère GBP, en euros), et au tiroir-caisse ce qui se trouve dans le tiroir dans cette devise. La monnaie rendue en euros est déduite de l'argent attendu dans le tiroir ; les devises elles-mêmes se comptent à part.
- Comptabilité : compte comme des espèces (caisse), en euros.
Boutons supplémentaires pour la commande et l'encaissement
Des boutons pour ce dont tous les établissements n'ont pas besoin. Tout est désactivé par défaut ; activez chaque bouton dans Paramètres → Établissement → Commande et encaissement (droit Configurer l'établissement, le paiement et les imprimantes). Désactivé = le bouton n'apparaît nulle part dans la caisse et le serveur de caisse refuse l'opération. Aux Pays-Bas, tout fonctionne sans boîte noire ; en Belgique, un bouton ne fonctionne que lorsque cette fonction a été testée avec la boîte noire (c'est indiqué à côté du bouton tant que ce n'est pas le cas).
À l'ouverture d'une table :
- Suivre le nombre de couverts : la question "Combien de personnes ?" pour une table libre, les couverts sur le plan de salle et dans l'écran de commande, et les couverts dans les rapports. Voir Nombre de couverts.
À la commande (écran de commande, pour ce que vous touchez ensuite) :
- Regrouper les produits identiques (pas de bouton, activé par défaut) : si vous touchez à nouveau le même produit (mêmes options, pas encore commandé), la quantité augmente au lieu d'ajouter une nouvelle ligne : 4 Cola sur une ligne avec le prix multiplié par 4. − en retire un, même s'il est déjà commandé (annulation d'un article). Avec une remarque, une place ou à emporter, il reste sur une ligne séparée ; ce qui est déjà commandé reste sur une ligne séparée (une nouvelle tournée).
- − et + (devant le prix sur chaque ligne) : − en retire un, + en ajoute un (même produit, options et remarque ; si Regrouper les produits identiques est désactivé, une nouvelle ligne). Pas encore commandé et à 0 : la ligne disparaît. Déjà commandé : un de moins est une annulation, cette ligne reste barrée (pour la cuisine et les rapports) ; un de plus devient une nouvelle ligne qui reste à commander. Toucher le prix lui-même ne retire plus rien. Pour un menu, seulement −.
- À emporter (sur place uniquement) : le client emporte ce produit, ex. une bouteille d'eau ou un dessert. Cette ligne reçoit la TVA à emporter (en Belgique étiquette C), le reste de l'addition la TVA sur place. Sur le ticket, à emporter figure à côté de la ligne.
- Place (à une table) : touchez plusieurs fois pour la place 1, 2, 3 ... ; les lignes reçoivent ce numéro de place (aussi sur le bon de cuisine). En Belgique, chaque ligne part vers la boîte noire avec le centre de coûts de la place (CHAIR, UC4123). Une fois de plus après la place 12 = à nouveau sans place.
- Reprise : le produit suivant est ajouté avec -1, ex. une bouteille ou un gobelet vide (consigne). Uniquement pour les produits avec Reprise possible (consigne) (Paramètres → Produits). Si toute l'addition est négative (seulement de la consigne rendue, sans vente), Encaisser devient un remboursement : en espèces ou par carte (remboursé sur le terminal même). En Belgique comme remboursement (REFUND, UC4108 et UC4114).
- Échanger un SPV : le client paie un produit ou un menu avec un single purpose voucher (un bon pour exactement ce produit, ex. "1 menu all-in"). Touchez Échanger un SPV puis le produit sur le ticket : il est ajouté avec -1 (même prix et même TVA, pour un menu avec ses composants), avec la mention SPV. Pas envoyé en cuisine ; il peut simplement être supprimé. Un produit-bon se vend à l'avance comme un produit ordinaire ; cochez SPV (bon) dans Paramètres → Produits. En Belgique, la ligne part vers la boîte noire comme VOUCHER lors de la vente (UC271).
- Déduire l'acompte : voir ci-dessous.
- Prix libre (pas de bouton, par produit) : pour un produit avec Prix libre, la caisse demande le prix, ex. le plat du jour ou un acompte.
À l'encaissement :
- Encaissement direct sans bon de préparation (pas un bouton) : par défaut, Encaisser commande d'abord ce qui n'a pas encore été commandé, afin que la cuisine et le bar reçoivent toujours leur bon (voir Le bouton Commander). Activé : ce que vous encaissez directement sans appuyer d'abord sur Commander ne génère pas de bon de préparation, p. ex. au bar, où vous servez vous-même. Ce qui a déjà été commandé ne change pas.
- Encaisser séparément (à une table, dans Partager l'addition) : choisissez ce que paie un client maintenant, même une partie d'une ligne (½ pour une demi-bouteille). Cela devient une partie distincte que vous encaissez tout de suite ; le reste reste sur l'addition, sans diviser l'addition d'abord ni la déplacer vers un autre groupe. Une remise en pourcentage sur tout le ticket est appliquée au prorata. Retour sans payer = tout revient sur l'addition. En Belgique, la vente reste à l'emplacement de la table, sans changement de table (UC4103bis, UC4104).
- Client parti sans payer (droit Clôturer sans paiement, par défaut uniquement manager et administrateur) : l'addition est clôturée comme vente sans paiement, avec un motif dans le journal. Sur le rapport X et Z et dans le relevé journalier, elle figure comme Non payé (client parti) ; dans l'écriture comptable vers irrécouvrable (par défaut 4985 / 643000). En Belgique, une vente sans paiement (UC4109).
Après coup (Tickets) :
- Corriger le prix (droit Corriger le prix d'un ticket, par défaut uniquement manager et administrateur) : le prix d'un ticket encaissé était faux, ex. 50% de remise au lieu de 5%. La caisse crée un nouveau ticket sans table avec les lignes de l'ancien ticket reprises (en négatif, au prix payé alors) et les mêmes produits à nouveau au prix normal. Appliquez-y la bonne remise et encaissez la différence (ou remboursez si le nouveau prix est plus bas). L'ancien ticket reste tel quel ; une fois par ticket, et pas si quelque chose a déjà été retourné. En Belgique, les anciennes lignes sont transmises comme CORRECTION (UC4116).
Code : apps/pos-server/src/lib/kassaopties.ts, routes/kassaopties.ts ; écran KassaOpties.tsx. Journal : Paramètre modifié, SPV échangé, Corriger le ticket, Non payé.
Déduire l'acompte
Un acompte (par ex. pour une fête ou une réservation) se vend comme un produit ordinaire avec Acompte activé (Paramètres → Produits ; a toujours un prix libre). Créez-en un par taux de TVA si l'acompte doit être par taux (ex. Acompte repas et Acompte boissons), ou un seul produit s'il fait partie du devis. Le client paie l'acompte à l'avance et reçoit un ticket.
Activer : Paramètres → Établissement → Commande et encaissement → Déduire l'acompte (désactivé par défaut). Lors de l'encaissement final, touchez Déduire l'acompte sur l'écran de commande et saisissez le numéro de ticket de l'acompte. La caisse ajoute les lignes d'acompte de ce ticket à l'addition avec une quantité négative (même produit, prix et TVA). Ce qui a déjà été déduit ne peut pas l'être une seconde fois. Si l'acompte dépasse l'addition, le client récupère la différence (remboursement). En Belgique, les lignes déduites partent vers la boîte noire comme remboursement (REFUND) (UC4110, UC4111, UC4113). Journal : Acompte déduit.
Ticket par e-mail
Désactivé par défaut. À activer via Paramètres → Établissement → Ticket aussi par e-mail.
SMTP_HOST=smtp.voorbeeld.nl
SMTP_PORT=587
SMTP_GEBRUIKER=kassa@voorbeeld.nl
SMTP_WACHTWOORD=...
SMTP_AFZENDER=bon@voorbeeld.nl
Redémarrez la caisse après avoir rempli les champs. Ensuite, Encaisser affiche le champ Envoyer aussi le ticket par e-mail (facultatif) : laissé vide = impression seule, comme toujours ; une adresse e-mail saisie = le même ticket (avec détail de la TVA et mentions fiscales) est aussi envoyé par e-mail au client, avec le nom de l'établissement comme expéditeur.
- L'adresse e-mail n'est pas conservée ; le journal indique seulement « ticket N envoyé à a***@domein.nl » et si l'envoi a réussi.
- Si l'envoi échoue (p. ex. identifiants incorrects), le ticket est quand même encaissé et imprimé ; le message indique ce qui n'a pas fonctionné.
- Pas lors d'un paiement partiel (addition divisée) : le ticket arrive avec le dernier paiement, c'est donc là qu'il faut saisir l'adresse.
- Envoyer après coup : dans Tickets, chaque ticket a un bouton Envoyer par e-mail (droit Imprimer une copie d'un ticket). Il envoie le ticket avec la mention KOPIE, comme une copie imprimée (enregistré comme copie en Belgique).
- Aucun module supplémentaire nécessaire : la caisse communique elle-même avec le serveur de messagerie (STARTTLS sur 587, TLS sur 465).
Réservations
À activer dans Paramètres → Établissement → Réservations (désactivé par défaut). Vous y réglez aussi combien de minutes à l'avance une table réservée apparaît sur le plan de salle (par défaut 60) et la durée par défaut d'une réservation (par défaut 120 minutes).
- Bouton Réservations dans la barre supérieure : vue par jour (◀ ▶), avec le nombre de réservations, de personnes et d'absents. + Nouvelle réservation : nom, téléphone, e-mail, personnes, date, heure, durée, table (possible plus tard) et remarque. Les réservations sont saisies par le personnel ; la réservation en ligne n'existe pas (encore).
- Si une réservation existe déjà sur la même table à ce créneau, la caisse le signale ; « Enregistrer quand même » est possible.
- Confirmation par e-mail (case à cocher, ou plus tard « Envoyer par e-mail ») s'il y a une adresse e-mail et un serveur de messagerie (
SMTP_HOST, voir Ticket par e-mail). - Sur le plan de salle, une table libre réservée apparaît en violet avec « R 19:30 Jansen (4) ». En la touchant : « Jansen est là » ouvre la table avec 4 personnes et « Jansen » comme nom de groupe ; « Autres clients » l'ouvre normalement.
- Dans la vue d'ensemble : Arrivé (ouvre la table ; sans table, vous en choisissez d'abord une), Modifier, Absent, Annuler et Restaurer. Tout est noté dans le journal.
- Réservations des plateformes en ligne : voir Plateformes de réservation ci-dessous.
Intégration caisse TheFork : table ouverte à l'arrivée, addition renvoyée
Avec l'API POS de TheFork, la caisse travaille avec TheFork Manager (désactivé par défaut), en plus de la récupération des réservations ci-dessus. À activer dans Paramètres → Plateformes de réservation → Intégration caisse TheFork ; passe par le portail de gestion.
- Si vous passez un client sur Arrivé ou À table dans TheFork Manager, la table du même nom s'ouvre dans la caisse, avec le nombre de couverts et une remarque : nom, allergies et régime, acompte, offre/réduction et points de fidélité (Yums). Si cette table a déjà une commande ouverte, celle-ci est associée. Aucune table de ce nom : une alerte, et vous choisissez la table dans Plateformes.
- Après l'encaissement, l'addition est envoyée à TheFork (total et lignes avec nom, groupe de produits, quantité et montant) ; TheFork passe alors la réservation sur Parti. En cas de paiement partagé, une seule addition avec le total. En cas d'échec, la caisse réessaie tous les quarts d'heure (pendant deux jours), ou avec Renvoyer dans Plateformes.
- Association : la caisse affiche un code d'association ; saisissez-le dans TheFork Manager (Intégrations → caisse). L'identifiant du restaurant TheFork (Customer-id) est saisi par l'administrateur, ou arrive automatiquement avec la première commande.
- Cases à cocher : ouvrir la table automatiquement, nom, allergies et acompte en remarque, addition vers TheFork.
- Condition : Pin Voordeel dispose de la clé API de TheFork (réservée aux partenaires) et y a enregistré la caisse comme POS (bouton dans le portail de gestion) ; TheFork met l'intégration en service après une session de test.
Documentation de TheFork : https://docs.thefork.io/POS-API/introduction
Liste d'attente pour les clients sans réservation
Pour les clients sans réservation qui attendent une table. Activer sous Paramètres → Établissement → Liste d'attente (sans réservation) (désactivé par défaut). Visible uniquement si les SMS via CM.com sont configurés ; sinon la liste d'attente n'apparaît nulle part dans la caisse (pas même dans les réglages). Fonctionne indépendamment des réservations : même si elles sont désactivées. C'est aussi là que se trouve le texte du SMS (vide = "Hallo {naam}, uw tafel bij {zaak} is klaar. Wilt u zich melden bij de bediening?" ; {naam}, {zaak} et {personen} sont remplis).
- Bouton Liste d'attente dans la barre du haut, avec le nombre de personnes en attente (orange quand quelqu'un attend). + Sur la liste d'attente : nom, téléphone (pour le SMS), personnes, le temps d'attente annoncé et un souhait (terrasse, chaise haute).
- La liste suit l'ordre d'arrivée, avec depuis combien de temps chacun attend (en rouge si c'est plus long qu'annoncé), et en haut le nombre de personnes en attente, de couverts et l'attente moyenne du jour.
- Si le SMS échoue, la raison est indiquée. Renvoyer le SMS est possible.
- Installer : choisissez la table ; la caisse l'ouvre avec le nombre de couverts (si la caisse suit les couverts) et le nom comme nom de groupe (comme pour une réservation qui arrive).
- Parti (parti ou désisté) et Restaurer. Sous la liste figurent les personnes placées ou parties aujourd'hui, avec leur temps d'attente.
- Confidentialité : les numéros de téléphone sont effacés après un jour ; toute personne encore sur la liste après 12 heures en est retirée automatiquement. L'ajout, l'appel (avec seulement les 3 derniers chiffres du numéro) et le placement figurent dans le journal.
- Pourquoi pas dans Réservations ? Une réservation, c'est pour plus tard (date, heure, table à l'avance) ; la liste d'attente, c'est pour maintenant (ordre, attente, SMS quand la table est libre). D'où un interrupteur et un bouton à part, avec le même "ouvrir la table" que pour une réservation.
- En ligne sur la liste d'attente (facultatif, désactivé par défaut ; uniquement avec la boutique en ligne) : avec Les clients peuvent aussi s'inscrire eux-mêmes via la boutique en ligne, la boutique affiche Liste d'attente (et il y a un QR code pour la porte, dans la gestion de la boutique sous Tables et QR). Le client saisit son nom, son téléphone, le nombre de personnes et un souhait, et voit sa place en direct. Dans la caisse, il apparaît dans la liste avec en ligne ; appeler, placer et parti fonctionnent comme d'habitude, et le client le voit aussi sur son téléphone (il peut aussi s'y désinscrire).
Carte de fidélité / points
À activer dans Paramètres → Établissement → Carte de fidélité / points (désactivé par défaut, rien n'est alors visible nulle part). Vous y réglez aussi : points par euro (0 = cartes à tampons uniquement), après combien de points une récompense est accordée et combien d'euros de remise représente cette récompense.
- À la caisse, au-dessus du ticket, se trouve « + Carte de fidélité » : recherchez le client par nom ou numéro de téléphone, ou créez un nouveau client (nom, téléphone et e-mail facultatifs). Le nom et le solde de points apparaissent ensuite sur le ticket.
- Échanger : avec assez de points, « échanger 100 points : € 5 de remise » ; avec une carte à tampons pleine, « Café gratuit » (le café doit figurer sur le ticket). Cela devient une ligne de remise, que tout le monde peut retirer.
- Les points et tampons ne sont ajoutés ou déduits qu'à l'encaissement : les points sur le montant après remise (hors bons cadeaux vendus), les tampons par unité d'un produit lié à une carte à tampons (le produit gratuit ne compte pas).
- Sur le ticket de caisse : points gagnés, échangés, solde et état des cartes à tampons.
- Rapport → Clients (droit Gérer la carte de fidélité) : rechercher des clients, modifier leurs données, corriger des points (avec motif), historique et supprimer (RGPD : nom, téléphone et e-mail effacés ; l'historique reste anonyme). En bas, les cartes à tampons par produit (p. ex. 10 cafés = 1 gratuit).
- Un retour n'annule pas automatiquement les points gagnés ; corrigez-les si nécessaire dans Rapport → Clients.
- Carte de fidélité avec numéro (facultatif) : dans Rapport → Clients → (client), saisissez le numéro de carte (ou scannez la carte dans ce champ). Avec le lecteur de codes-barres, scanner cette carte associe le client au ticket, à la caisse et sur la borne. Vous pouvez aussi rechercher par numéro de carte via + Carte de fidélité.
Profil client : VIP, régimes alimentaires et préférences (facultatif)
À activer dans Paramètres → Établissement → Profil client, sous la carte de fidélité (désactivé par défaut ; ne fonctionne que si la carte de fidélité est activée). Ensuite :
- Sur l'écran de commande, "+ Profil client" apparaît sous le client associé : cochez VIP, choisissez les régimes alimentaires (végétarien, végan, pescétarien, halal, casher) et les allergies (les 14 allergènes), et saisissez les préférences (p. ex. "table habituelle près de la fenêtre", 300 caractères maximum). Ils s'affichent ensuite avec le client sur l'écran de commande, les allergies en rouge. Modifiable aussi dans Rapport → Clients → (client) → Profil client.
- Si vous touchez un produit contenant un allergène du client (voir Allergènes par produit), la caisse demande d'abord s'il faut quand même l'ajouter. Seul ce qui est renseigné pour le produit compte ; en cas de doute, demandez toujours à la cuisine.
- Un VIP reçoit une ★ sur le plan de salle : sur une addition ouverte et sur la réservation affichée de ce client. Quand les clients d'une réservation arrivent, la caisse associe le client de la réservation à l'addition.
- Les régimes alimentaires et les allergies (et VIP) figurent sur le bon de cuisine pour la cuisine et le bar :
GAST: VIP · Vegetarisch · allergie: Noten. - Les régimes alimentaires et les allergies sont des données de santé : ne les saisissez qu'avec l'accord du client. Le journal indique seulement que le profil a été modifié, pas les souhaits eux-mêmes. Supprimer le client supprime aussi le profil client.
Favoris / boutons rapides
Désactivé par défaut. Paramètres → Établissement → Favoris / boutons rapides :
- Meilleures ventes : en tête de la barre des catégories, le bouton ★ Favoris avec les 12 produits les plus vendus ces 14 derniers jours (mis à jour automatiquement). L'écran de commande s'ouvre sur les favoris.
- Choix manuel : sur l'écran de commande, maintenez un produit appuyé (ou clic droit) et choisissez ★ Favori (bouton rapide) ; une seconde fois = retirer. Droit Gérer les produits. Toutes les caisses le voient immédiatement.
- La saisie, les options, les menus, le happy hour et « épuisé » fonctionnent sur les favoris exactement comme dans les catégories habituelles.
Nouvelle tournée
L'écran de commande affiche le bouton ↻ Nouvelle tournée (dès qu'il y a quelque chose sur l'addition, même si ce n'est pas encore commandé). Un appui ajoute à nouveau la dernière tournée (tout ce qui est parti en une fois avec « Commander », ou ce que vous venez de saisir) comme nouvelles lignes ; ensuite, simplement Commander. Les prix sont ceux du moment (happy hour compris).
- Appui long (ou clic droit) : choisir vous-même. Avec ◀ ▶ vous parcourez les tournées précédentes, activez/désactivez chaque produit (p. ex. décocher les plats) et réglez la quantité avec − / +. Les options et remarques sont reprises.
- Les produits épuisés et les menus ne sont pas repris (les menus se saisissent séparément). Fonctionne aussi sans connexion.
- Les lignes sont ajoutées telles qu'elles figurent sur l'addition : avec Regrouper les produits identiques activé, une ligne par produit (2 Cola) ; désactivé, chaque ligne séparément (2 fois 1 Cola).
Temps à table sur le plan de salle
Chaque table occupée affiche ⏱ 45m · 12m : depuis combien de temps la table est occupée et depuis quand rien n'a été saisi (maintenez le doigt sur la table, ou survolez-la avec la souris, pour les heures exactes). Si rien n'a été commandé depuis un moment, la table reçoit une bordure orange : allez voir. Le nombre de minutes se règle dans Paramètres → Établissement → Durée à table (par défaut 20, 0 = pas de bordure orange). Si rien n'a encore été saisi, le temps compte à partir de l'ouverture de la table.
Si plusieurs groupes (additions séparées) sont à une même table, une ligne s'affiche par groupe, p. ex. G1 ⏱ 50m · 12m et Jansen ⏱ 10m (le nom du groupe, sinon son numéro). Un groupe inactif depuis trop longtemps reçoit une étiquette orange et la table une bordure orange.
Déplacer toute une table
L'écran de commande propose Déplacer la table. Choisissez la salle (p. ex. Terrasse) et une table : tous les groupes de la table suivent, chacun avec sa propre addition. Si vous choisissez une table occupée, les tables sont fusionnées (les groupes s'y ajoutent). Pour ne déplacer qu'une partie, utilisez comme avant Diviser / déplacer. Si tout doit aller sur une seule addition, utilisez Fusionner.
Continuer hors ligne (tablette sans wifi)
Si la connexion entre une tablette et le serveur de caisse est coupée (wifi en terrasse, serveur momentanément éteint), une barre jaune apparaît et la tablette continue avec les dernières tables, produits et commandes ouvertes enregistrés :
- ouvrir des tables, saisir des produits et Commander sont enregistrés sur la tablette (même si elle redémarre) et apparaissent dans la liste de commande avec une bordure en pointillés (« pas encore envoyé ») ;
- dès que la connexion revient, tout part dans l'ordre vers le serveur, et ce n'est qu'alors que le bon de cuisine est envoyé en cuisine. Chaque envoi a une clé, donc rien n'arrive en double. Si quelqu'un d'autre a ouvert la table entre-temps, les produits sont ajoutés à cette commande ;
- encaisser, les remises, diviser, etc. ne sont possibles qu'avec une connexion ; « Encaisser » attend que tout ce qui concerne la table ait été envoyé.
Nombre de personnes
Facultatif et désactivé par défaut : Paramètres → Établissement → Commande et encaissement → Suivre le nombre de couverts. Désactivé = le moins de touches possible : une table libre s'ouvre d'une seule touche, aucun couvert n'est affiché, et le rapport, le tableau de bord et le résumé du jour n'affichent ni couverts ni dépense par couvert.
Activé : quand vous touchez une table libre, la caisse demande le nombre de personnes (grands boutons 1-8, ou saisie ; "Passer" = 1). Sur le plan de salle, une table occupée affiche "3/4 pers." (personnes/places, en jaune s'il y a plus de personnes que de places). Dans l'écran de commande, vous le modifiez avec le bouton "3 pers." dans la barre des groupes ; avec plusieurs groupes, la table additionne tous les groupes.
Sans couverts, tout continue de fonctionner : Partager équitablement à l'encaissement commence à 2, l'all-you-can-eat demande lui-même le nombre d'adultes et d'enfants, et les réservations et la liste d'attente gardent leur propre nombre de personnes (la table s'ouvre alors sans couverts).
Registre HACCP
Tout établissement horeca doit surveiller et consigner la sécurité alimentaire : aux Pays-Bas selon la Hygiënecode voor de Horeca (code d'hygiène pour l'horeca, contrôle par la NVWA), en Belgique selon l'autocontrôle du FAVV (guide G-023). Activez le Registre HACCP dans Paramètres → Lois et règles (désactivé par défaut).
- Points de mesure (gestionnaire) : p. ex. chambre froide, congélateur, maintien au chaud, température à cœur après cuisson, refroidissement et réception des marchandises, avec un minimum et/ou un maximum en °C et une fréquence (chaque jour, deux fois par jour, chaque semaine ou à l'utilisation). Ajouter la liste standard crée une base de départ (réfrigération jusqu'à 7 °C, en Belgique jusqu'à 4 °C ; congélateur jusqu'à -18 °C ; maintien au chaud à partir de 60 °C ; cuisson à partir de 75 °C).
- Nettoyage et contrôle : tâches par jour, semaine (éventuellement un jour fixe) ou mois, avec zone et instructions, p. ex. désinfecter les planches à découper, filtres à graisse, contrôle des nuisibles, vérifier le thermomètre.
- Enregistrer (toute personne connectée) : bouton HACCP dans la barre supérieure, avec le nombre encore ouvert aujourd'hui. Saisir une température ou cocher une tâche (Fait ou Pas fait). Si une température est hors limite, une action corrective est obligatoire (p. ex. "porte fermée, produit jeté"). Les enregistrements ne peuvent pas être modifiés ; une erreur se corrige par un nouvel enregistrement.
- Aperçu (droit Chiffre d'affaires par période) : par période, tous les enregistrements, le nombre d'écarts et les enregistrements manqués par jour ; en CSV (Excel) ou à imprimer / enregistrer en PDF pour un contrôle.
Système de tirage et débitmètres
Chaque tirage signalé par un ordinateur de tirage ou un débitmètre arrive sur l'addition, pour que rien ne "s'échappe". Activez-le dans Paramètres → Système de tirage (désactivé par défaut).
- Sources (administrateur) : le système de tirage ou le système de débitmètres. Choisissez la marque ; la caisse remplit un préréglage. Des Pays-Bas et de Belgique : Van Duijnen Horeca (automatisation du tirage, Dashbar), Beconet (Multi-Tap), TapSystems, Horecatechniek Nederland, Heineken SmartDispense, WeissBeerger / AB InBev et BarTrack ; ensuite Gruber, Addimat, WMF / Hogatron (E-Protokoll), Drinkotec (ex-Hartec), , Berg, Easybar, Azbar, Scanabar, PourMyBeer, iPourIt, BeerBoard, US BeerSAVER, Bevchek, Capton/BarVision, Kegtron, Kegbot Kegboard, un "robinet intelligent" ou votre propre système. La connexion est possible de cinq façons (Kegboard : voir Tirage dosé et Kegboard ci-dessous) :
- Champs :
kraan(outap,plu),ml(oucl,liter,volumeaveceenheid) ouporties,id(le même tirage deux fois = comptabilisé une fois),tijdstip,tafel,bediening; un tirage, une liste ou{ "taps": [...] }. - Réseau (TCP) : la caisse se connecte à l'ordinateur de tirage (adresse et port) ou écoute elle-même sur un port.
- Port série : port COM ou USB-série, 1200–115200 baud, 8N1, 7E1 ou 7O1.
- Pour le réseau et le port série, vous réglez le format des messages (un message par ligne, ou STX … ETX avec éventuellement un contrôle XOR et un retour ACK/NAK) et le modèle d'un message, avec les parties
kraanoupluet éventuellementml,cl,liter,porties,tafel,bedieningetid(p. ex.kraan;mlou seulement un PLU par verre). Les fournisseurs ne communiquent leur format exact qu'aux installateurs ; demandez-le au fournisseur de l'ordinateur de tirage. Tirage test envoie un tirage comme le ferait l'ordinateur de tirage.
- Champs :
- Robinets (administrateur) : par robinet ou PLU, le produit et la façon dont il arrive sur l'addition : par verre (verre en ml ; un tirage de 520 ml avec des verres de 250 ml = 2 verres ; un verre compte à partir de 50 %) ou par litre (le prix du produit est le prix au litre ; sur l'addition p. ex. "Pils 0,33 l" pour le bon montant).
- Sur l'addition : si l'ordinateur de tirage signale une table, le tirage va directement sur la commande ouverte de cette table. Sinon il apparaît sous Tiré : dans l'écran de commande, la barre "… tirage(s) sans addition" s'affiche ; choisissez les tirages et touchez Sur cette addition. Les lignes sont aussitôt commandées (aucun bon n'est plus envoyé au bar) et le stock est déduit. Le bouton Tiré dans la barre supérieure affiche tout ce qui n'a pas encore d'addition.
- Rejeter (droit Annulation) : rinçage, casse, dégustation, personnel, offert ou autre (avec commentaire) ; cela est consigné dans le journal. Trop peu pour un verre (p. ex. rinçage) doit être rejeté.
- Aperçu (droit Chiffre d'affaires par période) : par robinet, ce qui a été tiré, mis sur l'addition, rejeté (par motif), annulé et encore ouvert, en litres, avec le pourcentage vendu, et en CSV.
- Les tirages signalés ne peuvent pas être modifiés (seulement traités).
Tirage dosé et Kegboard
Avec le tirage dosé, un robinet ne s'ouvre qu'après l'enregistrement du verre en caisse, et uniquement pour cette quantité. Ainsi, rien n'est tiré qui ne figure pas sur le ticket. Cela ne fonctionne que si le système de tirage est activé, et vous l'activez par robinet (désactivé par défaut).
- Par robinet (administrateur, Paramètres → Système de tirage → Robinets) : cochez Tirage dosé et choisissez combien de temps le robinet peut rester ouvert après l'enregistrement (10–600 secondes, par défaut 120). Avec Kegboard, indiquez aussi le relais (électrovanne). Le tirage dosé n'est possible que par verre.
- Enregistrement : lors de Commander (ou d'Encaisser directement), la caisse crée pour chaque ligne du ticket avec ce produit un déblocage (nombre de verres × verre en ml) et l'envoie au système de tirage. Le tirage reçu ensuite appartient à cette ligne du ticket. Il n'est donc pas ajouté une seconde fois au ticket, ni à Tiré. Un tirage sans déblocage arrive simplement dans Tiré.
- Annulation de la ligne avant le tirage : le robinet se referme. Un déblocage non tiré à temps expire ; le robinet ne s'ouvre jamais plus tard.
- Déblocages dans l'écran de commande (une barre au-dessus du ticket) : voir ce qui est en cours, Arrêter et Débloquer à nouveau. Le redéblocage n'est possible que si rien n'a encore été tiré, donc rien n'est jamais débloqué en trop. Déblocage test (administrateur) débloque un verre sans ticket ; cela est inscrit au journal.
- Comment le déblocage parvient au système de tirage :
- Kegboard (Kegbot, open source, ESP32 avec débitmètres et électrovannes ; protocole entièrement public) : la caisse envoie un grant pour les robinets de ce produit, les relais et la quantité. La carte ferme elle-même le robinet lorsque la quantité est atteinte ou que le temps est écoulé.
- Réseau/série : une commande de déblocage configurable avec
{kraan},{ml},{porties},{sec}et{id}(p. ex.V{kraan};{ml}), envoyée dans le format de message de la source (ligne ou STX … ETX avec XOR). Une commande d'arrêt est facultative. Le fournisseur indique la commande exacte.
- Associer un Kegboard : sous + Source, choisissez la marque Kegbot Kegboard. La carte se signale auprès de la source ; cliquez sur Autoriser (ou Refuser). La carte reçoit alors une seule fois sa propre clé, que la caisse ne conserve que sous forme de hash. Un autre appareil ou une mauvaise clé ne change rien à une carte associée ; si la carte a perdu sa clé, utilisez d'abord Dissocier. La source affiche le firmware, les compteurs et les relais de la carte. Les robinets sont les numéros de compteur (0, 1 …). Une carte présentée au Kegboard est refusée : le paiement se fait à la caisse. Si le système de tirage est arrêté, la carte conserve ses messages et les envoie plus tard.
- Dans la source, vous définissez après combien de secondes sans débit le robinet se ferme (5–300, par défaut 30). Pour chaque robinet, indiquez le numéro de compteur, le relais (électrovanne) et la durée pendant laquelle le robinet peut rester ouvert après l'enregistrement.
Commander la musique depuis la caisse
Le personnel commande la musique depuis l'écran tactile de la caisse, sans écran séparé au bar. Activez-la dans Paramètres → Établissement → Écrans et utilisation → Commander la musique depuis la caisse (désactivé par défaut). Le bouton Musique apparaît alors dans la barre supérieure : par source (p. ex. Bar et Terrasse) Lecture, Pause, Suivant, Précédent, Plus fort, Moins fort et un curseur de volume, avec le titre en cours. Retour à la caisse ferme le panneau. En cas de désactivation, les sources sont conservées.
- Playlist (Sonos, Bluesound et VLC) : la file d'attente avec ce qui joue en ce moment. Appuyez sur un morceau pour le lire ; avec Modifier, vous retirez des morceaux (✕), les montez ou descendez (↑ ↓ ; Sonos et Bluesound) ou videz la playlist. Avec Choisir une autre musique, vous lancez un favori Sonos (p. ex. une station ou une chaîne Tunify) ou une liste de lecture Sonos, ou un préréglage BluOS.
- Sur un écran séparé : les mêmes commandes et la playlist en grand sur
http://<kassaserver>:3000/muziek, p. ex. sur un deuxième moniteur à côté de la caisse ou une tablette au bar (déjà connecté sur le même appareil, sinon avec un code PIN). - Sur une tablette ou un téléphone : un QR code avec l'adresse de cet écran séparé sur le réseau de l'établissement. Un employé le scanne avec sa propre tablette ou son téléphone (sur le réseau Wi-Fi de l'établissement) et se connecte avec son propre code PIN ; Se déconnecter le referme. Voir Deuxième écran sur une tablette ou un téléphone.
Le gestionnaire ajoute les sources avec + Source musicale, choisit comment chacune est connectée et la vérifie avec Tester :
- Soundtrack (soundtrack.io) : via l'API publique, avec un jeton API (à demander à Soundtrack) et une zone sonore (Charger les zones). Lecture, pause, suivant, volume et titre en cours.
- Sonos : l'adresse IP de l'enceinte (pour un groupe : l'enceinte qui dirige le groupe). Fonctionne avec tout ce qui est diffusé sur le Sonos, p. ex. Tunify, Spotify ou la radio.
- Bluesound (BluOS) : l'adresse IP du lecteur ; fonctionne aussi avec tout ce qui y est diffusé, p. ex. Tunify.
- VLC sur l'ordinateur musical : l'interface web activée (Outils → Préférences → Afficher les paramètres : Tous → Interface → Interfaces principales : Web, avec un mot de passe sous Lua) ; l'adresse IP (éventuellement avec
:poort, par défaut 8080) et le mot de passe. - Ordinateur musical propre (adresses web) : pour un ordinateur ou boîtier musical avec une adresse web par bouton ; GET ou POST, et
{volume}(0-100) dans l'adresse pour le volume. Sans adresse Plus fort/Moins fort, la caisse règle le volume par paliers. - Lecteur web du service musical : l'adresse web du lecteur web ou de la page de commande (p. ex. le lecteur web de Tunify ou Media Tools) s'ouvre dans la caisse avec le bouton Musique ; si le service ne peut pas s'afficher dans un autre écran, utilisez Ouvrir dans une fenêtre séparée.
La caisse communique avec les lecteurs depuis le serveur ; ils doivent donc être sur le même réseau que la caisse (Soundtrack via Internet). Toute personne connectée peut commander la musique ; la configuration requiert le droit Configurer l'établissement, le paiement et les imprimantes. Le jeton et le mot de passe ne sont plus jamais affichés et n'apparaissent pas dans le journal ; le journal n'enregistre que la configuration (activé/désactivé, sources), pas chaque appui sur un bouton. L'export de configuration ne reprend que activé/désactivé (les sources appartiennent à un seul établissement).
Deuxième écran sur une tablette ou un téléphone
La musique et les caméras peuvent aussi s'afficher sur la tablette ou le téléphone personnel d'un employé, comme deuxième écran à côté de la caisse. Dans la fenêtre Musique ou Caméras se trouve le bouton Sur une tablette ou un téléphone : il affiche un QR code avec l'adresse, p. ex. http://192.168.1.20:3000/muziek ou .../camera.
- Connectez la tablette ou le téléphone au réseau Wi-Fi de l'établissement.
- Scannez le QR code avec l'appareil photo (ou saisissez l'adresse dans le navigateur).
- Connectez-vous avec votre propre code PIN. Vous ne voyez que ce qui vous est autorisé : la musique pour tous, les caméras uniquement avec le droit Voir les images des caméras.
- Terminé : Se déconnecter en haut à droite. Si la connexion a expiré (p. ex. la tablette est restée inutilisée toute la nuit), l'écran redemande le code PIN.
Astuce : placez la page sur l'écran d'accueil de la tablette (dans le navigateur : Ajouter à l'écran d'accueil), elle s'ouvrira alors comme une app.
C'est pourquoi la caisse détermine l'adresse IP du PC de caisse sur le réseau (si le PC en a plusieurs, p. ex. Wi-Fi et câble, vous choisissez le réseau). Sur le portail de gestion (caisse à distance), c'est l'adresse du portail. La caisse génère elle-même le QR code, sans internet.
Coupler des tablettes : une seule touche vers la tablette (facultatif)
Encore plus simple : couplez une tablette une seule fois, et la caisse envoie la musique ou les caméras vers cette tablette d'une seule touche. Activez-le dans Paramètres → Établissement → Écrans et utilisation → Tablettes comme second écran (désactivé par défaut).
- Sur la tablette : ouvrez
http://<kassaserver>:3000/tablet(le réglage affiche Sur une tablette ou un téléphone avec le code QR), connectez-vous avec un code PIN et donnez un nom à la tablette, p. ex. Tablette Bar. Coupler. - Sur la caisse : la fenêtre Musique ou Caméras affiche maintenant le bouton Vers Tablette Bar (avec un point vert quand la tablette est allumée). Appuyez dessus : la tablette ouvre cet écran d'elle-même. Pour la musique, la source choisie est transmise (p. ex. Terrasse).
- Sur la tablette : Fermer revient en attente ; Découpler cette tablette supprime le couplage.
Laissez la page ouverte sur la tablette ; si la tablette est éteinte ou en veille, elle ouvre l'écran dès qu'elle est rallumée. La tablette reste connectée au nom de l'employé qui s'y est connecté : envoyer et voir les caméras n'est possible qu'avec le droit Voir les images des caméras. Dans le réglage, l'administrateur voit quelles tablettes sont couplées et si elles sont allumées, et peut les renommer ou les retirer. La tablette conserve sa propre clé ; la caisse n'en conserve qu'un hash. Désactivation : les tablettes couplées sont conservées. Le journal indique qui a couplé, renommé ou retiré une tablette.
Écran d'appel pour la vente à emporter
Un écran pour les clients avec En préparation à gauche et Prêt à droite, en grands numéros, comme dans une friterie ou un fast-food. Activez-le dans Paramètres → Établissement → Écrans et utilisation → Écran d'appel pour la vente à emporter (désactivé par défaut).
Aucune association nécessaire : sur une TV avec navigateur (smart TV, clé ou mini-PC), une tablette ou un second moniteur, ouvrez l'adresse de la caisse suivie de /oproep, par ex. http://192.168.1.20:3000/oproep. Le paramètre et la fenêtre Appeler proposent les boutons Sur un écran séparé et Sur une tablette ou un téléphone (code QR avec l'adresse). Aucune connexion nécessaire : l'écran n'affiche que des numéros. Touchez l'écran une fois pour que le navigateur puisse émettre du son.
Ce qui s'affiche :
- les commandes à emporter de la caisse, de la boutique en ligne et de Thuisbezorgd (et, si vous le souhaitez, aussi les commandes au comptoir sans table, en vente rapide) des 12 dernières heures ;
- dès que quelque chose a été envoyé à la cuisine ou au bar (ou que la commande en ligne est sur en préparation), le numéro apparaît sous En préparation ;
- Prêt se met automatiquement lorsque l'écran cuisine signale toute la commande comme prête ou que la commande en ligne est sur prêt. Le numéro clignote brièvement et l'écran émet un ding-dong ;
- un numéro prêt reste affiché le nombre de minutes défini (par défaut 10), ou jusqu'à Retirée;
- les commandes de la borne (voir Borne de commande en libre-service) y figurent toujours dès qu'elles sont payées ou seront payées à la caisse, même pour "sur place", avec le numéro de retrait de leur ticket ;
- en option, aussi les commandes pour les livreurs de Thuisbezorgd, Uber Eats, Deliveroo et HubRise (case Aussi les commandes pour les livreurs …) : avec le numéro de commande de la plateforme et le nom de la plateforme en dessous, pour que le livreur voie quand sa commande est prête. Retirée signale alors aussi à la plateforme que le livreur l'a récupérée (comme dans la fenêtre de la plateforme).
Le numéro : pour la boutique en ligne, Thuisbezorgd et les plateformes de livraison, le numéro de commande que le client ou le livreur a déjà ; sinon le numéro de retrait (1 à 999). Il est imprimé en grand sur le ticket, avec l'explication que le numéro apparaîtra à l'écran quand la commande sera prête (dans la langue du ticket).
Optionnel (désactivé par défaut, dans le paramètre) :
- Annoncer le numéro à voix haute : pour un nouveau numéro prêt, l'écran dit par ex. "Numéro 42, votre commande est prête." dans la langue choisie (néerlandais, anglais, allemand, français, espagnol, italien, portugais, polonais, turc ou arabe). La voix vient du navigateur de l'écran et sonne différemment selon l'appareil ; touchez l'écran une fois après l'ouverture. Après le carillon, si le son est aussi activé.
- Suivi de commande sur le téléphone : un QR code figure sous le numéro de retrait sur le ticket. Le client le scanne, voit son numéro et l'état (commandée, en préparation, prête, récupérée) et reçoit une notification quand la commande est prête. Cela passe par le portail de gestion : la caisse doit y être connectée. Pas pour la boutique en ligne et Thuisbezorgd (ils ont leur propre suivi) ni pour la borne (elle a son propre paramètre).
La caisse dispose du bouton Appeler (avec le nombre de commandes encore en préparation) :
- Prêt met un numéro sur prêt à la main (sans écran cuisine, ou si c'est plus rapide). Pour une commande de la boutique en ligne ou de Thuisbezorgd, le statut suit, le client est donc aussi prévenu.
- Retour le remet sous En préparation.
- Retirée le retire de l'écran (avec Annuler).
Dans le paramètre, vous choisissez aussi si le prénom s'affiche à côté du numéro (non par défaut, pour la confidentialité) et si l'écran émet du son. Désactivation : pas de bouton Appeler ni de numéro de retrait sur le ticket ; les paramètres sont conservés. Le journal indique qui a mis quoi à la main sur prêt, retour ou retirée.
Pointage arrivée/départ
Par défaut, le pointage est désactivé : il n'apparaît alors nulle part dans la caisse (pas de bouton dans la barre supérieure, rien sur l'écran de connexion, pas d'onglet Horaires de travail). Activez-le via Paramètres → Établissement, sous Pointage arrivée/départ du personnel :
- Désactivé : ne pas utiliser. Si vous désactivez le pointage plus tard, il n’apparaît plus nulle part, mais les heures déjà pointées sont conservées (rien n’est supprimé) ; si vous le réactivez, elles sont de nouveau là.
- Activé : les employés peuvent pointer leur arrivée et leur départ. Après la connexion, la caisse propose de pointer l'arrivée (Pas maintenant est possible). La barre supérieure affiche alors Pointer l'arrivée ou Arrivée pointée 17:02 ; touchez-le pour pointer le départ.
- Obligatoire : après la connexion, pointer d'abord l'arrivée, sinon la caisse est inutilisable. Pointer le départ vous déconnecte immédiatement.
Ceux qui n'utilisent pas la caisse (p. ex. la cuisine) pointent sur l'écran de connexion : touchez Pointer l'arrivée / le départ et saisissez votre code PIN. Cela alterne entre arrivée et départ, sans connexion.
Si le pointage est activé, l'administrateur voit dans Paramètres → Horaires de travail :
- qui a pointé en ce moment (et peut pointer le départ de quelqu'un qui l'a oublié) ;
- les heures travaillées par employé et par période, avec tous les services, et un téléchargement CSV (heures aussi en nombre décimal pour la paie) ;
- modifier ou ajouter des services (touchez un service, ou + Ajouter un service). Chaque modification est notée dans le journal avec les anciennes et nouvelles heures.
En Belgique, chaque pointage d'arrivée et de départ est aussi signalé à la boîte noire. Si elle est injoignable, le pointage n'a pas lieu (comme pour l'encaissement). La conformité exacte à l'enregistrement belge des présences doit encore être confirmée.
Pesée et étiquettes (balance)
Si la balance est activée (Paramètres → Balance), les produits peuvent avoir un prix au kilo. Tous les autres produits restent simplement à l'unité.
- Peser : touchez un produit au prix au kilo (le bouton affiche p. ex.
12,95/kg). La fenêtre Peser affiche le poids de la balance (p. ex. une Aclas OS6X, ou la balance sur laquelle tourne la caisse elle-même) en direct ; vert = stable. Posez le produit sur la balance et touchez Ajouter dès que le poids est stable. Le prix est prix au kilo × poids (arrondi au centime) ; un récipient (tare) du produit est déduit automatiquement. Si le produit a des options, elles suivent ensuite. - Plusieurs balances : s'il y a plusieurs balances, choisissez en haut de la fenêtre sur laquelle vous pesez. Chaque caisse/tablette mémorise son choix.
- Manuellement : pas de balance (ou saisie manuelle autorisée), tapez alors le poids :
0,512ou1,2correspond à des kilos,512ou512 gà des grammes. - Étiquette de la TS6X : scannez le code-barres de l'étiquette avec le lecteur de codes-barres sur l'écran de commande (scannez simplement, rien ne doit être ouvert), ou touchez Étiquette et scannez ou saisissez les 13 chiffres. Le produit (PLU) et le poids proviennent de l'étiquette. Si un prix figure sur l'étiquette, la caisse facture exactement ce prix.
- À l'écran, sur le ticket de caisse et sur l'écran client, le poids est indiqué, p. ex.
Gehakt 6,63avec en dessous0,512 kg x € 12,95/kg; sur le bon de cuisine0,512 kg Gehakt. Diviser, déplacer et retourner se font en kilos. - Un produit pesé n'est possible qu'avec une connexion au serveur de caisse (le poids passe par le serveur de caisse).
Uber Eats, Deliveroo et HubRise
Outre Thuisbezorgd.nl / Takeaway.com, les commandes d'Uber Eats (Pays-Bas et Belgique), de Deliveroo (Belgique uniquement ; Deliveroo a quitté les Pays-Bas fin 2022) et de tout ce qui passe par HubRise (dont Uber Eats, Deliveroo, Just Eat/Takeaway.com et de petites applications de commande) arrivent aussi en caisse. Chaque plateforme s'active séparément dans Paramètres → Plateformes de livraison (désactivé par défaut, la désactivation conserve tout). L'onglet indique pour chaque plateforme dans quels pays elle fonctionne et avertit si elle ne fonctionne pas dans le pays de l'établissement.
- Activez-la, puis Se connecter à Uber Eats et associer le magasin (l'établissement se connecte avec son propre compte Uber Eats). Si le compte a plusieurs magasins, saisissez l'identifiant du magasin (store id) et reconnectez-vous. Uber Eats doit d'abord approuver Pin Voordeel comme partenaire.
- Deliveroo : en direct, via le portail. Saisissez le site id (location id) et l'identifiant de marque (brand id). Sans tablette (par défaut) : la caisse accepte ou refuse ; avec tablette : l'établissement accepte sur la tablette et le portail signale seulement si la commande est en caisse.
- HubRise : la caisse récupère elle-même les commandes (toutes les 20 secondes, aucun portail nécessaire).
- Par plateforme : accepter automatiquement, bon de cuisine directement vers la cuisine/le bar et (Uber Eats, Deliveroo) envoyer le menu automatiquement après une modification et Envoyer le menu maintenant. Le menu contient les produits cochés sous Produits sur le menu d'Uber Eats et Deliveroo, avec leurs options ; l'état épuisé est transmis aussi.
Commandes. Une commande devient une commande normale (bezorgen ou afhalen, nom de groupe <platform> <nummer>) aux prix de la plateforme : produits reconnus par leur identifiant (issu du menu), leur code ou leur numéro PLU ; inconnu = une ligne séparée au prix de la plateforme (et une alerte) ; frais de livraison, suppléments et réductions en lignes séparées ; si le total ne correspond toujours pas, une ligne "Écart". Le bon de cuisine part directement vers la cuisine/le bar. Bouton Plateformes dans la barre supérieure (avec le nombre de commandes en cours ; orange s'il y a quelque chose à accepter) : accepter ou refuser (avec motif), en préparation, prête, en livraison, livrée ou retirée, annuler et Finaliser (payé en ligne). Ce que la plateforme connaît lui est renvoyé (Uber Eats : accepter, refuser, annuler ; Deliveroo : accepter, refuser, en préparation, prête, retirée ; HubRise : tous les statuts). Si l'établissement livre lui-même (livraison propre), la commande figure aussi dans Tournées, et le départ et la livraison sont transmis automatiquement à la plateforme. Une annulation par la plateforme fait expirer la commande. Si la caisse n'est plus connectée au portail depuis plus de 2 minutes, le portail refuse une nouvelle commande Uber Eats et signale à Deliveroo (avec tablette) l'échec, pour que l'établissement le voie sur la tablette.
Code : apps/pos-server/src/lib/bezorgplatforms.ts, routes/bezorgplatforms.ts ; écrans Bezorgplatforms.tsx. Côté portail : horecapos-portaal/src/platforms.mjs. Journal : Plateformes de livraison (activation, paramètres, commandes). Tout est inclus dans les sauvegardes de la caisse.
Les petites plateformes aux Pays-Bas et en Belgique (Homie, Hebtrek, sneleten.nl, Bistroo ...) n'ont pas d'intégration caisse publique ; si elles sont sur HubRise, elles fonctionnent via HubRise. Pour le reste : voir le backlog.
Monnayeur automatique (système fermé de gestion des espèces)
Désactivé par défaut : les espèces fonctionnent comme d'habitude. Avec un système fermé de gestion des espèces, le personnel ne touche pas l'argent liquide : le client ou l'employé insère l'argent dans le monnayeur, qui le compte, détecte les faux billets et rend la monnaie.
- Monnayeurs avec lesquels la caisse communique elle-même :
- CashDro (3, 4+, 5, 7, S Compact ; NuKassa, KluisKassa) : via le réseau (service web). Activez Web Integration sur le CashDro et créez un utilisateur dédié pour la caisse.
- Cashmatic (SelfPay 460/860/1060 ; en Belgique Xpos) : via le réseau (port 50301) avec un utilisateur du Cashmatic.
- Azkoyen Cashlogy (POS1000, POS1500) : via le CashlogyConnector sur un PC Windows près du monnayeur (port 8092).
- CashKeeper : via CKMonitor sur un PC Windows (port 16501).
- Glory CASHINFINITY (CI-5, CI-10, CI-10X ; aussi via Cikam) : via la commande (FCC) du monnayeur. Encore en bêta : faites vérifier la première connexion par Glory ou votre revendeur.
- Externe : un autre logiciel pilote le monnayeur et communique avec la caisse (comme Cikam, ImaCash pour 25 marques, le logiciel de CashGuard/StrongPoint (Merlin), PayComplete (SUZOHAPP), Gunnebo SafePay ou des marques françaises comme CashMag).
- Monnayeur de test : sans matériel, pour s'exercer ou faire une démonstration. Avec Tester la connexion, vous vérifiez l'adresse et les identifiants. Placez le monnayeur dans votre propre réseau (jamais ouvert sur Internet) et utilisez un utilisateur dédié pour la caisse, pas un administrateur.
- Encaisser en Espèces : Payer au monnayeur automatique lance le paiement du montant (arrondi pour les espèces si c'est activé, plus le pourboire ; en cas de partage de l'addition, la part). L'écran affiche ce qui a été inséré et ce qui est rendu ; la caisse n'encaisse que lorsque le monnayeur signale terminé. Annuler = le monnayeur rend l'argent. Si le monnayeur n'a pas pu rendre toute la monnaie (pas assez de pièces), le montant à prendre dans le tiroir-caisse est indiqué. Un paiement réussi qui n'a pas encore été encaissé (p. ex. tablette en panne) est retrouvé avec cette commande.
- Espèces uniquement via le monnayeur (activé par défaut) : le serveur de caisse n'accepte alors les espèces qu'avec un paiement réussi au monnayeur pour exactement cette commande et ce montant. Désactivé = espèces aussi directement dans le tiroir.
- Tiroir-caisse (Rapport → Tiroir-caisse, droit Gérer le tiroir-caisse) : Consulter le contenu (par pièce et par billet, avec Cashmatic, Cashlogy, Glory et le monnayeur de test), Décaisser avec un motif (p. ex. monnaie pour le tiroir), Remplir et Prélever (la monnaie reste ; avec Cashmatic). Attendu dans le tiroir-caisse ne compte pas l'argent du monnayeur (indiqué séparément en dessous : Dans le monnayeur automatique), mais bien la monnaie qui a dû être prise dans le tiroir.
Le bouton ©
En bas à droite de chaque écran (code PIN, plan de salle, commande et cuisine) se trouve un petit bouton ©. Il affiche les coordonnées d'OptimumPOS : logo, adresse, téléphone, e-mail et site web. L'icône est stockée localement dans l'application et fonctionne donc aussi sans internet. Cette même icône est l'icône de l'application (onglet et écran d'accueil).
Partie 2 · Manager
Premiers pas
Par défaut, un manager peut faire tout ce que fait le service, et en plus notamment accorder des remises, effectuer des retours, clôturer la journée, gérer le tiroir-caisse et consulter le journal et le stock. Cela se trouve surtout sous le bouton Rapport :
- Situation intermédiaire (X) : le chiffre d'affaires jusqu'à présent, sans clôturer la journée.
- Tiroir-caisse : fonds de caisse, entrées/sorties d'argent et ouverture du tiroir.
- Clôturer la journée (Z) : en fin de journée ; une nouvelle journée commence ensuite.
- Rapports Z précédents, Chiffre d'affaires par période et Tableau de bord.
- Journal, Bons cadeaux et Clients.
Stock
Désactivé par défaut. À activer via Paramètres → Établissement → Suivre le stock. Désactivé = invisible partout dans la caisse.
- Pour chaque produit, vous choisissez dans Paramètres → Produits → (produit) → Stock :
- Non : comme toujours ;
- Par produit : chaque vente déduit 1 (p. ex. bouteilles, canettes), avec un seuil d'alerte pour « presque épuisé » ;
- Via les ingrédients : une recette, p. ex. hamburger = 1 pain + 150 g de viande + 1 tranche de fromage. Chaque vente déduit les ingrédients.
- Paramètres → Stock (droit Gérer le stock, par défaut manager et administrateur) :
- Produits et Ingrédients : l'état du stock, avec épuisé / presque épuisé ; filtre « uniquement (presque) épuisé » et export CSV.
- Pour chaque produit ou ingrédient, vous enregistrez une Réception (+) (livraison), un Inventaire (=) (la quantité comptée devient le nouveau stock) ou une Sortie de stock (−) (casse, date dépassée ; motif obligatoire).
- Créer des ingrédients avec une unité (st, g, kg, ml, cl, l, portion, bouteille, fût) et un seuil d'alerte.
- Historique : tous les mouvements (vente, annulation, réception, inventaire, sortie de stock) avec qui et quand. Les actions de gestion sont aussi notées dans le journal.
- La déduction se fait à Commander (ou à l'encaissement pour ce qui a été encaissé directement). Une annulation réintègre le stock. Diviser et déplacer ne comptent pas deux fois. Pour les menus, ce sont les plats qui sont déduits, pas la ligne du menu. Les retours (avoir) ne réintègrent pas le stock (un article rapporté n'est généralement plus vendable) ; enregistrez-le éventuellement comme réception.
- Si le stock est épuisé (ou si un ingrédient ne suffit plus pour une portion), le produit passe automatiquement en épuisé sur toutes les caisses. Quand il est presque épuisé, encore N s'affiche sur le bouton du produit. Après une réception ou un inventaire, il peut de nouveau être commandé immédiatement. Le serveur de caisse refuse alors aussi le produit (« Pils » est épuisé (stock 0)), y compris depuis une tablette qui ne le savait pas encore.
- Le stock peut descendre sous 0 (p. ex. deux tablettes en même temps, ou commande hors ligne) ; l'inventaire remet les choses en ordre.
- Liste de commande : Paramètres → Stock → Liste de commande. Pour chaque produit (suivi par produit) et chaque ingrédient, vous réglez en plus du seuil d'alerte réapprovisionner jusqu'à et le fournisseur. La liste de commande reprend tout ce qui est au niveau du seuil d'alerte ou en dessous (sans seuil d'alerte : à 0), par fournisseur, avec comme proposition réapprovisionner jusqu'à − stock. Les quantités sont modifiables et peuvent être cochées/décochées. Ensuite Imprimer (imprimante de tickets), Copier (pour un e-mail ou WhatsApp), Export (CSV), et après la livraison Livré : comptabiliser comme réception (enregistre tout en une fois). La case en haut affiche aussi ce qui n'est pas encore épuisé, pour commander davantage.
- Options : dans un groupe d'options (Paramètres → Produits → Options) se trouve le bouton Stock. Indiquez pour chaque option les ingrédients par unité, p. ex. Supplément fromage = 1 tranche de fromage, Frites = 150 g de frites. Si l'option est choisie, ces ingrédients sont déduits par unité (même si le produit lui-même ne suit pas de stock ; en cas d'annulation, ils sont réintégrés). Si un ingrédient est épuisé, l'option apparaît à la caisse comme (épuisé) et ne peut pas être choisie.
Commander auprès des fournisseurs
Désactivé par défaut. À activer dans Paramètres → Stock → Commander auprès des fournisseurs (uniquement avec Suivre le stock activé). Désactivé = la liste de commande fonctionne comme d'habitude.
- Fournisseurs (onglet Fournisseurs) : choisissez-en un dans la liste ou créez votre propre fournisseur. La liste comprend des grossistes et cash & carry (Sligro, Sligro-ISPC/Sligro-M, HANOS, Makro, De Kweker, Horeca Totaal, Van Zon, zegro, Lekkerland), du foodservice (Bidfood et Bidfood Belgium, Solucious, Chefs Culinar, Java, Q-Food, Agora Culinair, VHC Jongens/Kreko/Actifood, Hocras, Van Hoeckel ...), des grossistes en boissons (De Klok, Henk Smit, Horesca, De Monnik, Hansen, Dranken Geers ...), des brasseurs et boissons rafraîchissantes (Heineken via Sligro, AB InBev/BEES, Alken-Maes, Haacht, Duvel Moortgat, Martens, Coca-Cola, Spadel, Grolsch, Bavaria), des fournisseurs de produits frais (Van Gelder, Driessen, FiliusKaas, Bakkers Brigade, Rungis ...), du non alimentaire (Bunzl, Takeaware, Supplierz), la boutique de vins en ligne Vinify.nl et des plateformes de commande (Apicbase, Exact Horeko, Growzer, inOne, Cuisin.io, OrderXL). Seuls les fournisseurs du pays de l'établissement y figurent. Si vous en choisissez un, le mode de commande, le fichier et les colonnes sont déjà réglés ; chaque fournisseur indique comment y commander.
- Par fournisseur : numéro de client, commander via :
- E-mail : la commande sous forme d'e-mail (avec tableau) à l'adresse e-mail de commande, éventuellement une copie, avec la liste de commande en pièce jointe : CSV, Excel, CSV pour Care4Fresh (beaucoup de grossistes en produits frais), UBL 2.1 Order (Peppol BIS Order), EANCOM ORDERS (D96A aux Pays-Bas, D01B/HO2C en Belgique) ou cXML. Les réponses arrivent à l'adresse e-mail de l'établissement.
- Fichier : la caisse crée le fichier, vous le téléversez dans la boutique en ligne du fournisseur (p. ex. Bunzl Snel bestellen :
artikel;aantal, Takeaware :SKU,Quantity). Le séparateur, la ligne d'en-tête et les colonnes sont réglables (artikel,ean,omschrijving,aantal,eenheid,prijs,totaal; avecartikel=SKU, vous donnez un nom propre à l'en-tête). - Connexion (cXML) : un cXML OrderRequest avec numéro de client et secret partagé envoyé à l'adresse de commande du fournisseur, comme le font les systèmes d'achat vers Sligro, HANOS et Bidfood. L'adresse, le numéro de client et le secret vous sont fournis par le fournisseur (Sligro : koppelingen@sligro.nl). Le secret n'est jamais réaffiché à l'écran.
- Les deux connexions acceptent aussi un nom d'utilisateur et un mot de passe (Basic) et des en-têtes supplémentaires (un par ligne, p. ex.
X-Api-Key: ...). - Dépôt (SFTP/FTPS) : la caisse dépose elle-même le fichier (EANCOM, UBL, CSV, Excel ...) dans un dossier sur le serveur du fournisseur, comme de nombreux grossistes acceptent les commandes EDI. SFTP (SSH), FTPS (explicite sur le port 21 ou implicite sur le port 990) ou, uniquement sur votre propre réseau, FTP. Connexion par mot de passe ou par clé SSH (OpenSSH, PEM ou PuTTY .ppk ; ed25519, ECDSA ou RSA). Créer une clé crée une paire de clés dans la caisse ; vous envoyez la clé publique au fournisseur. Tester la connexion se connecte et recherche le dossier. L'empreinte du serveur SFTP est enregistrée lors de la première connexion puis vérifiée (un autre serveur ne reçoit pas le mot de passe) ; pour FTPS avec un certificat propre, vous fixez l'empreinte du certificat. Aucun logiciel supplémentaire n'est nécessaire.
- Imprimer : la commande sur l'imprimante de tickets, pour la transmettre par téléphone.
- Les mots de passe, clés, jetons et en-têtes ne sont jamais renvoyés à l'écran (laisser vide = conserver, Effacer = supprimer).
- Demander une connexion : pour un fournisseur, la caisse rédige un e-mail de demande de connexion (cXML, EDI via SFTP/FTPS, UBL/Peppol ou l'API propre du fournisseur) avec les données de l'établissement (nom, adresse, numéro de TVA, numéro client, GLN) et ce qui est nécessaire ; pour l'EDI, avec la clé publique. Modifiez et envoyez ; une copie et les réponses vont à l'adresse e-mail de l'établissement. La date de la demande figure chez le fournisseur. Pour Sligro, elle est envoyée à koppelingen@sligro.nl ; sinon, vous saisissez l'adresse de votre responsable de compte.
- Un fournisseur propre (hors liste) peut tout faire sauf ce que le fournisseur lui-même doit proposer : l'e-mail, le fichier et l'impression fonctionnent toujours ; une connexion ou un dépôt uniquement avec les données de ce fournisseur.
- Jours de commande et livraison : jours de commande, heure limite, délai de livraison (la date de livraison souhaitée sur la commande) et un montant minimum de commande. Automatique : les jours de commande, à partir de cette heure, la caisse prépare elle-même une commande (vous la vérifiez) ou l'envoie directement (par e-mail, dépôt ou connexion ; sous le montant minimum de commande, elle est seulement préparée). Une fois par jour et par fournisseur.
- Par produit (Paramètres → Produits → (produit) → Stock, sous Par produit) et par ingrédient : Commander chez (le fournisseur), la référence de commande chez ce fournisseur, l'EAN, par conditionnement (casier de 24 = 24), le nom du conditionnement et le prix d'achat par conditionnement. Le seuil d'alerte est le moment de commander ; Réapprovisionner jusqu'à indique la quantité à atteindre alors.
- Bons de commande (onglet Bons de commande) :
- Proposition de commande par fournisseur : tout ce qui est au niveau du seuil d'alerte ou en dessous. Ce qui est déjà commandé mais pas encore livré (en route) est pris en compte, pour ne rien commander en double. Proposition = réapprovisionner jusqu'à − stock − en route (sans Réapprovisionner jusqu'à : jusqu'au seuil d'alerte), arrondie au conditionnement entier supérieur. Ajustez les quantités et Créer la commande.
- Une commande est d'abord préparée (brouillon) : les quantités, les lignes libres (sans produit, p. ex. serviettes), la remarque et la date de livraison peuvent encore être modifiées. Puis Envoyer (selon le mode du fournisseur ou, pour une fois, autrement). En cas d'échec (p. ex. le fournisseur refuse), le motif est indiqué et vous pouvez réessayer.
- Reçue : par ligne, la quantité reçue (déjà réglée sur la quantité commandée) ; le stock est augmenté par conditionnement (2 casiers de 24 = 48), avec la commande dans l'historique.
- Chaque fichier (CSV, Excel, UBL, EANCOM, cXML) peut aussi être téléchargé séparément.
- Envoyée, échec, reçue et annulée sont notés dans le journal. La liste de commande normale continue de fonctionner ; si un produit a un fournisseur de la liste, il y apparaît sous ce nom.
Gestion des avis
Lire les avis Google et Trustpilot et y répondre depuis la caisse. À activer dans Paramètres → Fidélité et avis → Gestion des avis (désactivé par défaut, rien n'est alors visible nulle part). Lire et répondre dans Rapport → Avis (droit Lire les avis et y répondre, par défaut aussi pour le manager). Si vous le désactivez, les connexions et les avis sont conservés.
- Chaque établissement appuie ensuite simplement sur Se connecter à Google et se connecte avec son propre compte Google de la fiche d'établissement. Une clé Places peut aussi être gérée de manière centrale (les frais sont alors à la charge du fournisseur). Trustpilot se gère par établissement : chaque établissement a son propre compte Trustpilot Business (l'API est incluse dans un abonnement payant), qui fournit la clé, le secret et le business user ID. Dans la caisse, chaque option indique "Qui s'en occupe ?".
- Application du fournisseur (via le portail client) : si l'application Google et/ou l'application Trustpilot du fournisseur se trouvent dans le portail client (voir le README de horecapos-portaal, "Reviews : applications du fournisseur"), l'administrateur choisit Application du fournisseur sous Connexion et clés (par défaut pour une nouvelle liaison si le portail possède l'application). L'établissement appuie sur Se connecter à Google ou Se connecter avec Trustpilot et se connecte avec son propre compte ; la caisse attend elle-même la fin de la connexion (toutes les 3 secondes, au maximum 15 minutes) et récupère les tokens une seule fois auprès du portail. Le renouvellement passe aussi par le portail. Aucun client-ID, secret ou clé API nécessaire dans la caisse ; pour Trustpilot, il faut toutefois le domaine et, pour les réponses, le business user ID. Trustpilot public lit alors via la clé du portail. Nécessite
PORTAAL_URLetPORTAAL_SLEUTEL. Application propre ou clé API continue de fonctionner comme décrit ci-dessous. - À qui appartiennent les avis : ils restent sur la propre fiche d'établissement Google et la propre page Trustpilot de l'établissement, et la caisse ne les conserve que dans sa propre base de données. Les réponses apparaissent sous le nom de l'établissement. Le portail ne fait que transmettre la connexion (en mémoire, au maximum 15 minutes, récupérable une seule fois) et ne conserve ni avis ni tokens ; le nom de l'application du fournisseur n'apparaît que sur l'écran de consentement.
- S'inscrire soi-même : chaque plateforme propose un lien pour créer soi-même une fiche d'établissement Google (business.google.com/create) ou un compte Trustpilot Business (business.trustpilot.com), et pour Trustpilot un lien vers les abonnements (business.trustpilot.com/plans). L'inscription et le paiement se font directement auprès de la plateforme ; il n'existe pas d'API pour cela.
- Ensuite Se connecter à Google et connectez-vous avec le compte qui gère la fiche d'établissement. Un seul établissement dans la fiche = choisi automatiquement ; plusieurs = à choisir dans la caisse.
- Google Places (lecture seule) : avec le Place ID et une clé API de la Places API (ou
GOOGLE_PLACES_API_KEY) : la moyenne, le nombre d'avis et les 5 avis les plus pertinents. Impossible de répondre de cette façon. - Trustpilot Business (lecture et réponse) : clé API et secret API d'une application dans Trustpilot Business (Integrations → API ; ou
TRUSTPILOT_API_KEYetTRUSTPILOT_API_SECRET), le domaine de l'établissement (la caisse recherche la business unit) et, pour les réponses, le business user ID de la personne qui répond. - Trustpilot public (lecture seule) : uniquement la clé API.
- La caisse récupère les avis toutes les 30 minutes (et juste après la connexion ; Récupérer maintenant). La caisse ne conserve pas l'adresse e-mail ni le numéro de commande du client (transmis par Trustpilot).
- Rapport → Avis : moyenne, nombre par étoile, sans réponse et non lus ; filtrer par plateforme, étoiles, sans réponse et non lus. Par avis Répondre (au maximum 4000 caractères ; tout le monde peut le lire), Modifier la réponse, Supprimer la réponse et Lu. Un avis nouveau ou modifié est non lu. Le journal contient review_beantwoord et review_antwoord_weg.
- La déconnexion conserve les avis récupérés.
Marketing par SMS et e-mail
Messages aux clients de la carte de fidélité qui ont donné leur consentement. Sans carte de fidélité, aucun des deux ne peut être activé.
- Consentement par client et par canal : pour un nouveau client à la caisse, il y a les cases "Le client souhaite recevoir les actions par SMS" et "... par e-mail" (décochées par défaut). Sous Rapport → Clients, vous voyez et modifiez le consentement (avec la date à laquelle il a été donné) et un anniversaire (jour et mois uniquement). Se désinscrire : décocher et enregistrer.
- Menu mis à jour immédiatement : si vous activez ou désactivez le marketing ou la carte de fidélité, la caisse renvoie le menu à la boutique en ligne en quelques secondes (uniquement si quelque chose a changé), de sorte que la case apparaît ou disparaît aussitôt.
- Consentement via la boutique en ligne : si l'établissement a une boutique en ligne, la case "Je souhaite recevoir des offres par e-mail/SMS" apparaît au paiement (uniquement les canaux activés ; décochée par défaut). Lorsqu'une telle commande arrive, la caisse recherche le client par numéro de téléphone (sinon par adresse e-mail), le crée si nécessaire et enregistre le consentement avec la date. Un numéro ou une adresse manquant chez un client existant est complété ; le journal indique klant_toestemming avec la source webshop.
- Rapport → Marketing (droit Gérer la carte de fidélité) : en haut, combien de clients ont donné leur consentement pour les SMS et pour l'e-mail.
- Actions (ponctuelles) : nom, SMS ou e-mail, (objet,) texte avec
{naam},{zaak}et{punten}, et éventuellement seulement les clients qui ne sont pas venus depuis un moment ou qui ont au moins un certain nombre de points. Voir indique à combien de clients l'action est envoyée, le message tel que le client le recevra et le nombre de SMS par client. Envoyer un test à votre propre numéro ou adresse. Ensuite Envoyer : la caisse envoie en arrière-plan (1000 au maximum par fois) et compte ce qui a été envoyé et ce qui a échoué. Personne ne reçoit deux fois la même action ; si la caisse s'arrête en cours de route, Reprendre l'envoi continue avec ceux qui n'ont encore rien reçu. - Envoi via Mailchimp ou Klaviyo (avec une connexion à une liste choisie, voir ci-dessous) : pour une action par e-mail, vous choisissez sous Envoyer via la caisse (son propre serveur de messagerie, comme ci-dessus), Mailchimp ou Klaviyo. La caisse met alors d'abord la liste à jour (désabonnements, points), y crée une campagne pour exactement les clients choisis qui figurent sur la liste (Mailchimp : un groupe fixe dans l'audience ; Klaviyo : une liste propre à l'action), puis l'envoie avec l'expéditeur par défaut de l'audience ou du compte. Mailchimp/Klaviyo remplit
{naam}et{punten}pour chaque client ; le lien de désinscription du service figure en bas. Pas de limite de 1000 par fois et pas de code de réduction personnel ({code}). En cas d'échec, l'action reste un brouillon accompagné du message. L'onglet Marketing est aussi disponible lorsque seule la connexion est active (uniquement des actions via Mailchimp/Klaviyo ; Envoyer un test passe par le serveur de messagerie de la caisse). Les messages automatiques sont toujours envoyés par la caisse elle-même ; dans Mailchimp/Klaviyo, vous les créez comme Customer Journey ou Flow. Clé Klaviyo : également des droits d'écriture pour Campaigns et Templates (si vous êtes déjà connecté : reconnectez-vous). - En notification push via la boutique en ligne (si Notifications push avec offres est activé dans la gestion de la boutique) : sous Envoyer par, choisissez Notification push (boutique en ligne en tant qu'application), avec un titre (60 caractères max.) et un court texte (200 caractères max. ; seul
{zaak}est complété, car la boutique ne sait pas qui est le client). La caisse envoie l'action via le portail de gestion à la boutique en ligne, qui l'envoie aux clients qui y activent Offres par notification ; un appui ouvre le menu de la boutique. Après quelques secondes, l'action indique combien ont été reçues. 3 par jour max., avec ce que l'établissement envoie depuis la gestion de la boutique ; sinon l'action reste un brouillon avec la raison indiquée. L'onglet Marketing est aussi présent si seule cette fonction est activée (sans carte de fidélité ni marketing par e-mail). Pas de code promo ni de sélection (jours, points) ; pour tester : sur votre propre téléphone, activez Offres par notification dans la boutique en ligne. - Automatique : un message d'anniversaire (le jour de l'anniversaire, une fois par an) et "vous nous manquez" (après un certain nombre de jours sans visite, une fois à chaque absence du client). Activé/désactivé par message ; ils ne partent qu'en journée (10:00–20:00).
- Code promo personnel (facultatif, par message ou action ; uniquement si les Codes promo sont activés dans Paramètres → Établissement) : chaque client reçoit son propre code, p. ex.
TERUG-7K4Q2M(anniversaireJARIG-…, actionACTIE-…), en pourcentage ou en montant fixe, éventuellement avec un montant minimum de commande, utilisable une fois, valable le nombre de jours choisi après l'envoi (par défaut 30) et à la caisse et/ou dans la boutique en ligne. Placez{code}et{geldig}dans le texte là où vous les voulez ; sinon la caisse ajoute sous le message "Uw kortingscode: … (10% korting, aan de kassa of in de webshop, geldig t/m …)". Voir et Envoyer un test affichent un code d'exemple (TERUG-VOORBEELD, ne fonctionne pas). Si l'envoi échoue, le code n'est pas créé. L'action indique combien de codes ont été émis et utilisés. - Se désinscrire figure sous chaque message : dans un SMS "Se désinscrire ? Appelez le ... ou dites-le lors de votre prochaine visite", dans un e-mail un lien de désinscription vers l'adresse e-mail de l'établissement (y compris le bouton Se désabonner dans Gmail et Outlook). Une réponse à l'e-mail arrive à l'établissement.
- Confidentialité (RGPD) : uniquement les clients ayant donné leur consentement et ayant un numéro ou une adresse ; pas de numéros ni d'adresses dans le journal, mais pour chaque action le nombre d'envois réussis et échoués. Si vous supprimez un client, il disparaît aussi de la liste d'envoi.
- Coûts : les SMS passent par votre propre compte CM.com (plus de 160 caractères = plusieurs SMS par client). Gmail et les autres serveurs de messagerie ont une limite quotidienne ; avec beaucoup de clients, envoyez en plusieurs fois.
Pourboire par employé
Dans Paramètres → Établissement → Pourboire (uniquement si « Afficher les boutons de pourboire à l'encaissement » est activé), vous choisissez comment le pourboire par employé apparaît sur la situation intermédiaire (X), le rapport Z (ticket et e-mail) et le chiffre d'affaires par période (y compris dans le CSV) :
| Choix | Répartition |
|---|---|
| Désactivé (par défaut) | uniquement le total des pourboires, comme toujours |
| Chacun son pourboire | pourboire des additions que la personne a encaissées elle-même |
| Cagnotte selon les heures | tous les pourboires ensemble, répartis selon les heures pointées sur la période (nécessite le pointage arrivée/départ ; personne n'a pointé = parts égales) |
| Cagnotte égale | tous les pourboires ensemble, à parts égales entre ceux qui avaient pointé (sans pointage : ceux qui ont saisi ou encaissé quelque chose) |
Les centimes restants vont à ceux qui sont le plus proches du centime suivant, pour que le total soit toujours juste. C'est un récapitulatif : la caisse ne verse rien (c'est possible avec « Argent sorti du tiroir »). Les anciens rapports Z restent inchangés.
Rapport Z par e-mail
Saisissez une seule fois dans Paramètres → Établissement → Envoyer le rapport Z par e-mail à l'adresse e-mail de l'administrateur (plusieurs adresses : séparées par une virgule, 3 max.). Après Clôturer la journée, le rapport Z est alors envoyé automatiquement à cette adresse, en plus du ticket imprimé. Vide = pas d'envoi, comme toujours.
- L'envoi se fait en arrière-plan, pour qu'un serveur de messagerie lent ne retarde pas la clôture de la journée.
- En cas d'échec ou pour un nouvel envoi : Rapport → Rapports Z précédents → (rapport) → Renvoyer par e-mail (avec la mention KOPIE).
Résumé de la journée (facultatif)
Si une adresse est indiquée dans Envoyer le rapport Z par e-mail à, la case Avec un court résumé de la journée en haut de l'e-mail apparaît en dessous (désactivé par défaut). Activé = en haut de l'e-mail du rapport Z, quelques lignes en langage simple, uniquement à partir des données propres de la caisse (pas d'IA, rien ne sort) :
- chiffre d'affaires, tickets et couverts et la dépense par ticket, comparés à la même période une semaine plus tôt (en pourcentage) ; s'il n'y avait rien alors, c'est indiqué ;
- les 5 produits les plus vendus, et ce qui ressort : les produits vendus au moins 3 fois de plus ou de moins que la semaine dernière ;
- le nombre d'annulations (comparé à la semaine dernière) et l'heure la plus chargée (tickets et chiffre d'affaires).
Le rapport Z lui-même (ticket et e-mail) reste exactement le même. Aperçu d'aujourd'hui affiche le résumé depuis la dernière clôture journalière jusqu'à maintenant. Le résumé est en néerlandais, tout comme l'e-mail du rapport Z.
Tableau de bord
Onglet Tableau de bord dans Rapport (droit Chiffre d'affaires par période), en lecture seule :
- Chiffre d'affaires par heure en graphique : le jour choisi (bleu) à côté du même jour de la semaine précédente (gris). Aujourd'hui est comparé à la semaine précédente jusqu'à la même heure, pour que le pourcentage soit juste. Avec ◀ ▶ ou la date, vous choisissez un autre jour.
- Tuiles : chiffre d'affaires (± % par rapport à la semaine précédente), tickets et moyenne par ticket, dépense moyenne par client (sur place uniquement ; à emporter/livraison ne compte pas) pour ce jour et pour la période choisie.
- Top 10 des produits et heures d'affluence sur les 7, 28 ou 90 derniers jours. Les heures d'affluence sont une carte de chaleur jour de la semaine × heure (chiffre d'affaires moyen par jour d'ouverture) avec les trois heures les plus chargées au-dessus, pratique pour le planning.
Les bons cadeaux vendus ne comptent pas dans le chiffre d'affaires, les remises et en-têtes de menu pas dans le top 10 (comme dans les autres rapports). Une journée va de 00:00 à 24:00.
Rapports supplémentaires
Trois onglets supplémentaires dans Rapport, chacun activable séparément via Paramètres → Établissement → Gestion et rapports → Rapports supplémentaires (par défaut désactivés : pas d'onglet). Ils demandent le même droit que Chiffre d'affaires par période et sont en lecture seule. Période : cette semaine, la semaine dernière, ce mois-ci, le mois dernier, les 90 derniers jours, cette année ou au choix (au maximum un peu plus d'un an).
- Menu engineering : pour chaque produit, la fréquence de vente (part de toutes les unités vendues) par rapport à ce qu'il rapporte par unité (marge = prix de vente HT moins le prix de revient). Chaque produit reçoit une classification : Vedette (populaire et forte marge : à garder tel quel), Cheval de labour (populaire, faible marge : augmenter un peu le prix ou le rendre moins cher à produire), Énigme (peu vendu, forte marge : mieux le mettre en valeur) et Poids mort (peu vendu, faible marge : le retirer de la carte ou le remplacer). Populaire = au moins 70 % d'une part égale ; forte marge = au moins la marge moyenne par unité vendue. Le prix de revient provient d'Apicbase (Paramètres → Recettes), sinon du prix d'achat du produit (prix d'achat par conditionnement divisé par le nombre d'unités par conditionnement), sinon de la recette d'ingrédients ayant un prix d'achat (Stock). Les produits sans prix de revient figurent à part, en bas. En option par catégorie de produits (
?groep=). - Actions et codes : par code promo, par action issue de Marketing (les codes personnels regroupés) et par happy hour : nombre d'utilisations (tickets ; pour une happy hour, aussi les unités), le montant de la remise, le chiffre d'affaires et la moyenne par ticket.
- Pertes : ce qui a été sorti du stock (Paramètres → Stock, Sortie de stock (−)), par motif (majuscules et espaces sans importance) et par produit ou ingrédient, avec la valeur au prix de revient ; et ce qui a été annulé après avoir déjà été envoyé en cuisine ou au bar, avec la valeur de vente et la valeur au prix de revient.
Remises
Dans l'écran de commande, un manager ou un administrateur voit à côté du total le bouton % Remise :
- sur tout le ticket ou sur une ligne ;
- en pourcentage (10, 15, 20, 25, 50, 100% = gratuit, ou saisie libre) ou en montant fixe ;
- toujours avec un motif (Personnel, Client fidèle, Réclamation, Promotion, Usage propre ou saisie libre).
La remise apparaît comme ligne distincte sur le ticket ("Remise 10%", avec le motif en dessous) au même taux de TVA, de sorte que le total et le détail de la TVA sont corrects. Sur tout le ticket, la remise est répartie par taux de TVA. Supprimer : touchez le montant de la ligne de remise. Si une ligne avec sa propre remise est annulée, cette remise disparaît avec elle. Si vous supprimez un produit d'un ticket avec une remise en pourcentage sur tout le ticket, la caisse recalcule cette remise sur ce qui reste (en Belgique UC226) ; un montant fixe reste et est de nouveau réparti sur les lignes à l'encaissement. S'il n'y a rien à payer à cause d'une remise de 100%, clôturez avec "Clôturer (rien à payer)". Les remises figurent dans le journal, et dans le rapport X/Z et l'aperçu de période comme "dont remise". Lors du retour d'un ticket avec remise, la remise est appliquée au prorata.
Codes promo (facultatif)
Codes avec remise sur tout le ticket, par exemple pour une promotion (ZOMER10). À activer dans Paramètres → Établissement → Codes promo (désactivé par défaut) ; les codes se créent dans Paramètres → Codes promo (droit Gérer les produits) :
- remise en pourcentage ou montant fixe, éventuellement avec un montant de commande minimum, valable du/au et un nombre maximal d'utilisations (vide = illimité) ;
- par code : à la caisse et/ou dans la boutique en ligne (la caisse envoie les codes avec le menu ; l'utilisation compte pour la caisse et la boutique ensemble).
L'écran de commande affiche le bouton Code promo (tout le monde peut saisir un code ; le code a été créé au préalable par l'établissement). La remise apparaît sur le ticket comme ligne "Code promo CODE", répartie sur les taux de TVA ; un code par ticket, et plus possible une fois le ticket (partiellement) payé. Si vous supprimez la ligne ou si la commande est annulée, l'utilisation ne compte plus. Supprimer un code utilisé le désactive (les rapports restent justes). Tout figure dans le journal (Code promo). Code : lib/kortingscodes.ts, routes/kortingscodes.ts, Kortingscodebeheer.tsx, KortingscodeDialoog.tsx.
Ils ne figurent pas dans la liste de Paramètres → Codes promo (le nombre par action, oui, sous Rapport → Marketing) et sont transmis à la boutique en ligne tant qu'ils sont valables et inutilisés.
Rapports et clôture journalière
Bouton Rapport dans la barre supérieure :
- Situation intermédiaire (X) : chiffre d'affaires, TVA, modes de paiement, par catégorie et le tiroir-caisse depuis la dernière clôture journalière. Peut aussi être imprimée. Ne clôture rien.
- Clôturer la journée (Z) (manager ou administrateur) : compter le tiroir-caisse (l'écart par rapport au fonds de caisse + espèces s'affiche), saisir le fonds de caisse du lendemain, clôturer. Le rapport Z reçoit un numéro séquentiel, est conservé et imprimé sur l'imprimante de tickets. Impossible tant que des commandes sont ouvertes. Facultatif : Compter par pièce et billet (aide au comptage) remplit le montant compté pour vous ; le détail par pièce/billet figure alors aussi sur le rapport Z. Saisir soi-même le total fonctionne comme toujours.
- Tiroir-caisse (manager ou administrateur, facultatif) :
- Argent sorti du tiroir (dépôt à la banque, dépense, pourboire versé) ou argent dans le tiroir (monnaie) avec montant et motif. Le tiroir s'ouvre et un ticket avec une ligne de paraphe s'imprime, à conserver avec l'argent (désactivable). Il est pris en compte dans attendu dans le tiroir et figure ligne par ligne sur les rapports X et Z.
- Saisir ou corriger le fonds de caisse du jour (normalement, vous le saisissez lors de la clôture pour le lendemain).
- Ouvrir le tiroir sans vente, avec motif.
- Tout est noté dans le journal. Si vous ne l'utilisez pas, la clôture de la journée fonctionne exactement comme avant (fonds de caisse + espèces = attendu dans le tiroir).
- Sous le chiffre d'affaires figurent le nombre de clients (personnes des commandes encaissées) et la moyenne par client, aussi sur le rapport X/Z imprimé.
- Chiffre d'affaires par période (manager ou administrateur) : aujourd'hui, hier, cette semaine/la semaine dernière, ce mois-ci/le mois dernier, cette année ou une période libre. Affiche le chiffre d'affaires, la TVA, les modes de paiement, les pourboires, les clients, les catégories de produits, par jour et par employé. Avec Exporter (Excel/CSV), vous obtenez un fichier pour le comptable (points-virgules et virgule décimale, s'ouvre directement dans Excel en néerlandais).
- Rapports Z précédents : liste avec chiffre d'affaires et écart de caisse ; ouvrir et imprimer une copie (avec la mention « KOPIE »).
Export vers la comptabilité
Rapport → Chiffre d'affaires par période → Export comptable (journal) (droit Chiffre d'affaires par période) crée un CSV avec une écriture par jour, prêt à être importé dans e-Boekhouden, Exact, SnelStart, Twinfield, etc. (via leur import CSV/d'opérations diverses), ou l'un des formats ci-dessous (UBL, XAF et prêt à l'emploi pour 14 logiciels).
Une pièce par jour (KASSA-JJJJMMDD), toujours équilibrée (débit = crédit) :
| Côté | Quoi |
|---|---|
| Débit | recettes par mode de paiement (espèces, carte bancaire, bon cadeau, en ligne, autre), pourboires compris |
| Crédit | chiffre d'affaires par taux de TVA (HT) et TVA à reverser par taux |
| Crédit | pourboires (à verser au personnel, pas de chiffre d'affaires) |
| +/- | écart d'arrondi (arrondi des espèces à 5 centimes) |
| +/- | argent entré/sorti du tiroir (gestion de caisse) en contrepartie des comptes de virement interne, et écart de caisse du rapport Z |
Les retours et remises sont déjà inclus dans les tickets et réduisent le chiffre d'affaires. Colonnes : Datum; Boekstuk; Dagboek; Rekening; Omschrijving; Debet; Credit; Btw-code; Btw-% (points-virgules, virgule décimale). Après le téléchargement, la caisse signale les jours non équilibrés ou présentant un écart supérieur à l'arrondi.
À côté du bouton, vous choisissez le format (le choix est mémorisé dans le navigateur). Le même journal, mais mis en forme pour que le logiciel puisse l'importer directement. La liste n'affiche que les formats du pays de l'établissement (Paramètres → Établissement), d'abord les standards (CSV, UBL, XAF), puis les logiciels par ordre alphabétique :
| Format | Fichier | Import dans le logiciel |
|---|---|---|
| Général (CSV) | journaal_…csv | tout logiciel avec un import CSV/OD (associer les colonnes) |
| UBL 2.1 / Peppol (XML), NL et BE | journaal_…_ubl.xml (plusieurs jours : .zip) | une facture "recettes journalières" par jour à Kassaverkopen (déjà payée) selon Peppol BIS Billing 3.0, avec une ligne par taux de TVA et le compte de chiffre d'affaires dans AccountingCost ; uniquement le chiffre d'affaires et la TVA (les modes de paiement, pourboires, arrondis, tiroir-caisse et écart de caisse n'ont pas leur place dans une facture). À téléverser notamment dans Adsolut, Billit, BUNNI, DigiBoox, Expert/M, Moneybird, Popsy, Rompslomp, Storecove et TriFact365 ; pas destiné à l'envoi via le réseau Peppol. Le nom, le numéro de TVA et l'adresse proviennent de Paramètres → Établissement |
| XML Auditfile Financieel (XAF 4.0), NL | journaal_…_xaf.xaf | fichier d'audit de l'administration fiscale néerlandaise (Belastingdienst) (XSD XmlAuditfileFinancieel4.0) : un seul fichier pour la période, grand livre, codes TVA, périodes et une transaction d'opérations diverses par jour ; importable notamment dans Caseware, Exact Reeleezee et Visma Cash |
| AccountView (XML), NL | journaal_…_accountview.xml | Mutations XML (VFPData, une transact par ligne d'écriture avec dj_code, period, inv_date, inv_nr, acct_nr, trn_desc et amount : débit positif, crédit négatif), une pièce par jour dans le journal des opérations diverses ; import avec une définition d'import (Document → Importeren → Importdefinitie aanmaken, type XML), les noms de champs sont ceux d'AccountView, il suffit donc de les associer une fois en 1:1. Faites vérifier le premier import |
| AFAS Profit (XML) | journaal_…_afas.xml | XML de l'UpdateConnector FiEntries (écritures financières), une écriture par jour avec année, période, dossier et journal ; à importer dans Profit via Importer → XML ; saisissez le numéro de dossier (par défaut 1) |
| Asperion (CSV), NL | journaal_…_asperion.csv | format FMUTA (Extra → Import financiële mutaties), par jour une ligne d'en-tête et les lignes d'écriture ; Asperion configure la définition d'import via son helpdesk |
| Relevé journalier (HTML), NL et BE | journaal_…_dagstaat.html | relevé journalier lisible par jour (chiffre d'affaires par taux de TVA, modes de paiement, pourboires, écart de caisse) et totaux ; à imprimer en PDF ou à envoyer par e-mail, pour les logiciels sans import (Accountable, Dext, Dexxter, Jortt, Kleisteen, MoneyMonk) |
| e-Boekhouden.nl (CSV) | journaal_…_eboekhouden.csv | Date ; N° de pièce ; Libellé ; Compte général ; Montant (débit positif, crédit négatif) ; code TVA GEEN (la TVA est déjà sur les comptes de TVA) ; Import → Mutations, type opérations diverses |
| Exact Online (XML) | journaal_…_exact.xml | eExact-XML (sujet GLTransactions) : une écriture d'opérations diverses par jour (type 90) dans le journal ; Import/export → Importer XML |
| InformerOnline (TXT), NL | journaal_…_informer.txt | opérations diverses séparées par des tabulations (Geavanceerd → Memoriaal → uploaden) ; le journal doit être un numéro 1–99 (sinon 90) |
| KING ERP (XML), NL | journaal_…_king.xml | KING_JOURNAAL : un lot d'écritures (non définitif) avec une écriture par jour |
| KOMAS (CSV), NL | journaal_…_komas.csv | format libre KOMAS (0401 Importeren journaalposten) : Datum; Grootboek; Omschrijving; Bedrag |
| Odoo (CSV), NL et BE | journaal_…_odoo.csv | Comptabilité → Journal Entries → Import records ; journal et compte par nom ou code |
| Sage BOB 50 (Excel), BE | journaal_…_bob.xlsx | Importation de données externes → Opérations diverses (associer les colonnes une seule fois) |
| SAP Business One (ZIP), NL et BE | journaal_…_sapb1.zip | Data Transfer Workbench, Journal Entries : JournalEntries.csv et JournalEntries_Lines.csv |
| SnelStart (CSV) | journaal_…_snelstart.csv | Date ; N° de pièce ; Libellé ; Compte général ; Débit ; Crédit (jj-mm-aaaa, virgule décimale, sans BOM) ; importer en opérations diverses, le journal se choisit à l'import |
| Twinfield (XML) | journaal_…_twinfield.xml | transactions de journal en brouillon (destiny="temporary"), le comptable les valide ; saisissez le code du dossier (vide = le dossier dans lequel vous importez) |
| Winbooks (CSV), BE | journaal_…_winbooks.csv | K_DOC.CSV, un document par jour dans le journal (Winbooks numérote lui-même) |
| Yuki (XML) | journaal_…_yuki.xml | Journal-XML (GeneralJournal), une écriture d'opérations diverses par jour, même structure que la liaison en direct ; ID du dossier facultatif |
Aperçu : quel logiciel comptable de quelle manière
Par segment, par ordre alphabétique. NL/BE = pays dans lequel le logiciel fonctionne : sous Paramètres → Comptabilité → Logiciel comptable, vous ne voyez que les logiciels du pays de l'établissement (les logiciels néerlandais ne fonctionnent pas en Belgique et inversement). Live = la caisse comptabilise elle-même chaque jour (à choisir sous Paramètres → Comptabilité → Logiciel comptable) ; sur demande = il existe une API, mais elle exige d'abord une inscription partenaire ou une approbation de l'éditeur (faites-le-nous savoir). Fichier = le format dans Export comptable. Lorsque les deux sont possibles, vous pouvez utiliser les deux. La liste se trouve dans packages/shared/src/boekhoudcatalogus.ts et apparaît aussi sous Paramètres → Comptabilité.
| Logiciel | NL | BE | Live | Fichier | Remarque |
|---|---|---|---|---|---|
| PME et indépendants | |||||
| Accountable | – | ✓ | – | Relevé journalier (HTML, pour PDF ou e-mail) | |
| AccountView (Visma) | ✓ | – | sur demande | AccountView (XML), Général (CSV) | Fichier : mutations XML pour une définition d'import (Document → Importeren) ; le CSV générique fonctionne aussi avec une définition d'import. En direct via l'API AccountView.Net après demande auprès d'AccountView. |
| Acumulus | ✓ | – | ✓ | – | Live sous forme de facture de vente payée par jour, avec une ligne par taux de TVA. |
| AFAS Profit | ✓ | – | ✓ | AFAS Profit (XML) | |
| Asperion | ✓ | – | sur demande | Asperion (CSV) | Live après inscription comme partenaire API auprès d'Asperion. |
| Billit | – | ✓ | sur demande | UBL 2.1 / Peppol (XML) | Téléverser l'UBL via Fast input ; live après approbation par Billit. |
| BUNNI | ✓ | – | – | UBL 2.1 / Peppol (XML) | Pas encore de documentation API publique. |
| Dexxter | – | ✓ | – | Relevé journalier (HTML, pour PDF ou e-mail) | |
| DigiBoox (Visma DigiBTW) | ✓ | – | – | UBL 2.1 / Peppol (XML) | |
| e-Boekhouden.nl | ✓ | – | – | e-Boekhouden.nl (CSV) | Également pour les anciens clients Ficsus. |
| Exact Online | ✓ | ✓ | ✓ | Exact Online (XML) | |
| Exact Reeleezee | ✓ | – | – | XML Auditfile Financieel (XAF 4.0) | |
| Horus | – | ✓ | ✓ | – | |
| InformerOnline | ✓ | – | – | InformerOnline (TXT) | |
| Jortt | ✓ | – | – | Relevé journalier (HTML, pour PDF ou e-mail) | Pas d'import : comptabilisez le chiffre d'affaires du jour comme produit, avec le relevé journalier en pièce jointe. |
| KING | ✓ | – | sur demande | KING ERP (XML) | Live après inscription comme partenaire auprès de KING Software. |
| Kleisteen | ✓ | – | – | Relevé journalier (HTML, pour PDF ou e-mail) | |
| KOMAS (Adfinis) | ✓ | – | – | KOMAS (CSV) | |
| Minox | ✓ | – | sur demande | – | Live après une liaison partenaire via Minox. |
| Moneybird | ✓ | – | ✓ | UBL 2.1 / Peppol (XML) | |
| MoneyMonk | ✓ | – | – | Relevé journalier (HTML, pour PDF ou e-mail) | MoneyMonk disposera en 2026 d'une API pour les intégrations. |
| Octopus | – | ✓ | sur demande | – | Live après demande d'un software house ID auprès d'Octopus. |
| Popsy / Allegro | – | ✓ | – | UBL 2.1 / Peppol (XML) | |
| Rompslomp | ✓ | – | – | UBL 2.1 / Peppol (XML) | |
| Sage BOB 50 | – | ✓ | – | Sage BOB 50 (Excel) | |
| Silvasoft | ✓ | ✓ | ✓ | – | Live sous forme d'écriture de vente par jour, avec une ligne par taux de TVA ; les modes de paiement, les pourboires et l'écart de caisse ne sont pas transmis. |
| SnelStart | ✓ | – | ✓ | SnelStart (CSV) | |
| Twinfield | ✓ | – | ✓ | Twinfield (XML) | |
| Visma Cash | ✓ | – | sur demande | XML Auditfile Financieel (XAF 4.0) | API avec une clé issue de CASHWeb ; le format d'enregistrement des écritures doit encore être confirmé. |
| Visma eAccounting | ✓ | – | sur demande | – | Live après approbation par Visma (inscription partenaire). |
| Winbooks | – | ✓ | sur demande | Winbooks (CSV) | |
| Wolters Kluwer Adsolut | – | ✓ | sur demande | UBL 2.1 / Peppol (XML) | UBL avec le compte de chiffre d'affaires par ligne ; activez dans Adsolut "grootboekrekening verwerken bij verkopen". |
| Wolters Kluwer Expert/M | – | ✓ | – | UBL 2.1 / Peppol (XML) | |
| Yuki | ✓ | ✓ | ✓ | Yuki (XML) | |
| International | |||||
| QuickBooks Online | ✓ | ✓ | ✓ | CSV générique | Pas d'édition néerlandaise ni belge : vérifiez les paramètres de TVA. |
| Xero | ✓ | ✓ | ✓ | CSV générique | |
| Zoho Books | ✓ | ✓ | ✓ | CSV générique | |
| Entreprises et chaînes | |||||
| Exact Globe+ | ✓ | ✓ | – | Exact Online (XML) | Même XML qu'Exact Online ; faites vérifier le premier import. |
| Microsoft Dynamics 365 Business Central | ✓ | ✓ | ✓ | – | |
| Odoo | ✓ | ✓ | ✓ | Odoo (CSV) | |
| Oracle NetSuite | ✓ | ✓ | sur demande | CSV générique | |
| SAP Business One | ✓ | ✓ | ✓ | SAP Business One (ZIP) | |
| Unit4 ERPx | ✓ | ✓ | – | CSV générique | |
| Plateformes et agrégateurs | |||||
| Apicbase | ✓ | ✓ | sur demande | – | Ventes par ticket pour le stock et le food cost : connexion dans Paramètres → Recettes (pas comme logiciel comptable). |
| Caseware | ✓ | ✓ | – | XML Auditfile Financieel (XAF 4.0) | |
| Combidesk | ✓ | – | sur demande | – | Combidesk construit et gère lui-même la liaison (vers notamment Exact, Moneybird, SnelStart et Twinfield) ; sur demande en tant que partenaire. |
| Dext | ✓ | ✓ | – | Relevé journalier (HTML, pour PDF ou e-mail) | Envoyez le relevé journalier (PDF) par e-mail à votre adresse Dext. |
| Jamix | ✓ | ✓ | sur demande | – | Ventes pour le stock et le food cost via l'interface JAPI de Jamix ; développement sur mesure sur demande auprès de Jamix. |
| Omniboost | ✓ | ✓ | sur demande | – | Transmet via le programme partenaire d'Omniboost vers de nombreux systèmes comptables et hôteliers. |
| Storecove (Peppol) | ✓ | ✓ | sur demande | UBL 2.1 / Peppol (XML) | |
| TriFact365 | ✓ | – | – | UBL 2.1 / Peppol (XML), Relevé journalier (HTML, pour PDF ou e-mail) | |
| Tout autre logiciel | ✓ | ✓ | – | CSV générique, UBL ou XAF (NL) |
Faites vérifier le premier import par le comptable. La mise en forme se trouve dans packages/shared/src/journaalexport.ts (avec tests).
Paramètres → Comptabilité (droit Configurer l'établissement, le paiement et les imprimantes) : code journal (par défaut MEM) et compte général par poste. Vide = compte d'exemple (NL : 8000/8010/8020 chiffre d'affaires, 1500/1510 TVA, 1000 caisse, 1100 carte bancaire ; BE : 7000xx chiffre d'affaires, 451000 TVA, 570000 caisse). Faites remplir les vrais comptes par le comptable.
Liaison avec un logiciel comptable
Liaisons live avec Acumulus, AFAS Profit, Microsoft Dynamics 365 Business Central, Exact Online, Horus, Moneybird, Odoo, QuickBooks Online, SAP Business One, Silvasoft, SnelStart, Twinfield, Xero, Yuki et Zoho Books. Après chaque journée, la caisse comptabilise le même journal que l'export ci-dessus (chiffre d'affaires et TVA par taux, modes de paiement, pourboire, arrondi, tiroir et écart de caisse) en écriture d'opérations diverses dans le logiciel choisi, avec le journal et les comptes généraux de Paramètres → Comptabilité. Un seul logiciel au plus est activé à la fois.
- La liste est classée par segment (PME et indépendants, International, Entreprises et chaînes) et n'affiche que les logiciels qui fonctionnent dans le pays de l'établissement ; le serveur refuse un logiciel d'un autre pays (400) et ne comptabilise pas avec lui (409). Juste en dessous, l'administrateur obtient exactement les champs de ce logiciel ; la connexion et la liste des jours comptabilisés se trouvent sous les comptes généraux, avec en dessous l'aperçu de tous les logiciels pour ce pays. Si deux étaient activés lors de la mise à jour (c'était possible dans une version plus ancienne), Exact Online reste activé et l'autre logiciel est désactivé.
| Logiciel | Pays | Connexion avec | Ce que la caisse comptabilise |
|---|---|---|---|
| Acumulus | NL | code de contrat, utilisateur et mot de passe d'un utilisateur API | une facture de vente payée par jour avec une ligne par taux de TVA ; Acumulus envoie les erreurs par e-mail à ACUMULUS_FOUTMAIL |
| AFAS Profit | NL | environnement, jeton, dossier | opérations diverses (FiEntries) |
| Business Central | NL, BE | tenant, environnement, société, ID client et secret d'une application Microsoft Entra (API.ReadWrite.All) | lignes dans le journal général avec le code de Journal |
| Exact Online | NL, BE | connexion (OAuth, application propre : voir Exact Online ci-dessous ; Belgique : start.exactonline.be) | écriture d'opérations diverses dans le journal (ex. 90) |
| Horus | BE | connexion (OAuth, application ci-dessous), dossier facultatif | opération diverse |
| Moneybird | NL | jeton API, dossier facultatif | opérations diverses (general journal document) |
| Odoo | NL, BE | adresse, base de données, utilisateur, clé API | écriture dans le journal avec le code court (ex. MISC) |
| QuickBooks Online | NL, BE | connexion (OAuth, application ci-dessous ; QUICKBOOKS_OMGEVING) | journal entry ; comptes par numéro |
| SAP Business One | NL, BE | adresse du Service Layer, base de données, utilisateur, mot de passe | écriture de journal (JournalEntries) |
| Silvasoft | NL, BE | utilisateur et clé API | écriture de vente sur la relation Kassaverkopen, une ligne par taux de TVA (les modes de paiement, les pourboires et l'écart de caisse ne sont pas transmis) |
| SnelStart | NL | clé de liaison et clé d'abonnement | opérations diverses |
| Twinfield | NL | connexion (OAuth, application ci-dessous), bureau facultatif | transaction de journal |
| Xero | NL, BE | connexion (OAuth, application ci-dessous), organisation facultative | manual journal ; comptes par code |
| Yuki | NL, BE | clé API, dossier facultatif | opérations diverses (GeneralJournal) |
| Zoho Books | NL, BE | connexion (OAuth, application ci-dessous ; par défaut le centre de données européen), organisation facultative | écriture de journal ; comptes par code |
- OAuth (Horus, QuickBooks, Twinfield, Xero, Zoho) : enregistrer une fois une application auprès du logiciel.
- Pour certains logiciels, les champs de l'API ne peuvent pas être entièrement confirmés à partir de la documentation publique (notamment Horus, Zoho Books, le signe dans Business Central et la structure dans SAP Business One) : faites toujours vérifier la première écriture par le comptable.
- Exact Online : comptabilise le journal en écriture d'opérations diverses dans le dossier choisi.
- À choisir sous Paramètres → Comptabilité → Logiciel comptable → Exact Online (par défaut Désactivé). Belgique : la caisse utilise automatiquement
start.exactonline.be. - Paramètres → Comptabilité → Exact Online : Se connecter à Exact Online ouvre la connexion à Exact ; ensuite, vous voyez à quel dossier la caisse est connectée. Sous Journal, saisissez le code d'un journal d'opérations diverses dans Exact (ex.
90) et vérifiez que les comptes généraux existent dans Exact. - Quand : juste après Clôturer la journée puis toutes les heures, pour tous les jours passés (jusqu'à hier inclus) à partir de Comptabiliser à partir du (par défaut le jour de la connexion ; le comptable a déjà les jours précédents). Chaque jour une seule fois ; les jours sans chiffre d'affaires sont ignorés. Comptabiliser maintenant est toujours possible.
- Les erreurs (un compte n'existe pas dans Exact, la journée n'est pas équilibrée, pas d'Internet) sont affichées avec leur motif à côté du jour concerné ; la caisse réessaie plus tard, et les jours suivants attendent que cela ait réussi (pour garder le bon ordre). Dans le journal : "exact_geboekt".
- La TVA est comptabilisée sur les comptes généraux de TVA (sans code TVA, comme dans l'export). Faites vérifier les premières écritures par votre comptable.
- Exact : une connexion continue de fonctionner tant que la caisse l'utilise (un nouveau jeton toutes les 10 minutes, à chaque fois avec un nouveau refresh token). Si elle est révoquée ou inutilisée trop longtemps, la caisse demande de Se reconnecter. Découpler efface les jetons ; ce qui est comptabilisé reste.
- À choisir sous Paramètres → Comptabilité → Logiciel comptable → Exact Online (par défaut Désactivé). Belgique : la caisse utilise automatiquement
- AFAS Profit : numéro d'environnement (ex.
12345; production, test ou acceptation), le jeton d'un connecteur d'application avec l'UpdateConnector FiEntries et le numéro de dossier (par défaut 1). Journal = le code d'un journal d'opérations diverses dans AFAS (ex.90). - Journal = numéro ou nom d'un journal d'opérations diverses ; s'il n'y en a qu'un, la caisse le prend. Les comptes généraux doivent être des numéros.
- Twinfield : connexion avec OAuth. Sans cette application, la caisse ne peut pas se connecter. La caisse recherche le cluster et le dossier (vide = le premier) ; journal = le code d'un journal d'opérations diverses (ex.
MEMO). Comptabilise de façon définitive (destiny="final"). - Yuki : clé API du dossier (Yuki → Paramètres → Services web) ; dossier vide = le premier de cette clé. Comptabilise une écriture d'opérations diverses (GeneralJournal) ; Yuki n'utilise pas de code journal.
- Quand : juste après Clôturer la journée et toutes les heures, pour tous les jours passés à partir de Comptabiliser à partir du (par défaut le jour de la connexion ; avec un autre logiciel, à nouveau à partir de ce jour). Chaque jour une fois par logiciel ; les jours sans chiffre d'affaires sont ignorés ; en cas d'erreur, le motif est affiché à côté de ce jour et les jours suivants attendent. Comptabiliser maintenant est toujours possible. Dans le journal : "boekhoudpakket_geboekt".
- Les clés et jetons ne sont jamais affichés à l'écran (laisser vide lors d'une reconnexion = conserver). Rien n'est comptabilisé depuis la copie de la caisse sur le portail.
Fichier d'audit de caisse (XAA)
Pour les établissements néerlandais, Rapport → Chiffre d'affaires par période propose, à côté de l'export comptable, le bouton Fichier d'audit de caisse (XAA) : le XML Auditfile Afrekensystemen 3.2 de l'administration fiscale néerlandaise (Belastingdienst) et du XML Platform (SRA) sur la période choisie (au maximum un peu plus d'un an ; droit Chiffre d'affaires par période). C'est le fichier que la Belastingdienst recommande pour fournir les données d'une caisse lors d'un contrôle ou au comptable ; les règles figurent dans la Handreiking voor een betrouwbaar afrekensysteem (Guide pour un système de caisse fiable, docs/xaa).
Dans le fichier (auditfile_kassa_<van>_tm_<tot>.xml, schéma docs/xaa/XmlAuditfileAfrekensystemen3.2.xsd) :
- données de base : l'établissement (nom, numéro de TVA, adresse), les codes TVA, tous les employés (avec rôle et date de création ; plus
SYSTEEMpour ce que fait la caisse elle-même, comme la boutique en ligne et les connexions) et tous les articles avec leur groupe ; - événements : tout le journal sur la période (connexion et déconnexion, tiroir-caisse ouvert, clôture de journée, paramètres et prix modifiés, annulation, remise, retour, copie de ticket, pointage d'arrivée et de départ ...) et l'ouverture de la journée de caisse avec le fonds de caisse, chacun avec le code de la Belastingdienst (18001 connexion, 18003 tiroir, 18006 modification de l'installation, 18008 rapport Z, sinon 18999) ;
- transactions de caisse : chaque ticket (vente, retour et pro forma, avec le numéro de ticket, l'employé et le statut fiscal s'il n'est pas en ordre) avec toutes les lignes (article, groupe, quantité, prix, TVA ; aussi les remises, chèques-cadeaux, en-têtes de menu et lignes annulées avant l'encaissement, celles-ci avec le montant 0), la TVA par taux, l'arrondi, les paiements par mode de paiement (espèces, carte, chèque-cadeau, en ligne ; pourboire à part) et les entrées/sorties d'argent du tiroir-caisse.
Les montants sont positifs avec C (vente, encaissement) ou D (retour, décaissement) ; les heures sont en heure néerlandaise avec décalage. Toutes les clés sont les ids de la base de données sans tirets, donc retrouvables dans la caisse.
Signature (chapitre 6 de la spécification) : si Optimum POS a configuré un certificat, le fichier d'audit est signé dans une enveloppe (XML Signature) et le fichier s'appelle …_ondertekend.xml ; sinon c'est un fichier d'audit simple, et la caisse le signale au téléchargement.
Paiement en compte
Les clients professionnels (une entreprise qui fait chercher le déjeuner chaque semaine, un hôtel, une association) achètent en compte et paient plus tard, sur facture. Activez-le dans Paramètres → Factures → Paiement en compte (uniquement avec Factures activé ; désactivé par défaut).
- Clients : dans Rapport → En compte, vous enregistrez les clients professionnels avec les données de facturation (nom, adresse, numéro de TVA, numéro KvK/d'entreprise, identifiant Peppol, e-mail), éventuellement un plafond (montant ouvert maximal autorisé) et un délai de paiement propre (sinon celui des factures), et si la facture est envoyée immédiatement.
- Encaissement : mode de paiement En compte, choisissez le client (avec ce qui est déjà ouvert et le plafond). Le ticket est une vente normale : chiffre d'affaires et TVA ce jour-là, en Belgique simplement via la boîte noire, avec "En compte" sur le ticket. La caisse crée immédiatement la facture (UBL/Peppol et à imprimer) du montant restant dû avec la date d'échéance, et l'envoie comme réglé pour les factures (e-mail, Peppol via Billit/Storecove/Banqup ou votre propre adresse). En compte est un seul montant pour le reste de l'addition (payer d'abord une partie autrement est possible), sans pourboire ; un bon cadeau ne peut pas être vendu en compte. Au-delà du plafond, la caisse refuse.
- Paiement : le client paie sur place en espèces, par carte bancaire ou avec un bon cadeau (Rapport → En compte → Paiement reçu ; aussi en partie). Ce n'est ni une nouvelle vente ni un nouveau ticket de caisse : les espèces entrent comme argent dans le tiroir (le tiroir s'ouvre), tout figure sur X et Z sous Reçu en compte. Une fois tout payé, la facture passe à "payée". Le paiement en ligne n'en fait pas partie.
- Virement : si un IBAN est indiqué dans Mentions sur la facture, il figure sur la facture (et dans l'UBL), avec "Vous pouvez aussi payer sur place". Si le client a payé par virement, enregistrez-le avec Paiement reçu → Virement reçu (banque) : pas dans le tiroir, mais sur les rapports X et Z sous Reçu en compte. Sans IBAN, la facture indique "À payer sur place". En Belgique, une communication structurée (+++123/4567/89012+++, issue du numéro de facture) figure sur la facture et dans l'UBL, afin que la banque la transmette.
- Banque : imputer les virements sans ressaisie, voir ci-dessous.
- Crédit (argent versé à l'avance) : dans Rapport → En compte → Verser du crédit, vous versez de l'argent à l'avance sur le compte d'un client, en espèces (le tiroir s'ouvre) ou par carte, ex. pour une série de déjeuners. Lors de la prochaine vente en compte, le crédit est d'abord déduit de la facture ; si la facture est plus élevée, le reste reste dû. Le crédit figure chez le client (crédit € ...), sur X et Z sous Reçu en compte (Crédit versé, Avec le crédit du client) et dans l'écriture comptable comme reçu d'avance (par défaut 1640 / 460000). En Belgique, le versement part vers la boîte noire comme entrée d'argent (signMoneyInOut) (UC4100).
- Facture récapitulative (par client, désactivée par défaut) : avec Une facture pour tous les tickets, le client ne reçoit pas encore de facture lors d'une vente en compte. Le ticket reste ouvert chez le client (Tickets pas encore facturés, compte dans la limite) et peut déjà être payé. Avec Créer une facture récapitulative (p. ex. en fin de mois), tous les tickets ouverts figurent sur une seule facture, chaque ligne précédée du numéro de ticket ; ce qui est déjà payé y apparaît comme payé. Un retour sur le compte y figure en lignes négatives. Désactivé = comme toujours une facture par vente. En Belgique, une seule facture avec tous les tickets dans la boîte noire (signInvoice, UC4121 et UC4122).
- Belgique : si le client paie plus tard une vente en compte (espèces, carte bancaire, bon cadeau ou virement), la caisse le signale comme correction de paiement sur le ticket : du crédit client vers le vrai moyen de paiement (signPaymentCorrection, UC4118).
- Aperçu : factures ouvertes avec la date d'échéance (en retard en rouge), et par client les factures et paiements. Dans Paramètres → Factures, une colonne Ouvert.
- Comptabilité : dans le journal, la vente en compte va aux Débiteurs (par défaut 1300 aux Pays-Bas, 400000 en Belgique ; réglable dans Paramètres → Comptabilité) et le paiement passe de caisse, carte, bon cadeau ou banque (par défaut 1050 / 550000) aux débiteurs. XAA : mode de paiement "En compte".
- Droit : Encaisser en compte et recevoir des paiements en compte (par défaut service non, manager oui). Tout est consigné dans le journal.
- Désactivé : les clients, factures et paiements sont conservés (aussi dans la sauvegarde) ; l'interrupteur est inclus dans l'export de configuration, les clients non (ils appartiennent à un seul établissement).
- Dans la boutique en ligne (facultatif, désactivé par défaut) : avec Aussi dans la boutique en ligne, les clients professionnels commandent en ligne en compte (à emporter et livraison). Dans Rapport → En compte, vous créez un code client par client et vous le lui remettez ; la caisse n'en garde qu'une version chiffrée, vous ne le voyez donc qu'une fois. Nouveau code client = l'ancien ne fonctionne plus ; Supprimer le code client = ce client ne peut plus commander en ligne en compte. La boutique respecte le plafond. Dans la fenêtre Boutique en ligne, vous finalisez une telle commande avec Finaliser (en compte) : encaissement en compte, avec la facture immédiatement.
Banque : imputer les virements
Dans Rapport → En compte → Banque, la caisse cherche pour chaque paiement entrant la facture en compte correspondante :
- Importer un relevé bancaire : le fichier de votre banque en ligne, au format CAMT.053 (XML, toutes les banques aux Pays-Bas et en Belgique), MT940 (.sta/.940) ou CODA (.cod, Belgique). Uniquement les paiements entrants ; importer deux fois le même relevé ne crée pas de lignes en double.
- Recherche : par le numéro de facture ou la communication structurée dans le libellé (certain), sinon par montant (et nom) : il s'agit alors d'une proposition. Chaque ligne peut être imputée (sur la proposition ou une autre facture), ignorée ou plus tard imputée quand même. Imputer = Virement reçu (banque) à la date bancaire, jamais plus que le montant ouvert ; pas dans le tiroir.
- Connexion bancaire (PSD2, facultative) : dans Paramètres → Factures → Connexion bancaire, la caisse récupère elle-même chaque heure les paiements entrants via Enable Banking (banques aux Pays-Bas, en Belgique et dans le reste de l'Europe). Choisissez la banque et connectez-vous à celle-ci (compte professionnel) ; le consentement est valable 180 jours, ensuite il faut reconnecter. La déconnexion retire le consentement ; les paiements entrants sont conservés. Sans contrat avec Enable Banking, cela ne fonctionne que pour vos propres comptes (restricted production).
- Imputation automatique (désactivée par défaut) : un paiement entrant qui correspond avec certitude à une facture est imputé immédiatement par la caisse (aussi lors de l'importation).
- Droit : imputer avec Encaisser en compte et recevoir les paiements en compte ; configurer la connexion bancaire avec Configurer l'établissement, le paiement et les imprimantes. L'importation, la connexion, la récupération et l'imputation sont enregistrées dans le journal.
- Désactivé : si le paiement en compte est désactivé, la caisse ne récupère rien ; les paiements entrants et la connexion sont conservés (aussi dans la sauvegarde).
Images des caméras dans la caisse
Toutes les images des caméras de l'établissement sur une seule page, sans écran ni application séparés. Activez-le dans Paramètres → Établissement → Écrans et utilisation → Images des caméras dans la caisse (désactivé par défaut). Le bouton Caméras apparaît alors dans la barre supérieure pour toute personne ayant le droit Voir les images des caméras (par défaut manager et administrateur ; activable aussi pour le service dans Paramètres → Droits). Toutes les caméras sont affichées côte à côte ; appuyez sur une caméra pour l'afficher en grand. En cas de désactivation, les systèmes de caméras sont conservés.
Aussi sur un écran séparé : Sur un écran séparé ouvre http://<kassaserver>:3000/camera (p. ex. un moniteur derrière le bar), et Sur une tablette ou un téléphone affiche un QR code : un employé le scanne avec sa propre tablette ou son téléphone et se connecte avec son propre code PIN (là aussi uniquement avec le droit Voir les images des caméras). Sur un écran étroit, les caméras sont affichées les unes sous les autres. Voir Deuxième écran sur une tablette ou un téléphone.
Le gestionnaire ajoute les systèmes de caméras avec + Système de caméras, les vérifie avec Tester et choisit pour chaque caméra le nom et si elle figure sur la page :
- Hikvision, Dahua, Axis et Reolink : une caméra ou un enregistreur (NVR) dans le réseau : l'adresse IP (éventuellement avec
:poort), un utilisateur (de préférence en lecture seule) et les canaux, p. ex.1-8ou1,3,5. Connexion en Basic ou Digest ; https avec un certificat propre est autorisé. - Synology Surveillance Station : l'adresse du NAS (port 5000 par défaut, 5001 avec https) et un utilisateur ; Récupérer les caméras récupère les caméras avec leurs noms.
- UniFi Protect : l'adresse de la console (https) et un compte local ; Récupérer les caméras.
- ONVIF : toute caméra ou tout enregistreur ONVIF (p. ex. Hanwha, Bosch, Uniview, Annke) ; Récupérer les caméras recherche l'adresse photo de chaque source vidéo.
- Adresse web propre : une photo (JPEG), un flux MJPEG ou une adresse
rtsp://. - Page web du système de caméras (p. ex. Frigate, Blue Iris ou go2rtc) : s'ouvre dans la caisse avec le bouton Caméras (ou dans une fenêtre séparée).
Sans ffmpeg : la photo.
Confidentialité : la caisse récupère les images auprès du système de caméras et ne fait que les transmettre ; rien n'est enregistré (pas d'enregistrements, pas de cache). Les utilisateurs et mots de passe restent sur le serveur et n'apparaissent jamais à l'écran ni dans le journal. Le journal indique qui a consulté les caméras. La page demande les images elles-mêmes avec une clé (valable 12 heures, tant que l'employé est connecté), car une image dans le navigateur ne peut pas transmettre de jeton. L'export de configuration ne reprend que activé/désactivé.
Journal des actions sensibles
Rapport → Journal (manager ou administrateur) montre qui a fait quoi et quand.
- Choisissez une période (aujourd'hui, hier, cette semaine, ce mois-ci/le mois dernier ou une période libre), ce que vous voulez voir (par défaut Actions sensibles, ou p. ex. seulement annulations et remises, ou Tout) et éventuellement un employé.
- En haut, par employé : nombre et montant des annulations (supprimées après commande), remises et retours, et combien de fois le tiroir a été ouvert sans vente, argent sorti du tiroir, copies de tickets, pro forma et paiements par carte manuels. Touchez un nom pour ne voir que cet employé. Également le nombre de codes PIN erronés saisis.
- En dessous, chaque action avec l'heure, qui, quoi et une description lisible (p. ex. « 2x Cola supprimé après commande € 5,60 · table 4 · motif : le client n'en voulait pas »).
- Télécharger (CSV) pour Excel.
Ce qui est enregistré : annulations, remises (et leur suppression), retours, copies de tickets, pro forma, paiements par carte manuels, ouverture du tiroir, entrées/sorties d'argent du tiroir, fonds de caisse, clôture journalière, déplacement de lignes ou de tables, fermeture de commandes vides, modification du prix/nom/TVA des produits, produits nouveaux ou supprimés, modification du personnel et des paramètres, ajustement des heures de travail, connexion et déconnexion, codes PIN erronés et pointage d'arrivée et de départ. Avec le paiement sur compte également : clients, ventes et paiements sur compte, import de relevés bancaires, la connexion bancaire et la récupération auprès de la banque. Avec l'alerte en cas de délai de préparation trop long : commandes en retard et excuses envoyées. Avec Mailchimp ou Klaviyo : connexion, choix de la liste, déconnexion et désabonnements venant de là-bas. Avec la commande de la musique : activé/désactivé et l'ajout, la modification et le retrait de sources musicales. Avec les images des caméras : qui a consulté les caméras (au maximum une fois par demi-heure par employé), activé/désactivé et les systèmes de caméras. Avec les alertes : chaque alerte, son traitement et l'activation et la désactivation.
Alertes : fraude et anomalies
Paramètres → Alertes. Deux parties, chacune activable séparément et désactivée par défaut ; la désactivation conserve toutes les alertes et tous les paramètres. La configuration est réservée à ceux qui ont le droit Configurer les alertes (par défaut le manager et l'administrateur) ; voir et traiter les alertes est possible pour ceux qui peuvent voir le journal. La caisse vérifie toutes les 5 minutes (et avec Vérifier maintenant) ; pas sur la caisse de secours.
Détection de fraude et de vol (par employé, par journée d'activité à partir de 05:00), chaque règle activable séparément avec son propre seuil :
- annulations après le pro forma : supprimé alors que le client avait déjà vu l'addition ;
- annulations, remises et retours : à partir d'un certain nombre de fois, ou au total à partir d'un montant (0 = pas sur le montant) ;
- tiroir ouvert sans vente (bouton Ouvrir le tiroir) ;
- ticket ouvert longtemps : commandé mais toujours pas réglé après un certain nombre de minutes.
Alertes en cas d'anomalie, comparé au même jour de la semaine et à la même heure des semaines précédentes (par défaut 4 ; les jours sans chiffre d'affaires ne comptent pas, au moins deux jours de comparaison) :
- chiffre d'affaires jusqu'ici inférieur (et/ou supérieur) à la normale de plus que la marge, seulement à partir d'un chiffre d'affaires normal défini ;
- temps en cuisine (du ticket envoyé en cuisine jusqu'au statut prêt sur l'écran cuisine) de la dernière heure au-dessus de la marge, ou au-dessus d'un nombre fixe de minutes ;
- annulations du jour au-dessus de la marge, seulement à partir d'un nombre minimum.
Chaque alerte n'est émise qu'une fois (par règle, employé et jour ; le temps en cuisine au plus une fois par heure) et part vers :
- la caisse : bouton Alertes (n) dans la barre du haut avec les alertes du dernier jour, de la dernière semaine ou des 30 derniers jours ; Traité avec une note. Les autres écrans reçoivent seulement un signal sans noms ;
- notification push avec ntfy (application gratuite ; ntfy.sh ou votre propre serveur, topic et éventuellement un token), Pushover (API-token de l'application et la user key) ou Telegram (token du bot et le chat-id) ;
Chaque canal a un bouton Message de test. Les tokens et les clés restent sur la caisse (les écrans voient seulement s'ils sont renseignés). Une alerte n'est pas une preuve : vérifiez le ticket et le journal et parlez-en avec l'employé.
Tickets : copie et retour (avoir)
Bouton Tickets dans la barre supérieure :
- Liste des tickets depuis la dernière clôture journalière, ou des 7 derniers jours ; un ticket plus ancien se recherche par son numéro.
- Imprimer une copie : le même ticket avec la mention « KOPIE » (en Belgique avec le bloc FDM du ticket d'origine). Noté dans le journal.
- Retour / avoir (manager ou administrateur) : choisissez pour chaque ligne la quantité retournée, un motif et le mode de remboursement (espèces, carte bancaire, bon cadeau, autre). L'ancien ticket reste intact : un nouvel avoir s'y ajoute avec son propre numéro dans le journal (type de ticket
retour, montants négatifs, en Belgique comme NR vers le FDM). On ne peut jamais rembourser plus que ce qui a été vendu. Dans les rapports X et Z, le retour compte comme chiffre d'affaires négatif. - Avec CCV ou un autre terminal : remboursez d'abord sur le terminal lui-même, puis cochez « Déjà remboursé sur le terminal ».
- En espèces avec arrondi à 5 centimes : le montant à rendre est aussi arrondi.
- Retour sur le compte (vente en compte) : si le ticket était en compte d'un client professionnel, choisissez En compte. Le montant est déduit de la facture ouverte et la caisse crée immédiatement un avoir (en UBL une CreditNote, type 381, avec une référence à la facture ; en Belgique signé avec signInvoice, UC4122). On ne peut pas reporter sur le compte plus que ce qui reste dû sur la facture ; remboursez le reste en espèces ou par carte. L'avoir figure dans Factures et s'envoie comme une facture.
Tiroir-caisse avec capteur et tiroir par employé
Désactivé par défaut. À configurer dans Paramètres → Paiement → Tiroir-caisse.
- Capteur : beaucoup de tiroirs indiquent via l'imprimante de tickets s'ils sont ouverts ou fermés (ESC/POS
DLE EOT 1, broche 3 du port DK). Uniquement avec une imprimante de tickets en réseau. Touchez Mesurer : tiroir fermé et Mesurer : tiroir ouvert ; s'il y a une différence, appliquez le bon réglage (haut = ouvert ou bas = ouvert). Aucune différence = ce tiroir (ou ce câble) n'a pas de capteur. Aucune réponse de l'imprimante = inconnu, jamais "fermé".- Ne pas encaisser tant que le tiroir est ouvert : le serveur de caisse refuse alors un nouvel encaissement avec "Le tiroir-caisse est encore ouvert".
- Tiroir propre à chaque employé : une imprimante de tickets peut ouvrir deux tiroirs (tiroir 1 et tiroir 2). Choisissez le tiroir de chaque employé ; lors d'un encaissement en espèces, d'une entrée ou sortie d'argent du tiroir et de Ouvrir le tiroir, la caisse ouvre alors le tiroir de la personne connectée. Dans Rapport → Tiroir-caisse apparaît alors Tiroir par employé : fond de caisse par employé, espèces (sans le monnayeur automatique), attendu, Compter et l'écart par personne (dans le journal sous
ladetelling). La clôture journalière normale reste inchangée. - Tester le tiroir 1 et Tester le tiroir 2 ouvrent le tiroir pour vérification.
- Ouvrir le tiroir sans vente est (avec motif) toujours enregistré dans le journal et dans le fichier d'audit de caisse (XAA), comme l'exige l'administration fiscale néerlandaise (Belastingdienst) (exceptions comme "no sale").
Partie 3 · Administrateur
Premiers pas
Installation. Vous installez HorecaPOS avec le programme d’installation pour votre système, disponible sur la page de téléchargement d’OptimumPOS : Android (application), Windows (programme d’installation), macOS (programme d’installation pour Mac avec Apple Silicon et Intel), Linux (programme d’installation graphique, ou le paquet .deb ou .rpm), Raspberry Pi (programme d’installation graphique ou .deb pour un Raspberry Pi 3, 4 ou 5 avec Raspberry Pi OS 64 bits) et Chromebook (l’application Android de Google Play). Choisissez pour tous les utilisateurs pour un serveur de caisse auquel se connectent les tablettes et l’écran cuisine, ou pour moi uniquement pour une seule caisse sur cet appareil. Le programme installe tout le nécessaire, y compris la base de données, et fait une sauvegarde chaque nuit. Pour mettre à jour, installez la nouvelle version : vos données sont conservées. Le programme d’installation démarre dans la langue de votre ordinateur (sinon en anglais) ; sous Windows et Linux, vous pouvez choisir une autre langue sur le premier écran. La caisse démarre ensuite directement dans cette langue. Les paquets .deb et .rpm et l’application Android suivent la langue du système, sinon le néerlandais.
L'administrateur configure la caisse via Paramètres. On y trouve des onglets comme Établissement, Personnel, Droits, Horaires de travail, Produits, Happy hour, Stock, Plans de salle, Paiement, Imprimantes, Comptabilité, Sauvegardes, Import/export et Base de données. Les onglets visibles par un manager dépendent des droits.
Base de données. Dans Paramètres → Base de données (administrateur uniquement), vous choisissez entre MySQL / MariaDB, la base de données intégrée et PostgreSQL ; lors du changement, toutes les données sont transférées (voir Base de données). Si Optimum POS a déjà défini une adresse fixe lors de l'installation, c'est cette adresse qui s'applique et il n'y a pas de champs à remplir. Sinon, vous remplissez vous-même Serveur, Port, Base de données, Utilisateur et Mot de passe. La caisse les enregistre elle-même, les affiche ensuite déjà remplis et vous pouvez toujours les modifier avec Modifier les informations MySQL/MariaDB ou Modifier les informations PostgreSQL. Laisser le mot de passe vide signifie : conserver le mot de passe enregistré (pour le même utilisateur). L'installateur et une mise à jour ne modifient ni DATABASE_URL ni la base de données choisie.
Comptabilité
Tout ce qui concerne la comptabilité se trouve sous Paramètres → Comptabilité. Renseignez avec votre comptable le journal et les comptes généraux. Si vous voulez que la caisse comptabilise elle-même chaque jour le chiffre d'affaires du jour, choisissez votre logiciel en haut sous Logiciel comptable, y compris Exact Online : vous ne voyez que les logiciels qui fonctionnent dans le pays de votre établissement. Juste en dessous, vous renseignez les données de ce logiciel et vous vous connectez. Pour les logiciels auxquels vous vous connectez (comme Exact Online, Twinfield ou Xero), renseignez d'abord l'application : ID client et secret client. Si Optimum POS a défini de façon fixe le logiciel ou une donnée lors de l'installation, vous ne voyez pas ce choix ou ce champ. Vous y trouverez aussi un aperçu de tous les logiciels : lesquels peuvent être liés en live et lesquels reçoivent un fichier. Un fichier se crée sous Rapport → Chiffre d'affaires par période → Export comptable : choisissez le format de votre logiciel, ou UBL (Peppol), XAF ou un relevé journalier. Faites toujours vérifier la première écriture ou le premier import par votre comptable.
Pour un établissement néerlandais, vous y trouvez aussi Fichier d'audit de caisse (XAA) : le XML Auditfile Afrekensystemen de l'administration fiscale néerlandaise (Belastingdienst) avec tous les tickets, lignes, paiements et événements de la caisse sur la période choisie. Vous le remettez à votre comptable ou, lors d'un contrôle, à la Belastingdienst.
Paie et planning
Si votre personnel pointe à l'arrivée et au départ, Paramètres → Horaires de travail contient en bas Paie et planning, en deux blocs. Sous Gestion de la paie, vous choisissez votre logiciel de paie ou (en Belgique) votre secrétariat social, et vous saisissez pour chaque employé son matricule dans ce logiciel. Ensuite, vous créez pour une période le fichier avec les heures travaillées et le chiffre d'affaires par employé, et vous l'importez dans votre logiciel de paie. Sous Planning du personnel, vous choisissez votre système de planning : avec Deputy, Dyflexis et Shiftbase, le chiffre d'affaires est envoyé automatiquement chaque heure ; avec les autres, vous créez un fichier de chiffre d'affaires. Vous voyez ainsi dans votre planning les coûts salariaux à côté du chiffre d'affaires. Si vous travaillez sans pointage, vous pouvez quand même envoyer le chiffre d'affaires vers votre planning : cela se trouve alors en bas de Paramètres → Comptabilité, sous Chiffre d'affaires vers votre planning. Si Optimum POS a fixé un réglage lors de l'installation, vous ne voyez pas ce choix ou ce champ.
Sauvegardes
La caisse effectue chaque nuit automatiquement une sauvegarde, et toujours avant une mise à jour. Dans Paramètres → Sauvegardes, vous voyez toutes les sauvegardes (quand, par qui ou automatique, taille) et vous en créez une vous-même avec Créer une sauvegarde. Si la dernière sauvegarde date de plus de deux jours, un avertissement rouge apparaît : contactez alors Optimum POS.
Restaurer se fait avec le bouton Restaurer à côté d'une sauvegarde. Tout ce qui s'est passé après cette sauvegarde est alors perdu. Vous devez le cocher et saisir à nouveau votre propre code PIN. La caisse crée d'abord une sauvegarde de sécurité de l'état actuel, puis déconnecte tout le monde. En Belgique, ce n'est pas possible depuis la caisse (les compteurs de la boîte noire continuent) ; c'est Optimum POS qui s'en charge.
Base de données
Dans Paramètres → Base de données (administrateur uniquement), vous voyez où la caisse conserve ses données. En haut figure la base de données actuelle, avec programme, version, tables, lignes et adresse ou dossier. Pour le personnel et les tablettes, la caisse fonctionne de la même façon avec chaque base. Sous Windows, macOS, Linux et Raspberry Pi, vous avez le choix entre trois bases de données :
- MySQL / MariaDB : un programme de base de données séparé (MySQL 8.0 ou plus récent, MariaDB 10.6 ou plus récent), par exemple sur un serveur ou un NAS que vous avez déjà. Toutes les données sont alors dans des tables ordinaires de MySQL ou MariaDB, lisibles par votre propre outil de reporting ou de BI. La caisse calcule exactement comme avec PostgreSQL.
- Intégrée (PGlite) : fait partie de la caisse, rien à installer. Le meilleur choix pour la plupart des établissements, et la base de données sous Android et sur Chromebook.
- PostgreSQL : un programme de base de données séparé, sur le PC de caisse ou ailleurs dans le réseau.
Quand choisir MySQL ou MariaDB ? Si votre établissement a déjà un serveur MySQL ou MariaDB, si votre responsable informatique travaille avec, ou si vous voulez lire les données dans votre propre reporting, dans Excel ou un outil de BI. En cas de doute, choisissez l'intégrée : elle fonctionne tout de suite.
Que faut-il pour MySQL ou MariaDB ?
- MySQL 8.0 ou plus récent, ou MariaDB 10.6 ou plus récent, accessible depuis le serveur de caisse.
- Une base de données propre à la caisse (ou aux caisses d'une chaîne), avec le jeu de caractères utf8mb4.
- Un utilisateur de base de données autorisé à créer, modifier, renommer et supprimer des tables dans cette base (CREATE, ALTER, DROP, INDEX, SELECT, INSERT, UPDATE, DELETE), par exemple ainsi :
CREATE DATABASE horecapos CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER 'horecapos'@'localhost' IDENTIFIED BY 'wachtwoord';
GRANT ALL PRIVILEGES ON horecapos.* TO 'horecapos'@'localhost';
Si MySQL ou MariaDB tourne sur un autre ordinateur, mettez dans les deux dernières lignes l'adresse IP du serveur de caisse à la place de localhost.
Convertir vers MySQL / MariaDB :
- Sous Adresse de MySQL/MariaDB, remplissez les champs : Serveur (par défaut localhost), Port (par défaut 3306), Base de données (par défaut horecapos), Utilisateur et Mot de passe ; de même pour MariaDB. Si l'adresse est déjà réglée, les champs sont déjà remplis ; si vous laissez le mot de passe vide, le mot de passe enregistré est conservé (pour le même utilisateur). La caisse enregistre l'adresse elle-même ; si Optimum POS a déjà défini une adresse fixe, c'est cette adresse qui s'applique et il n'y a pas de champs. Si la caisse fonctionne déjà sous MySQL/MariaDB, vous modifiez ensuite les informations avec Modifier les informations MySQL/MariaDB. Optimum POS configure pour vous une connexion chiffrée.
- Touchez Tester la connexion : vous voyez le programme et la version, ou la raison de l'échec.
- Touchez Convertir vers MySQL/MariaDB, cochez que vous avez compris et saisissez votre propre code PIN.
La conversion fonctionne dans tous les sens entre les trois bases de données, et toutes les données suivent :
- La caisse n'accepte brièvement aucune demande (généralement moins d'une minute) ; les tablettes reprennent ensuite d'elles-mêmes.
- La caisse fait d'abord une sauvegarde de l'état actuel (dans Paramètres → Sauvegardes).
- Tout passe dans la nouvelle base et la caisse compte, table par table, si tout y est exactement.
- Ce n'est que lorsque tout correspond que la caisse continue sur la nouvelle base. Les employés connectés le restent.
Si quelque chose échoue, rien ne change et la caisse continue sur l'ancienne base. L'ancienne base reste en place, vous pouvez donc toujours revenir en arrière. Les données de caisse qui se trouvaient déjà dans la nouvelle base MySQL/MariaDB ou PostgreSQL sont remplacées. Cela fonctionne aussi en Belgique : les compteurs de la boîte noire suivent exactement.
Les sauvegardes et la restauration fonctionnent de la même façon avec les trois bases (Paramètres → Sauvegardes). Une sauvegarde d'une base peut être restaurée dans n'importe quelle autre, y compris une sauvegarde de PostgreSQL dans MySQL ou MariaDB.
Que contient MySQL ou MariaDB ? Chaque table de la caisse, avec le même nom et les mêmes colonnes (heures en UTC). Chaque table reçoit en plus la colonne clé _hp_sleutel, et dans les tables auxiliaires _horecapos_stand, _horecapos_kolom, _horecapos_reeks et _horecapos_wijziging (journal des modifications, conservé 14 jours) la caisse tient à jour l'état, les types de colonnes, les compteurs et les modifications. Les autres programmes lisent les données ; seules les caisses écrivent.
Comment ça marche : la caisse calcule dans une copie de travail rapide sur le serveur de caisse et écrit chaque modification dans MySQL/MariaDB à la même étape. Si cela échoue, la modification n'est pas faite et la caisse affiche une erreur ; gardez donc MySQL/MariaDB accessible. Au démarrage, la caisse lit tout depuis MySQL/MariaDB.
Plusieurs caisses sur une base de données. Comme avec PostgreSQL, plusieurs caisses peuvent utiliser la même base MySQL/MariaDB, par exemple chaque établissement d'une chaîne avec son propre serveur de caisse. Les modifications se font l'une après l'autre et chaque caisse reprend d'abord ce que les autres ont fait : rien ne se perd lors de modifications simultanées. Si une caisse restaure une sauvegarde ou si une caisse d'une version plus récente met à jour la base, les autres caisses relisent tout automatiquement ; mettez donc toutes les caisses à jour en même temps. Une caisse éteinte plus de 14 jours relit tout au démarrage.
Lors de l'installation, vous choisissez aussi la base de données : MySQL / MariaDB, intégrée (recommandé) ou PostgreSQL avec son adresse. Si elle n'est pas accessible, la caisse s'installe avec la base intégrée ; vous pourrez convertir ici ensuite. Lors d'une mise à jour, le choix est conservé.
Coupler tablettes et écrans
- Sur chaque tablette/caisse, ouvrez l'adresse du serveur de caisse, p. ex.
http://192.168.1.20:3000, et ajoutez-la comme raccourci sur l'écran d'accueil (Chrome : Ajouter à l'écran d'accueil). - Écran cuisine :
http://192.168.1.20:3000/keuken. - Écran client (tourné vers le client, facultatif) :
http://192.168.1.20:3000/klantscherm, voir Écran client. - Les écrans trouvent le serveur de caisse automatiquement (même adresse, port 4000).
Écran client
Un écran sur la caisse tourné vers le client. Le client voit en gros ce qui a été commandé, et très clairement le montant et le mode de paiement. Il n'y a aucune commande dessus : l'écran suit simplement ce que fait la caisse. Désactivé par défaut ; à activer via Paramètres → Établissement → Écran client. Sur un PC de caisse à deux écrans, la caisse l'active automatiquement la première fois ; si vous le désactivez ensuite, il reste désactivé. Sans écran client (désactivé, ou aucun écran installé), tout fonctionne exactement comme toujours : la caisse envoie l'image en arrière-plan et le personnel ne remarque jamais une erreur ou un écran manquant.
Ce que voit le client :
- Repos (personne n'encaisse) : le nom de l'établissement et un texte d'accueil personnalisé (Paramètres → Établissement ; vide = « Bienvenue »).
- Commande : les produits avec quantité et montant (lignes identiques regroupées, un menu sur une ligne avec ses éléments en petit en dessous, la remise sur une ligne), et le total en grand. Ce qui est déjà payé lors d'un paiement divisé figure en dessous. Avec Paramètres → Établissement → Photos des produits → sur l'écran client, une petite photo s'affiche pour chaque produit.
- Encaissement : le mode de paiement (Carte bancaire, Espèces, Bon cadeau), le pourboire et en grand À payer. Espèces : ce que donne le client et ce qu'on lui rend, dès que c'est saisi à la caisse. Carte : « Suivez les instructions sur le terminal de paiement ».
- Merci : après l'encaissement, « Merci ! » s'affiche quelques secondes avec le montant payé (espèces : la monnaie rendue), puis de nouveau l'écran de repos.
Raccordement, de deux façons (toutes deux à configurer sur l'appareil lui-même) :
- Deuxième écran sur le PC de caisse (Windows, Linux/Raspberry Pi, macOS) : automatique. À la connexion et après l'installation, la caisse affiche l'écran client en plein écran sur le plus petit écran qui n'est pas l'écran principal (à taille égale, celui le plus à droite) ; sous Windows, toujours sur un autre écran que celui de la caisse (la caisse est sur l'écran tactile et s'ouvre aussi d'elle-même au démarrage). La taille et la position viennent du système, donc tous les formats fonctionnent. Sans deuxième écran, rien ne se passe. Sous Windows, un écran client fermé revient tout seul ; sous Linux et macOS, le raccourci HorecaPOS écran client du menu le remet en place. Sous Windows, il s'ouvre en mode kiosque de Chrome (ou d'Edge) : plein écran, sans barre de titre et sans barre des tâches (fermeture avec Alt+F4). Il suit la caisse sur le même PC sans code d'appairage.
- Dans tous les navigateurs, un appui long n’ouvre nulle part le menu du navigateur et aucune proposition de traduire la page n’apparaît.
- Caisse fermée = écran client fermé. Si le logiciel de caisse s'arrête (Redémarrer, une mise à jour, la caisse arrêtée ou supprimée), l'écran client se ferme lui aussi après un peu plus de 10 secondes ; dès que la caisse tourne à nouveau, il revient de lui-même. Sous Windows, il se ferme aussi si vous fermez uniquement la fenêtre de la caisse. Sous Wayland (Linux), la caisse ne peut pas fermer la fenêtre elle-même.
- Écran client fermé par erreur ? Sous Windows, il revient de lui-même après quelques secondes, tant que la caisse est ouverte et que le second écran est branché.
- Toujours un seul écran client. Sous Windows, l'écran client s'affiche uniquement en mode kiosque sur le second écran. Un écran client dans la fenêtre de la caisse (p. ex. restauré par Edge après une coupure de courant, ou ouvert avec le bouton de la caisse) se ferme de lui-même en quelques secondes ; le bon écran client prend alors sa place.
- Personne de connecté = seulement l'accueil. Si la caisse est sur l'écran du code PIN (y compris après un redémarrage ou une déconnexion), l'écran client affiche uniquement le texte d'accueil, jamais l'addition précédente.
- Sous Windows, l'ouverture automatique peut aussi être désactivée avec la case Ouvrir l'écran client automatiquement ... dans le programme d'installation.
- Sous Linux, la caisse déplace la fenêtre avec wmctrl (fourni avec le paquet). Sous Wayland (par ex. Raspberry Pi OS avec labwc), ce n'est pas possible : placez alors une fois vous-même l'écran client sur le deuxième écran (le navigateur s'en souvient), ou choisissez X11 dans raspi-config. Sous macOS, le Mac demande la première fois une autorisation dans Accessibilité.
- Manuellement : Paramètres → Établissement → Écran client → Ouvrir l'écran client (deuxième écran). Dans Chrome et Edge (aussi sur un Chromebook), le bouton place directement la fenêtre sur l'écran client (la première fois, le navigateur demande une autorisation) ; un clic sur l'écran client le met en plein écran. Dans les autres navigateurs : faites glisser et appuyez sur F11.
- Caisse Android avec écran client intégré (par ex. Sunmi D2/T2) ou un écran via HDMI/USB-C : également automatique. Dès que l'application est installée sur une caisse, l'écran client apparaît sur le deuxième écran ; brancher et débrancher fonctionne immédiatement.
- Sunmi T1 mini / T2 mini avec le petit afficheur texte (2 lignes) : l'application y affiche automatiquement le montant : Total, À payer, en espèces Rendu, après le paiement Merci ! et au repos le nom de l'établissement. L'écran client doit être activé.
- iPad (écran de service) avec un écran externe via HDMI/USB-C ou AirPlay : l'application place automatiquement l'écran client sur cet écran (préparé ; l'application iOS n'est pas encore sortie).
- Chromebook : comme écran de service dans Chrome, le bouton Ouvrir l'écran client (deuxième écran) fonctionne comme ci-dessus. Dans l'application Android, l'écran client apparaît automatiquement sur le deuxième écran dès que ChromeOS transmet cet écran aux applications Android ; sinon, utilisez un appareil séparé avec un code d'appairage.
- Appareil séparé (tablette ou PC à côté de la caisse) : ouvrez
http://<kassaserver>:3000/klantscherm. L'écran affiche en bas à droite un code de couplage de 6 caractères. Saisissez-le à la caisse dans Paramètres → Établissement → Écran client → Coupler. Découpler remet l'écran sur le code de couplage. Le couplage est enregistré par caisse (dans le navigateur de cette caisse), donc chaque caisse peut avoir son propre écran client.
L'écran client ne demande pas de code PIN (il n'y a rien à commander) et n'affiche que l'image de la caisse à laquelle il est couplé. L'image n'existe que dans la mémoire du serveur de caisse ; après un redémarrage, l'écran reste vide jusqu'à la modification suivante. Le réglage (activé/désactivé et texte d'accueil) est inclus dans la sauvegarde et dans l'Import/export (Autres paramètres).
Ticket numérique via QR (facultatif)
Par défaut désactivé. À activer via Paramètres → Établissement → Cuisine et écran client → Ticket numérique (l'option apparaît lorsque l'écran client est activé et enregistré). Après l'encaissement, un QR code s'affiche avec Merci ; il reste alors affiché 45 secondes au lieu de quelques secondes. Le client le scanne avec son propre téléphone et voit le ticket, exactement comme le ticket papier (même texte, avec aussi le bloc FDM pour une caisse belge). Sur le téléphone, il peut imprimer le ticket, l'enregistrer en PDF ou le télécharger sous forme de fichier texte.
- Cela passe par le portail de gestion :
https://kassa.<portaal>/__bon/<kassa>/<sleutel>. La caisse doit donc être connectée au portail ; sinon, aucun QR code n'apparaît et rien ne change. - La clé est aléatoire et impossible à deviner, et elle est valable 30 jours. Ensuite, la caisse la supprime automatiquement. Le portail ne conserve rien.
- Fonctionne avec un deuxième moniteur et avec un écran client séparé. Le ticket papier et le ticket par e-mail continuent de fonctionner normalement.
Écran client au repos : diaporama (facultatif)
Par défaut désactivé. À activer via Paramètres → Établissement → Cuisine et écran client → Écran client au repos. Lorsqu'aucune addition n'est affichée sur l'écran client, les diapositives défilent (par défaut toutes les 8 secondes, réglable de 4 à 60) :
- Actions : les happy hours (si la happy hour est activée), avec la remise, les jours et horaires et les produits ou catégories ; celles en cours apparaissent en premier, avec "Maintenant !".
- Produits mis en avant (au maximum 12, par exemple les nouveautés de la carte), avec le prix et (si les photos de produits sur l'écran client sont activées) la photo. Un produit épuisé est ignoré par l'écran.
- Le programme de fidélité : points par euro, la récompense et les cartes à tampons (uniquement si la carte de fidélité est activée).
- Textes personnalisés : au maximum 5, chacun sur sa propre diapositive (par exemple "Nouveau dès vendredi : notre carte d'été").
Sans diapositives, l'écran client affiche l'écran d'accueil, comme toujours.
Happy hour
Désactivé par défaut. À activer via Paramètres → Établissement → Utiliser le happy hour ; l'onglet Paramètres → Happy hour apparaît ensuite.
- Pour chaque happy hour : nom (figure sur le ticket), jours, de–à (peut passer minuit, p. ex. 23:00–01:00), remise en % ou un prix fixe, et pour quelles catégories de produits et/ou quels produits individuels.
- Pendant ce créneau, la caisse applique automatiquement le prix happy hour à la saisie (jamais plus cher que d'habitude ; avec un prix fixe, les options s'ajoutent normalement). Le bouton du produit affiche l'ancien prix barré avec le nouveau prix et HH ; la commande et le ticket indiquent le nom du happy hour. Ce qui a déjà été saisi garde son prix.
- Offre du jour : cochez Toute la journée (00:00–24:00) et choisissez le ou les jours, p. ex. des spareribs à prix fixe chaque mardi.
- Saison : cochez Uniquement pendant une saison (chaque année) et choisissez du et au (jour et mois, p. ex. du 1 juin au 31 août ; le passage à la nouvelle année est possible, p. ex. du 1 décembre au 28 février). En dehors de la saison, la happy hour ne s'applique pas.
- Les modifications sont notées dans le journal.
Tranches horaires et saisons
Désactivé par défaut. Activation via Paramètres → Établissement → Tranches horaires et mode de commande → Carte par tranche horaire et saison ; l'onglet Paramètres → Tranches horaires apparaît alors. Si vous le désactivez, tous les produits sont de nouveau toujours en vente et les tranches horaires sont conservées.
- Par tranche horaire : nom (p. ex. Petit-déjeuner, Déjeuner, Dîner, Carte d'été), jours, de–à (peut dépasser minuit ; Toute la journée = 00:00–24:00), éventuellement une saison (chaque année, jour et mois), et les catégories de produits et/ou produits individuels qui en font partie.
- Les produits et catégories de produits qui figurent dans une ou plusieurs tranches horaires ne sont en vente que pendant l'une de ces tranches horaires ; ce qui ne figure dans aucune tranche horaire est toujours en vente. L'écran de commande n'affiche que ce qui est en vente maintenant et change automatiquement quand une tranche horaire commence ou se termine ; le serveur refuse le reste ("pas en vente maintenant, uniquement au Petit-déjeuner").
- La boutique en ligne affiche et facture la même carte (au moment de la commande).
- Un autre prix un jour donné ou pendant une saison est une happy hour (offre du jour, voir ci-dessus).
- Carte par site : chaque caisse (établissement) a ses propres produits, tranches horaires et prix.
- Les modifications sont notées dans le journal.
Carte et prix par mode de commande
Désactivé par défaut. Activation via Paramètres → Établissement → Tranches horaires et mode de commande → Carte et prix par mode de commande. Si vous le désactivez, le prix normal s'applique de nouveau partout et tout est en vente partout ; les prix saisis sont conservés.
- Dans Paramètres → Produits, par produit : Prix à emporter et Prix en livraison (vide = le prix normal) et Vendu en (sur place, à emporter, livraison ; au moins un). Pour une catégorie de produits aussi Vendu en, pour tous les produits de cette catégorie.
- Pour une commande à emporter ou en livraison, l'écran de commande affiche le prix de ce mode de commande et uniquement ce qui y est vendu ; le serveur facture ce prix et refuse le reste. Happy hour, menus et options sont calculés avec ce prix.
- Le taux de TVA à emporter (sur le produit) en est indépendant, comme toujours.
- Pour la vente à emporter et la livraison, la boutique en ligne affiche les prix et produits de ce choix (en changeant, la page du menu se recharge), et à table ceux de sur place.
- L'export et l'import de la configuration (Paramètres → Import/export) incluent les prix par mode de commande, "vendu en", les tranches horaires et la saison des happy hours.
Menus
Désactivé par défaut. À activer via Paramètres → Établissement → Utiliser les menus.
- Un menu est un produit normal (au prix du menu) dont vous définissez les éléments sous Paramètres → Produits → (produit) → Menu :
- fixe : toujours ce produit (p. ex. « Boisson : vin maison ») ;
- au choix : choisir 1 (ou plus) dans une catégorie de produits, éventuellement limitée à certains produits (p. ex. « Plat principal : choisir 1 parmi les Plats principaux »).
- Pour chaque élément, le service (1 = immédiatement, 2/3 = attend l'envoi).
- Quand vous saisissez le menu, vous choisissez les plats pour chaque élément. Pour chaque plat (y compris les fixes), vous pouvez choisir les options comme pour un produit individuel (cuisson, supplément fromage ; les options obligatoires doivent être choisies) et ajouter une remarque. Le supplément des options s'ajoute au prix du menu. Le menu apparaît sur une ligne avec les plats (et leurs options) en dessous.
- Les plats partent en lignes séparées vers la cuisine/le bar (bon de cuisine et écran cuisine), dans leur propre service. La ligne du menu elle-même, non.
- Pour la TVA, le prix du menu est réparti entre les éléments au prorata de leur prix normal, pour que nourriture et boissons aient chacune le bon taux. Le ticket indique le menu avec le prix total et les plats en dessous.
- Si le menu lui-même a des options (p. ex. taille), vous les choisissez en haut de la fenêtre du menu. Elles figurent à côté de la ligne du menu sur le ticket, et pour chaque plat du menu sur le bon de cuisine et l'écran cuisine avec la mention « (menu) ».
- Le retrait/l'annulation se fait pour le menu entier (touchez la ligne du menu).
- Diviser / déplacer : choisissez la ligne du menu ; les plats suivent. Avec 2× le même menu, vous pouvez aussi en déplacer 1 (en-tête et plats sont divisés).
- Sans connexion, vous pouvez saisir les menus normalement ; ils sont enregistrés sur la tablette et envoyés dès que la connexion revient (comme les produits individuels).
- Le happy hour peut aussi s'appliquer à un menu.
Recettes et coût de revient (Apicbase)
Connexion avec Apicbase (recettes, coût de revient, stock et achats) via la Generic POS API d'Apicbase (désactivé par défaut, chaque partie s'active ou se désactive séparément). À configurer dans Paramètres → Recettes (droit Configurer l'établissement, les paiements et les imprimantes). La caisse communique elle-même avec Apicbase (trafic sortant uniquement, aucun portail nécessaire).
- Connecter (tout est à remplir par l'administrateur), de l'une des trois façons :
- Coller le token : dans Apicbase Library Settings → API Settings → New token → Service Account Token (scopes accounts, library, sales) ; coller l'access token et le refresh token ;
- Se connecter avec l'API-app propre à l'établissement (client-id et client secret depuis API Settings) : Se connecter à Apicbase, puis coller le code qu'Apicbase affiche ensuite ;
- Un token expiré (après 7 jours) est renouvelé automatiquement par la caisse avec le refresh token.
- Outlet : Récupérer les outlets et choisir l'outlet de cet établissement. La caisse y règle le POS sur Generic POS API avec son propre location-id (modifiable ; par défaut
HORECAPOS-…, unique par caisse). - Activé, avec des cases à cocher :
- Produits, groupes et options vers Apicbase : catégories de produits, produits (PLU = le numéro PLU du produit, sinon le code, sinon l'id), options comme modifiers, avec prix et TVA. Automatiquement après chaque modification (au bout d'une minute) et chaque jour. Dans Apicbase, vous liez ensuite chaque produit de caisse à une recette ;
- Chaque ticket encaissé vers Apicbase : les plus anciens d'abord, au maximum 100 à la fois, dans le quart d'heure suivant l'encaissement (et toutes les 5 minutes). La remise est répartie sur les lignes ; montants libres, supplément emballage jetable et consigne apparaissent comme produits distincts dans Apicbase ; produits pesés comme 1 pièce avec le montant total. En cas d'échec, la caisse s'arrête (Apicbase veut les tickets dans l'ordre) et réessaie plus tard : l'encaissement n'en est pas affecté. À l'activation, vous choisissez à partir de quel jour (par défaut à partir de maintenant) ;
- Récupérer le coût par portion (toutes les 6 heures) : par recette liée, le food cost (ingrédients et pertes), avec coûts de personnel, le prix de vente et la marge selon Apicbase. Calculé avec le fournisseur le moins cher, le dernier prix commandé ou la valeur moyenne du stock ;
- Reprendre le prix de vente d'Apicbase (désactivé par défaut) : appliquer le prix de vente des produits liés dans la caisse (consigné dans le journal).
- En bas : Coût de revient par produit avec coût de revient, coût de revient avec personnel, prix en caisse, coût de revient % et marge. Boutons Envoyer le catalogue maintenant, Envoyer les tickets maintenant et Récupérer les coûts de revient maintenant.
Code : apps/pos-server/src/lib/apicbase.ts, routes/apicbase.ts ; écran Apicbase.tsx. Journal : Apicbase. Prérequis : le module API d'Apicbase. Pour l'app de Pin Voordeel pour tous les clients : partenariat et certification auprès d'Apicbase (voir le backlog). Documentation : https://developers.apicbase.com/docs/generic-pos-api-guide
Logiciel hôtelier : mettre sur la chambre
Pour un restaurant ou un bar d'un hôtel : mettre l'addition sur la chambre d'un client. Désactivé par défaut : Paramètres → Hôtel (droit Configurer l'établissement, le paiement et les imprimantes).
- Une seule liste avec tous les logiciels hôteliers (Logiciel hôtelier de l'hôtel). Liaisons intégrées :
- Mews (Connector API : client token et access token, le service du restaurant et, par taux de TVA, le code TVA de Mews), apaleo (votre propre appli avec client ID et client secret, l'ID de l'établissement ; par taux de TVA éventuellement le type de TVA) et Cloudbeds (clé API et ID de l'établissement), chacun avec un environnement de test et un environnement réel ;
- Oracle OPERA Cloud (OHIP), protel (protel I/O), RoomRaccoon, Booking Experts, Amadeus (XMLPOS), VIPS, Stayntouch, Clock PMS+, Guestline (Rezlynx), Hotelogix, eviivo, Little Hotelier, Shiji et Infor HMS (Databridge). Après le choix, seuls les champs propres à ce logiciel hôtelier s'affichent (clés, ID de l'hôtel, éventuellement l'adresse de leur API et, par taux de TVA, leur code), avec une courte explication de ce qu'il faut demander au fournisseur. Ces liaisons sont construites selon la documentation des fournisseurs ; faites confirmer la liaison par le fournisseur et essayez d'abord avec Tester la connexion et un seul ticket ;
- une démo (quatre suites, chambres 4 à 7) pour essayer ;
- Sirvoy, en connexion partielle et uniquement avec Sirvoy Pro. Sirvoy n'a pas d'API permettant à une caisse d'ajouter quoi que ce soit à une réservation, pas même par fichier (l'import CSV ne crée que de nouvelles réservations). La caisse connaît ainsi les clients (chambre, nom, arrivée, départ) : la recherche dans Sur la chambre et le libre-service sur la borne et dans la boutique en ligne fonctionnent normalement. Le ticket n'arrive pas automatiquement dans Sirvoy : après l'encaissement, il figure dans Paramètres → Hôtel sous À saisir dans Sirvoy, avec la chambre, le client, le numéro de ticket et le montant par taux de TVA. L'hôtel l'ajoute à la main en extra sur la réservation et clique sur C'est saisi (retour avec Pas encore). Nécessaire :
- de préférence une caisse connectée au portail de gestion : l'adresse passe alors par le portail (
https://<portaal>/hotel/<kassa-id>/sirvoy?sleutel=...) et aucun port n'est à ouvrir à l'hôtel. Sinon, la caisse elle-même doit être accessible depuis Internet en https (propre domaine avec certificat ou redirection de port ; Sirvoy exige TLS 1.2 ou supérieur) et vous saisissez cette adresse ; - L'adresse n'est visible qu'une seule fois ; la caisse ne conserve que le hash. Créer une nouvelle adresse = l'ancienne ne fonctionne plus ;
- de préférence une caisse connectée au portail de gestion : l'adresse passe alors par le portail (
Sirvoy n'envoie quelque chose que lorsqu'une réservation change : les réservations antérieures à la connexion ne sont connues de la caisse qu'après une modification dans Sirvoy. Les messages peuvent arriver dans le désordre ; un message plus ancien (generatedAt) que ce que la caisse possède déjà est ignoré. À l'hôtel = non annulée et sans check-out, avec check-in effectué ou arrivée aujourd'hui ou avant, et départ aujourd'hui ou plus tard. Tester la connexion indique combien de réservations sont arrivées.
Tous les logiciels hôteliers sont disponibles aux Pays-Bas et/ou en Belgique. Tester la connexion vérifie les données. Code par liaison : apps/pos-server/src/lib/pms/<naam>.ts.
- Libre-service (désactivé par défaut) : le client de l'hôtel met lui-même sa commande sur sa chambre, sur la borne et/ou dans la boutique en ligne (à emporter et livraison, pas pour la commande à table). Il saisit son numéro de chambre et son nom de famille ; la caisse vérifie auprès du logiciel hôtelier si ce client séjourne actuellement dans cette chambre. Avec un maximum par commande (par défaut € 150), et après 5 tentatives échouées en un quart d'heure, il doit d'abord passer à la réception. Le message ne dit jamais qui séjourne dans une chambre.
- Encaisser : si la connexion est activée, le moyen de paiement Sur la chambre est disponible. Recherchez le client par nom ou numéro de chambre (uniquement les clients qui séjournent actuellement à l'hôtel) et touchez Mettre sur la chambre .... La caisse comptabilise le ticket par taux de TVA sur la note d'hôtel du client ; le client paie au départ.
- Belgique : si la commande est déjà enregistrée à table auprès de la boîte noire, elle passe d'abord de la table à la chambre (signCostCenterChange vers ROOM, UC4101) ; le ticket part vers la boîte noire comme crédit chambre (ROOM_CREDIT).
- Si la comptabilisation dans le logiciel hôtelier échoue (pas d'internet), la vente est quand même enregistrée et la comptabilisation figure comme Échec dans Paramètres → Hôtel, avec Réessayer.
- Rapports et comptabilité : Sur la chambre (hôtel) est un moyen de paiement distinct sur le rapport X et Z, dans le relevé journalier et dans le fichier d'audit (XAA).
Code : apps/pos-server/src/lib/hotel.ts, routes/hotel.ts, les liaisons dans lib/pms/, catalogue packages/shared/src/hotelcatalogus.ts ; écran Hotel.tsx. Journal : Hôtel. Les secrets (tokens) sont uniquement stockés dans la base de données, jamais à l'écran.
Gestion des vins avec Vinify
Paramètres → Gestion des vins (désactivé par défaut ; la désactivation conserve tout). Vinify gère la cave, la carte des vins et le stock, et constitue la source principale des vins. Conformément aux exigences POS de Vinify, la caisse offre une API qui permet à Vinify de :
s'authentifier, par les trois méthodes que connaît Vinify (l'administrateur choisit lesquelles sont activées) :
- ID d'API et clé d'API (
X-Api-IdetX-Api-Key, ouAuthorization: Bearer <id>:<sleutel>) ; - Clé d'API et secret d'API avec une signature :
X-Api-Key,X-TimestampetX-Signature= hex HMAC-SHA256(secret,<timestamp>\n<METHODE>\n<pad met query>\n<sha256 van de body>), datant d'au plus 5 minutes.
La clé et le secret sont créés par la caisse (affichés une seule fois) ; les écrans indiquent seulement s'ils sont renseignés. Accessible via le portail à https://<portaal>/vinify/<kassa-id>/... (aucun port ouvert dans l'établissement ; l'adresse figure dans Paramètres → Gestion des vins). Quels produits sont du vin : ce que Vinify crée, plus les groupes que vous cochez. Si Vinify fournit une adresse où envoyer les ventes, la caisse les envoie aussi elle-même (push, avec un jeton) : après chaque ticket encaissé et toutes les 5 minutes ce qui n'a pas encore abouti. Vinify active la connexion avec HorecaPOS (hello@vinify.no). Tout figure dans le journal. À ne pas confondre avec Vinify.nl, une boutique de vins en ligne : elle figure parmi les fournisseurs (Commander auprès des fournisseurs).
Saisie rapide de l'adresse avec code postal et numéro
À activer sous Paramètres → Établissement → Saisie rapide de l'adresse (désactivé par défaut ; uniquement pour un établissement aux Pays-Bas). Saisissez le code postal et le numéro (aussi avec une lettre ou un complément, ex. 12A ou 12-1) et appuyez sur Rechercher l'adresse : la rue, le numéro, le code postal et la ville sont remplis. S'il y a plusieurs adresses à ce numéro (12, 12A, 12B), choisissez la bonne. Vous pouvez ensuite encore tout modifier vous-même.
- Dans les coordonnées de l'établissement (Paramètres → Établissement, au-dessus de l'adresse).
- Pour un client de la carte de fidélité : à la caisse pour un nouveau client et sous Rapport → Clients. Les clients reçoivent pour cela une adresse (facultative) : rue et numéro, code postal et ville.
- Les adresses viennent du Locatieserver de PDOK, gratuit (les adresses officielles des Pays-Bas, BAG) : pas besoin de compte ni de clé, mais d'Internet. Sans Internet ou pour une adresse belge, saisissez simplement l'adresse vous-même.
Notification d'une nouvelle version
À activer dans Paramètres → Établissement → Notification de mise à jour (désactivé par défaut).
- Caisse mise à jour : si le serveur de caisse a été mis à jour alors qu'une tablette a encore les anciens écrans ouverts, le haut de l'écran affiche « La caisse a été mise à jour (version …) » avec Actualiser. La tablette vérifie toutes les 5 minutes, quand l'écran redevient visible et après un redémarrage du serveur.
- Mise à jour disponible : si la caisse est reliée au portail de gestion (
PORTAAL_URL/PORTAAL_SLEUTEL) et queNIEUWSTE_VERSIEy est renseigné, les personnes autorisées à gérer les paramètres voient « Mise à jour disponible : version … » (avec l'explication deUPDATE_NOTITIE). Plus tard masque la notification sur cette tablette jusqu'à la prochaine version. La mise à jour se fait comme toujours avecscripts\windows\update.cmd(voir Mise à jour).
Plateformes de réservation
Les réservations de TheFork, Formitable, Zenchef, Resengo (Belgique uniquement), OpenTable (Pays-Bas uniquement), PlanPanther, RestoManager et Aqqo (Pays-Bas uniquement) arrivent automatiquement dans la caisse et sur le plan de salle. À activer dans Paramètres → Plateformes de réservation (désactivé par défaut). Uniquement si les Réservations sont activées.
- Pays de l'établissement : vous ne pouvez choisir que les plateformes qui fonctionnent dans le pays de l'établissement (Resengo uniquement en Belgique, OpenTable et Aqqo uniquement aux Pays-Bas). Le serveur le vérifie aussi.
- Plusieurs plateformes à la fois: vous pouvez connecter plusieurs plateformes en parallèle, par exemple TheFork et Formitable. Deux plateformes n’obtiennent jamais la même table sur le même créneau ; la deuxième réservation arrive alors sans table.
- + Connecter une plateforme : choisissez la plateforme et saisissez les données. Les secrets (Client secret, clé de rappel) n'apparaissent jamais dans l'aperçu ; laisser vide = conserver, Effacer = supprimer.
- TheFork (API B2B publique) : Restaurant-UUID, Client ID et Client Secret (à demander à TheFork). Si la caisse annule, elle annule aussi chez TheFork.
- Formitable, Zenchef, Resengo, OpenTable, PlanPanther, RestoManager, Aqqo : leur API est réservée aux partenaires ou n'est pas publique (PlanPanther, RestoManager et Aqqo : une intégration caisse se fait en concertation avec eux). Les événements Formitable (
booking.created,.changed,.canceled,.checkin,.checkout) sont reconnus. - Sur le plan de salle : si une table de la caisse porte le même nom que celle de la plateforme et qu'elle est libre sur ce créneau, la réservation est placée sur cette table ; sinon sans table (choisissez-la à l'arrivée). Une réservation reçue à nouveau est mise à jour, pas dupliquée. L'aperçu indique "via TheFork".
- Statut : si la plateforme annule ou signale un no-show, la caisse le reprend. Ce qui est déjà arrivé dans la caisse reste arrivé.
- Renvoi (no-shows renvoyés) : saisissez une URL de rappel (par exemple celle de votre service d'intégration). La caisse envoie chaque modification faite dans la caisse (arrivé, no-show, annulé, payé avec montant) en JSON :
{ platform, id, status, statusEn, bedrag, valuta, tafel, tijdstip, gemeldOp }(montant en centimes, uniquement si payé), avecAuthorization: Bearer <terugmeld-sleutel>si vous l'avez saisie. En cas d'échec, la caisse réessaie chaque minute et l'erreur s'affiche à la plateforme. Ce qui vient de la plateforme elle-même n'est pas renvoyé. - Réservation test : crée une réservation comme la plateforme l'enverrait.
- Supprimer : la connexion et la clé sont supprimées ; les réservations restent.
- Toutes les modifications figurent dans le journal (sans secrets).
Programmes de fidélité et avis
Deux interrupteurs séparés dans Paramètres → Fidélité et avis (tous deux désactivés par défaut, rien n'est alors visible nulle part). Si vous les désactivez, les réglages et tout ce qui s'est déjà passé sont conservés.
Programme de fidélité d'une autre plateforme : le client cumule des points chez Joyn (Belgique) et/ou Piggy (Leat ; Pays-Bas et Belgique). C'est indépendant de la carte de fidélité propre à la caisse, qui peut rester activée en parallèle.
- Plusieurs à la fois : en Belgique, Piggy et Joyn peuvent être activés ensemble, chacun avec ses propres données (choisir la plateforme, remplir, Enregistrer ; Modifier et Supprimer par plateforme). Le client reçoit par programme un QR code distinct sur le ticket, un lien distinct dans le ticket envoyé par e-mail et un bouton distinct dans la boutique en ligne, et cumule une fois par commande pour chaque programme. Ce qui était déjà configuré continue simplement de fonctionner.
- QR code sur le ticket : après l'encaissement, un QR code avec "Scannez et cumulez des points chez ..." figure sous le ticket. Le ticket envoyé par e-mail contient un lien, et la boutique en ligne (à emporter et livraison) affiche un bouton sur la page de commande et un lien dans l'e-mail de confirmation. Une commande ne rapporte des points qu'une seule fois : ticket, e-mail et boutique en ligne utilisent le même code unique (le numéro de commande). Vous pouvez désactiver "QR code sur le ticket imprimé" ; l'e-mail et la boutique en ligne reçoivent quand même le lien.
- Piggy, méthode "QR code et lien" : saisissez l'adresse de votre portail client Piggy, le Shop UUID et l'Account secret (Piggy Business Dashboard). Fonctionne sans internet : la caisse crée le lien elle-même.
- Piggy, méthode "Créditer immédiatement" : saisissez en plus un personal access token (Piggy → Marketplace → Private App). Si la caisse envoie le ticket par e-mail et que le client avec cette adresse e-mail est déjà membre, la caisse crédite les points immédiatement ; le ticket indique alors "Points crédités chez Piggy". La caisse ne crée jamais de nouveau membre ; pas de membre (ou pas d'adresse e-mail) = le QR code.
- Joyn, méthode "QR code et lien" : avec la partner key, la shop reference et le shared secret de Joyn (à demander via api-integration@joyn.be). Fonctionne sans internet. Le QR code est valable 2 heures.
- Joyn, méthode "Via l'API" : avec la shop API key (activer la connexion dans le portail marchand Joyn). Lors de l'encaissement, la caisse demande un code de fidélité à Joyn. L'échange des points se fait comme toujours sur le Joyn-iPad.
- Créer un lien d'exemple : vérifie que les données sont correctes (un lien de 10 € ; ouvrez-le uniquement pour regarder).
- Seules les plateformes du pays de l'établissement peuvent être choisies ; les secrets sont stockés uniquement dans la base de données et n'apparaissent jamais à l'écran (laisser vide = conserver).
Demander des avis : après la visite, un seul e-mail avec un bouton vers Google et/ou Trustpilot.
- Quelques heures plus tard (réglable, par défaut 3), le client reçoit l'e-mail, dans la langue du ticket.
- Boutique en ligne : pour la vente à emporter et la livraison, la boutique en ligne envoie elle-même l'e-mail, quelques heures après la clôture de la commande dans la caisse, dans la langue du client.
- Google : collez le lien d'avis de votre fiche d'établissement (Google → votre fiche d'établissement → Demander des avis,
https://g.page/r/.../review) ou saisissez le Place ID. - Trustpilot : saisissez le domaine de votre établissement (le bouton mène à
trustpilot.com/evaluate/<domein>). Si vous avez chez Trustpilot une adresse d'invitation (Automatic Feedback Service,...@invite.trustpilot.com), saisissez-la aussi : l'e-mail est alors envoyé en copie cachée (Cci) à Trustpilot, avec de manière invisible le nom, l'adresse e-mail et le numéro de ticket, et Trustpilot envoie lui-même l'invitation (pas de bouton Trustpilot propre dans ce cas). Uniquement Trustpilot avec adresse d'invitation : la caisse envoie l'e-mail uniquement pour Trustpilot. - Pas trop souvent : un même client (adresse e-mail) reçoit au maximum une demande par période (par défaut 90 jours ; 0 = à chaque fois). Pour cela, la caisse conserve uniquement un hachage de l'adresse ; l'adresse e-mail elle-même est effacée dès que l'e-mail est envoyé (en cas d'échec, après trois tentatives, et sinon après 14 jours).
- QR code sur le ticket (facultatif) : aussi un QR code pour un avis sous le ticket imprimé.
- Aperçu de l'e-mail et Effacer les e-mails en attente (les adresses sont alors effacées immédiatement). Le journal affiche review_gevraagd avec a***@domaine.be.
- Google et Trustpilot interdisent de récompenser un avis et de ne solliciter que les clients satisfaits ("review gating"). La caisse demande donc la même chose à tout le monde et ne donne rien en échange d'un avis.
- Lire les avis et y répondre depuis la caisse : voir Gestion des avis ci-dessous.
Connexion avec Mailchimp et Klaviyo
Vos clients de la carte de fidélité dans votre propre outil d'e-mailing : sous Paramètres → Établissement → Mailchimp et Klaviyo (sous le marketing par SMS et par e-mail). Il n'y a pas d'interrupteur : sans connexion avec une liste choisie, rien ne se passe.
- Connecter : avec une clé API (Mailchimp : Profiel → Extra → API keys ; Klaviyo : une clé privée
pk_…avec droits d'écriture pour Lists, Profiles, Subscriptions, Events, Campaigns et Templates). Le secret client et la clé ne sont plus jamais affichés (laisser vide = conserver). Choisissez ensuite la liste (Mailchimp : audience). - Clients : ceux qui ont accepté les e-mails vont dans la liste (abonnés), avec prénom, nom, téléphone, anniversaire et points de fidélité (Mailchimp : champ
PUNTEN, créé par la caisse elle-même ; Klaviyo : propriétépunten). Consentement retiré, adresse e-mail modifiée ou client supprimé : désabonné. Seul ce qui a changé est renvoyé. Avec une connexion, la caisse (et la case "offres" de la boutique en ligne) demande aussi aux nouveaux clients leur consentement pour les e-mails, modifiable sous Rapport → Clients, même sans le marketing par e-mail intégré. - Désabonnement : celui qui se désabonne dans Mailchimp ou Klaviyo n'a plus non plus de consentement pour les e-mails dans la caisse (journal : "désabonné dans Mailchimp"). La caisse ne réabonne jamais quelqu'un qui s'est désabonné lui-même.
- Commandes : chaque ticket payé d'un client de la liste est envoyé comme événement (Mailchimp :
bestelling, avec montant, numéro de ticket et quantité ; Klaviyo :Placed Order, avec la valeur en euros). Vous pouvez ainsi créer des e-mails automatiques dans votre outil d'e-mailing, par ex. après la première commande ou quand quelqu'un n'est pas venu depuis un mois. Les tickets antérieurs au choix de la liste ne sont pas envoyés. - Actions : sous Rapport → Marketing, vous pouvez aussi envoyer une action via Mailchimp ou Klaviyo (voir Marketing par SMS et e-mail) ; la caisse y crée alors la campagne et l'envoie.
- Mise à jour : toutes les 5 minutes, ou avec Mettre à jour. Déconnexion : retiré de la caisse ; tout reste dans Mailchimp et Klaviyo. Les clés sont stockées dans la base de données (incluses dans la sauvegarde, pas dans l'export de configuration).
Code : lib/mailinglijst.ts, routes/mailinglijst.ts et MailingKoppelingen.tsx.
BI et export de données
Les données de vente vers Power BI, Looker Studio, Excel, Google Sheets, Tableau, Qlik Sense, Metabase, un service BI (par exemple YourBI, BI4Horeca ou Moore DRV) ou votre propre data warehouse. À activer dans Paramètres → BI et export de données (désactivé par défaut). Lecture seule : une connexion ne peut rien modifier dans la caisse. Aucune donnée des clients.
- Données : tickets (y compris les avoirs), produits vendus (lignes de ticket), paiements, chiffre d’affaires par jour, chiffre d’affaires par heure, annulations, produits, employés (sans code PIN) et heures travaillées. Montants en euros avec un point comme séparateur décimal, heures à l’heure de l’établissement.
- + Connexion : choisissez l’outil et la méthode. Chaque outil prend en charge une ou plusieurs méthodes ; vous pouvez avoir plusieurs connexions en même temps (même pour le même outil).
- L’outil récupère lui-même (API) : la caisse fournit une seule fois une clé en lecture seule. Période avec
?van=&tot=(AAAA-MM-JJ) ou une adresse fixe avec?periode=(vandaag, gisteren, 7d, 30d, 90d, 365d, week, maand, vorigemaand, jaar) ; au maximum 366 jours, au maximum 200.000 lignes. La clé dansAuthorization: Bearer,X-Sleutelou?sleutel=. - Via le portail : si la caisse est reliée au portail client, la même adresse fonctionne aussi depuis l’extérieur de l’établissement, sans ouvrir de port :
https://<portaal>/bi/<kassa-id>/<gegevens>?periode=90d&formaat=csv&sleutel=.... Ainsi, le service Power BI l’actualise selon la planification (sans passerelle) et Google Sheets peut la récupérer avec=IMPORTDATA("...")(également la source pour Looker Studio). La caisse affiche l’adresse dans la connexion. - Vue d'ensemble de la chaîne via le portail client (plusieurs établissements) : une seule adresse et une seule clé pour toutes vos caisses ensemble. Sur chaque caisse qui doit participer, activez Vue d'ensemble de la chaîne via le portail client (sous l'interrupteur BI) et créez une clé dans le portail client, sous Mes caisses → BI pour tous vos établissements. Ensuite :
https://<portaal>/bi/keten/<gegevens>?periode=90d&formaat=csv&sleutel=hpk_.... Le portail récupère les données de chaque caisse et les fusionne, aveckassaIdetzaaksur chaque ligne. Les caisses hors ligne ou qui ne participent pas figurent dansontbrekend(JSON) et dans l'en-têteX-Ontbrekend. La caisse elle-même n'a pas besoin de sa propre clé pour cela ; la désactivation sur la caisse ou dans le portail client y met fin. - Avec un jeton, celui-ci est envoyé comme
Authorization: Beareret une signature figure dansX-HorecaPOS-Handtekening(sha256=HMAC du contenu). En cas d’échec, la caisse réessaie chaque minute ; rien n’est envoyé en double. Avec à partir du, elle envoie aussi les anciens tickets. - La caisse fournit des fichiers : chaque jour (à une heure donnée, pour la veille ; les jours manqués sont rattrapés) ou chaque heure (aujourd’hui jusqu’à maintenant), en CSV (virgule, ou point-virgule pour Excel néerlandais) ou JSON, vers un dossier sur l’ordinateur de caisse (par exemple un dossier OneDrive ou SharePoint pour Power BI ou Excel), un serveur FTP(S) ou SFTP ou par e-mail. Noms de fichiers :
horecapos_<gegevens>_<datum>.csv. - Envoyer un test (push) et Exporter maintenant (fichier) dans la connexion.
- Télécharger vous-même : choisissez les données, la période et le format.
- Modèle Power BI (
.pbit) : un rapport prêt à l'emploi pour Power BI Desktop, via Télécharger le modèle Power BI dans BI et export de données. Créez d'abord une connexion API (Power BI). Dans le modèle : une table par jeu de données avec les bons types, un calendrier (année, mois, semaine, jour de la semaine), des relations (date → calendrier, lignes de ticket → produits, heures travaillées → employés) et des mesures (chiffre d'affaires TTC et HT, TVA, pourboires, tickets, couverts, moyenne par ticket et par couvert, quantité vendue, CA produits, payé, annulations, heures travaillées, CA par heure travaillée). Trois pages : Vue d'ensemble (chiffres clés, CA par jour, jour de la semaine et heure, modes de paiement), Produits (par groupe et par produit) et Personnel (heures et CA par employé). Via le portail, le service Power BI l'actualise aussi selon un planning. - Les secrets (jeton, mot de passe, clé) n’apparaissent jamais dans l’aperçu ; laisser vide = conserver, Effacer = supprimer. Tout est consigné dans le journal (sans les secrets).
Paie et planning
Avec le Pointage arrivée/départ du personnel activé (Paramètres → Établissement), Paramètres → Horaires de travail contient en bas Paie et planning (droit Gérer les paramètres), en deux blocs distincts. Si le pointage est désactivé, il n'y a pas d'heures : seul le bloc Planning du personnel (le chiffre d'affaires, en direct ou sous forme de fichier) se trouve alors en bas de Paramètres → Comptabilité, sous le titre Chiffre d'affaires vers votre planning :
- Gestion de la paie (payroll) : choisissez le logiciel de paie ou (Belgique) le secrétariat social, remplissez ses champs et, pour chaque employé, son matricule dans ce logiciel. Ensuite, vous créez pour une période le fichier avec les heures travaillées (services clôturés, par employé et par jour de pointage d'arrivée) et le chiffre d'affaires par employé (hors TVA, ce qu'il ou elle a encaissé) : prêt à l'emploi pour Loket.nl (Variabele gegevens, total par employé sur la période, ligne d'en-tête
aanslnr;persnr;ploeg;<looncomponent>) et SD Worx Belgique (Tijdsregistratie, positions fixes, par employé et par jour), sinon le relevé d'heures (CSV : Date ; Matricule ; Nom ; Heures ; Chiffre d'affaires hors TVA). Les employés sans matricule ne figurent pas dans le fichier pour Loket ou SD Worx ; la caisse indique de qui il s'agit. - Planning du personnel (WFM) : choisissez le système de planning. Un nouvel envoi écrase le précédent. En outre, la liste du chiffre d'affaires (CSV par jour et par heure, hors TVA et TVA comprise) et, pour Strobbo, le fichier Excel pour Importeer omzet.
- Uniquement les logiciels qui fonctionnent dans le pays de l'établissement, par groupe et par ordre alphabétique ; le serveur refuse un logiciel d'un autre pays (400).
- Les clés et les jetons ne sont jamais affichés à l'écran.
- Impact sur la comptabilité : les coûts salariaux sont comptabilisés par le logiciel de paie, le chiffre d'affaires par la caisse (Paramètres → Comptabilité). AFAS Payroll et Exact Online Loon se trouvent dans le même environnement que la comptabilité d'AFAS et d'Exact.
- Ce n'est pas possible sur la copie de la caisse sur le portail (c'est la caisse de l'établissement qui le fait).
- Pour certains logiciels, l'API n'est pas publique ou réservée aux partenaires (notamment Loket, Nmbrs, Nostradamus, Employes, Shyfter, Planday, Eitje) : ils sont indiqués sur demande ; en attendant, le fichier. Le format pour SD Worx et Strobbo provient de leur documentation : faites vérifier le premier import.
| Logiciel | NL | BE | Live | Fichier | Remarque |
|---|---|---|---|---|---|
| Logiciels de paie et prestataires de paie | |||||
| ADP | ✓ | ✓ | sur demande | Relevé d'heures par employé et par jour (CSV) | Connexion via ADP (sur demande) ; en attendant, le relevé d'heures par employé et par jour. |
| AFAS Payroll | ✓ | – | sur demande | Relevé d'heures par employé et par jour (CSV) | Paie dans AFAS Profit (même environnement que la comptabilité dans AFAS) ; connexion sur demande, en attendant le relevé d'heures. |
| BCS HR | ✓ | – | sur demande | Relevé d'heures par employé et par jour (CSV) | Connexion via BCS (sur demande) ; en attendant, le relevé d'heures. |
| Buddee | ✓ | – | sur demande | Relevé d'heures par employé et par jour (CSV) | Logiciel RH et de paie ; connexion sur demande, en attendant, le relevé d'heures par employé et par jour. |
| Employes | ✓ | – | sur demande | Relevé d'heures par employé et par jour (CSV) | Employes dispose d'une API pour les heures travaillées (jeton du client) ; la connexion suivra après concertation avec Employes. En attendant, le relevé d'heures. |
| Exact Online Loon | ✓ | – | sur demande | Relevé d'heures par employé et par jour (CSV) | Paie dans Exact Online (même environnement que la comptabilité dans Exact) ; connexion sur demande, en attendant le relevé d'heures. |
| Humanwave | ✓ | – | sur demande | Relevé d'heures par employé et par jour (CSV) | Connexion via Humanwave (sur demande) ; en attendant, le relevé d'heures. |
| Loket.nl | ✓ | – | sur demande | Loket.nl Variabele gegevens (CSV), Relevé d'heures par employé et par jour (CSV) | Fichier pour Werkgever → Collectieve mutaties → Importeren → Variabele gegevens (heures par employé sur la période). En direct via l'API Loket après inscription auprès de Loket. |
| Nmbrs | ✓ | – | sur demande | Relevé d'heures par employé et par jour (CSV) | Relevé d'heures par employé et par jour, à reprendre dans Nmbrs. En direct via l'API Nmbrs après enregistrement d'une application auprès de Nmbrs. |
| Salar (Van Winckel) | ✓ | – | – | Relevé d'heures par employé et par jour (CSV) | Relevé d'heures par employé et par jour pour le bureau de paie ; le format d'import de Salar n'est pas public. |
| Secrétariats sociaux | |||||
| Acerta | – | ✓ | sur demande | Relevé d'heures par employé et par jour (CSV) | Secrétariat social : le format du fichier de prestations vous est fourni par Acerta ; en attendant, le relevé d'heures. |
| Group S | – | ✓ | sur demande | Relevé d'heures par employé et par jour (CSV) | Secrétariat social : le format du fichier de prestations vous est fourni par Group S ; en attendant, le relevé d'heures. |
| Liantis | – | ✓ | sur demande | Relevé d'heures par employé et par jour (CSV) | Secrétariat social avec une API que Liantis ouvre par entreprise ; en attendant, le relevé d'heures. |
| Partena Professional | – | ✓ | sur demande | Relevé d'heures par employé et par jour (CSV) | Secrétariat social : le format du fichier de prestations vous est fourni par Partena ; en attendant, le relevé d'heures. |
| SD Worx | ✓ | ✓ | – | SD Worx Tijdsregistratie (TXT), Relevé d'heures par employé et par jour (CSV) | Belgique : fichier Tijdsregistratie (enregistrement du temps ; positions fixes, par employé et par jour) pour "Tijdsregistratie importeren". Pays-Bas : le relevé d'heures. |
| Securex | – | ✓ | sur demande | Relevé d'heures par employé et par jour (CSV) | Secrétariat social : les connexions passent par des partenaires ; en attendant, le relevé d'heures. |
| Planning et suivi des heures | |||||
| Book'u | – | ✓ | sur demande | Chiffre d'affaires par jour et par heure (CSV) | Book'u effectue les déclarations Dimona ; une connexion avec la caisse est possible sur demande. En attendant, la liste du chiffre d'affaires. |
| Deputy | ✓ | ✓ | ✓ | Chiffre d'affaires par jour et par heure (CSV) | En direct : le chiffre d'affaires par heure est envoyé chaque heure à Deputy (Sales). Vous créez un jeton permanent dans Deputy sous les intégrations API. |
| Dyflexis | ✓ | – | ✓ | Chiffre d'affaires par jour et par heure (CSV) | En direct : le chiffre d'affaires par heure est envoyé chaque heure à Dyflexis (information streams). Vous obtenez le jeton API via Dyflexis. |
| Eitje | ✓ | – | sur demande | Chiffre d'affaires par jour et par heure (CSV) | Eitje se connecte via son programme partenaires ; en attendant, la liste du chiffre d'affaires par jour et par heure. |
| Exact Horeko | ✓ | – | sur demande | Chiffre d'affaires par jour et par heure (CSV) | Connexion via Horeko (sur demande) ; en attendant, la liste du chiffre d'affaires. |
| Fooks | ✓ | – | sur demande | Chiffre d'affaires par jour et par heure (CSV) | Fooks développe lui-même les connexions avec les caisses ; en attendant, la liste du chiffre d'affaires par jour et par heure. |
| L1NDA | ✓ | – | sur demande | Chiffre d'affaires par jour et par heure (CSV) | L1NDA développe les connexions avec les caisses avec des partenaires ; en attendant, la liste du chiffre d'affaires par jour et par heure. |
| Mr. Einstein | ✓ | – | sur demande | Chiffre d'affaires par jour et par heure (CSV) | RH, plannings et coûts salariaux pour l'horeca ; Mr. Einstein développe les connexions avec les caisses avec l'éditeur de caisse (demande via mreinstein.nl/contact). En attendant, la liste du chiffre d'affaires par jour et par heure. |
| Nostradamus | ✓ | ✓ | sur demande | Chiffre d'affaires par jour et par heure (CSV) | Nostradamus reçoit le chiffre d'affaires via son interface caisse (jeton API et domaine de l'établissement, après demande auprès de Nostradamus) ; en attendant, la liste du chiffre d'affaires par jour et par heure. |
| Plan-Me | – | ✓ | sur demande | Chiffre d'affaires par jour et par heure (CSV) | Plan-Me effectue les déclarations Dimona ; une connexion avec la caisse est possible sur demande. En attendant, la liste du chiffre d'affaires. |
| Planday | ✓ | ✓ | sur demande | Chiffre d'affaires par jour et par heure (CSV) | Planday dispose d'une API ouverte pour les systèmes de caisse ; la connexion suivra après concertation. En attendant, la liste du chiffre d'affaires. |
| Shiftbase | ✓ | – | ✓ | Chiffre d'affaires par jour et par heure (CSV) | En direct : le chiffre d'affaires par jour est envoyé chaque heure dans le journal du département dans Shiftbase. Vous créez la clé API dans Shiftbase sous App center. |
| Shyfter | – | ✓ | sur demande | Chiffre d'affaires par jour et par heure (CSV) | Shyfter effectue les déclarations Dimona et accepte le chiffre d'affaires par jour via son API ; la connexion suivra après concertation avec Shyfter. En attendant, la liste du chiffre d'affaires. |
| Strobbo | ✓ | ✓ | – | Import du chiffre d'affaires Strobbo (Excel), Chiffre d'affaires par jour et par heure (CSV) | Fichier Excel pour Planning → € → Importeer omzet (chiffre d'affaires par jour et par poste de travail). |
| Tamigo | ✓ | ✓ | sur demande | Chiffre d'affaires par jour et par heure (CSV) | Connexion via Tamigo (sur demande) ; en attendant, la liste du chiffre d'affaires. |
| Werktijden.nl | ✓ | – | – | Chiffre d'affaires par jour et par heure (CSV), Relevé d'heures par employé et par jour (CSV) | Werktijden.nl enregistre lui-même les heures et n'accepte pas (encore) de chiffre d'affaires via son API ; les listes servent à comparer. |
| XPS Logic | ✓ | – | sur demande | Chiffre d'affaires par jour et par heure (CSV) | XPS Logic est axé sur le personnel flexible et intérimaire ; une connexion est possible sur demande. En attendant, la liste du chiffre d'affaires. |
Exigences légales en Belgique et aux Pays-Bas
Ce que la loi exige et ce que HorecaPOS fait pour y répondre (faites confirmer par votre comptable ce qui s'applique à votre établissement) :
| Pays | Exigence | HorecaPOS |
|---|---|---|
| Belgique | Système de caisse enregistreuse (SCE/GKS 2.0) avec boîte noire pour les établissements horeca qui y sont soumis (notamment avec plus de € 25.000 de chiffre d'affaires annuel provenant des repas, hors TVA) | liaison avec la boîte noire (FDM), les données obligatoires sur le ticket et les compteurs du rapport Z (pays Belgique sous Paramètres → Établissement, FDM_API_KEY et FDM_TERMINAL_ID); en haut de Paramètres → Établissement, vous choisissez si l'établissement est soumis au SCE : Oui = encaisser uniquement avec une boîte noire qui fonctionne, Non = sans, avec une déclaration de l'administrateur (à renouveler chaque année) ; tant que rien n'est choisi, il n'est pas possible d'encaisser. La caisse compte le chiffre d'affaires des repas et avertit au-delà de 25.000 € |
| Belgique | Facturation électronique via Peppol : depuis le 1 janvier 2026, les factures entre entreprises belges assujetties à la TVA doivent obligatoirement être électroniques et structurées (UBL, Peppol BIS 3) ; les tickets de caisse remis aux consommateurs ne sont pas concernés | export du chiffre d'affaires journalier en UBL selon Peppol BIS Billing 3.0 pour le logiciel comptable (Export comptabilité) ; et factures à partir d'un ticket pour les clients professionnels (Paramètres → Factures) : UBL selon Peppol BIS Billing 3.0 plus une facture à imprimer, envoi par e-mail, via Billit sur le réseau Peppol, vers votre propre adresse ou téléchargement (voir Factures pour clients professionnels) |
| Belgique | TVA horeca depuis le 1 mars 2026 : repas à emporter et boissons sans alcool 12 % (sur place et à emporter), alcool 21 %, repas que le client prépare encore lui-même (fondue, gourmet) 6 % | Assistant TVA (Paramètres → Lois et règles) : le type par produit, le bon taux immédiatement ou à partir d'une date ; les descriptions des taux A/B/C ont été mises à jour |
| Pays-Bas | Loi sur l'alcool : pas d'alcool aux jeunes de moins de 18 ans, y compris en vente en ligne et en livraison (vérifier l'âge à la remise) | Contrôle d'âge : produits contenant de l'alcool ; dans la boutique en ligne, le client confirme lui-même 18+ (case non pré-cochée) avec un message indiquant que l'âge sera vérifié à la remise ; "18+" sur le bon de cuisine, le bon de livraison et le ticket de caisse |
| Pays-Bas | Gobelets et barquettes jetables (SUP) : depuis 2024, un prix distinct et visible pour les emballages jetables en plastique à emporter et en livraison | Supplément jetable par produit, sur une ligne distincte du ticket (TVA du produit) et séparément dans le chiffre d'affaires |
| Pays-Bas | Consigne sur les canettes et les bouteilles en plastique | Consigne par produit (0,15 € / 0,25 €), ligne distincte sans TVA à emporter et en livraison, séparément dans le chiffre d'affaires |
| Pays-Bas | Paiement en espèces : depuis le 1 janvier 2026, plus de 3 000 € ou plus en espèces pour des biens | Avertissement à emporter et en livraison (aussi au monnayeur automatique) ; la confirmation est possible et est enregistrée dans le journal |
| Pays-Bas et Belgique | Changement de TVA : un taux ou un produit reçoit un autre pourcentage de TVA à partir d'une date | Planifier un changement de TVA : la caisse l'exécute le jour même (en Belgique par produit, les lettres A/B/C/D sont fixes) |
| Pays-Bas | Hébergement (nuitées) 21 % depuis le 1 janvier 2026 | taux de TVA réglable par produit |
| UE | Directive Omnibus : un prix barré "avant" ne peut être que le prix le plus bas des 30 derniers jours | la boutique en ligne ne barre un prix que par rapport au prix le plus bas sur 30 jours (la caisse conserve l'historique des prix ; les happy hours hebdomadaires récurrentes sont prises en compte) |
| UE | European Accessibility Act (depuis le 28 juin 2025) : boutiques en ligne accessibles (WCAG 2.1 AA) | la boutique en ligne fonctionne au clavier et avec un lecteur d'écran (lien "Aller au contenu", focus visible, libellés) et dispose d'une déclaration d'accessibilité (lien en bas de page) |
| Pays-Bas | XML Auditfile Financieel (XAF) : la norme de l'administration fiscale néerlandaise (Belastingdienst) pour transférer (une partie de) la comptabilité ; le XAF 4.0 est obligatoire à partir de 2027 | export en XAF 4.0 (Export comptable) |
| Pays-Bas | Système de caisse fiable : conserver les données de caisse (tous les tickets, corrections et événements) et pouvoir les fournir sous forme numérique lors d'un contrôle ; l'administration fiscale néerlandaise (Belastingdienst) recommande pour cela le XML Auditfile Afrekensystemen (XAA) | export en XAA 3.2 (Rapport → Chiffre d'affaires par période → Fichier d'audit de caisse), signé si souhaité avec le certificat du fournisseur |
| Belgique | Enregistrement des présences avec un système de caisse enregistreuse : enregistrer dans le système de caisse le début et la fin du temps de travail des travailleurs | Pointage arrivée/départ du personnel (Paramètres → Établissement ; Obligatoire = pointer d'abord l'arrivée) est enregistré dans la boîte noire |
| Belgique | Dimona : déclarer toute occupation (y compris flexi-jobs et étudiants) à l'ONSS (RSZ) avant son début | c'est votre secrétariat social ou votre outil de planning qui s'en charge (p. ex. Shyfter, Book'u, Plan-Me) ; HorecaPOS fournit les heures travaillées et le chiffre d'affaires (Paramètres → Horaires de travail → Paie et planning) |
| Pays-Bas | Enregistrement des temps de travail et de repos (loi néerlandaise sur le temps de travail, Arbeidstijdenwet) | Pointage arrivée/départ avec les heures travaillées par employé, modifiables par le gestionnaire (avec journal), et le relevé d'heures pour le logiciel de paie |
| Pays-Bas et Belgique | HACCP / sécurité alimentaire : consigner les températures (réfrigération, congélateur, maintien au chaud, cuisson, refroidissement, réception) et le nettoyage ; NL Hygiënecode voor de Horeca (NVWA), BE autocontrôle FAVV (guide G-023) | Registre HACCP dans la caisse (Paramètres → Lois et règles, bouton HACCP en haut) : points de mesure avec limites, tâches de nettoyage et de contrôle, action corrective obligatoire en cas d'écart, non modifiable, aperçu des enregistrements manqués en CSV ou à imprimer (voir Registre HACCP) |
| Pays-Bas et Belgique | Obligation de conservation (NL 7 ans, BE 10 ans) | les tickets, les rapports Z et le journal des événements sont stockés dans la base de données et dans les sauvegardes ; le journal des événements ne peut être ni modifié ni effacé depuis la caisse |
Lois et règles
Paramètres → Lois et règles (administrateur ; l'assistant TVA aussi avec le droit Gérer les produits). Tout est désactivé par défaut ; sans ces paramètres, la caisse fonctionne comme toujours.
- Contrôle d'âge alcool (18+) : dans Produits, cochez Contient de l'alcool (ou utilisez l'assistant TVA). À emporter et en livraison avec de l'alcool, "18+" figure sur le bon de cuisine, le ticket de caisse et dans l'écran de commande. Dans la boutique en ligne, le client confirme lui-même avoir 18 ans ou plus (la case n'est pas pré-cochée) et voit que l'âge sera vérifié à la remise.
- Supplément jetable (Pays-Bas) : un montant par produit (prix indicatifs : gobelet 0,25 €, barquette repas 0,50 €, petite barquette 0,05 €). À emporter et en livraison, la caisse ajoute elle-même une ligne "Supplément jetable" sur le ticket (avec la TVA du produit) ; elle suit automatiquement les produits (la base de données en garde la trace, même après une annulation, un déplacement ou un autre type de commande) et figure séparément dans le chiffre d'affaires. Pas de supplément sur place. Thuisbezorgd.nl et la boutique en ligne appliquent leur propre supplément.
- Consigne (Pays-Bas) : par produit (0,15 € canette/bouteille, 0,25 € grande bouteille), ligne "Consigne" sans TVA, uniquement à emporter et en livraison.
- Espèces de 3 000 € ou plus (Pays-Bas, interdit pour les biens depuis le 1-1-2026) : à emporter et en livraison, un avertissement à l'encaissement et au monnayeur automatique ; l'employé peut confirmer (p. ex. traiteur en tant que service), ce qui est enregistré dans le journal. Manger et boire sur place est un service : pas d'avertissement.
- Assistant TVA : le type par produit (repas, boisson sans alcool, boisson alcoolisée, aliments sans préparation, autre ; d'abord une estimation d'après le nom et le groupe). La caisse affiche le bon taux sur place et à emporter (Belgique depuis le 1-3-2026 : repas et boissons sans alcool 12 %, aussi à emporter ; alcool 21 % ; aliments sans préparation 6 %. Pays-Bas : 9 % et 21 %) et l'applique, immédiatement ou à partir d'une date.
- Planifier un changement de TVA : un produit vers un autre taux, ou (Pays-Bas uniquement) un taux avec un nouveau pourcentage, à partir d'une date. La caisse l'exécute elle-même ce jour-là (vérification tous les quarts d'heure et au démarrage).
Les factures (obligatoires entre entreprises en Belgique) sont décrites dans Factures pour clients professionnels. Reste à faire : SCE 2.0, se renseigner sur l'état de la certification (voir docs/backlog-concurrenten.md).
Factures pour clients professionnels
Paramètres → Factures (administrateur ; désactivé par défaut) : activez Factures pour clients professionnels (UBL / Peppol). Une fois activé, vous trouvez en dessous Paiement en compte, les Mentions sur la facture, les Services Peppol, la Connexion bancaire (avec le paiement en compte) et la liste de toutes les factures. En Belgique, la facturation électronique entre entreprises est obligatoire depuis le 1-1-2026.
- Factures pour clients professionnels : Tickets → choisissez le ticket → Facture. Saisissez le client (ou choisissez un client existant) ; la caisse crée une facture numérotée (p. ex. F2026-0001, croissante par année), en UBL selon Peppol BIS Billing 3.0 et en facture à imprimer ou à enregistrer en PDF. Envoi par e-mail (les deux en pièce jointe, éventuellement une copie au comptable), via Billit vers le réseau Peppol (
BILLIT_API_KEY,BILLIT_PARTY_ID), via Storecove (STORECOVE_API_KEY,STORECOVE_LEGAL_ENTITY_ID; le destinataire est déduit de l'ID Peppol du client, p. ex. 0208 → BE:EN, 0106 → NL:KVK, sinon par e-mail via Storecove) ou via Banqup d'Unifiedpost (BANQUP_CLIENT_ID,BANQUP_CLIENT_SECRET,BANQUP_SPACE_ID;BANQUP_SANDBOX=1pour l'environnement de test ; Banqup vérifie l'UBL et la livre lui-même), vers votre propre adresse (FACTUUR_HTTP_URL, p. ex. un logiciel comptable ou un autre service Peppol) ou téléchargement. Une facture par ticket ; le ticket est déjà payé, donc "acquittée". Numéro KvK/d'entreprise, IBAN, ID Peppol, préfixe et délai de paiement dans Données sur la facture. Toutes les factures en bas de l’onglet (droit Chiffre d'affaires par période). - Les clés, secrets et en-têtes ne sont jamais affichés (seulement "renseigné" ; laisser vide = conserver, Effacer = supprimer) et ne sont pas enregistrés dans le journal (seulement les champs modifiés). Ils sont stockés dans la base de données (
vestiging.peppol_gegevens) : inclus dans les sauvegardes, pas dans l'export de configuration.
Borne de commande en libre-service
Les clients commandent eux-mêmes sur une borne ou une tablette, comme dans un fast-food, et paient à la caisse ou par carte sur la borne. Les écrans de commande font partie de la caisse elle-même : la carte, les prix, les options, les menus, les happy hours, les moments de la journée, les photos, les allergènes, les langues et le ticket viennent de la caisse et n'ont pas à être configurés ailleurs. Sur la borne tourne l'appli PinPortal Kiosk 2 (Android, y compris Sunmi, ainsi que Windows, Linux et macOS), qui affiche la page et imprime le ticket. Désactivée par défaut.
Activer et configurer (administrateur) : Paramètres → Établissement → Écrans et utilisation → Borne de commande en libre-service.
- Choisissez ce que le client peut choisir : Sur place et/ou À emporter (à emporter utilise le prix à emporter et le taux de TVA à emporter, s'ils sont définis).
- Texte d'accueil, après combien de secondes sans contact la borne revient au début (le panier est alors vidé), et quels groupes de produits sont sur la borne (rien de coché = tous).
- Autre chose ? : cochez des groupes de produits (p. ex. boissons, desserts) ; au panier, la borne propose alors quelques produits de ces groupes.
- Paiement, par borne (voir Ajouter et associer une borne) :
- À la caisse (par défaut, comme l'ancienne borne) : le client commande, reçoit un numéro de retrait et paie à la caisse. Aucun terminal de paiement n'est nécessaire à la borne.
- Par carte sur la borne : le client paie sur le terminal de paiement de la borne.
- Le client choisit : à la caisse ou par carte. Si la borne n'a pas de terminal de paiement, ce sera à la caisse.
- En cuisine (paiement à la caisse) : tout de suite après la commande sur la borne (par défaut), ou seulement une fois payé à la caisse.
- Ticket : sur l'imprimante de la borne (par défaut), sur l'imprimante de tickets de la caisse, ou pas de ticket (seulement le numéro à l'écran). En cas de paiement à la caisse, la borne imprime un ticket avec le numéro et pas encore payé ; le ticket de caisse vient à l'encaissement.
- Suivi de commande sur le téléphone (optionnel, désactivé par défaut) : un QR code figure sur le ticket de la borne et sur l'écran final. Le client le scanne, voit son numéro et l'état (commandée, en préparation, prête) et reçoit une notification quand la commande est prête. Cela passe par le portail de gestion : la caisse doit y être connectée.
- L'alcool et les produits au kilo ne sont jamais sur la borne : sans personnel, l'âge ne peut pas être vérifié et il n'y a pas de balance.
- Lecteur de codes-barres (facultatif, tout désactivé par défaut) : cochez ce qu'un scan peut faire sur la borne :
- un produit dans le panier (le code du produit) ;
- un code promo ;
- une carte de fidélité (le client cumule des points) ;
- un bon cadeau ou une carte prépayée comme paiement. Si le solde suffit, la commande est payée immédiatement. Sinon, le bon paie une partie et le client paie le reste par carte bancaire ou à la caisse (c'est alors permis aussi sur une borne avec paiement par carte uniquement). Après un tel paiement partiel, le client ne peut plus annuler ; la commande apparaît dans la caisse comme Borne … · numéro.
Le scanner lui-même se règle sur la borne : dans l'application PinPortal Kiosk 2, sous gestion → Lecteur de codes-barres (comme clavier, le scanner intégré ou un port COM), avec un test du scanner. Un scanner qui fonctionne comme un clavier marche aussi sans l'application.
- Recharger le solde (optionnel, désactivé par défaut ; ne fonctionne que si le solde rechargeable est activé) : l'écran d'accueil de la borne affiche alors Recharger le solde. Le client scanne sa carte ou son bon (ou saisit le code), voit le solde et choisit un montant. Vous définissez vous-même les montants (de 1 à 6, par défaut € 10, € 20 et € 50). Le paiement se fait comme réglé pour la borne : par carte, ou à la caisse avec le numéro de retrait. Après l'encaissement, le montant est crédité sur le solde. Une telle recharge ne va pas en cuisine, n'apparaît pas sur l'écran d'appel et ne reçoit pas de code QR. Le solde maximal du solde rechargeable s'applique aussi ici.
- Sur ma chambre (liaison hôtel, désactivé par défaut ; Paramètres → Hôtel → Libre-service) : le panier affiche alors Mettre sur ma chambre. Le client de l'hôtel saisit son numéro de chambre et son nom de famille ; si cela correspond à un client qui séjourne actuellement dans cette chambre, la commande part en cuisine et est imputée, payée, sur la chambre (voir Logiciel hôtelier : mettre sur la chambre).
- Belgique (boîte noire) : ce qui n'a pas encore été testé avec la boîte noire est désactivé automatiquement sur la borne (carte cadeau ou avoir comme paiement, recharge, code de réduction, menus, options avec supplément, happy hour), comme à la caisse.
Ajouter et associer une borne
- Sous Bornes, saisissez un nom (p. ex. Borne entrée) et choisissez Ajouter une borne. Vous obtenez un code d'association de 6 chiffres (valable 30 minutes).
- Choisissez pour la borne comment le client paie : à la caisse par défaut. S'il s'agit d'une borne avec terminal de paiement, choisissez par carte ou le client choisit, et choisissez le terminal de paiement de cette borne (dans Paramètres → Paiement).
- Ouvrez la page de la borne sur la borne :
- dans l'établissement : dans l'application, sous gestion → Vast adres, l'adresse indiquée avec le paramètre, p. ex.
http://192.168.1.20:3000/kiosk; - ou via le portail de gestion (https, aussi si la borne n'est pas sur le même réseau) : associez l'adresse de la borne indiquée avec le paramètre au code de borne de l'application, comme avec l'ancienne borne.
- dans l'établissement : dans l'application, sous gestion → Vast adres, l'adresse indiquée avec le paramètre, p. ex.
- Saisissez le code d'association sur la borne. C'est fait : la borne retient sa propre clé. Associer à nouveau donne un nouveau code ; Supprimer la dissocie.
Chaque borne indique si elle est en ligne.
Comment le client commande
- Écran d'accueil avec le texte d'accueil ; le client choisit sa langue (toutes les langues de la caisse) et touche l'écran pour commander.
- Sur place ou à emporter.
- La carte par groupe de produits, avec photos, le prix (avec happy hour), les allergènes et ce qui est épuisé. Les produits avec choix ou un menu ouvrent la fenêtre de choix.
- Le panier : modifier les quantités et éventuellement Autre chose ?.
- Commander (paiement à la caisse) : le client voit son numéro de retrait en grand à l'écran avec le montant, reçoit le ticket et paie à la caisse. Dans la caisse, la commande est ouverte sous Borne Entrée · 42 (le numéro donné par le client) ; encaissez comme d'habitude. Elle apparaît ensuite comme payée sur l'écran d'appel et part en cuisine si cela devait attendre le paiement.
- Payer par carte : la caisse envoie le montant au terminal de paiement de cette borne (la même liaison de paiement qu'à la caisse). En cas d'échec, le client peut réessayer ou annuler (ou, s'il peut choisir, payer finalement à la caisse). Ce n'est qu'une fois le paiement réussi que la commande part en cuisine et est encaissée. Le client voit son numéro de retrait en grand à l'écran et reçoit le ticket.
- Après quelques secondes, la borne revient au début.
En cas de panne : notification et mode secours (dans l'appli de la borne, gestion → Bij storing ; désactivé par défaut). Si la borne ne joint pas la caisse, elle affiche Even gesloten. Deux extras :
- Teams, Slack, Discord, ntfy, Home Assistant, Make ou Zapier), et un message hersteld quand tout refonctionne. Avec Testmelding sturen, vous vérifiez l'adresse.
- Mode secours : la borne enregistre une carte simple, transmise par la page de la borne : produits sans choix ni menus, au prix sur place (ou à emporter si c'est le seul choix).
- Si la caisse est absente un certain temps (par défaut 60 secondes), le client commande à partir de cette carte.
- Le client paie par carte ou au comptoir. Le paiement par carte n'est possible que si Pinbetaling est activé dans l'appli.
- Deux tickets de secours sont imprimés : un pour le client (N1, N2 …) et un pour le comptoir/la cuisine. Il y est indiqué que ce n'est pas un ticket de caisse.
- Quand la caisse revient, la page de la borne place les commandes de secours dans la caisse sous le nom Nood N… <borne>. Elles ne partent pas en cuisine (qui avait déjà le ticket de secours) et n'apparaissent pas sur l'écran d'appel.
- Payée par carte et même montant que dans la caisse : réglée comme Carte bancaire manuelle. Sinon (paiement au comptoir, ou montant différent), la commande reste ouverte pour le personnel de salle.
- Tout est consigné dans le journal.
- Belgique : avec le système de caisse enregistreuse (GKS, boîte noire), chaque vente doit passer immédiatement par la caisse et le FDM. Le mode secours n'est alors probablement pas autorisé ; renseignez-vous d'abord. En Belgique, l'appli de la borne ne l'active qu'après une confirmation supplémentaire, et la caisse affiche un avertissement pour la borne.
Dans la caisse, une commande de la borne est une commande ordinaire (à emporter ou sur place, nommée Borne Entrée) au nom de l'employé Kiosk. La caisse le crée elle-même ; personne ne peut se connecter avec. Ne le désactivez pas, sinon la borne ne peut pas commander. Les commandes de la borne figurent dans les rapports, dans Tickets et sur l'écran d'appel. Une commande non finalisée sur la borne (non commandée ou non payée par carte) expire d'elle-même après 30 minutes.
Paiement par carte en mode test (Paramètres → Paiement) ? La borne n'encaisse alors pas réellement ; pratique pour essayer. Sans internet, le paiement par carte est impossible ; la borne indique alors qu'on peut commander au comptoir.
Panne : si la caisse est injoignable, l'appli de la borne affiche "Momentanément fermé" et reprend d'elle-même. Si la borne passe par le portail de gestion et qu'internet tombe, l'appli peut se replier sur la caisse du réseau local (dans l'appli : gestion → Extensions → En cas de panne, utiliser le réseau local) ; la borne transmet elle-même cette adresse.
Désactiver : la borne indique qu'elle est momentanément fermée. Les bornes et les paramètres sont conservés. Le journal enregistre activation/désactivation, les paramètres, les bornes ajoutées et supprimées, les associations et les commandes annulées.
Écran menu numérique
La carte avec les prix sur une TV (ou un autre moniteur avec un navigateur), directement depuis la caisse. Par défaut désactivé ; à activer via Paramètres → Établissement → Écrans et utilisation → Écran menu numérique. Ouvrez ensuite sur la TV http://<kassaserver>:3000/menubord (ou le bouton Sur un écran séparé / Sur une tablette ou un téléphone avec le QR code). Pas de connexion ni d'appairage.
- Par catégorie de produits, les produits avec leur prix, dans l'ordre de la caisse. Choisissez vous-même quelles catégories (et dans quel ordre), 1 à 4 colonnes, sombre ou clair, un titre personnalisé (vide = le nom de l'établissement), les photos des produits et les allergènes.
- Toujours à jour : l'écran récupère la carte toutes les 10 secondes (et immédiatement en cas de modification) ; ainsi un produit épuisé (barré avec Épuisé, ou retiré de l'écran), un stock vide, une happy hour (prix promo avec le prix normal barré, et le nom et l'heure de fin en haut) et les tranches horaires (uniquement ce qui est en vente maintenant) s'affichent automatiquement correctement.
- Si tout ne tient pas à l'écran, les pages défilent (par défaut toutes les 12 secondes, réglable de 5 à 120).
Personnel et codes PIN
Paramètres → Personnel (administrateur uniquement) : ajouter des employés, modifier le nom, le rôle et le code PIN, et désactiver.
- Rôles : service (commander, encaisser, rapport X), manager (en plus remise, retour, clôture de la journée, tiroir-caisse et journal) et administrateur (tout, y compris tous les Paramètres). C'est la configuration par défaut ; ce que le service et le manager peuvent faire est modifiable (voir Droits par rôle).
- Code PIN de 4 à 8 chiffres, unique parmi les employés actifs. Les codes PIN sont uniquement stockés chiffrés (hash) dans la base de données et ne peuvent pas être relus.
- Une vraie suppression est impossible (les tickets et le journal font référence à l'employé) ; inactif = ne peut plus se connecter.
- Il reste toujours au moins un administrateur actif.
- Autre rôle, nouveau code PIN ou désactivation : les sessions en cours de cet employé sont immédiatement fermées.
- Belgique : numéro de registre national facultatif pour l'enregistrement des présences.
- Langue : la langue des écrans pour ce membre du personnel (ou "Langue de l'appareil"). Après connexion, la caisse s'affiche directement dans cette langue ; le membre du personnel peut aussi la changer lui-même avec le petit drapeau en bas à droite (voir Langues).
- Astuce : remplacez les codes PIN de démonstration 1111 et 2222 avant la mise en service de la caisse.
Connexion par badge (facultatif)
Désactivé par défaut. Pour l'activer : Paramètres → Personnel, case Connexion par badge (NFC, RFID ou iButton). Requis : un lecteur de badge USB qui fonctionne comme un clavier (pour badges NFC ou RFID, porte-clés, bracelets ou clés iButton). Un tel lecteur "tape" le numéro du badge et appuie sur Entrée ; aucun pilote ni aucune liaison n'est nécessaire.
- Associer : touchez l'employé, puis Associer un badge, et présentez le badge au lecteur. Un badge appartient à un seul employé. Retirer le badge en cas de perte.
- Connexion : sur l'écran de connexion, présentez le badge au lecteur. Le code PIN fonctionne toujours normalement.
- Pointer l'arrivée et le départ (si activé) : sur l'écran de connexion, Pointer l'arrivée / le départ, puis présentez le badge au lecteur.
- Le numéro du badge est stocké uniquement sous forme chiffrée (hash) dans la base de données, comme le code PIN. Les employés inactifs ne peuvent pas non plus se connecter avec leur badge.
- Désactivé : connexion uniquement avec le code PIN, comme toujours. Les badges associés sont conservés.
Droits par rôle
Paramètres → Droits (administrateur uniquement) : cochez par rôle ce que le service et le manager peuvent faire. Par défaut, tout est exactement comme ci-dessus (comme la caisse l'a toujours fait) ; une case qui s'en écarte est colorée.
| Droit | Service | Manager |
|---|---|---|
| Supprimer des lignes après commande (annulation) | oui | oui |
| Accorder une remise / retirer une remise | non | oui |
| Marquer un produit comme « épuisé » | oui | oui |
| Imprimer une copie d'un ticket | oui | oui |
| Retour (avoir) | non | oui |
| Encaisser en compte et recevoir des paiements en compte (uniquement avec le paiement en compte activé) | non | oui |
| Situation intermédiaire (rapport X) | oui | oui |
| Clôturer la journée (rapport Z) | non | oui |
| Chiffre d'affaires par période | non | oui |
| Gérer le tiroir-caisse | non | oui |
| Gérer les bons cadeaux (uniquement avec les bons cadeaux avec solde) | non | oui |
| Lire les avis et y répondre (uniquement avec la gestion des avis activée) | non | oui |
| Gérer la carte de fidélité (uniquement avec la carte de fidélité activée) | non | oui |
| Consulter le journal | non | oui |
| Voir les images des caméras (uniquement si les images des caméras sont activées) | non | oui |
| Gérer le stock (uniquement si le stock est activé) | non | oui |
| Gérer les produits | non | non |
| Gérer les plans de salle | non | non |
| Configurer l'établissement, le paiement et les imprimantes | non | non |
| Consulter et modifier les horaires de travail | non | non |
- L'administrateur peut toujours tout faire. La modification du personnel et des droits reste toujours réservée à l'administrateur (sinon quelqu'un pourrait s'attribuer plus de droits).
- Les boutons et onglets qu'un rôle n'est pas autorisé à utiliser sont masqués pour ce rôle ; le serveur de caisse le vérifie aussi. Si un manager reçoit p. ex. Gérer les produits, il voit le bouton Paramètres avec uniquement l'onglet Produits.
- Les modifications s'appliquent immédiatement sur toutes les caisses et sont notées dans le journal. Rétablir la valeur par défaut remet tout comme avant.
Informations de l'établissement
Paramètres → Établissement (administrateur uniquement) : nom, adresse, code postal, ville, téléphone et numéro de TVA de l'établissement. Ils figurent en haut de chaque ticket de caisse et pro forma. Le texte en bas du ticket se règle aussi ici (plusieurs lignes possibles ; vide = pas de texte ; par défaut « Bedankt en tot ziens! »), et en dessous la langue du ticket de caisse (néerlandais par défaut ; voir Langues). Un aperçu du ticket se met à jour en direct. Après l'enregistrement, le ticket suivant utilise immédiatement les nouvelles données. Le pays et les données fiscales (GKS) ne sont volontairement pas modifiables ici. En Belgique, le numéro de TVA est obligatoire. Avec la case Arrondir les paiements en espèces à 5 centimes (désactivé par défaut), le total est arrondi en espèces (€ 6,62 → € 6,60, € 6,63 → € 6,65) ; la différence figure sur le ticket comme « Afronding ». La carte bancaire reste toujours au centime près.
Gérer les produits
Connectez-vous en tant qu'administrateur et choisissez Paramètres → Produits.
- Ajouter, modifier (nom, prix, catégorie, taux de TVA sur place et à emporter, nom sur le ticket, code, épuisé) et supprimer des catégories de produits et des produits. Les catégories comme les produits peuvent avoir leur propre couleur ; un produit avec une couleur reçoit un bouton coloré sur l'écran de commande (texte automatiquement blanc ou foncé pour la lisibilité).
- Changez l'ordre en faisant glisser une catégorie ou un produit par ≡. Cela fonctionne à la souris et au doigt sur une tablette. C'est exactement cet ordre qui s'affiche ensuite sur l'écran de commande ; les écrans de caisse ouverts se mettent à jour immédiatement.
- Supprimer retire un produit de la caisse, mais les anciennes commandes et le journal fiscal continuent de connaître le produit. Une catégorie ne peut être supprimée que lorsqu'elle est vide.
- Options : ouvrez un produit ou une catégorie de produits et ajoutez sous « Options » des groupes d'options, comme « Cuisson » (exactement une, obligatoire), « Sauce » (une au maximum) ou « Supplément » (plusieurs, avec minimum et maximum ; maximum vide = illimité). Chaque option a un nom et un supplément de prix (peut être négatif, p. ex. -0,50). Les groupes d'options d'une catégorie s'appliquent à tous les produits de cette catégorie, en plus des options propres au produit. Ordre avec ▲▼. La suppression est toujours possible : les commandes et tickets existants conservent eux-mêmes les options choisies. Le serveur vérifie aussi les choix obligatoires et le maximum.
- Photo par produit : voir Photos des produits.
- Prix au kilo, numéro PLU et tare (uniquement si la balance est activée) : voir Configurer la balance. Sans la case cochée, un produit reste simplement à l'unité.
Photos de produits
Chaque produit peut avoir une photo.
- Ajouter une photo : Paramètres → Produits → choisissez le produit → Choisir une photo (sur une tablette ou un téléphone, c'est aussi possible directement avec l'appareil photo). La photo est réduite dans le navigateur à 512 × 512 pixels maximum (JPEG, généralement 20–80 Ko) et enregistrée immédiatement ; Autre photo la remplace, Supprimer la photo la retire. Dans la liste des produits, une petite photo s'affiche devant le nom. Uniquement avec le droit Gérer les produits ; jpg, png et webp, 512 Ko maximum.
- L'affichage est choisi par l'administrateur dans Paramètres → Établissement → Photos des produits, séparément et désactivé par défaut :
- Photo des produits sur les boutons de l'écran de commande : la photo en haut du bouton du produit, avec le nom et le prix en dessous.
- Photo des produits sur l'écran client : une petite photo devant chaque ligne de l'écran client (l'écran client lui-même doit aussi être activé). Les produits sans photo restent tels quels ; si c'est désactivé, tout fonctionne exactement comme avant.
Lecteur de codes-barres
Avec un lecteur de codes-barres à la caisse, vous scannez des produits, des codes promo, des cartes de fidélité et des bons cadeaux. Activation dans Paramètres → Scanner (onglet à côté des imprimantes et de la balance ; désactivé par défaut). Cochez ce que fait un scan sur l'écran de commande :
- Produit sur le ticket : le produit portant ce code (Paramètres → Produits, champ Code ; p. ex. le code-barres EAN de l'emballage). Avec des choix, un menu ou un prix au kilo, la fenêtre de choix ou la balance s'ouvre d'abord, comme lorsqu'on touche le produit. Scanner sur l'écran de commande dans Imprimer des étiquettes fait la même chose ; cela continue de fonctionner normalement.
- Code promo sur le ticket (si les codes promo sont activés).
- Carte de fidélité : le client ayant ce numéro de carte est ajouté au ticket (si la carte de fidélité est activée). Si vous scannez un code inconnu sur un ticket avec un client, la caisse demande s'il s'agit de sa nouvelle carte.
- Bon cadeau ou carte prépayée : la caisse affiche le solde (si les bons cadeaux avec solde sont activés). Le paiement se fait via Encaisser → Bon cadeau ; vous pouvez aussi y scanner le bon.
La caisse cherche d'abord dans les produits, puis dans les cartes de fidélité, les bons cadeaux et les codes promo. Le scan fonctionne sur l'écran de commande, quand vous n'êtes pas dans un champ de saisie. Dans un champ de saisie, le code s'inscrit simplement dans ce champ.
Test du scanner : dans Paramètres → Scanner, vous voyez à chaque scan le code et ce que la caisse en fait, même si le scanner est encore désactivé. Si cela ne marche pas :
- Réglez le scanner sur clavier (USB-HID), avec un Enter après le code. C'est déjà le cas sur la plupart des scanners.
- Un scanner intégré (p. ex. d'une caisse Sunmi) se règle sur saisie clavier dans les paramètres du scanner de l'appareil.
- Les étiquettes de la balance TS6X (poids et prix) sont gérées par la balance elle-même, même avec le scanner activé.
Sur la borne, le scanner se règle séparément (Paramètres → Établissement → Borne) ; voir Borne de commande en libre-service.
Imprimer des étiquettes
Des étiquettes produit avec le nom, le prix et un code-barres, sur une imprimante d'étiquettes (Brother, Dymo, Zebra ...) installée sur l'ordinateur ou la tablette. À activer dans Paramètres → Établissement → Imprimer des étiquettes (désactivé par défaut). Vous y choisissez aussi le format de l'étiquette (38 × 25, 57 × 32, 62 × 29 ou 100 × 50 mm) et si le prix et le code-barres y figurent. Imprimer un test imprime une étiquette d'essai.
- Paramètres → Produits → (produit) → Étiquettes : choisissez le nombre puis Imprimer.
- Achats → (commande reçue) → Imprimer des étiquettes : pour chaque produit, autant d'étiquettes que de pièces reçues (unités de commande reçues × quantité par unité de commande ; pas les ingrédients). Au maximum 500 étiquettes à la fois.
- La caisse ouvre la boîte de dialogue d'impression : choisissez-y l'imprimante d'étiquettes et le format de papier du rouleau. Chaque étiquette correspond à une page.
- Le code-barres est le code du produit (Paramètres → Produits) : 8 ou 13 chiffres avec un chiffre de contrôle correct = EAN (12 chiffres : le chiffre de contrôle est ajouté), sinon Code 128 (lettres, chiffres et signes de ponctuation, jusqu'à 30 caractères). Sans code, pas de code-barres.
- Scanner sur l'écran de commande (case à cocher, désactivée par défaut) : un lecteur de codes-barres qui agit comme un clavier ajoute le produit portant ce code, avec les choix habituels (options, balance, allergie). Pas en même temps que la balance TS6X, qui a ses propres étiquettes avec poids et prix.
- Droit : Gérer les produits ou Gérer le stock.
Configurer la balance (A&D, Aclas, Adam Equipment, Avery Berkel, Avery Weigh-Tronix, Balanzas Marques, Baxtran, Bizerba, Brecknell, CAS, Datalogic, Dibal, DIGI, Dini Argeo, Excell Precision, Gram, Ishida, Kern & Sohn, Mettler Toledo, Minebea Intec, Ohaus, Precia Molen, Precisa, Rice Lake, Rongta, Sartorius, Star Micronics, T-Scale, UWE, Wedderburn, Wintec, Zebra)
Onglet dédié Paramètres → Balance (droit Configurer l'établissement, le paiement et les imprimantes, par défaut l'administrateur seulement ; l'onglet est toujours présent, même si la balance est encore désactivée). Désactivé par défaut : la caisse fonctionne alors exactement comme avant. Vous ne voyez pas l'onglet ?
Recherche automatique. Si rien n'est encore configuré, la caisse lance automatiquement une recherche à l'ouverture de cette section (le bouton Rechercher la relance) :
- la caisse (le serveur) tourne-t-elle elle-même sur une balance PC ou IA Aclas (TS6X, TS3X, TS5EX/NX/GX, iS6X, iS2X, iR6X, Ti6X, iL8X ; marque/modèle de l'appareil : Windows via WMI, Android via
getprop, Linux via DMI) et l'Aclas Scale Module répond-il ? Alors cette balance est configurée comme Sur cet appareil, ainsi que la balance étiqueteuse ; sous Linux (pas de Scale Module), la balance intégrée sur le port interne trouvé (/dev/ttyS...) comme "TS6X (ingebouwd)", avec le modèle ; - une OS6X est-elle branchée sur un port COM/USB ? Chaque port est essayé à 9600, 4800, 2400 et 19200 bauds : d'abord une courte écoute (continu), puis envoi de
W(Toledo), et sinon Dialog 06 (9600, 7 bits de données, parité impaire : demande d'état).
Trouvée = placée dans le formulaire avec le bouton Activer et utiliser : un toucher et ça fonctionne. (La recherche envoie un W à chaque port COM libre ; un port occupé, p. ex. par le terminal de paiement, est ignoré.)
Toutes les balances Aclas. Pour chaque balance, vous choisissez le modèle ; la caisse sait alors comment la connecter. Il en existe deux sortes :
- Sur cet appareil (à configurer une fois) : la caisse tourne sur la balance (balance PC ou IA). Sous Windows ou Android, elle pèse via l'Aclas Scale Module, sans port, vitesse ni protocole ; sous Linux (pas de Scale Module), via le port interne de la balance (généralement
/dev/ttyS0ou/dev/ttyS1), avec port, vitesse et protocole. Il n'y en a qu'une par caisse ; la recherche la trouve automatiquement. Une balance PC ou IA (TS6X, iS6X ...) est toujours Sur cet appareil : elle ne peut figurer qu'une fois dans la liste, et les autres modèles PC/IA ne sont alors plus sélectionnables. Une TS6X ailleurs dans l'établissement peut toujours imprimer des étiquettes (activez alors seulement Scanner les étiquettes). - Connectées (plusieurs à la fois) : la balance est reliée au serveur de caisse par câble (RS232/USB), Bluetooth ou le réseau. Autant que nécessaire (au maximum 8), chacune avec son propre nom.
Une liste, deux cases. Toutes les balances sont dans une seule liste. Pour chaque balance, cochez ce qu'elle fait : Peser à la caisse (la caisse demande le poids à la commande) et/ou Scanner les étiquettes (la balance imprime une étiquette à code-barres que la caisse scanne, et reçoit les PLU de la caisse). Une balance PC ou IA comme la TS6X fait les deux ; une étiqueteuse LS seulement les étiquettes. Les étiquettes peuvent venir d'une seule balance par établissement.
| Modèle | Type | Connexions | Dans la caisse |
|---|---|---|---|
| OS6X | Balance POS | RS232, USB, Bluetooth | connectée, plusieurs à la fois |
| OS2X | Balance POS | RS232, USB | connectée, plusieurs à la fois |
| CS6X, CS3X | Balance caisse | RS232, USB, Ethernet, wifi | connectée, plusieurs à la fois |
| TS6X, TS3X, TS5EX, TS5NX, TS5GX | Balance PC (Windows, Android, Linux) | RS232, USB, Ethernet, wifi | sur cet appareil (1x), aussi comme balance étiqueteuse |
| iS6X, iS2X, iR6X, Ti6X, iL8X | Balance IA avec reconnaissance de produits (Windows, Android, Linux) | RS232, USB, Ethernet, wifi | sur cet appareil (1x), aussi comme balance étiqueteuse |
| iS5X, OiT2X | Balance IA (Linux uniquement) | RS232, USB, Ethernet | connectée ou comme étiqueteuse |
| LS2S, LS2RX, LS2CX, LS2NX, LS5SX, LS5RX, LS5CX, LS5NX, LS6CX, LS6RX, LS6NX | Balance étiqueteuse | RS232, Ethernet, wifi | scanner étiquettes et PLU |
| PS1CX, PS1DX, PS6CX, PS6DX | Balance poids-prix | RS232 | connectée, plusieurs à la fois |
| PS1BX | Balance poids-prix sans connexion | aucune | poids à la main |
| LH15X | Balance suspendue avec imprimante d'étiquettes | RS232, Ethernet, wifi | connectée ou comme étiqueteuse |
A&D, Adam Equipment, Avery Berkel, Avery Weigh-Tronix, Balanzas Marques, Baxtran, Bizerba, Brecknell, CAS, Datalogic, Dibal, DIGI, Dini Argeo, Excell Precision, Gram, Ishida, Kern & Sohn, Mettler Toledo, Minebea Intec, Ohaus, Precia Molen, Precisa, Rice Lake, Rongta, Sartorius, Star Micronics, T-Scale, UWE, Wedderburn, Wintec et Zebra. Les modèles courants de ces marques sont inclus lorsqu'on sait comment la caisse communique avec eux (à tester = le protocole ne figure pas littéralement dans une source ; la caisse choisit le plus évident). Tous connectés (plusieurs à la fois), ou comme balance étiqueteuse dont la caisse scanne l'étiquette :
| Marque | Modèle | Type | Connexion | Protocole (usine) | Dans la caisse |
|---|---|---|---|---|---|
| A&D | EK-i (notamment EK-610i), HV-WP | Balance caisse (poids uniquement) | RS232, EK-i aussi USB | Continu (mode stream), 2400 bauds, 7E1 | connectée, plusieurs à la fois |
| Adam Equipment | Swift | Balance poids-prix | RS232, USB (option) | Continu (continu vers PC), 9600 8N1 (à tester) | connectée, plusieurs à la fois |
| Avery Berkel | FX110, FX120, FX131 (encastrée avec scanner) | Balance caisse | RS232, FX131 aussi USB | Mettler Toledo 82/7 = Toledo 8217 (la caisse envoie W), 9600 bauds, 7E1 | connectée, plusieurs à la fois |
| Avery Berkel | FX125 | Balance poids-prix | RS232 | Checkout-Dialog 06 (9600, 7O1) | connectée, plusieurs à la fois |
| Avery Berkel | Xs, XTs, XTi | Balance étiqueteuse | Ethernet, Wi-Fi, USB | PLU propres sur la balance | scanner les étiquettes |
| Avery Weigh-Tronix | 7820, 7829, ZP900 | Balance caisse | RS232, 7820 aussi USB, ZP900 aussi USB et Ethernet | NCI (la caisse envoie W), 9600 bauds, 7E1 | connectée, plusieurs à la fois |
| Balanzas Marques | BM1000P TOP | Balance caisse (poids uniquement) | RS232 | METTLER (la caisse envoie W, Toledo), 9600 bauds, 7E1 | connectée, plusieurs à la fois |
| Balanzas Marques | BM5 Junior Tower Label, BM500 ETQ | Balance étiqueteuse | Ethernet, USB, RS232, BM500 ETQ aussi wifi | PLU propres sur la balance | scanner les étiquettes |
| Baxtran | TW, VW, XTA, XTA-P | Balance poids-prix | RS232 | Toledo (la caisse envoie W), 9600 bauds, 7E1 | connectée, plusieurs à la fois |
| Bizerba | CS 300 (aussi encastrée) | Balance caisse | RS232 | Checkout-Dialog 06 (9600, 7O1) | connectée, plusieurs à la fois |
| Bizerba | K-Class Flex, KH II | Balance étiqueteuse | Ethernet | PLU propres sur la balance | scanner les étiquettes |
| Brecknell | 6702U, 6710U, 6720U | Balance caisse | RS232, USB (port COM virtuel) | NCI (la caisse envoie W), 9600 bauds, 7E1 | connectée, plusieurs à la fois |
| CAS | PD-II, PDN, PDI, PDS-B | Balance caisse | RS232, PDN aussi USB et Bluetooth, PDI aussi USB | ECR type 2 = Toledo (la caisse envoie W), 9600 bauds, 7E1 | connectée, plusieurs à la fois |
| CAS | CL3000, CL5500, CL7200 | Balance étiqueteuse | Ethernet, USB, RS232, CL5500 et CL7200 aussi wifi | PLU propres sur la balance | scanner les étiquettes |
| Datalogic | Magellan 9300i, 9400i, 9800i (scanner avec balance) | Balance caisse | RS232 (port de pesée séparé), USB | Mettler Toledo 8217 (la caisse envoie W), 9600 bauds, 7E1 | connectée, plusieurs à la fois |
| Dibal | KS-400, D-POS 400 | Balance caisse | RS232, D-POS 400 aussi USB | Checkout-Dialog 06 (9600, 7O1) | connectée, plusieurs à la fois |
| Dibal | G-325, PI-100 | Balance poids-prix | RS232 | Checkout-Dialog 06 (9600, 7O1) | connectée, plusieurs à la fois |
| Dibal | M-500 (Mistral), D-900, CS-2200 | Balance étiqueteuse | Ethernet, Wi-Fi, USB | PLU propres sur la balance | scanner les étiquettes |
| DIGI | DS-781 | Balance poids-prix | RS232 | DIGI Type B (la caisse envoie ENQ), 9600 8N1 | connectée, plusieurs à la fois |
| DIGI | SM-120, SM-6000 | Balance étiqueteuse | Ethernet, Wi-Fi | PLU propres sur la balance | scanner les étiquettes |
| Dini Argeo | DFW, DGT, 3590E | Balance caisse (poids uniquement) | RS232, USB, Ethernet, DFW et 3590E aussi wifi | Continu (ST,GS, 0.512,kg), 9600 8N1 | connectée, plusieurs à la fois |
| Excell Precision | TPE, AM4, FD4-P, FDP4-P, GE4, GEP4 | Balance poids-prix | RS232 | Continu (ST,GS,+0.876kg), 9600 8N1 (sauf TPE, à tester) | connectée, plusieurs à la fois |
| Gram | XFOC RS, XFOC+ RS, ZFOC RS | Balance poids-prix | RS232, USB (câble de Gram) | Gram (la caisse envoie ENQ, puis DC1), 9600 8N1 (XFOC à tester) | connectée, plusieurs à la fois |
| Ishida | Uni-3, Uni-5, Uni-7, Uni-9 | Balance étiqueteuse | Ethernet, Wi-Fi, USB | PLU propres sur la balance | scanner les étiquettes |
| Kern & Sohn | RPB, RFC | Balance poids-prix | RS232, USB | Checkout-Dialog 06 (Prot = DLG-06, 9600, 7O1) | connectée, plusieurs à la fois |
| Kern & Sohn | RFE (prix), IFB, EOC | Balance poids-prix / balance caisse | RS232 | Continu, 9600 8N1 | connectée, plusieurs à la fois |
| Mettler Toledo | Ariva-S | Balance caisse | RS232, USB (port COM virtuel) | Toledo 8217 (la caisse envoie W), 9600 bauds, 7E1 | connectée, plusieurs à la fois |
| Mettler Toledo | Viva | Balance caisse | RS232 | Toledo 8217, 9600 bauds, 7E1 | connectée, plusieurs à la fois |
| Mettler Toledo | bPlus, UC Evo | Balance étiqueteuse | Ethernet, Wi-Fi | PLU propres sur la balance | scanner les étiquettes |
| Minebea Intec | Signum, Combics, Midrics, Puro | Balance caisse (poids uniquement) | RS232, USB, Signum et Combics aussi Ethernet | Continu (SBI, impression automatique), 9600 8N1 | connectée, plusieurs à la fois |
| Ohaus | Aviator 7000 | Balance poids-prix | RS232 ou USB | Checkout-Dialog 06 (9600, 7O1) | connectée, plusieurs à la fois |
| Ohaus | Valor 7000, Ranger 3000, Ranger 4000, Ranger 7000, Defender 3000 | Balance caisse (poids uniquement) | RS232, USB, Ethernet | Continu (Auto Print Continuous), 9600 8N1 | connectée, plusieurs à la fois |
| Precia Molen | DP400 | Balance caisse | RS232, USB | Checkout-Dialog 06 (9600, 7O1) | connectée, plusieurs à la fois |
| Precia Molen | DPOS CR, C 210 B, C 210 C | Balance poids-prix | RS232 | Checkout-Dialog 06 (9600, 7O1 ; C 210 à tester) | connectée, plusieurs à la fois |
| Precia Molen | Corail 500 | Balance étiqueteuse | Ethernet, Wi-Fi | PLU propres sur la balance | scanner les étiquettes |
| Precisa | XB, XT, LS, LX (balances de précision) | Balance caisse (poids uniquement) | RS232, LS et LX aussi USB | Continu (mode d'impression CONTINUOUS), 9600 8N1 | connectée, plusieurs à la fois |
| Rice Lake | BenchPro BP-S, BenchPro BP-R | Balance caisse | RS232 | BP-S Toledo 8213, BP-R NCI (les deux : la caisse envoie W), 9600 bauds, 7E1 (à tester) | connectée, plusieurs à la fois |
| Rongta | RLS1000, RLS1100 | Balance étiqueteuse | Ethernet, RS232, wifi | PLU propres sur la balance | scanner les étiquettes |
| Sartorius | Entris, Quintix | Balance caisse (poids uniquement) | RS232, USB | Continu (SBI, impression automatique), 9600 8N1 | connectée, plusieurs à la fois |
| Star Micronics | mG-T12, mG-T30, mG-T60, mG-S8200 | Balance caisse (poids uniquement) | RS232, USB (port COM virtuel) | Continu, 9600 8N1 (à tester) | connectée, plusieurs à la fois |
| T-Scale | PA10, PA15, PEA10 | Balance étiqueteuse | Ethernet | PLU propres sur la balance | scanner les étiquettes |
| UWE | ASEP | Balance poids-prix | RS232 | Continu, 9600 8N1 (à tester) | connectée, plusieurs à la fois |
| Wedderburn | TSDS983 | Balance caisse | RS232 | DIGI Type B (la caisse envoie ENQ), 9600 8N1 (à tester) | connectée, plusieurs à la fois |
| Wedderburn | TSDS781T, TSDS782T | Balance poids-prix | RS232 | DIGI Type B, 9600 8N1 (à tester) | connectée, plusieurs à la fois |
| Wedderburn | TSSM120 | Balance étiqueteuse | Ethernet, RS232 | PLU propres sur la balance | scanner les étiquettes |
| Wintec | ScalePOS ACS-S60E (caisse avec balance intégrée) | Balance caisse | COM6 interne (Windows) ou COM4 (Android) | Continu, 9600 8N1 (à tester) | connectée |
| Zebra | MP7000, MP72 (scanner avec balance) | Balance caisse | RS232 (port AUX) | SASI = Toledo (la caisse envoie W), 9600 bauds, 7E1 (à tester) | connectée, plusieurs à la fois |
- A&D EK-i et HV-WP : réglez la balance sur stream (EK-i :
prt 0; en usine, elle est sur la touche PRINT) et la caisse sur Continu avec 2400 bauds et 7E1 (réglage d'usine A&D). Le message estST,+00512.00 g(US= en mouvement,OL= surcharge). - Adam Equipment Swift : réglez la balance sur continu vers PC (8N1) ; la caisse est alors sur Continu.
- Avery Berkel FX110, FX120 et FX131 : sur la balance, choisissez le protocole Mettler Toledo 82/7 et réglez la caisse sur Interrogation (Toledo) en 7E1 (9600 bauds). Dialog 06 fonctionne aussi. La FX125 (avec afficheur de prix) ne connaît pas Toledo : là, Dialog 06. La caisse le règle automatiquement quand vous choisissez le modèle.
- Avery Weigh-Tronix 7820, 7829 et ZP900 et Brecknell 6702U, 6710U et 6720U : NCI, le protocole de Weigh-Tronix. La caisse envoie
W(comme avec Toledo), la balance répond avec le poids (1.234KG) et une ligne d'état, qui indique si elle est en mouvement, en surcharge ou trop légère. La caisse est sur Interrogation (Toledo) en 7E1 (9600 bauds). L'USB fonctionne comme port COM virtuel. Sur la ZP900, branchez la caisse sur le port 2 (NCI). Sur la 67xxU, la balance peut aussi être réglée sur 8213 (SCP03). - Balanzas Marques BM1000P TOP : sur le port COM, choisissez le protocole B (METTLER) et 9600 bauds, 7 bits de données, parité paire ; la caisse est alors sur Interrogation (Toledo) en 7E1.
- Baxtran TW, VW, XTA et XTA-P (balances poids-prix ; VW et XTA-P avec colonne) : dans le menu RS232 de la balance, choisissez le protocole Toledo, 9600 bauds et 7 bits de données avec parité paire (7E1) ; la caisse est alors sur Interrogation (Toledo) en 7E1. La caisse le règle automatiquement quand vous choisissez le modèle. CONT (la balance envoie d'elle-même) fonctionne aussi : réglez alors la caisse sur Continu avec la même vitesse et les mêmes bits de données. Raccordement avec le câble RS232 (9 broches) ou un câble USB vers RS232.
- Bizerba CS 300 : Checkout-Dialog 06 (la spécification Bizerba) : la caisse envoie le prix au kilo, la balance vérifiée calcule le montant. Si la balance demande des codes de contrôle, vous les obtenez auprès de Bizerba ou du fournisseur.
- CAS PD-II, PDN, PDI et PDS-B (la PDS-B notamment chez LRE) : choisissez sur la balance ECR type 2 (Toledo) et réglez la caisse sur Interrogation (Toledo) en 7E1 (9600 bauds).
- Datalogic Magellan 9300i, 9400i et 9800i : réglez le Scale Interface Type du port de pesée séparé sur Mettler Toledo 8217 et la caisse sur Interrogation (Toledo) en 7E1.
- Dibal KS-400, D-POS 400, G-325 et PI-100 : sur la balance, choisissez le protocole Checkout_Dialog06 (protocole 24) et 9600 bauds, 7 bits de données, parité impaire (type de paramètre 5) ; la caisse est alors sur Dialog 06. La D-POS 400 peut aussi se connecter en USB.
- DIGI DS-781 : réglez la balance sur Type B / commande standard (data transmission
00011) ; la caisse envoieENQet reçoit le poids net, la tare, le prix au kilo et le montant. - Dini Argeo DFW, DGT et 3590E : réglez le port série sur l'envoi continu (9600 8N1) ; la caisse est alors sur Continu.
- Excell Precision TPE (et la 4e génération AM4, FD4-P, FDP4-P, GE4, GEP4) : réglez la sortie RS232 sur continu (9600 8N1) ; la caisse est alors sur Continu.
- Gram XFOC RS, XFOC+ RS et ZFOC RS : protocole Gram (9600 8N1). La caisse envoie
ENQ, la balance répondACK, la caisse envoieDC1et la balance envoie le poids :SOH STX S/U/F teken gewicht eenheid BCC ETX EOT(S= stable,U= en mouvement,F= erreur ; BCC = XOR de l'état jusqu'à l'unité incluse). Raccordement en RS232 ou avec le câble USB de Gram. - Kern & Sohn RPB et RFC : réglez sur la balance
Prot = DLG-06(la connexion caisse est l'option 965-419) ; la caisse est alors sur Dialog 06. RFE, IFB et EOC : envoi continu (8N1), la caisse sur Continu. - Mettler Toledo Ariva/Viva : réglez la balance sur le protocole Toledo (8217) et la caisse sur Interrogation (Toledo) avec Bits de données / parité = 7E1 (Mettler : 9600 bauds, 7 bits de données, parité paire ; l'Ariva peut aussi se connecter en USB comme port COM virtuel). La caisse le règle automatiquement quand vous choisissez le modèle.
- Minebea Intec Signum, Combics, Midrics et Puro et Sartorius Entris et Quintix : SBI avec impression automatique (9600 8N1) ; la caisse est alors sur Continu. Le message est
N + 0.512 kg; sans unité, le poids est encore en mouvement. - Ohaus Aviator 7000 : dans les réglages de la balance (étape 20), choisissez le protocole Dialog 06 ; la caisse est alors sur Dialog 06. RS232 ou USB, selon le câble.
- Ohaus Valor 7000, Ranger 3000/4000/7000 et Defender 3000 (pesée sans prix) : réglez la balance sur Auto Print Continuous (9600 bauds, 8N1) et la caisse sur Continu. La balance envoie
0.512 kg G; un?après le poids signifie qu'elle bouge encore. La Ranger 7000 peut aussi se connecter via Ethernet (port TCP 9761). - Precia Molen DP400, DPOS CR et C 210 (les balances de commerce appartiennent à Dibal depuis 2025) : Dialog 06 (9600 7O1), comme Dibal. Si cela ne fonctionne pas avec la C 210, essayez Interrogation (Toledo) en 7E1.
- Precisa XB, XT, LS et LX : réglez le mode d'impression sur CONTINUOUS et 9600 8N1, sans date, heure ni ID sur la ligne ; la caisse est alors sur Continu. Sans unité, le poids est encore en mouvement.
- Rice Lake BenchPro BP-S (Toledo 8213) et BP-R (NCI) : la caisse est sur Interrogation (Toledo) en 7E1.
- Star Micronics mG-T et mG-S8200 : via RS232 ou USB (port COM virtuel, avec le pilote de Star) sur Continu.
- UWE ASEP : RS232 vers PC/caisse, la caisse sur Continu (à tester).
- Wedderburn TSDS983, TSDS781T et TSDS782T sont des balances DIGI sous leur propre référence : DIGI (Type B), comme la DIGI DS-781. Si cela ne fonctionne pas, essayez Interrogation (Toledo) en 7E1.
- Wintec ScalePOS ACS-S60E : la caisse tourne sur le ScalePOS lui-même ; la balance intégrée est sur COM6 (Windows) ou COM4 (Android), 9600 8N1. Choisissez Continu ; si elle n'envoie rien, Rechercher trouve le bon protocole.
- Zebra MP7000 et MP72 : le port AUX RS232 est réglé en usine sur SASI (9600 7E1, la caisse envoie
W) : la caisse sur Interrogation (Toledo) en 7E1. - Les balances étiqueteuses de ces marques (Avery Berkel, Balanzas Marques, Bizerba, CAS, Dibal, DIGI, Ishida, Mettler Toledo, Precia Molen, Rongta, T-Scale, Wedderburn) sont des systèmes autonomes avec leur propre fichier PLU. Activez Scanner les étiquettes pour la balance et réglez le même code-barres que sur la balance (EAN-13, début 20–29, PLU et poids ou prix). Les PLU se règlent sur la balance elle-même ou avec le logiciel de la marque ; Envoyer à la TS6X et Télécharger le fichier PLU n'existent que pour Aclas.
La même liste se trouve dans la caisse sous Paramètres → Balance → Toutes les balances (ACLAS_MODELLEN dans packages/shared/src/weegschaal.ts, avec la marque par modèle).
Remplir le moins possible : quand vous choisissez un modèle, la caisse prépare le reste comme la marque le règle en usine : connexion Port COM / USB sur le premier port libre, 9600 bauds (A&D : 2400) et le protocole de la marque (Toledo : Aclas en 8N1, et en 7E1 Avery Berkel FX, Avery Weigh-Tronix, Balanzas Marques, Baxtran, Brecknell, CAS, Datalogic, Mettler Toledo, Rice Lake et Zebra ; Dialog 06 : Avery Berkel FX125, Bizerba, Dibal, Kern & Sohn RPB/RFC, Ohaus Aviator et Precia Molen ; DIGI Type B : DIGI et Wedderburn ; Gram : Gram ; Continu : A&D, Adam Equipment, Dini Argeo, Excell Precision, les autres Kern & Sohn, Minebea Intec, les autres Ohaus, Precisa, Sartorius, Star Micronics, UWE et Wintec), et un nom (p. ex. OS6X, OS6X 2). Une balance PC ou IA devient Sur cet appareil (p. ex. TS6X (ingebouwd) ; sous Linux sur le port interne /dev/ttyS0). Si quelque chose ne va pas, Rechercher trouve le bon port, la bonne vitesse et le bon protocole.
Sur cet appareil (Aclas Scale Module) : la balance affiche le poids homologué ; la caisse envoie le prix au kilo et la tare (comme pré-tare) et reprend le montant calculé par la balance, comme avec Dialog 06.
- Android : l'app Aclas AclasScaleDriver (
com.aclas.aclasscaledriver) est généralement déjà sur la balance ; sinon, installezaclas-android/AclasScaleDriver.apk. L'app HorecaPOS communique directement avec le service de cette app, aucune bibliothèque supplémentaire n'est donc nécessaire. - Linux : Aclas n'a pas de Scale Module pour Linux. Choisissez simplement le modèle (p. ex. TS6X) : la connexion devient alors Sur cet appareil (port interne) sur
/dev/ttyS0, 9600 bauds, Toledo. La balance intégrée est généralement sur/dev/ttyS0ou/dev/ttyS1; la recherche les essaie et renseigne le bon port, la bonne vitesse et le bon protocole. Ici aussi, une seule fois.
Les logiciels Aclas sont inclus dans la caisse : le Scale Module pour Windows (aclas-module), AclasScaleDriver pour Android (aclas-android) et l'Aclas Sync SDK pour Windows et Linux (aclas-sdk). Aclas nous autorise à les fournir. Les installateurs Windows et Linux les incluent ; rien à télécharger ni à installer séparément.
Bluetooth (p. ex. l'OS6X) : appairez d'abord la balance. Windows en fait un port COM (Paramètres Bluetooth → Plus d'options Bluetooth → Ports COM), Linux /dev/rfcomm0 : saisissez ce port. Dans l'app Android, saisissez l'adresse Bluetooth (00:11:22:AA:BB:CC) ; l'app demande une fois l'autorisation Appareils à proximité et se connecte via Bluetooth SPP.
Balances IA (reconnaissance de produits) : la caméra reconnaît le produit dans le logiciel Aclas sur la balance. La pesée passe par le Scale Module (sur cet appareil) ou le port RS232 ; les étiqueteuses IA impriment après reconnaissance une étiquette à code-barres que la caisse scanne (comme avec la TS6X).
Aclas AI Recognition Plugin (balance IA avec la caisse dessus, p. ex. la iS6X sous Windows) : le plugin d'Aclas reconnaît le produit et tape son code-barres dans la caisse, comme un scanner (suivi d'Enter) ; l'écran de commande ajoute le produit avec son poids à la commande. Voici comment le configurer :
- Pour la balance, activez Scanner les étiquettes avec le même code-barres que dans le plugin. Conseillé : commence par
27, PLU 5 chiffres, poids (type Aclas 17) : la caisse calcule alors elle-même avec le prix au kilo. Avec le prix (type 12, commence par22), cela fonctionne aussi. - Pour cette balance, désactivez Peser à la caisse : le plugin et le Scale Module ne peuvent pas accéder à la balance en même temps. Le poids provient du code-barres. Si le plugin répond lors de Rechercher, la caisse propose cette configuration et ne démarre pas le Scale Module. Sans code d'activation, le plugin pèse et calcule bien le montant, mais ne reconnaît aucun produit.
- Dans le plugin lui-même : le code-barres sous Scale and Barcode Format Settings → Default Barcode Format (type 17), et dans les paramètres de fenêtre le point où le plugin clique et tape le code. Choisissez pour cela un endroit vide de l'écran de commande, pas un bouton. L'établissement apprend lui-même les nouveaux produits au plugin sur la balance (entraînement IA).
- Attribuez un numéro PLU aux produits pesables et envoyez les PLU à la balance (Envoyer à la TS6X ou le fichier PLU) ; le plugin reconnaît par numéro PLU.
- La caisse ne laisse le plugin reconnaître que tant que l'écran de commande est ouvert sur la balance elle-même (
POST /aiplugin/resume, à la fermeture/aiplugin/suspend, port 5003 sur la balance ; la première fois aussi EmployeeMode : l'écran client de la balance n'affiche aucun produit). Sur les autres caisses et tablettes et via le portail de gestion, rien ne se passe. - Le plugin démarre toujours en Resume et ne peut pas transmettre son état. C'est pourquoi l'écran de commande renvoie resume toutes les 30 secondes ; si cela s'arrête (écran fermé, plugin ou balance redémarré), la caisse met le plugin sur Suspend en moins d'une minute et l'y maintient.
- Le plugin nécessite un code d'activation d'Aclas par balance (lié au numéro de série). Fonctionne actuellement sous Windows ; la version Android d'Aclas suivra (la caisse y fait la même chose).
Aclas OS6X (balance POS à la caisse, RS232/USB ; les autres balances connectées fonctionnent de la même façon) :
- Une ou plusieurs balances (8 maximum), chacune avec un nom (p. ex. Comptoir, Bar) et son propre raccordement : port COM / USB (
COM3sous Windows,/dev/ttyUSB0sous Linux/Android) avec la vitesse, ou réseau via un convertisseur série-réseau (adresse IP et port TCP, p. ex. 4001). - Protocole : Interrogation (Toledo) = la caisse envoie
Wet la balance répond avec le poids (Toledo 8217, réglage habituel de l'OS6X ; aussi les messages d'état instable/surcharge/sous zéro) ou Continu = la balance envoie elle-même le poids en continu (ST,GS, 0.512kg,US= instable) ou Dialog 06 (homologué), voir ci-dessous, ou DIGI (Type B) = la caisse envoieENQet la DIGI répond avec l'état, le poids net, la tare, le prix au kilo et le montant (37 caractères :<status> <toestand> CR 0<netto> CR 4<tarra> CR U<kiloprijs> CR T<bedrag> CR LF; état bit 1 = stable, bit 2 = sous zéro, bit 3 = surcharge, bit 4 = trop léger), ou Gram = la caisse envoieENQ, attendACK, envoieDC1et litSOH STX <S/U/F> <teken> <gewicht> <eenheid> <BCC> ETX EOT. Réglez le même protocole et la même vitesse sur la balance. Bits de données / parité : 8N1 (Aclas, Adam Equipment, DIGI, Dini Argeo, Excell Precision, Gram, Kern & Sohn, Minebea Intec, Ohaus, Precisa, Sartorius, Star Micronics, UWE, Wedderburn, Wintec) ou 7E1 (A&D, Avery Berkel, Avery Weigh-Tronix, Balanzas Marques, Baxtran, Brecknell, CAS, Datalogic, Mettler Toledo 8217, Rice Lake, Zebra) ; Dialog 06 est toujours en 7O1. Interrogation lit aussi NCI (Avery Weigh-Tronix, Brecknell, Rice Lake BP-R) : surW, la balance répondLF 1.234KG CR LF S00 CR ETX; la ligne d'état (S+ 2 ou 3 octets) indique si elle est en mouvement (octet 1 bit 0), trop légère (octet 2 bit 0) ou en surcharge (octet 2 bit 1) ;^^^^^= surcharge,_____= trop léger. - Dialog 06 (Checkout-Dialog 06, le protocole européen pour une balance homologuée raccordée à une caisse) : la caisse envoie le prix au kilo (et la tare du produit) à la balance ; la balance pèse, calcule elle-même le montant et affiche prix au kilo, poids et montant sur son propre écran (homologué). La caisse reprend le poids et le montant ; la fenêtre de pesée indique « calculé par la balance ». Toujours 9600 bauds, 7 bits de données, parité impaire, 1 bit d'arrêt (la vitesse du réglage ne compte alors pas). Déroulement :
EOT STX 01 ESC <kiloprijs 6> ESC ETX(avec tare : enregistrement03avec 4 chiffres en grammes) → ACK ;ENQ→STX 02 ESC 3 ESC <gram 5> ESC <kiloprijs 6> ESC <bedrag 6> ETX; NAK →EOT STX 08 ETX→STX 09 ESC <code> ETX(22 = pas encore prête, réessai après 100 ms ; 20 = en mouvement ; 21 = soulever d'abord ; 30/31 = trop léger ; 32 = trop lourd ; 11 = prix non valide). Codes de contrôle : beaucoup de balances Dialog 06 demandent de temps en temps (p. ex. toutes les 30 pesées) les codes de contrôle du logiciel de caisse (enregistrement 11 → enregistrement 10). Le fabricant de la balance ne communique ces codes et leur mode de calcul qu'au fournisseur de la caisse. Saisissez-les dans Codes de contrôle (paires de 4 caractères hexadécimaux, p. ex.74AE 1B2C) ; la caisse les envoie quand la balance les demande. Si la balance calcule avec un nombre variable (Z) et que des codes fixes ne conviennent donc pas, la caisse le signale ; demandez alors au fournisseur de configurer la balance sans ce contrôle, ou utilisez Toledo. - Les balances sont raccordées au PC ou à l'appareil sur lequel tourne le serveur de caisse ; toutes les caisses et tablettes pèsent via le serveur de caisse et choisissent dans la fenêtre de pesée quelle balance utiliser. Tester effectue une pesée.
- Le réseau fonctionne partout.
- Permettre aussi la saisie manuelle du poids : activé = le poids peut être saisi même avec une balance ; sans OS6X, c'est toujours possible.
Scanner les étiquettes (case à la balance : Aclas TS6X, une autre balance PC ou IA, la série LS ou la LH15X ; balance + imprimante d'étiquettes, une par établissement) :
- Adresse IP : nécessaire seulement pour Naar TS6X sturen. Peser et scanner les étiquettes fonctionnent sans. Si la caisse tourne sur la TS6X elle-même, laissez-la vide : la caisse envoie alors à elle-même (127.0.0.1). Si la même balance pèse aussi à la caisse, les deux cases sont cochées sur la même balance (la recherche le configure ainsi).
- Scanner les étiquettes : scanner les étiquettes sur l'écran de commande. Réglez l'aspect du code-barres, comme sur la TS6X : commence par (20–29, par défaut
28), nombre de chiffres du PLU (4, 5 ou 6) puis le poids en grammes ou le prix en centimes, plus le chiffre de contrôle (EAN-13). Un exemple figure sous le réglage. - Numéros PLU : dans Paramètres → Produits, un produit pesable reçoit un prix au kilo, éventuellement une tare et un numéro PLU (unique). Le numéro PLU se choisit dans une liste (Pas de PLU, prochain libre, Autre numéro…) ; en cochant Prix au kilo, le prochain numéro libre est déjà proposé. Nécessaire uniquement pour les étiquettes et PLU de la TS6X : sans TS6X, vous pouvez laisser Pas de PLU.
- L'envoi direct fonctionne sous Windows et Linux ; sous Android et macOS, utilisez le fichier PLU. Lors de la première installation, vérifiez les noms de champs du fichier PLU et les codes dans
aclas-plu.ps1par rapport au manuel du SDK de la balance livrée (un seul endroit à adapter :ACLAS_PLU_KOLOMMENdanspackages/shared/src/weegschaal.ts).
Portail de gestion : le message au portail comporte la fonction Balance (A&D, Aclas, Adam Equipment, Avery Berkel, Avery Weigh-Tronix, Balanzas Marques, Baxtran, Bizerba, Brecknell, CAS, Datalogic, Dibal, DIGI, Dini Argeo, Excell Precision, Gram, Ishida, Kern & Sohn, Mettler Toledo, Minebea Intec, Ohaus, Precia Molen, Precisa, Rice Lake, Rongta, Sartorius, Star Micronics, T-Scale, UWE, Wedderburn, Wintec, Zebra) avec marche/arrêt et les balances par modèle (p. ex. TS6X (op dit apparaat), 2x OS6X, PS1CX, Ariva-S, DS-781, LS6RX, 5 producten per kilo) ; pas d'adresses IP, de ports COM ni d'adresses Bluetooth.
Métrologie légale : une balance utilisée pour la vente doit être homologuée (classe III, comme l'OS6X). Avec Toledo/continu, la caisse calcule avec le poids fourni par la balance ; avec Dialog 06, c'est la balance homologuée qui calcule elle-même le prix.
Code : packages/shared/src/weegschaal.ts (protocoles, étiquettes, fichier PLU), apps/pos-server/src/lib/weegschaal.ts et routes/weegschaal.ts ; écrans WeegschaalInstellingen.tsx et WeegDialoog.tsx.
Thuisbezorgd.nl / Takeaway.com
Les commandes de Thuisbezorgd.nl arrivent directement dans la caisse, sans intermédiaire (pas de Deliverect, HubRise ou autre) : JET Connect de Just Eat Takeaway communique avec le portail de gestion de Pin Voordeel, et la caisse y récupère ses messages.
En Belgique, la plateforme s'appelle Takeaway.com : même entreprise (Just Eat Takeaway) et même intégration. Pour un établissement belge, les écrans, les notifications, le bon de préparation et le portail de gestion affichent partout Takeaway.com au lieu de Thuisbezorgd.nl. Ci-dessous, Thuisbezorgd désigne les deux.
Pourquoi via le portail ? La caisse n'a besoin que de PORTAAL_URL et PORTAAL_SLEUTEL (voir Portail de gestion) et n'effectue que des requêtes sortantes.
Configuration (Paramètres → Plateformes de livraison → Thuisbezorgd.nl / Takeaway.com, droit Configurer l'établissement, les paiements et les imprimantes ; auparavant dans Paramètres → Établissement) :
- Activer Utiliser Thuisbezorgd (immédiat, indépendamment d'Enregistrer).
- S'inscrire chez Thuisbezorgd. L'établissement choisit ensuite chez Thuisbezorgd (Partner Hub ou chargé de compte) OptimumPOS / Pin Voordeel comme caisse. JET lance alors une session d'onboarding ; le portail retrouve la caisse inscrite (par code postal et nom, sinon Pin Voordeel associe la session manuellement dans le portail), envoie la configuration et demande le menu à la caisse. La connexion passe ensuite en direct.
- Cochez les produits commandables via Thuisbezorgd (par catégorie ou individuellement), avec éventuellement une description pour Thuisbezorgd. Le menu (prix, options comme modifiers, allergènes, TVA) suit automatiquement ; PLU = id du produit/de l'option. Après une modification du catalogue, la caisse met à jour le menu en 30 secondes ; seuls « épuisé »/« de nouveau disponible » passent par l'API de disponibilité.
- Horaires Thuisbezorgd : séparément pour la livraison et la vente à emporter (p. ex.
16:00-22:00, plusieurs plages séparées par une virgule). Ils sont enregistrés avec le bouton Enregistrer les horaires en dessous et sont envoyés à Thuisbezorgd comme service times dès que l'intégration est prête. - Fermé temporairement / Rouvrir (aux Pays-Bas/en Belgique, réouverture au plus tard le lendemain matin à 07:00).
Commandes. Une commande devient une commande normale sans table (bezorgen ou afhalen, nom de groupe TB <ordernummer>) avec les prix payés par le client, plus les frais de livraison/de service sur une ligne distincte et la remise Thuisbezorgd comme ligne de remise ; si le total ne correspond toujours pas, une ligne « Écart Thuisbezorgd ». Le bon de cuisine part immédiatement vers la cuisine/le bar (désactivable). La caisse confirme en quelques secondes au portail, qui le signale à JET ; si cela échoue dans les 3 minutes ou si la caisse est hors ligne, JET reçoit « échec » et l'établissement se rabat sur l'Orderpad.
Bouton Thuisbezorgd dans la barre supérieure (avec le nombre de commandes en cours) : liste, client et adresse, heure de préparation/livraison et la chronologie (track & trace) : reçue, livreur en route vers l'établissement, livreur à l'établissement, en route vers le client, livrée (de JET), plus des étapes propres (en préparation, prête, en route/livrée en cas de livraison par vos soins, retirée). JET Connect ne fournit pas de carte en direct du livreur à la caisse ; le client la voit dans l'application Thuisbezorgd. Une nouvelle commande, une annulation et « livreur à l'établissement » déclenchent une barre orange et un son. Finaliser (payé en ligne) encaisse avec le mode de paiement online ; si le client paie à la porte, encaissez normalement. Une annulation de Thuisbezorgd annule la commande et imprime un bon de cuisine « GEANNULEERD ».
Code : apps/pos-server/src/lib/thuisbezorgd.ts, routes/thuisbezorgd.ts ; écrans ThuisbezorgdInstellingen.tsx et Thuisbezorgd.tsx. Côté portail : horecapos-portaal/src/thuisbezorgd.mjs (voir le README du portail).
Comptage dans le portail de gestion. Le nombre de commandes Thuisbezorgd par jour est inclus dans le signalement au portail de gestion (verkoopTelling dans lib/portaal.ts) : reçues et non annulées, au jour de réception. Une commande Thuisbezorgd encaissée à la caisse (y compris Finaliser (payé en ligne)) n'y est pas comptée une seconde fois dans à emporter/livraison. Les données Thuisbezorgd se trouvent dans la base de données de la caisse et sont donc incluses dans les sauvegardes de la caisse.
Boutique en ligne et commande en ligne
Chaque établissement peut avoir sa propre boutique en ligne : un site de commande (et une application) aux couleurs de l'établissement pour la vente à emporter, la livraison, la commande à table par QR code et les réservations, avec paiement en ligne (MultiSafepay ou Buckaroo) ou paiement au retrait/à la livraison. La boutique en ligne est un projet distinct, horecapos-webshop (Node.js, voir le README correspondant), et tourne sur le même serveur que le portail de gestion.
L'activation et la configuration se font dans la gestion de la boutique : bouton Gérer la boutique en ligne dans le portail client (propriétaire) ou dans l'installation sur le portail de gestion (Pin Voordeel). Vous y trouvez l'activation, l'adresse web (<zaak>.<webshopdomein> ou un domaine propre), l'identité visuelle (couleurs, logo, image d'en-tête, police), les horaires d'ouverture et les créneaux pour la vente à emporter et la livraison, la zone de livraison (codes postaux, rayon ou zone sur la carte, avec frais et minimum), le paiement, les codes de réduction, les textes, les langues, les QR codes pour les tables, les réservations et l'application (installable en PWA ; une application Android via une Trusted Web Activity), et les notifications push (en option, désactivées par défaut) : le client active une notification sur la page de sa commande et reçoit une notification push quand la commande est prête ou en route ; s'il le souhaite, il reçoit aussi de temps en temps une offre, que l'établissement envoie depuis la gestion de la boutique (onglet Notifications push). Fonctionne sur Android et sur ordinateur (Chrome, Edge, Firefox, Samsung Internet), dans l'application Android, et sur iPhone et iPad (iOS 16.4 ou plus récent) si le client ajoute la boutique à son écran d'accueil. Aucun SMS ni e-mail n'est envoyé et aucun nom ni numéro n'est conservé. Détails dans le README de la boutique en ligne.
Menu. La caisse envoie le menu automatiquement : tous les produits actifs (pas au kilo), par groupe de produits, avec prix, options de choix, allergènes, rupture de stock et photo du produit, ainsi que les tables, les données de l'établissement et les canaux marketing activés (pour la case "recevoir des offres" au paiement, voir Marketing par SMS et e-mail). Cela se fait au démarrage, dès que la boutique en ligne est activée, dans les 30 secondes suivant une modification du catalogue et dans les quelques secondes suivant une modification sous Paramètres → Établissement, comme le marketing ou la carte de fidélité (ou avec Envoyer le menu maintenant). Pour exclure un produit de la boutique en ligne, utilisez la gestion de la boutique (masquer) ou la base de données avec artikel.webshop = false.
Commandes. La vente à emporter et la livraison deviennent une commande ordinaire sans table (nom de groupe WEB <bestelnummer>) avec les prix que le client a vus, plus les frais de livraison et les frais de transaction sur des lignes distinctes et un code de réduction comme ligne de remise ; si le total ne correspond toujours pas, une ligne "Écart boutique en ligne" est ajoutée. Le pourboire du client ne compte pas comme chiffre d'affaires : il est ajouté au paiement comme pourboire avec Finaliser (payé en ligne). La commande à table (QR code) va sur l'addition ouverte de cette table (payée en ligne : comme groupe distinct à cette table). Le bon de cuisine part immédiatement en cuisine/au bar (désactivable dans la fenêtre Boutique en ligne). La caisse confirme en quelques secondes avec le numéro de ticket ; le client reçoit alors "reçue" et un e-mail. Si la caisse est hors ligne, la boutique en ligne n'accepte pas de commandes (le client le voit immédiatement) et envoie un e-mail à l'établissement si une commande reste trop longtemps en attente. Les réservations de la boutique en ligne arrivent dans Réservations (uniquement si les réservations sont activées dans la caisse). Si un maximum par créneau est défini (Livraison et créneaux), les commandes de la boutique en ligne avec une heure dans ce créneau comptent aussi.
Belgique (boîte noire). Une commande de la boutique en ligne part immédiatement comme commande (signOrder) vers la boîte noire, avant le bon de travail, comme Commander à la caisse. Si cela échoue, elle n'arrive pas dans la caisse et la boutique en ligne la renvoie plus tard. Ce qui n'a pas encore été testé avec la boîte noire est désactivé dans le menu de la boutique en ligne (cartes cadeaux, codes de réduction, sur compte, sur la chambre, menus, options avec supplément, happy hour et pourboire) et est refusé si une ancienne boutique en ligne l'envoie quand même. Terminer vérifie le pourboire, le paiement sur compte et sur la chambre comme la caisse.
Sur la chambre (liaison hôtel, Paramètres → Hôtel → Libre-service → Dans la boutique en ligne) : le menu reçoit kamer: { maxBedrag } ; la boutique en ligne envoie betaling.wijze = "kamer" avec kamer et achternaam. La caisse vérifie le client auprès du logiciel hôtelier (pas à table, pas avec une carte cadeau) et l'enregistre avec la commande ; Terminer (sur la chambre) encaisse sur la chambre et impute le ticket sur la note de l'hôtel. Facture groupée pour le paiement sur compte : le ticket reste alors comme poste ouvert.
Bouton Boutique en ligne dans la barre supérieure (avec le nombre de commandes en cours) : liste, client et adresse, heure souhaitée ou "dès que possible", mode de paiement et chronologie. Le client voit les étapes En préparation, Prêt et En route en direct dans la boutique en ligne (et par e-mail, si l'établissement le souhaite). Encaissée à la caisse = Terminée ; Annuler annule uniquement les lignes de cette commande en ligne, imprime un bon de cuisine "ANNULÉ", et la boutique en ligne rembourse une commande payée en ligne. Arrivé, absent ou annulé pour une réservation est aussi renvoyé à la boutique en ligne. Une nouvelle commande ou réservation affiche une barre orange et émet un son.
Code : apps/pos-server/src/lib/webshop.ts, routes/webshop.ts ; écran Webshop.tsx. Côté portail : horecapos-portaal/src/webshop.mjs.
Caisse et boutique en ligne identiques (chaque partie s'active séparément, désactivé par défaut ; une ancienne boutique en ligne ignore les nouveaux champs). Ce qui est activé dans la caisse fonctionne aussi dans la boutique en ligne :
- Happy hour : la boutique en ligne applique le même prix que la caisse à ce moment-là (prix normal barré et nom de la happy hour), y compris avec une saison.
- Tranches horaires et mode de commande (s'ils sont activés) : la boutique en ligne n'affiche que ce qui est en vente maintenant, et pour la vente à emporter et la livraison le prix et les produits de ce choix (à table : sur place). Le menu reçoit par produit
prijzen(afhalen,bezorgen) etnietBij, ainsi que la listedagdelen. - Menus : le client choisit les plats (fixes et au choix, avec leurs options) ; dans la caisse, cela arrive comme ligne de menu avec les plats en dessous et le prix du menu réparti (la TVA par plat est correcte). Les plats qui n'existent que dans un menu sont transmis comme
menuArtikelen. Ancienne boutique en ligne sans choix : le menu arrive comme produit normal sur le ticket, comme avant. - Stock à zéro = épuisé, y compris les options au choix avec un ingrédient épuisé.
- Allergènes : désactivés dans la caisse = absents de la boutique en ligne.
- Carte de fidélité : le client peut cumuler des points au paiement (par numéro de téléphone ou e-mail) ; la caisse associe le client à la commande, les points sont crédités à l'encaissement (l'échange se fait dans l'établissement). La boutique en ligne affiche le solde.
- Bons cadeaux (Paramètres → Établissement → Bons cadeaux → Vendre des bons cadeaux dans la boutique en ligne, uniquement avec solde) : le client achète un bon et paie en ligne ; la caisse crée le bon, immédiatement actif, et le code repart via le portail vers la boutique en ligne (statut et e-mail). Si Bon cadeau comme mode de paiement est aussi activé, le client peut choisir pour la vente à emporter "avec un bon cadeau sur place".
- Codes promo (Paramètres → Codes promo, avec l'interrupteur dans Établissement) : par code à la caisse et/ou dans la boutique en ligne ; l'utilisation compte pour les deux ensemble.
- Pause et affluence : bouton Boutique en ligne dans la barre supérieure : Mettre la boutique en pause (avec un texte pour le client) et Affluence (minutes supplémentaires). Transmis à la boutique en ligne en quelques secondes.
- Réservation en ligne avec les règles de la caisse (Paramètres → Établissement → Réservations) : personnes au maximum, jours à l'avance, créneau, délai minimum et horaires par jour de la semaine.
- Livraison et créneaux : voir La boutique en ligne suit la caisse dans Livraison et créneaux.
- All-you-can-eat à table (Paramètres → Établissement → All-you-can-eat → Aussi lors de la commande à table via le QR code) : si une formule est en cours à la table, le client voit les plats qui en font partie comme Inclus pour € 0, avec les tournées, le maximum par personne, le temps d'attente et la limite de temps. Le reste, il le paie normalement ; tout va sur l'addition de la table. Si l'état de la table vient de changer, la caisse refuse la commande et le client commande à nouveau.
- En compte (Paramètres → Factures → Paiement en compte → Aussi dans la boutique en ligne) : voir Dans la boutique en ligne sous Paiement en compte.
- En ligne sur la liste d'attente (Paramètres → Établissement → Liste d'attente) : voir En ligne sur la liste d'attente sous Liste d'attente pour les clients sans réservation.
- Ventes additionnelles : "Autre chose ?" (facultatif, désactivé par défaut ; Paramètres → Établissement → Encaisser → Ventes additionnelles dans la boutique en ligne) : choisissez les catégories de produits (p. ex. boissons, sauces, desserts) et le nombre de suggestions. La boutique en ligne propose alors, au panier et à l'encaissement, des produits de ces catégories qui ne sont pas encore dans le panier (uniquement ce qui est en vente actuellement, non épuisé et sans choix obligatoires) ; le client les ajoute d'une seule touche. Aucune catégorie choisie = désactivé, comme avant. La borne a ses propres ventes additionnelles (voir Borne de commande en libre-service).
Pour cela, le menu de la boutique en ligne a versie: 2 avec les champs menuArtikelen, allergenenAan, happyhours, menus, klantenkaart, cadeaubon, kortingscodes, pauze, drukteMin, volgt, bezetting, reserveren.online, ayce, opRekening, wachtlijst et upsell. La confirmation au portail contient en outre cadeaubonnen (codes), klant (points) et plek (liste d'attente).
Comptage dans le portail de gestion. La vente à emporter et la livraison via la boutique en ligne sont comptées séparément (webshop, webshopGeannuleerd dans verkoopTelling), au jour de réception, et pas une seconde fois dans à emporter/livraison. La commande à table est simplement comptée avec les tables.
Paiement par carte et terminaux de paiement
Paramètres → Paiement (administrateur uniquement) :
- Terminaux : pour chaque terminal, un nom, l'ID du terminal et la clé API propre issue de PinPortal (Klant → Bewerk klant → Overige → API Keys). Après l'enregistrement, seule la fin de la clé reste visible ; elle n'est jamais renvoyée au navigateur. Avec Tester la connexion, vous vérifiez la clé et le terminal.
- Mode test : simule un terminal (réussi après ±7 s ; un montant se terminant par 13 centimes est refusé). Pratique pour tester sans terminal de paiement.
S'il existe au moins un terminal avec clé API (ou si le mode test est activé), Encaisser → Carte bancaire / Bancontact lance automatiquement le paiement sur le terminal, pour le montant calculé par le serveur.
Tant que la connexion est active, le serveur n'accepte « carte » qu'avec un paiement terminal réussi pour exactement cette commande et ce montant. Les requêtes sont envoyées comme un formulaire classique, comme dans le SDK PHP officiel, avec l'API de secours (api-backup.pinvandaag.com) si l'API principale ne répond pas. Chaque réponse de l'API apparaît avec [pin] dans la fenêtre du serveur, pratique en cas de panne. Un paiement réussi pas encore traité (p. ex. tablette tombée en panne) est retrouvé lors du prochain encaissement de cette commande.
Pourboire (carte, espèces et bon cadeau)
Dans l'écran d'encaissement, chaque mode de paiement a une rangée de boutons de pourboire : Aucun, 5%, 10%, 15% (arrondi vers le haut à 10 centimes), Arrondir (à l'euro entier suivant) et Autre montant. Par carte, le client paie montant + pourboire en une fois sur le terminal ; en espèces, le pourboire est inclus dans la monnaie et dans le tiroir-caisse. Le ticket indique le montant payé par carte avec « dont pourboire » en dessous ; le TOTAL et la TVA restent identiques, car le pourboire n'est pas du chiffre d'affaires. Le rapport X/Z indique le pourboire par mode de paiement et comme « Total pourboires ».
L'administrateur règle les boutons de pourboire dans Paramètres → Établissement → Pourboire : activé/désactivé, quels pourcentages (4 maximum, p. ex. « 5, 10, 15 »), si le bouton « Arrondir » est présent et pour quels modes de paiement (carte, espèces, bon cadeau) le pourboire est possible. « Aucun » et « Autre montant » sont toujours présents.
« Mettez … » est toujours présent, pour chaque mode de paiement, même si les boutons de pourboire sont désactivés (aucun réglage) : le client arrondit lui-même l'addition vers le haut et la différence est le pourboire. Des boutons proposent l'euro entier suivant et les montants ronds suivants (p. ex. € 28,00 → 29, 30, 40 ; € 44,00 → 45, 50, 60) et Autre total pour saisir soi-même le total. Toucher à nouveau le bouton choisi = ne pas arrondir. € 500 de pourboire maximum (même limite que le serveur de caisse).
Pas d'internet
La caisse fonctionne sur le réseau local et n'a pas besoin d'internet ; seul le paiement par carte via la connexion en a besoin. Si l'établissement n'a pas internet, la barre supérieure affiche Pas d'internet · carte bancaire manuelle (vérifié chaque minute). L'écran d'encaissement affiche alors, ainsi qu'après un échec de lancement sur le terminal, le bouton Déjà payé sur le terminal : saisissez le montant sur le terminal lui-même et enregistrez-le ainsi.
Plans de salle et tables
Paramètres → Plans de salle (administrateur uniquement) :
- Ajouter des plans de salle (p. ex. Salle, Terrasse, Véranda), les renommer, les supprimer et changer leur ordre avec ◀ ▶.
- Ajouter des tables avec les boutons au-dessus de la grille (ronde, carrée, longue, mange-debout) et les faire glisser à leur place avec la souris ou le doigt. Le petit coin bleu d'une table sélectionnée l'agrandit ou la rétrécit.
- Pour chaque table, régler le nom/numéro, le nombre de personnes (les chaises autour de la table en tiennent compte) et la forme ; dupliquer ou supprimer.
- Au clavier : les flèches déplacent (Maj = pas plus grand), Suppr supprime.
- Les modifications ne s'appliquent qu'après Enregistrer ; « Annuler » remet tout en l'état.
- Une table ou un plan de salle avec une commande ouverte ne peut pas être supprimé. Les tables supprimées restent conservées dans les anciennes commandes.
Transférer la configuration vers un deuxième établissement
Paramètres → Import/export (administrateur uniquement). Une fois un établissement entièrement configuré, exportez la configuration dans un fichier .json et importez-le dans la caisse du deuxième établissement. À choisir par partie :
- Produits : catégories, produits, prix (aussi par mode de commande), TVA, options, menus, happy hours (avec saison), tranches horaires, allergènes, ingrédients/recettes, cartes à tampons, les formules à volonté et les photos des produits.
- Plans de salle : salles et tables.
- Autres paramètres : toutes les options de l'établissement, imprimantes (sans adresse IP), droits par rôle et comptabilité.
Ne sont jamais transférés : nom, adresse, code postal, ville, téléphone, e-mail, numéro de TVA et ligne de fin de ticket de l'établissement, l'adresse e-mail du rapport Z, les terminaux de paiement et leurs clés, le personnel et les codes PIN, ainsi que l'ensemble du chiffre d'affaires, des tickets, des clients et des quantités en stock.
L'import est fortement sécurisé : un grand avertissement rouge, une case « Je comprends... », à nouveau le propre code PIN de l'administrateur, aucune commande ouverte, le même pays (taux de TVA) et une sauvegarde automatique préalable. L'import se fait en une seule transaction : si quelque chose échoue, rien ne change. Les produits, catégories, ingrédients et tables existants ne sont pas effacés mais retirés de la caisse (comme avec Supprimer), pour que les anciens tickets et rapports restent justes.
Importer depuis une autre caisse
Changer de caisse sans tout ressaisir. Toujours disponible (sans interrupteur) : la section Importer depuis une autre caisse se trouve sous Paramètres → Import/export (administrateur uniquement).
- Quoi : des produits (nom, prix TTC, TVA, catégorie, code/PLU, stock) ou des clients de la carte de fidélité (nom, téléphone, e-mail, points, adresse, code postal, ville ; le prénom et le nom sont fusionnés).
- Fichier : un export de votre ancienne caisse (Dobizzz/DoPos, Lightspeed, MplusKASSA, unTill, Tebi ...) ou votre propre liste : CSV (; , tabulation ou | ; UTF-8 ou Excel néerlandais) ou Excel (.xlsx), la première feuille, avec les noms de colonnes sur la première ligne. Enregistrez d'abord un ancien fichier .xls en .xlsx ou CSV.
- Aperçu : la caisse reconnaît les colonnes à leur nom (Omschrijving, Verkoopprijs incl. BTW, BTW %, Omzetgroep, Artikelnummer, GSM, Spaarpunten ...) et affiche les 10 premières lignes. Si une colonne ne correspond pas, choisissez-la vous-même. Rien ne change avant Importer.
- Produits : prix sous la forme 3,50, € 3,50 ou 1.234,50 ; TVA sous la forme 21, 9%, 0,09, haut ou bas (inconnu ou vide : le taux que vous choisissez, par défaut le plus élevé). Les catégories de produits qui n'existent pas encore sont créées (sans catégorie : "Importé").
- Stock (colonne Voorraad, Stock, Aantal ...) : si Suivre le stock est activé (Paramètres → Établissement), le produit suit le stock et le stock devient cette quantité (un comptage dans l'historique du stock, motif "Importé"). Vide : le stock reste tel quel.
- Fichier exemple (CSV) : une liste à remplir vous-même (Naam;Productgroep;Prijs;Btw;Voorraad;Code), par exemple dans Excel.
- Clients : les points sont ajoutés sous forme de correction "Importé depuis une autre caisse" (visible dans l'historique). Le consentement pour les SMS ou l'e-mail n'est pas repris (RGPD) : redemandez-le. Activez d'abord la carte de fidélité.
- Les produits existants (même code, ou sans code même nom) et les clients existants (même téléphone ou e-mail) sont ignorés, ou mis à jour si vous cochez cette option (pour les produits : nom, prix, TVA, catégorie et stock). Les lignes en double dans le fichier ne sont prises qu'une fois.
- À la fin : combien de nouveaux, de mis à jour et d'ignorés, avec pour chaque ligne ce qui n'allait pas (ex. pas de prix). 5000 lignes au maximum par fois. Dans le journal, cela apparaît comme "Configuration importée".
Langues (42, dont turc, arabe, darija, berbère, polonais, bulgare, hongrois, russe, serbe, albanais, persan, tigrigna, amharique, somali, papiamento, sranan tongo, hindi, ourdou, indonésien, vietnamien, syriaque-araméen, chinois et ukrainien)
À côté du petit bouton © en bas à droite, chaque écran comporte un petit bouton avec la langue (p. ex. NL et le drapeau). Touchez-le pour ouvrir le menu de choix : les langues sont classées par ordre alphabétique, avec leur nom dans leur propre langue devant le drapeau : Bahasa Indonesia (indonésien), Čeština (tchèque), Darija (arabe marocain en écriture latine), Deutsch, English, Español, Français, Hrvatski (croate), Italiano, Kurdî (Kurmancî), Latviešu (letton), Lietuvių (lituanien), Magyar (hongrois), Nederlands, Papiamentu (papiamento), Polski, Português, Română, Shqip (albanais), Slovenčina (slovaque), Soomaali (somali), Sranantongo, Srpski (serbe, en écriture latine), Tarifit (berbère rifain), Tiếng Việt (vietnamien), Türkçe, puis en écriture cyrillique Български (bulgare), Русский (russe) et Українська (ukrainien), puis les langues en écriture arabe : اردو (ourdou), الدارجة (darija), العربية (arabe), دری (dari), فارسی (persan, farsi), پښتو (pachto) et کوردی (سۆرانی) (kurde sorani), puis en écriture syriaque ܣܘܪܝܝܐ (syriaque-araméen, Suryoyo), en devanagari हिन्दी (hindi), en écriture guèze ትግርኛ (tigrigna) et አማርኛ (amharique), en tifinagh ⵜⴰⵎⴰⵣⵉⵖⵜ (tamazight, berbère), et en dernier 中文(简体)(chinois, écriture simplifiée). Tous les écrans, boutons, notifications et messages d'erreur du serveur de caisse sont traduits.
- Par employé : la langue choisie est enregistrée pour l'employé connecté (
gebruiker.taal). Si quelqu'un se connecte avec une autre langue, la caisse bascule immédiatement. L'appareil lui-même mémorise la dernière langue utilisée, pour que l'écran du code PIN soit déjà dans cette langue. Si vous choisissez une langue (sur l'écran du code PIN ou une fois connecté) et que vous vous (re)connectez dans les 10 minutes, ce choix l'emporte et devient la langue de cet employé. Changer de langue recharge l'écran ; vous restez connecté et l'addition ouverte reste ouverte. - Première utilisation sur un appareil : si aucune langue n'est encore définie sur une tablette ou un PC, la caisse démarre dans la langue choisie lors de l'installation. Si aucune langue n'a été choisie, elle utilise la langue de l'appareil lui-même (navigateur ou système d'exploitation, aussi dans l'application Android), et à défaut le néerlandais. Ensuite, chaque appareil retient son propre choix.
- Europe de l'Est : polonais, tchèque, slovaque, hongrois, roumain, bulgare, croate (aussi pour le bosnien), lituanien, letton, ukrainien et russe : les langues de la plupart des travailleurs migrants d'Europe centrale et orientale aux Pays-Bas et en Belgique.
- Balkans : serbe (en écriture latine, comme l'écrivent la plupart des Serbes aux Pays-Bas et en Belgique ; aussi pour le monténégrin) et albanais (Albanie, Kosovo et Macédoine du Nord).
- Corne de l'Afrique : tigrigna (Érythrée) et amharique (Éthiopie), tous deux en écriture guèze, et somali (en écriture latine).
- Iran : persan (farsi). Un appareil en persan d'Afghanistan (fa-AF) reçoit le dari, les autres le farsi.
- Pays-Bas caribéens et Suriname : papiamento (Papiamentu, orthographe de Curaçao et de Bonaire ; aussi pour Aruba) et sranan tongo.
- Asie : hindi (devanagari ; aussi pour le sarnami hindoustani), ourdou (de droite à gauche), indonésien et vietnamien (écriture latine, aussi sur le ticket).
- Marocain : darija (arabe marocain, la langue parlée) en écriture arabe et en écriture latine (comme beaucoup de Néerlandais d'origine marocaine l'écrivent dans leurs messages), en plus de l'arabe standard. Berbère : tarifit (rifain, en écriture latine ; la plupart des Néerlandais d'origine marocaine viennent du Rif) et tamazight standard marocain en écriture tifinagh.
- De droite à gauche : arabe (arabe standard), ourdou, darija en écriture arabe, dari et pachto (Afghanistan), persan (farsi, Iran), kurde sorani (Irak/Iran) et syriaque-araméen (Suryoyo, en écriture syriaque). Les montants, codes et touches numériques restent de gauche à droite. Le kurde kurmandji (Turquie/Syrie) s'écrit en alphabet latin.
- Bon de cuisine (cuisine/bar) : par défaut dans la langue de l'employé qui passe la commande. Par imprimante, une langue fixe (p. ex. celle du cuisinier) est aussi possible dans Paramètres → Imprimantes → Langue du bon de cuisine, en écriture latine : Nederlands, Čeština, Darija, Deutsch, English, Español, Français, Hrvatski, Italiano, Kurdî, Latviešu, Lietuvių, Magyar, Papiamentu, Polski, Português, Română, Shqip, Slovenčina, Soomaali, Sranantongo, Srpski, Tarifit, Tiếng Việt, Bahasa Indonesia ou Türkçe. Le bulgare, le russe et l'ukrainien sortent sur le bon de cuisine en transcription latine (l'imprimante de tickets ne connaît pas le cyrillique). Les écritures arabe, syriaque, devanagari, guèze et tifinagh et le chinois ne peuvent pas être imprimés sur une imprimante de tickets : le darija sort alors en écriture latine, le tamazight en tarifit et le reste en néerlandais. Les textes fixes (TAFEL, Gang, WACHT op afroep, AFROEP GANG, LATER GEPRINT, Afhalen, Balie) sont traduits ; les noms de produits et les remarques restent tels qu'ils ont été saisis. Les imprimantes réglées sur le néerlandais suivent l'employé.
- Ticket de caisse (pour tous les clients) : par défaut en néerlandais, indépendamment de la langue des écrans. Vous choisissez une autre langue dans Paramètres → Établissement → Langue du ticket de caisse (juste sous le texte en bas du ticket), uniquement des langues en écriture latine. Cela vaut aussi pour la pro forma, le ticket de retour, la copie, le bon cadeau et le ticket par e-mail. Les montants, les codes TVA, le numéro de TVA de l'établissement et les lignes fiscales (Belgique) restent identiques ; un texte personnalisé en bas du ticket reste tel que l'établissement le saisit.
- Les produits, catégories et options portent le nom saisi par l'établissement ; ils ne sont pas traduits.
- La langue par membre du personnel se règle aussi dans Paramètres → Personnel.
- L'introduction et le manuel existent aussi dans toutes ces langues. Le bouton © les ouvre dans la langue de la caisse ; en haut, choisissez une autre langue avec les drapeaux (cela ne change rien à la caisse).
Pour les développeurs : chaque texte visible figure dans le code sous la forme vt('Nederlandse tekst') (apps/pos-web/lib/i18n.ts) ; le texte néerlandais sert de clé. Les traductions se trouvent dans apps/pos-web/lib/vertalingen/<taal>.ts. Si une traduction manque, la caisse affiche le néerlandais ; le test i18n (pos-web) vérifie que chaque texte est traduit dans chaque langue et que les emplacements {0} sont corrects. Les messages du serveur de caisse restent en néerlandais et sont traduits dans le navigateur (y compris avec {0}, p. ex. un nom de produit dans le message).
Configurer les imprimantes
Une nouvelle caisse n'a aucune imprimante. Connectez-vous en tant qu'administrateur (démo : 1111) et choisissez Paramètres dans la barre supérieure.
- Imprimantes : ajoutez autant d'imprimantes que l'établissement en possède (p. ex. caisse, cuisine, bar, pizza), chacune avec une connexion (généralement le réseau : adresse IP et port 9100) et une largeur de papier. Avec Ticket de test, vous vérifiez qu'elle fonctionne. En haut, vous choisissez quelle imprimante imprime le ticket de caisse et le pro forma (et ouvre le tiroir-caisse). Pour chaque imprimante, vous choisissez aussi la langue du bon de cuisine (voir Langues) ; le ticket de caisse reste en néerlandais.
- Connexion par imprimante :
- Réseau (adresse IP) : adresse IP et port (généralement 9100). C'est ainsi que cela a toujours fonctionné, et cela continue ainsi : les imprimantes existantes sont automatiquement en réseau.
- USB : sous Linux, le périphérique, par exemple
/dev/usb/lp0. Sous Android, l'imprimante USB branchée sur l'appareil (câble OTG ; vide = la première imprimante USB). Sous Windows et macOS, choisissez Imprimante du système. - Série (COM / ttyUSB) : un port COM (Windows),
/dev/ttyUSB0ou/dev/ttyS0(Linux, Android) ou/dev/cu.…(macOS), avec la vitesse (généralement 9600, 19200 ou 38400 baud). Aussi pour une imprimante Bluetooth que Windows ou Linux associe comme port COM ou/dev/rfcomm0. - Bluetooth : dans l'application HorecaPOS sous Android, avec l'adresse Bluetooth de l'imprimante associée (p. ex. une imprimante de tickets mobile). Associez d'abord l'imprimante dans les paramètres Bluetooth d'Android.
- Imprimante du système (Windows / CUPS) : l'imprimante telle que Windows ou CUPS (Linux, macOS) la connaît, avec son propre pilote ou comme Generic / Text Only. Le ticket est envoyé brut (RAW) à l'imprimante, sans mise en forme par le pilote.
- Intégrée (Sunmi, iMin ...) : l'imprimante intégrée à une caisse Android.
- Rechercher affiche les imprimantes et les ports que la caisse voit. Choisissez-en un et l'adresse est remplie.
- Protocole : ESC/POS (presque toutes les imprimantes de tickets, y compris les imprimantes Star en mode ESC/POS) ou Star (Star Line Mode). Avec Star, la caisse convertit elle-même le ticket ; le ticket a le même aspect.
- Écran de service avec sa propre imprimante : un écran de service Android avec l'application HorecaPOS (p. ex. un terminal portable avec une imprimante Bluetooth mobile, ou un Sunmi utilisé comme écran de service) peut imprimer lui-même. Enregistrez-le sur l'appareil lui-même (Paramètres → Imprimantes → Écrans de service avec leur propre imprimante) et choisissez Connectée à pour l'imprimante. L'écran de service récupère ses tickets auprès de la caisse ; laissez l'application ouverte dessus. Si cela échoue (application fermée, hors de portée du wifi), un bon de cuisine passe dans la file d'impression, comme pour une imprimante réseau éteinte. Désinscrire l'appareil remet les imprimantes sur la caisse elle-même.
- Imprimante par catégorie / produit : choisissez pour chaque catégorie d'articles sur quelle imprimante sort le bon de cuisine. Pour chaque produit, vous pouvez le remplacer par une imprimante propre ou « pas de bon de cuisine ».
Les produits identiques sont regroupés à l'impression : deux fois 1x Cola devient 2x Cola, sur le bon de cuisine et sur le ticket de caisse. Seuls les produits avec les mêmes options et la même remarque sont regroupés.
L'installateur Linux ajoute l'utilisateur de la caisse aux groupes lp et dialout, afin que la caisse puisse utiliser les imprimantes USB et série.
Besoin d'aide ?
Optimum POS · 085 560 00 60 · support@optimumpos.nl · lun–ven 9:00–20:00, sam–dim 14:00–20:00