HorecaPOSManuel Introduction Aller à la caisse
FR

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.

Connexion avec code PIN

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.

Plan de salle

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.

Encaisser

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.

Partager l'addition à l'encaissement

Écran d'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) :

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)

Plan de salle avec Vente rapide et À emporter

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).

Extensions (tout est désactivé par défaut ; sans ces réglages, tout fonctionne exactement comme ci-dessus) :

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 :

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) :

SourcePourConfiguration
Webhook / action URL3CX (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 UCMadresse, port (5038 ; Grandstream UCM 7777), utilisateur AMI et mot de passe (droits call)
FRITZ!BoxFRITZ!Box avec téléphonieadresse (fritz.box) et port 1012 ; activer une fois le callmonitor avec #96*5*
Modem USB d'identification de l'appelantligne fixe analogique avec affichage du numéroport série (COM3, /dev/ttyACM0), baud et commande d'initialisation (par défaut AT+VCID=1)
Téléphone Androidle téléphone intégré d'un téléphone Android de l'établissementapp 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).

  1. 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).
  2. 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.
  3. 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.
  4. 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.

  1. 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) :

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 :

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 :

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 :

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 :

  1. 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.
  2. 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.
  3. 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 :

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).

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 :

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 :

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.

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.

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 :

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 :

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.

À 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 :

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 :

Bons cadeaux

Deux interrupteurs dans Paramètres → Établissement → Bons cadeaux :

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é).

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.

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).

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 :

À la commande (écran de commande, pour ce que vous touchez ensuite) :

À l'encaissement :

Après coup (Tickets) :

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.

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).

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.

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).

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.

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 :

Favoris / boutons rapides

Désactivé par défaut. Paramètres → Établissement → Favoris / boutons rapides :

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).

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 :

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).

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).

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).

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.

Le gestionnaire ajoute les sources avec + Source musicale, choisit comment chacune est connectée et la vérifie avec Tester :

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.

  1. Connectez la tablette ou le téléphone au réseau Wi-Fi de l'établissement.
  2. Scannez le QR code avec l'appareil photo (ou saisissez l'adresse dans le navigateur).
  3. 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.
  4. 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).

  1. 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.
  2. 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).
  3. 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 :

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) :

La caisse dispose du bouton Appeler (avec le nombre de commandes encore en préparation) :

  1. 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.
  2. Retour le remet sous En préparation.
  3. 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 :

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 :

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é.

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.

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.

Le bouton ©

Coordonnées OptimumPOS

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 :

Stock

Désactivé par défaut. À activer via Paramètres → Établissement → Suivre le stock. Désactivé = invisible partout dans la caisse.

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.

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.

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é.

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) :

ChoixRépartition
Désactivé (par défaut)uniquement le total des pourboires, comme toujours
Chacun son pourboirepourboire des additions que la personne a encaissées elle-même
Cagnotte selon les heurestous 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 égaletous 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.

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) :

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 :

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).

Remises

Dans l'écran de commande, un manager ou un administrateur voit à côté du total le bouton % Remise :

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) :

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

Rapport - situation intermédiaire (X)

Bouton Rapport dans la barre supérieure :

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ébitrecettes par mode de paiement (espèces, carte bancaire, bon cadeau, en ligne, autre), pourboires compris
Créditchiffre d'affaires par taux de TVA (HT) et TVA à reverser par taux
Créditpourboires (à 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 :

FormatFichierImport dans le logiciel
Général (CSV)journaal_…csvtout logiciel avec un import CSV/OD (associer les colonnes)
UBL 2.1 / Peppol (XML), NL et BEjournaal_…_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), NLjournaal_…_xaf.xaffichier 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), NLjournaal_…_accountview.xmlMutations 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.xmlXML 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), NLjournaal_…_asperion.csvformat 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 BEjournaal_…_dagstaat.htmlrelevé 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.csvDate ; 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.xmleExact-XML (sujet GLTransactions) : une écriture d'opérations diverses par jour (type 90) dans le journal ; Import/export → Importer XML
InformerOnline (TXT), NLjournaal_…_informer.txtopé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), NLjournaal_…_king.xmlKING_JOURNAAL : un lot d'écritures (non définitif) avec une écriture par jour
KOMAS (CSV), NLjournaal_…_komas.csvformat libre KOMAS (0401 Importeren journaalposten) : Datum; Grootboek; Omschrijving; Bedrag
Odoo (CSV), NL et BEjournaal_…_odoo.csvComptabilité → Journal Entries → Import records ; journal et compte par nom ou code
Sage BOB 50 (Excel), BEjournaal_…_bob.xlsxImportation de données externes → Opérations diverses (associer les colonnes une seule fois)
SAP Business One (ZIP), NL et BEjournaal_…_sapb1.zipData Transfer Workbench, Journal Entries : JournalEntries.csv et JournalEntries_Lines.csv
SnelStart (CSV)journaal_…_snelstart.csvDate ; 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.xmltransactions de journal en brouillon (destiny="temporary"), le comptable les valide ; saisissez le code du dossier (vide = le dossier dans lequel vous importez)
Winbooks (CSV), BEjournaal_…_winbooks.csvK_DOC.CSV, un document par jour dans le journal (Winbooks numérote lui-même)
Yuki (XML)journaal_…_yuki.xmlJournal-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é.

