La feuille de Caisse

Posté le mercredi 10 février 2021
La feuille de Caisse

Benoît Gantaume, CTO d'Artisan développeur, a sorti une série "être un développeur en 2039" sur son podcast, qui m'a beaucoup plu.

Aujourd'hui, à l'inverse, remontons le temps. Je vais vous parler de mes débuts dans la programmation. Je l'évoquais dans mon premier article, mon premier gros projet fut en Visual Basic pour application d'Excel. Pour rappel, au restaurant où je travaillais, nous avions des fichiers qui étaient imprimés, pour être remplis à la main, à la suite de calculs. 

Je fus frappé par l'absurdité de la situation : imprimer des fichiers de tableurs, les premiers frameworks de tableaux numériques, et calculer à côté pour reporter à l'écrit les résultats dans le tableau. Je ne pouvais pas laisser ça tel quel sans rien faire. 

Par souci de clarté, j'ai choisi de regrouper ces fichiers dans des "classeurs" plus thématiques (n'oublions pas que ces fichiers sont appelés eux-même "classeurs" et possèdent leurs propres feuilles). Ensuite, j’attaque la création des liens entre la feuille de caisse, élément de synthèse du décompte de caisse, et les différentes sources de calculs. Une feuille pour les tickets restaurant, une pour les chèques… et ainsi de suite. Sur chacune de ces feuilles, il faut s’attarder à la modification des tableaux pour intégrer les formules, et au report des résultats sur la feuille de caisse. 

Jusque là, rien de transcendant. Le service terminé, la caisse étant faite, il suffit d'imprimer la synthèse pour l'archiver.

La difficulté vient le soir. Après le service du midi, il faut remettre une partie des tableaux à zéro pour faire le décompte du soir. L'idée vient donc d'utiliser la puissance des macros de Vba pour automatiser ces remises à un état initial. Mais une partie des données est nécessaire pour reporter le tout afin de finaliser la journée. Un archivage plus conséquent devient inévitable. 

Donc, chaque feuille servira d'archives pour son moyen de paiement. Les tickets restaurant sont soldés toutes les semaines ; les chèques, eux, sont encaissés au-delà d'un certain montant ; les chèques vacances sont gérés mensuellement… Il fallait donc adapter ces tableaux. Les dates devenaient une source de recherche. En effet, la date du jour étant en titre de la feuille de caisse, elle sert de référence pour les recherches de données dans les feuilles de moyen de paiement. 

Ensuite, le tableau des CRT (tickets restaurant) devait s'adapter en largeur à chaque ajout d'un nouveau montant, en triant également les colonnes pour simplifier la vérification manuelle, avant l'envoi hebdomadaire.[Image feuille CRT] Tout comme pour les ANCV, le report du total de chaque service doit être fait en fonction de la date et du moment de la journée. Les premières lignes de code s'écrivent dans les modules de chaque feuille, et un module général regroupe les actions globales, ou utilisées par plusieurs modules. C'est le mode de fonctionnement de Vba. 

Je faisais mes premières refactorisations 😏. En y repensant, j'ai agit machinalement, car je n'avais pas encore eu la formation nécessaire.

La gestion d'un service était finalisée, la journée se devait de sauvegarder ses données à son tour. Les nombres de couverts, chiffres d'affaires et moyens de paiement de chaque service devaient être archivés. Pour se faire, la programmation à la rescousse 😉 : Copie des chiffres dans un tableau récapitulatif mensuel, sur une autre feuille, d’un simple clic sur un beau “bouton de commande” ; impression de la fin de journée, et remise à zéro de la feuille de caisse. 

J’ai ajouté un nouveau bouton pour la r.a.z. de chaque moyen de paiement, ainsi que le changement de date sur les feuilles concernées pour passer à la période suivante. 

Les modules se multiplient, et le programme devient conséquent. Mais je ne me suis pas arrêté là…

Tout cet archivage peut ainsi servir à la confection du budget pour l'année suivante. Il suffit de prévoir le pourcentage de progression souhaité, et le tableau des jours, semaines et mois de n+1 est calculé par rapport aux chiffres enregistrés à chaque service. Et toujours d'un simple clic. 

Un programme de gestion d'exploitation était en place.

La gestion de stock suivi, avec le calcul du ratio de consommation qui résulte de la saisie de l'inventaire des articles et des achats ; avec une prévision des quantités de mise en place de chaque ingrédients en fonction des consommations de chaque plat vendu les mois précédents. 

Plus tard, avec ma découverte du développement Web et du framework Symfony, j'ai souhaité mettre en production un ERP basé sur mon expérience, et utilisable par des établissements qui n'ont pas la possibilité de s'offrir un tel outil. 

"Mais c'est une autre histoire…"

Crédit photo : Visuel du fichier Excel