Travailler hors ligne
SaleSprint fonctionne d’abord en local : une modification est écrite dans la base de données de l’appareil et rend la main immédiatement, que vous soyez en ligne, hors ligne ou que le serveur soit en panne. Un processus en arrière-plan l’envoie ensuite. La caisse n’attend jamais le réseau.
Cette conception a une conséquence qu’il faut comprendre avant tout le reste. Comme l’enregistrement n’attend pas le serveur, la réponse du serveur arrive plus tard. Une modification que le serveur refuse — une erreur de validation, une limite de forfait, une permission que vous n’avez plus — n’apparaît pas comme une erreur sur l’écran que vous utilisiez. Elle ressort dans le centre de synchronisation, parfois plusieurs minutes plus tard, sous la forme d’un élément en échec qui vous attend.
Ce qui fonctionne hors ligne
Section intitulée « Ce qui fonctionne hors ligne »L’écriture fonctionne hors ligne dans la plus grande partie du produit :
- Les produits et le catalogue — produits, variantes, tarifs, catégories, unités.
- Les contacts, les pistes et la fidélité.
- Les fiches du personnel, les postes, les feuilles de temps et les présences.
- Les entreprises et les emplacements.
- Les enregistrements des secteurs d’activité, tous métiers confondus — ordres de travail, ordonnances, tickets de réparation, adhésions, prêts sur gage et le reste.
- La vente à la caisse — enregistrer une vente, encaisser, valider, annuler.
- La plupart des opérations de stock — inventaires, transferts, réceptions, demandes, sorties de marchandises, assemblages de kits, coûts de revient, réservations, et tout le cycle des ventes en camionnette.
- La plupart des documents financiers — les en-têtes et leurs changements d’état.
Certains domaines exigent encore une connexion pour écrire :
| Toujours en ligne uniquement | |
|---|---|
| Achats | Tout le domaine — des demandes d’achat aux paiements fournisseurs. |
| Les documents de vente autres que la vente en caisse | Devis, retours, mises de côté, reliquats, RMA, reprises, livraisons. |
| Les sous-enregistrements de finance | Lignes de transactions, visites, écritures d’amortissement. |
| Les affectations d’utilisateurs et d’emplacements | En ligne par conception — un administrateur qui change qui voit quoi a besoin du serveur pour résoudre la portée au moment de l’écriture. |
C’est toujours le serveur qui décide des chiffres
Section intitulée « C’est toujours le serveur qui décide des chiffres »Enregistrer en local ne veut pas dire calculer en local. L’application ne réimplémente délibérément pas les règles de tarification, de coût, de taxe ou de comptabilité sur l’appareil — elle stocke exactement la requête qu’elle aurait envoyée et la rejoue telle quelle. Le serveur fait le travail qui fait foi à l’arrivée de la modification.
Ainsi, une vente hors ligne affiche les totaux du panier déjà affichés à l’écran, mais son numéro de document reste vide jusqu’à la synchronisation, et ses chiffres de coût et de marge sont des valeurs provisoires jusqu’à ce que le serveur les remplisse.
Une conséquence de plus : le stock n’est pas vérifié auprès du serveur pendant que vous êtes hors ligne, donc une vente peut prendre la dernière unité deux fois sur deux caisses. C’est permis volontairement — refuser une vente parce qu’un appareil n’atteint pas le serveur serait pire que de régulariser après coup. Les alertes de stock faible sont indicatives hors ligne.
Le trajet d’une modification en attente
Section intitulée « Le trajet d’une modification en attente »- Vous enregistrez. L’enregistrement est écrit dans la base de l’appareil et l’écran se met à jour aussitôt. Les enregistrements créés hors ligne reçoivent un identifiant local temporaire, pour avoir une clé stable avant même que le serveur les ait vus.
- La modification rejoint une file d’attente durable — la file d’attente d’envoi — qui survit à la fermeture et à la réouverture de l’application.
- Un processus vide la file dans l’ordre. Dès que le serveur accepte un enregistrement nouvellement créé, son identifiant temporaire est remplacé par le vrai, et tout ce que vous aviez mis en file d’attente dessus entre-temps est redirigé pour suivre. Une séquence création-puis-validation arrive donc dans le bon ordre.
Le processus tourne au démarrage de l’application, quand l’appareil retrouve la connectivité, juste après une modification, quand vous appuyez sur réessayer — et sur son propre minuteur. S’il reste du travail en file et que l’appareil est en ligne, il retente après 5 secondes, puis 15, 30, 60 et 120. Le minuteur se réinitialise dès qu’il y a du progrès et s’arrête quand la file se vide ou que l’appareil passe hors ligne : un serveur joignable mais en mauvaise santé se rétablit donc sans que personne n’appuie sur quoi que ce soit.
Quand un envoi échoue
Section intitulée « Quand un envoi échoue »Les échecs sont classés en deux catégories, et la différence décide si vous devez agir.
- À retenter — pas de réseau, un délai dépassé, une erreur serveur, une session expirée. La modification reste en file et est retentée selon le calendrier de reprise. Rien à faire.
- Rejeté — le serveur l’a refusée : validation, permission, limite de forfait, conflit. Elle est marquée en échec et ignorée à partir de là, pour qu’un mauvais enregistrement ne bloque pas tout ce qui le suit.
Une modification rejetée n’est pas jetée. Elle attend dans le centre de synchronisation que vous vous en occupiez — et c’est le seul endroit où l’on vous en parlera jamais.
Quand le serveur est injoignable
Section intitulée « Quand le serveur est injoignable »L’application surveille si le serveur répond réellement, au lieu de croire qu’un appareil connecté signifie un serveur en état de marche. Dès qu’une requête échoue, les lectures suivantes échouent immédiatement au lieu d’attendre chacune l’expiration d’un délai, et l’application sonde régulièrement pour repérer le retour du serveur.
En pratique, une panne du serveur vous coûte une requête lente, pas une requête lente par écran. Les écritures ne sont jamais bloquées par cela — elles partent dans la file d’attente d’envoi comme d’habitude.
Comment vérifier que tout est synchronisé
Section intitulée « Comment vérifier que tout est synchronisé »Faites-le avant de fermer, surtout après un moment passé hors ligne.
- Regardez le bouton de synchronisation dans la barre supérieure — la flèche circulaire. Pas de pastille signifie que rien n’attend.
- Cliquez dessus. S’il indique « Tout est synchronisé », c’est fini.
- Sinon, cliquez sur Tout voir pour ouvrir le Centre de synchronisation.
- Lisez la puce : Synchronisé, Synchronisation…, Hors ligne ou Erreur de synchronisation, et la ligne Dernière synchronisation en dessous.
Comment débloquer quelque chose
Section intitulée « Comment débloquer quelque chose »- Ouvrez le bouton de synchronisation et cliquez sur Tout voir.
- Les éléments en échec sont listés en premier, en rouge, avec l’explication du serveur en dessous.
- Cliquez sur Réessayer sur un élément, ou sur Tout réessayer en haut.
- Pour tout forcer, cliquez sur Synchroniser — la flèche circulaire de la barre d’outils.
- Si la puce indique Hors ligne, rien ne bougera tant que vous ne serez pas reconnecté. Les modifications en attente ne vont nulle part et ne risquent rien.
- Si un élément échoue encore et encore, la ligne rouge vous dit ce qui ne va vraiment pas — le plus souvent un champ manquant. Corrigez l’enregistrement depuis son propre écran. Un élément en échec est ignoré à chaque passage : il ne bloque donc jamais rien d’autre.
Une modification non synchronisée n’existe que sur un seul appareil : elle n’est pas sur le serveur, pas sur l’appareil de quelqu’un d’autre, et dans aucun rapport.
À lire aussi
Section intitulée « À lire aussi »- Rôles et permissions — les permissions retirées pendant que vous étiez hors ligne transforment les modifications en attente en rejets.
- Les forfaits et ce qu’ils débloquent — les limites de forfait sont appliquées sur le serveur : elles remontent donc à la synchronisation, pas au moment de l’enregistrement.
- Les documents et leurs liens — pourquoi un numéro de document n’apparaît qu’une fois que le serveur a vu l’enregistrement.