Sans réseau
Vendre sans réseau, et imprimer quand même.
Le réseau tombe, la boutique reste ouverte. Vente Facile n'attend pas la connexion pour encaisser : la base vit sur le terminal, le ticket sort tout de suite, et tout remonte quand le réseau revient.
La base vit sur l'appareil, pas sur le serveur.
L'application du terminal n'est pas un site web avec un mode dégradé : elle est conçue pour travailler hors ligne. Le catalogue, les stocks, les clients et leurs dettes sont sur l'appareil. Une vente se compose, s'encaisse et s'imprime sans qu'aucune requête ne parte.
Ce qui change, c'est le moment où le serveur l'apprend. Les opérations s'accumulent dans un journal local et partent dès que la connexion revient, sans que le caissier ait à y penser.
Le numéro du ticket est définitif dès l'impression.
Chaque terminal reçoit un code à quatre caractères lors de son enrôlement, et tient sa propre série. Un ticket sort sous un numéro comme VT-20260920-K7QM-0004, et ce numéro ne changera jamais.
C'est le point qui compte au comptoir : un client qui revient avec son papier peut prouver son paiement. Un numéro provisoire que le serveur remplacerait plus tard rendrait ce papier muet.
Un verdict par opération, jamais par lot.
À la synchronisation, le serveur répond à chaque opération séparément. Une vente refusée ne condamne pas les deux cents autres, et rien n'est traité en bloc.
Une opération refusée est mise de côté avec son motif, sur un écran qui la nomme. Elle ne repart pas toute seule, et elle ne disparaît pas non plus.
Le comptoir déduit ses propres ventes en attente.
Tant qu'une vente n'est pas partie, le stock affiché tient déjà compte d'elle. Sans cela, le terminal opposerait le stock du dernier tirage à chaque nouveau client, et le même dernier casier se vendrait autant de fois qu'il se présenterait d'acheteurs.
La même règle vaut pour le crédit : une vente à crédit encore en file entre dans le plafond du client avant d'avoir atteint le serveur.
Ce que le hors-ligne ne peut pas faire.
Si deux terminaux vendent le dernier article au même moment, sans réseau, le second sera refusé après coup : le client sera parti, et le ticket imprimé. Aucune architecture hors ligne n'évite cela, et prétendre le contraire serait faux.
L'application le dit plutôt que de le taire : elle nomme l'opération, donne son motif, et laisse la corriger.
Les rapports, eux, exigent le réseau. Leurs chiffres sont calculés par le serveur ; les recalculer sur le terminal donnerait deux résultats pour le même établissement, sans moyen de savoir lequel croire.
Sur quel matériel.
Terminal de caisse Android
Avec son imprimante intégrée. C'est le poste du comptoir.
Téléphone Android
Avec une imprimante 58 mm en Bluetooth, classique ou BLE.
Sans imprimante
Le ticket sort en PDF, à envoyer par message. Le même document dans les trois cas.