LogicielNLBELiveFichierRemarque
PME et indépendants
Accountable–✓–Relevé journalier (HTML, pour PDF ou e-mail)
AccountView (Visma)✓–sur demandeAccountView (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 demandeAsperion (CSV)Live après inscription comme partenaire API auprès d'Asperion.
Billit–✓sur demandeUBL 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 demandeKING 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 demandeXML 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 demandeWinbooks (CSV)
Wolters Kluwer Adsolut–✓sur demandeUBL 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ériquePas 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 demandeCSV 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 demandeUBL 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.

LogicielPaysConnexion avecCe que la caisse comptabilise
AcumulusNLcode de contrat, utilisateur et mot de passe d'un utilisateur APIune facture de vente payée par jour avec une ligne par taux de TVA ; Acumulus envoie les erreurs par e-mail à ACUMULUS_FOUTMAIL
AFAS ProfitNLenvironnement, jeton, dossieropérations diverses (FiEntries)
Business CentralNL, BEtenant, 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 OnlineNL, BEconnexion (OAuth, application propre : voir Exact Online ci-dessous ; Belgique : start.exactonline.be)écriture d'opérations diverses dans le journal (ex. 90)
HorusBEconnexion (OAuth, application ci-dessous), dossier facultatifopération diverse
MoneybirdNLjeton API, dossier facultatifopérations diverses (general journal document)
OdooNL, BEadresse, base de données, utilisateur, clé APIécriture dans le journal avec le code court (ex. MISC)
QuickBooks OnlineNL, BEconnexion (OAuth, application ci-dessous ; QUICKBOOKS_OMGEVING)journal entry ; comptes par numéro
SAP Business OneNL, BEadresse du Service Layer, base de données, utilisateur, mot de passeécriture de journal (JournalEntries)
SilvasoftNL, BEutilisateur 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)
SnelStartNLclé de liaison et clé d'abonnementopérations diverses
TwinfieldNLconnexion (OAuth, application ci-dessous), bureau facultatiftransaction de journal
XeroNL, BEconnexion (OAuth, application ci-dessous), organisation facultativemanual journal ; comptes par code
YukiNL, BEclé API, dossier facultatifopérations diverses (GeneralJournal)
Zoho BooksNL, BEconnexion (OAuth, application ci-dessous ; par défaut le centre de données européen), organisation facultativeécriture de journal ; comptes par code

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) :

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).

Banque : imputer les virements

Dans Rapport → En compte → Banque, la caisse cherche pour chaque paiement entrant la facture en compte correspondante :

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 :

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.

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 :

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) :

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 :

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)

Tickets

Bouton Tickets dans la barre supérieure :

Tiroir-caisse avec capteur et tiroir par employé

Désactivé par défaut. À configurer dans Paramètres → Paiement → Tiroir-caisse.

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.

Paramètres : produits

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.

