Réponse courte. Le stock n'est pas un chiffre, c'est une somme : une table de mouvements où l'on ajoute et où l'on n'efface jamais, réception, vente, réservation, transfert, ajustement, retour, chacun avec sa quantité signée, son document source, son auteur et son appareil. La quantité affichée est calculée depuis ce journal et vérifiée chaque nuit contre lui. Le disponible, ce qu'on peut encore vendre ou promettre, est le physique moins les réservations, et une réservation expire si elle n'est pas payée. Un transfert entre deux dépôts est deux mouvements avec un état en transit entre les deux. Un mouvement saisi hors ligne porte un identifiant créé sur l'appareil, et le serveur ignore ce qu'il a déjà reçu. Le dernier carton ne se vend pas deux fois parce que c'est la base de données qui le refuse, pas l'écran. Et l'inventaire tournant compte un peu chaque semaine, sans voir le chiffre système, pour produire la seule mesure qui compte : l'exactitude du mois. Six semaines, dont la première sans code.
Ce guide s'adresse au gérant d'un grossiste ou d'une chaîne de magasins qui ne fait plus confiance à son stock, au fondateur installé en France qui lit un chiffre à distance et ne peut pas aller compter, et au responsable qui vit la fermeture d'inventaire annuelle comme une punition. Il ne redit pas comment une application fonctionne sans réseau, décrit dans le guide sur le hors ligne, ni comment on reprend un ancien fichier de stock, décrit dans le guide sur la reprise de données ; il décrit ce qui se construit pour que le chiffre de l'application reste celui du rayon, et il prolonge notre page sur l'ingénierie logicielle.
Un produit, une journée : le stock est une colonne de mouvements
La question qu'on nous pose est toujours la même : « pourquoi le stock de l'application est faux ? ». La réponse est presque toujours la même aussi : parce que l'application stocke une quantité, et qu'une quantité stockée se modifie, par un employé, par un bug, par une synchronisation qui passe deux fois. Une fois modifiée, elle ne porte plus la trace de ce qui l'a produite, et on ne peut plus dire si c'est elle ou le rayon qui a raison. La figure suit un produit pendant une journée dans un dépôt.
Six mouvements, six documents, trois personnes, deux appareils. La réception du matin vient d'un bon de réception scanné au lecteur du dépôt ; la réservation de 9 h 12 vient d'une commande du portail B2B, et elle fait baisser le disponible sans qu'aucun carton n'ait bougé, parce que ces 12 unités sont promises ; la vente du comptoir vient d'un ticket de caisse ; le transfert de 11 h 20 sort 24 unités qui ne sont plus ici et pas encore là-bas ; l'ajustement de 14 h 02 vient d'un comptage, avec un motif obligatoire, et c'est un mouvement comme les autres ; à 16 h, une réservation vieille de 48 heures et jamais payée expire toute seule, et le disponible remonte.
Le chiffre de fin de journée, 66 physiques, 12 réservés, 54 disponibles, n'est écrit nulle part : c'est la somme de la colonne. Si quelqu'un doute, on relit la colonne. Si la colonne et le rayon divergent, on compte et on ajoute un ajustement avec un motif, et l'écart devient une information : telle personne, tel produit, tel motif, telle fréquence. C'est la différence entre un stock qu'on croit sur parole et un stock qu'on peut expliquer, et c'est ce que les gérants qui lisent leur stock depuis la France, selon le guide sur la gestion à distance, demandent en premier.
«Le stock n'est jamais « modifié » : on ajoute un mouvement, et la quantité est la somme. Un chiffre qu'on peut taper est un chiffre qu'on ne peut pas expliquer.»
Un stock juste, en cinq couches
Le journal est la couche qui compte, mais il ne suffit pas : il faut une saisie qui produise des mouvements sans réseau, des quantités de lecture rapides, des règles que la base de données fait respecter, et une mesure.
Saisie. Le lecteur de codes-barres ou la caméra du téléphone à la réception, en caisse, au transfert et au comptage ; chaque geste produit un mouvement daté, signé, avec un identifiant unique créé sur l'appareil. C'est cet identifiant qui permet d'écrire le mouvement sans réseau et de le rejouer plus tard sans doublon, selon la mécanique décrite dans le guide sur le hors ligne. Journal de mouvements. Une table en ajout seul : type, quantité signée, produit, lot, emplacement, document source, auteur. Le stock de chaque produit à chaque instant est une somme de cette table.
Quantités calculées. Physique, réservé, en transit et disponible par produit et par emplacement, tenus à jour à chaque mouvement pour que la lecture soit instantanée, et recalculés chaque nuit depuis le journal ; si les deux divergent, c'est la vue qu'on corrige, jamais le journal. Règles. Une réservation expire sans paiement ; un transfert est deux mouvements avec un état en transit ; un ajustement exige un motif et un droit, selon le guide sur les rôles et le journal d'audit ; et deux ventes simultanées du dernier carton ne passent pas toutes les deux, parce que la décrémentation se fait sous verrou dans la base de données, qui refuse une quantité négative. Mesure. Inventaire tournant par classe, écarts avec motif, exactitude du mois par dépôt, et des alertes de rupture calculées sur le disponible, pas sur le physique, parce qu'un produit à 20 unités physiques dont 20 réservées est en rupture.
Un transfert entre deux dépôts, en six étapes
Dès qu'une entreprise a deux dépôts, ou un dépôt et des magasins, le transfert devient la première source de stock faux, parce qu'il est presque toujours saisi en une seule fois : à la sortie, et le stock du dépôt d'arrivée est faux jusqu'à ce que quelqu'un pense à le saisir ; ou à l'arrivée, et le stock total est faux pendant le trajet.
Préparer la liste des produits, quantités et lots sous un numéro de transfert. Scanner la sortie carton par carton, ce qui écrit un mouvement de sortie daté et signé. Marquer en transit : la marchandise n'est ni dans le dépôt A ni dans le B, et l'application le dit ; c'est l'étape que les applications sautent. Scanner l'entrée carton par carton à l'arrivée, ce qui écrit un mouvement d'entrée dans B. Constater l'écart : sorti 24, entré 23, l'écart est un mouvement d'ajustement avec un motif, perte en route, erreur de comptage au départ, carton livré au mauvais magasin, et il est rattaché au transfert et au chauffeur. Clore : le numéro devient définitif.
Le même schéma sert au stock qui voyage dans le camion d'un commercial, selon le guide sur la prévente terrain, et au stock qui change de température en route, selon le guide sur la chaîne du froid : un emplacement « véhicule » est un dépôt comme un autre, et ce qui y entre et en sort est un mouvement.
L'inventaire tournant : compter un peu chaque semaine
L'inventaire annuel ferme l'entreprise un ou deux jours, mobilise tout le monde, produit un chiffre juste le soir même et faux dès la semaine suivante. L'inventaire tournant fait l'inverse : compter un peu chaque semaine, les produits qui comptent le plus d'abord, et mesurer en continu si le stock est fiable.
Les références sont classées par valeur annuelle : la classe A, souvent une petite part des références qui porte l'essentiel de la valeur, est comptée chaque semaine ; la B chaque mois ; la C chaque trimestre, une allée à la fois. Le partage 20/80 est une règle de pratique des référentiels de gestion des stocks, pas une loi ; chaque entreprise ajuste ses seuils. Trois règles font tenir le comptage : on compte sans voir le chiffre système, sinon on recopie ; chaque écart reçoit un motif, casse, réception mal saisie, vente non saisie, vol, et devient un mouvement d'ajustement signé ; et l'exactitude du mois, la part des lignes comptées justes, est suivie contre un objectif écrit, par dépôt et par personne.
C'est cette exactitude qui dit si le stock est fiable, et c'est elle qui apparaît sur le tableau de bord du gérant, selon le guide sur le tableau de bord temps réel ; les motifs d'écart récurrents disent où agir : une réception mal saisie trois fois dans le mois est un problème de lecteur ou de formation, une vente non saisie récurrente sur le même produit est un problème de caisse. Les quantités de la figure sont un exemple construit.
«On compte sans voir le chiffre système, chaque écart reçoit un motif, et l'exactitude du mois est la seule mesure qui dit si le stock est fiable.»
Six raisons d'un stock faux, et ce que l'application fait
Les six raisons qu'on rencontre dans presque toutes les applications qu'on reprend, et la construction qui les règle.
Les deux premières lignes se règlent par le journal et par la base de données : une quantité qu'on ne peut pas modifier, et un verrou qui refuse la seconde vente du dernier carton au lieu d'écrire un stock négatif. Les deux suivantes se règlent par des règles d'expiration et d'état : une réservation qui se libère toute seule, et un transfert qui a un état en transit. Les deux dernières se règlent par l'identifiant d'appareil, qui empêche le double comptage d'une réception rejouée, et par la fiche produit, qui rattache tous les codes-barres à une seule référence avec des unités et des facteurs. Le code-barres lui-même ne dit rien du stock : un préfixe GS1 613 identifie une entreprise enregistrée auprès de GS1 Algérie, pas l'origine du produit, et le carton et l'unité portent des codes différents ; la fiche produit est ce qui les relie. Aucune des six lignes ne se règle par un employé plus attentif.
Vu ailleurs : les référentiels de gestion des stocks, et ce qui se transpose
Deux idées des référentiels de gestion des stocks se transposent telles quelles. La première est le journal en ajout seul : les systèmes qui tiennent un stock juste à grande échelle n'écrivent jamais une quantité, ils écrivent des transactions et calculent la quantité ; c'est la même idée qu'un grand livre comptable, et c'est ce que les bases de données savent faire de mieux. La seconde est l'inventaire tournant par classes, qui remplace la fermeture annuelle par un comptage continu et mesure l'exactitude des enregistrements ; les objectifs courants se situent au-dessus de 95 % de lignes justes, et chaque entreprise écrit le sien.
Ce que ces référentiels ne disent pas : vos types de mouvements, vos unités et facteurs, qui a le droit d'ajuster, et combien de temps une réservation vit avant d'expirer. La première semaine du projet y répond, et c'est le gérant qui signe.
Les règles d'un stock qui reste juste
Six règles, écrites la première semaine. La quantité n'est jamais modifiable : on ajoute un mouvement. Chaque mouvement a une source, un auteur, un appareil et un identifiant créé sur l'appareil. Le disponible est le physique moins les réservations, et les alertes se calculent sur le disponible. Une réservation expire à une heure écrite. Un transfert est deux mouvements avec un état en transit, et l'écart à l'arrivée est un mouvement avec un motif. L'exactitude du mois est mesurée par dépôt et par personne, et revue chaque mois.
Et une règle de méthode : le stock existant entre dans la nouvelle application comme un mouvement d'ouverture par produit et par emplacement, daté et signé, après un comptage, jamais comme un chiffre recopié de l'ancien logiciel ; la reprise est décrite dans le guide sur la migration d'un vieux logiciel.
Six entreprises, et le mouvement qui manquait
Six situations composées à partir de projets que nous rencontrons ; les noms sont génériques et les chiffres sont des exemples.
- Un grossiste alimentaire à Sétif, un dépôt et trois magasins. Le stock total était faux chaque semaine du montant des transferts en cours. La construction : transfert en deux temps, état en transit visible, écart à l'arrivée rattaché au chauffeur. Au troisième mois, les écarts récurrents sur un même trajet ont désigné un problème de chargement, pas de vol.
- Une chaîne de prêt-à-porter à Alger, boutique en ligne et quatre magasins. Le dernier article d'une taille se vendait en ligne et en magasin à la même heure. La construction : disponible réservé à la commande, décrémenté sous verrou à la validation, réservation expirée à 48 heures sans paiement. Les annulations pour « article indisponible » ont cessé.
- Une pharmacie à trois officines. Lots et dates de péremption tenus dans Excel, stock de l'application ignoré. La construction : mouvements par lot, inventaire tournant de classe A chaque semaine, alertes de péremption calculées sur le journal ; le cas est décrit dans le guide sur la pharmacie à trois officines.
- Un distributeur de boissons à Oran, douze camions. Le stock des camions n'existait pas ; les écarts se découvraient en fin de mois. La construction : chaque camion est un emplacement, chargement et déchargement sont des mouvements scannés, l'écart du soir est un ajustement rattaché au chauffeur.
- Un fondateur à Lyon, boutique de cosmétiques à Alger. Il lisait un stock qu'il ne pouvait pas vérifier. La construction : journal consultable à distance, exactitude du mois sur le tableau de bord, photos de comptage attachées aux ajustements.
- Un quincaillier à Constantine, un même produit sous trois codes. Carton, unité et ancien code interne, trois lignes de stock fausses. La construction : fiche produit avec unités et facteurs, tous les codes rattachés, stock lu en unités, étiquettes réimprimées selon le guide sur l'impression des étiquettes.
Le calendrier 2027
Six semaines pour une entreprise qui a déjà une caisse ou un portail de commande ; la première semaine se passe sans code.
Semaine 1, règles et fiche produit : types de mouvements, unités et facteurs, codes-barres rattachés, emplacements, qui a le droit d'ajuster, classes A/B/C et objectif d'exactitude, signés par le gérant. Semaine 2, journal et quantités : table de mouvements en ajout seul, quantités calculées par emplacement, recalcul de nuit, et le stock existant repris comme mouvement d'ouverture après comptage ; dès cette semaine, plus aucune quantité n'est modifiable. Semaine 3, saisie et hors ligne : réception, vente et retour au lecteur ou à la caméra, identifiants d'appareil, file hors ligne rejouée sans doublon.
Semaine 4, réservations et transferts : réservation avec expiration, verrou sur le dernier carton, transfert en deux temps. Semaine 5, inventaire tournant : feuilles de comptage par classe, saisie à l'aveugle, écarts avec motif, exactitude du mois par dépôt. Semaine 6, alertes et revue : ruptures calculées sur le disponible, écarts récurrents par produit et par personne, première revue mensuelle. Chaque semaine se termine par une démonstration, selon le guide sur la livraison sans casse.
Ce qui fait échouer un stock juste
Cinq causes, vues dans des applications qu'on reprend. Une quantité modifiable, « pour les cas urgents » : au bout d'un mois, tous les cas sont urgents, et le journal ne sert plus à rien. Un disponible confondu avec le physique : la boutique vend ce qui est déjà promis au portail B2B, et le client apprend à la livraison qu'il n'y en a plus. Un transfert saisi une fois : le stock total est faux pendant tous les trajets. Une synchronisation sans identifiant : chaque reprise de réseau double une réception. Un inventaire annuel seul : le chiffre est juste un soir par an.
Et une cause de méthode : reprendre le stock de l'ancien logiciel sans le compter. Le chiffre repris est faux dès le premier jour, et l'exactitude du premier mois le dit ; mieux vaut compter une fois, en classe A d'abord, et entrer des mouvements d'ouverture justes.
Questions fréquentes
Les questions que posent les gérants et les fondateurs quand ils nous décrivent un stock faux.
- Pourquoi le stock de notre application est-il toujours faux ?
- Parce que l'application stocke une quantité et la laisse modifier : par un employé, par un bug, par une synchronisation qui passe deux fois. Une quantité modifiée ne porte plus la trace de ce qui l'a produite. La construction qui règle cela est un journal de mouvements en ajout seul, dont la quantité est la somme ; un écart devient un ajustement avec un motif, et le chiffre redevient explicable.
- Quelle est la différence entre le stock physique et le disponible ?
- Le physique est ce qui est dans le dépôt ; le disponible est ce qu'on peut encore vendre ou promettre, c'est-à-dire le physique moins les réservations en cours et, selon les cas, les unités en transit. Une commande du portail B2B réserve sans qu'aucun carton ne bouge ; la boutique doit vendre sur le disponible, et les alertes de rupture se calculent sur le disponible.
- Comment éviter de vendre deux fois le dernier article ?
- En faisant tenir la règle par la base de données, pas par l'écran : le disponible est réservé puis décrémenté sous verrou dans une transaction, et la base refuse une quantité négative. La seconde vente est refusée au moment de valider, au lieu d'être enregistrée et annulée à la livraison. L'écran peut afficher un stock périmé de quelques secondes ; la base, non.
- Comment gérer le stock entre plusieurs dépôts ?
- Un transfert est deux mouvements, une sortie scannée au départ et une entrée scannée à l'arrivée, avec un état « en transit » entre les deux pour que la marchandise soit quelque part. L'écart entre sorti et entré est un ajustement avec un motif, rattaché au transfert et au chauffeur. Un camion de commercial ou un véhicule de livraison est un emplacement comme un autre.
- Et si le dépôt n'a pas de réseau ?
- Le lecteur ou le téléphone écrit le mouvement localement, avec un identifiant unique créé sur l'appareil, et l'envoie quand le réseau revient. Le serveur ignore un identifiant déjà reçu, donc une réception rejouée ne compte pas deux fois. C'est la même mécanique que pour toute application hors ligne, décrite dans notre guide dédié.
- Faut-il encore faire un inventaire annuel ?
- L'inventaire tournant le remplace dans la pratique : les références de classe A comptées chaque semaine, les B chaque mois, les C chaque trimestre, sans voir le chiffre système, chaque écart avec un motif. L'exactitude du mois, la part des lignes comptées justes, mesure en continu si le stock est fiable ; un comptage complet reste possible quand une obligation ou un commissaire aux comptes le demande.
- Combien de temps pour rendre le stock juste ?
- Six semaines dans le calendrier type : une pour écrire les règles et la fiche produit, une pour le journal et la reprise du stock comme mouvement d'ouverture, une pour la saisie et le hors ligne, une pour les réservations et les transferts, une pour l'inventaire tournant, une pour les alertes et la première revue. Le délai dépend du nombre d'emplacements et de l'état de la fiche produit existante.