Paramètres : sauvegardes

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 :

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 ?

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 :

  1. 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.
  2. Touchez Tester la connexion : vous voyez le programme et la version, ou la raison de l'échec.
  3. 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 :

  1. La caisse n'accepte brièvement aucune demande (généralement moins d'une minute) ; les tablettes reprennent ensuite d'elles-mêmes.
  2. La caisse fait d'abord une sauvegarde de l'état actuel (dans Paramètres → Sauvegardes).
  3. Tout passe dans la nouvelle base et la caisse compte, table par table, si tout y est exactement.
  4. 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

É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 :

Raccordement, de deux façons (toutes deux à configurer sur l'appareil lui-même) :

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.

É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) :

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.

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.

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.

Désactivé par défaut. À activer via Paramètres → Établissement → Utiliser les menus.

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).

  1. 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.
  2. 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).
  3. 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).
  4. 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).

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.

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) :

  1. ID d'API et clé d'API (X-Api-Id et X-Api-Key, ou Authorization: Bearer <id>:<sleutel>) ;
  2. Clé d'API et secret d'API avec une signature : X-Api-Key, X-Timestamp et X-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.

Notification d'une nouvelle version

À activer dans Paramètres → Établissement → Notification de mise à jour (désactivé par défaut).

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.

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.

Demander des avis : après la visite, un seul e-mail avec un bouton vers Google et/ou Trustpilot.

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.

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.

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 :

LogicielNLBELiveFichierRemarque
Logiciels de paie et prestataires de paie
ADP✓✓sur demandeRelevé 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 demandeRelevé 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 demandeRelevé d'heures par employé et par jour (CSV)Connexion via BCS (sur demande) ; en attendant, le relevé d'heures.
Buddee✓–sur demandeRelevé 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 demandeRelevé 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 demandeRelevé 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 demandeRelevé d'heures par employé et par jour (CSV)Connexion via Humanwave (sur demande) ; en attendant, le relevé d'heures.
Loket.nl✓–sur demandeLoket.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 demandeRelevé 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 demandeRelevé 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 demandeRelevé 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 demandeRelevé 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 demandeRelevé 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 demandeRelevé 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 demandeChiffre 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 demandeChiffre 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 demandeChiffre d'affaires par jour et par heure (CSV)Connexion via Horeko (sur demande) ; en attendant, la liste du chiffre d'affaires.
Fooks✓–sur demandeChiffre 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 demandeChiffre 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 demandeChiffre 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 demandeChiffre 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 demandeChiffre 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 demandeChiffre 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 demandeChiffre 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 demandeChiffre 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 demandeChiffre 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) :

PaysExigenceHorecaPOS
BelgiqueSystè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 €
BelgiqueFacturation é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ésexport 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)
BelgiqueTVA 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-BasLoi 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-BasGobelets et barquettes jetables (SUP) : depuis 2024, un prix distinct et visible pour les emballages jetables en plastique à emporter et en livraisonSupplément jetable par produit, sur une ligne distincte du ticket (TVA du produit) et séparément dans le chiffre d'affaires
Pays-BasConsigne sur les canettes et les bouteilles en plastiqueConsigne par produit (0,15 € / 0,25 €), ligne distincte sans TVA à emporter et en livraison, séparément dans le chiffre d'affaires
Pays-BasPaiement en espèces : depuis le 1 janvier 2026, plus de 3 000 € ou plus en espèces pour des biensAvertissement à emporter et en livraison (aussi au monnayeur automatique) ; la confirmation est possible et est enregistrée dans le journal
Pays-Bas et BelgiqueChangement de TVA : un taux ou un produit reçoit un autre pourcentage de TVA à partir d'une datePlanifier 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-BasHébergement (nuitées) 21 % depuis le 1 janvier 2026taux de TVA réglable par produit
UEDirective Omnibus : un prix barré "avant" ne peut être que le prix le plus bas des 30 derniers joursla 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)
UEEuropean 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-BasXML 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 2027export en XAF 4.0 (Export comptable)
Pays-BasSystè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
BelgiqueEnregistrement 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 travailleursPointage arrivée/départ du personnel (Paramètres → Établissement ; Obligatoire = pointer d'abord l'arrivée) est enregistré dans la boîte noire
BelgiqueDimona : déclarer toute occupation (y compris flexi-jobs et étudiants) à l'ONSS (RSZ) avant son débutc'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-BasEnregistrement 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 BelgiqueHACCP / 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 BelgiqueObligation 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.

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.

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.

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.

Ajouter et associer une borne

  1. 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).
  2. 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).
  3. 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.
  4. 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

  1. É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.
  2. Sur place ou à emporter.
  3. 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.
  4. Le panier : modifier les quantités et éventuellement Autre chose ?.
  5. 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.
  6. 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.
  7. 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 :

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.

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.

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.

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.

DroitServiceManager
Supprimer des lignes après commande (annulation)ouioui
Accorder une remise / retirer une remisenonoui
Marquer un produit comme « épuisé »ouioui
Imprimer une copie d'un ticketouioui
Retour (avoir)nonoui
Encaisser en compte et recevoir des paiements en compte (uniquement avec le paiement en compte activé)nonoui
Situation intermédiaire (rapport X)ouioui
Clôturer la journée (rapport Z)nonoui
Chiffre d'affaires par périodenonoui
Gérer le tiroir-caissenonoui
Gérer les bons cadeaux (uniquement avec les bons cadeaux avec solde)nonoui
Lire les avis et y répondre (uniquement avec la gestion des avis activée)nonoui
Gérer la carte de fidélité (uniquement avec la carte de fidélité activée)nonoui
Consulter le journalnonoui
Voir les images des caméras (uniquement si les images des caméras sont activées)nonoui
Gérer le stock (uniquement si le stock est activé)nonoui
Gérer les produitsnonnon
Gérer les plans de sallenonnon
Configurer l'établissement, le paiement et les imprimantesnonnon
Consulter et modifier les horaires de travailnonnon

Informations de l'établissement

Paramètres - É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

Paramètres - Produits

Connectez-vous en tant qu'administrateur et choisissez Paramètres → Produits.

Photos de produits

Chaque produit peut avoir une photo.

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 :

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 :

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.

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) :

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 :

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èleTypeConnexionsDans la caisse
OS6XBalance POSRS232, USB, Bluetoothconnectée, plusieurs à la fois
OS2XBalance POSRS232, USBconnectée, plusieurs à la fois
CS6X, CS3XBalance caisseRS232, USB, Ethernet, wificonnectée, plusieurs à la fois
TS6X, TS3X, TS5EX, TS5NX, TS5GXBalance PC (Windows, Android, Linux)RS232, USB, Ethernet, wifisur cet appareil (1x), aussi comme balance étiqueteuse
iS6X, iS2X, iR6X, Ti6X, iL8XBalance IA avec reconnaissance de produits (Windows, Android, Linux)RS232, USB, Ethernet, wifisur cet appareil (1x), aussi comme balance étiqueteuse
iS5X, OiT2XBalance IA (Linux uniquement)RS232, USB, Ethernetconnectée ou comme étiqueteuse
LS2S, LS2RX, LS2CX, LS2NX, LS5SX, LS5RX, LS5CX, LS5NX, LS6CX, LS6RX, LS6NXBalance étiqueteuseRS232, Ethernet, wifiscanner étiquettes et PLU
PS1CX, PS1DX, PS6CX, PS6DXBalance poids-prixRS232connectée, plusieurs à la fois
PS1BXBalance poids-prix sans connexionaucunepoids à la main
LH15XBalance suspendue avec imprimante d'étiquettesRS232, Ethernet, wificonnecté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 :

MarqueModèleTypeConnexionProtocole (usine)Dans la caisse
A&DEK-i (notamment EK-610i), HV-WPBalance caisse (poids uniquement)RS232, EK-i aussi USBContinu (mode stream), 2400 bauds, 7E1connectée, plusieurs à la fois
Adam EquipmentSwiftBalance poids-prixRS232, USB (option)Continu (continu vers PC), 9600 8N1 (à tester)connectée, plusieurs à la fois
Avery BerkelFX110, FX120, FX131 (encastrée avec scanner)Balance caisseRS232, FX131 aussi USBMettler Toledo 82/7 = Toledo 8217 (la caisse envoie W), 9600 bauds, 7E1connectée, plusieurs à la fois
Avery BerkelFX125Balance poids-prixRS232Checkout-Dialog 06 (9600, 7O1)connectée, plusieurs à la fois
Avery BerkelXs, XTs, XTiBalance étiqueteuseEthernet, Wi-Fi, USBPLU propres sur la balancescanner les étiquettes
Avery Weigh-Tronix7820, 7829, ZP900Balance caisseRS232, 7820 aussi USB, ZP900 aussi USB et EthernetNCI (la caisse envoie W), 9600 bauds, 7E1connectée, plusieurs à la fois
Balanzas MarquesBM1000P TOPBalance caisse (poids uniquement)RS232METTLER (la caisse envoie W, Toledo), 9600 bauds, 7E1connectée, plusieurs à la fois
Balanzas MarquesBM5 Junior Tower Label, BM500 ETQBalance étiqueteuseEthernet, USB, RS232, BM500 ETQ aussi wifiPLU propres sur la balancescanner les étiquettes
BaxtranTW, VW, XTA, XTA-PBalance poids-prixRS232Toledo (la caisse envoie W), 9600 bauds, 7E1connectée, plusieurs à la fois
BizerbaCS 300 (aussi encastrée)Balance caisseRS232Checkout-Dialog 06 (9600, 7O1)connectée, plusieurs à la fois
BizerbaK-Class Flex, KH IIBalance étiqueteuseEthernetPLU propres sur la balancescanner les étiquettes
Brecknell6702U, 6710U, 6720UBalance caisseRS232, USB (port COM virtuel)NCI (la caisse envoie W), 9600 bauds, 7E1connectée, plusieurs à la fois
CASPD-II, PDN, PDI, PDS-BBalance caisseRS232, PDN aussi USB et Bluetooth, PDI aussi USBECR type 2 = Toledo (la caisse envoie W), 9600 bauds, 7E1connectée, plusieurs à la fois
CASCL3000, CL5500, CL7200Balance étiqueteuseEthernet, USB, RS232, CL5500 et CL7200 aussi wifiPLU propres sur la balancescanner les étiquettes
DatalogicMagellan 9300i, 9400i, 9800i (scanner avec balance)Balance caisseRS232 (port de pesée séparé), USBMettler Toledo 8217 (la caisse envoie W), 9600 bauds, 7E1connectée, plusieurs à la fois
DibalKS-400, D-POS 400Balance caisseRS232, D-POS 400 aussi USBCheckout-Dialog 06 (9600, 7O1)connectée, plusieurs à la fois
DibalG-325, PI-100Balance poids-prixRS232Checkout-Dialog 06 (9600, 7O1)connectée, plusieurs à la fois
DibalM-500 (Mistral), D-900, CS-2200Balance étiqueteuseEthernet, Wi-Fi, USBPLU propres sur la balancescanner les étiquettes
DIGIDS-781Balance poids-prixRS232DIGI Type B (la caisse envoie ENQ), 9600 8N1connectée, plusieurs à la fois
DIGISM-120, SM-6000Balance étiqueteuseEthernet, Wi-FiPLU propres sur la balancescanner les étiquettes
Dini ArgeoDFW, DGT, 3590EBalance caisse (poids uniquement)RS232, USB, Ethernet, DFW et 3590E aussi wifiContinu (ST,GS, 0.512,kg), 9600 8N1connectée, plusieurs à la fois
Excell PrecisionTPE, AM4, FD4-P, FDP4-P, GE4, GEP4Balance poids-prixRS232Continu (ST,GS,+0.876kg), 9600 8N1 (sauf TPE, à tester)connectée, plusieurs à la fois
GramXFOC RS, XFOC+ RS, ZFOC RSBalance poids-prixRS232, USB (câble de Gram)Gram (la caisse envoie ENQ, puis DC1), 9600 8N1 (XFOC à tester)connectée, plusieurs à la fois
IshidaUni-3, Uni-5, Uni-7, Uni-9Balance étiqueteuseEthernet, Wi-Fi, USBPLU propres sur la balancescanner les étiquettes
Kern & SohnRPB, RFCBalance poids-prixRS232, USBCheckout-Dialog 06 (Prot = DLG-06, 9600, 7O1)connectée, plusieurs à la fois
Kern & SohnRFE (prix), IFB, EOCBalance poids-prix / balance caisseRS232Continu, 9600 8N1connectée, plusieurs à la fois
Mettler ToledoAriva-SBalance caisseRS232, USB (port COM virtuel)Toledo 8217 (la caisse envoie W), 9600 bauds, 7E1connectée, plusieurs à la fois
Mettler ToledoVivaBalance caisseRS232Toledo 8217, 9600 bauds, 7E1connectée, plusieurs à la fois
Mettler ToledobPlus, UC EvoBalance étiqueteuseEthernet, Wi-FiPLU propres sur la balancescanner les étiquettes
Minebea IntecSignum, Combics, Midrics, PuroBalance caisse (poids uniquement)RS232, USB, Signum et Combics aussi EthernetContinu (SBI, impression automatique), 9600 8N1connectée, plusieurs à la fois
OhausAviator 7000Balance poids-prixRS232 ou USBCheckout-Dialog 06 (9600, 7O1)connectée, plusieurs à la fois
OhausValor 7000, Ranger 3000, Ranger 4000, Ranger 7000, Defender 3000Balance caisse (poids uniquement)RS232, USB, EthernetContinu (Auto Print Continuous), 9600 8N1connectée, plusieurs à la fois
Precia MolenDP400Balance caisseRS232, USBCheckout-Dialog 06 (9600, 7O1)connectée, plusieurs à la fois
Precia MolenDPOS CR, C 210 B, C 210 CBalance poids-prixRS232Checkout-Dialog 06 (9600, 7O1 ; C 210 à tester)connectée, plusieurs à la fois
Precia MolenCorail 500Balance étiqueteuseEthernet, Wi-FiPLU propres sur la balancescanner les étiquettes
PrecisaXB, XT, LS, LX (balances de précision)Balance caisse (poids uniquement)RS232, LS et LX aussi USBContinu (mode d'impression CONTINUOUS), 9600 8N1connectée, plusieurs à la fois
Rice LakeBenchPro BP-S, BenchPro BP-RBalance caisseRS232BP-S Toledo 8213, BP-R NCI (les deux : la caisse envoie W), 9600 bauds, 7E1 (à tester)connectée, plusieurs à la fois
RongtaRLS1000, RLS1100Balance étiqueteuseEthernet, RS232, wifiPLU propres sur la balancescanner les étiquettes
SartoriusEntris, QuintixBalance caisse (poids uniquement)RS232, USBContinu (SBI, impression automatique), 9600 8N1connectée, plusieurs à la fois
Star MicronicsmG-T12, mG-T30, mG-T60, mG-S8200Balance caisse (poids uniquement)RS232, USB (port COM virtuel)Continu, 9600 8N1 (à tester)connectée, plusieurs à la fois
T-ScalePA10, PA15, PEA10Balance étiqueteuseEthernetPLU propres sur la balancescanner les étiquettes
UWEASEPBalance poids-prixRS232Continu, 9600 8N1 (à tester)connectée, plusieurs à la fois
WedderburnTSDS983Balance caisseRS232DIGI Type B (la caisse envoie ENQ), 9600 8N1 (à tester)connectée, plusieurs à la fois
WedderburnTSDS781T, TSDS782TBalance poids-prixRS232DIGI Type B, 9600 8N1 (à tester)connectée, plusieurs à la fois
WedderburnTSSM120Balance étiqueteuseEthernet, RS232PLU propres sur la balancescanner les étiquettes
WintecScalePOS ACS-S60E (caisse avec balance intégrée)Balance caisseCOM6 interne (Windows) ou COM4 (Android)Continu, 9600 8N1 (à tester)connectée
ZebraMP7000, MP72 (scanner avec balance)Balance caisseRS232 (port AUX)SASI = Toledo (la caisse envoie W), 9600 bauds, 7E1 (à tester)connectée, plusieurs à la fois

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.

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 :

Aclas OS6X (balance POS à la caisse, RS232/USB ; les autres balances connectées fonctionnent de la même façon) :

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) :

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) :

  1. Activer Utiliser Thuisbezorgd (immédiat, indépendamment d'Enregistrer).
  2. 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.
  3. 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é.
  4. 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.
  5. 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 :

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) :

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

Éditeur de plan de salle

Paramètres → Plans de salle (administrateur uniquement) :

Transférer la configuration vers un deuxième établissement

Paramètres - Import/export

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 :

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).

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.

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.

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