← Retour au portail

Méthodologie & sources de données

Comment fonctionnent les outils de home.grupodomingo.io : d'où viennent les chiffres, où vivent les données, comment ils sont calculés et qui peut y accéder. — Mise à jour : 26 septembre 2026.

1 Vue d'ensemble

Tous les outils internes de Grupo Domingo et de Rosario sont réunis à une seule adresse, home.grupodomingo.io, avec une seule connexion Google et une seule liste d'accès.

Pages
un dossier par outil · hébergées par Cloudflare Pages, publiées depuis GitHub
→
Connexion unique
compte Google · projet Firebase admin-5b42f
→
Liste d'accès
qui a droit à quel outil, à quel niveau
→
Données
base Firestore · Google Sheets via 2 Workers · scripts Apps Script
OutilAdresseOù vivent les donnéesQui y accède
Portail/lit les autres outils (aucune donnée propre)toute personne de la liste d'accès
Dashboard/dashboard/Google Sheet « P&L Dashboard », via le Worker du dashboarddroit Dashboard (tout / lecture)
Privatisations/privatisations/Firestore (demandes, config) + scripts Gmail / Agenda / Qontodroit Privatisations
Réconciliation/reconciliation/Google Sheet de caisse, via le Worker de caissedroit Réconciliation (Théo, Adrien)
Clôture de caisse/caisse/même Sheet de caisse (onglet « Clôtures »)code PIN, sans compte Google
Maintenance/maintenance/Firestore (tickets, equipements…)droit Maintenance (direction / staff)
Admin/admin/Firestore (cards) + Google Drivedroit Admin (4 niveaux)
Rapport quotidien/summary/rien n'est stocké : envoi par e-mail (EmailJS)formulaire libre
Accès/acces/Firestore (allowlist)Admin complet

Toutes les pages sont publiques au sens où leur code peut être lu par n'importe qui : elles ne contiennent donc aucune donnée (client, salarié, chiffre) ni aucun secret. Les données ne sont renvoyées qu'après vérification de la connexion, côté serveur.

2 Connexion, accès & sécurité

Une seule connexion

On se connecte une fois avec son compte Google (projet Firebase admin-5b42f) ; la connexion est reprise par tous les outils du même appareil. Un compte Google est nécessaire : une adresse non Gmail (Hotmail, etc.) doit d'abord être rattachée à un compte Google.

La liste d'accès

Une fiche par adresse, gérée depuis la page Accès. C'est la seule source des droits, pour tous les outils.

Qui vérifie, et quand

OutilVérificationDélai d'effet d'une coupure
Maintenance, Privatisations, Admin, Accèsrègles de la base Firestore, à chaque lectureimmédiat
Dashboard, bandeau du portailWorker du dashboard : relit la fiche à l'ouverture, puis session signée de 12 hà la prochaine ouverture (12 h au plus)
Réconciliation, tuile du portailWorker de caisse : relit la fiche, mémorisée 5 min5 min au plus
Clôture de caissecode PIN vérifié par le Worker à chaque appelau changement du code

La vérification faite dans la page ne sert qu'à afficher un message clair : la vraie barrière est toujours côté serveur (règles de la base ou Worker), car le code d'une page peut être modifié par n'importe qui.

Protections particulières

Hébergement et mises à jour

Le code de tous les outils est dans un seul dépôt GitHub privé (grupo-domingo). Cloudflare Pages publie le dossier site/ environ une minute après chaque envoi ; chaque version reste consultable et peut être rétablie. Les Workers Cloudflare et les scripts Apps Script, eux, se mettent à jour à la main, par copier-coller. Les anciennes adresses (dashboard.grupodomingo.io, *.web.app…) redirigent vers home.grupodomingo.io.

Sur téléphone, chaque outil s'installe sur l'écran d'accueil (Safari ▸ Partager ▸ Sur l'écran d'accueil) ; le bouton ← Portail, en bas à gauche, ramène à l'accueil.

3 Portail d'accueil

Une vue d'ensemble de la journée. N'affiche que les outils auxquels la personne a droit, et se rafraîchit seul toutes les 10 minutes (et au retour sur l'onglet).

CA semaine = même définition que le dashboard (Lightspeed + privatisations retenues). Période : du lundi au dernier jour connu (le CA d'un jour arrive le lendemain), comparée aux mêmes jours de la semaine précédente. Écart affiché en % et en €. Le lundi matin, avant les premiers chiffres, on montre la semaine passée complète contre celle d'avant.

Ticket moyen = CA ÷ (couverts + convives des privatisations retenues), sur la même période ; écart en % et en €.

Note Google = moyenne de tous les avis (même calcul que le dashboard), à 3 décimales ; écart en points avec la note à la fin de la semaine passée.

Tuile Privatisations = nombre de fiches au statut « Nouvelle demande » ; nombre de privatisations confirmées à venir (date ≥ aujourd'hui) et date de la prochaine.

Tuile Réconciliation = espèces mises au coffre depuis le dernier dépôt (inclus), date et montant de ce dépôt ; alerte au-delà de 7 jours sans dépôt.

Tuile Maintenance = tickets ouverts (tout sauf Résolu, Facturé, Sans suite), dont « à trier » ; pastille rouge s'il y a un ticket urgent.

4 Dashboard · le flux

Six sources alimentent un Google Sheet « pivot » privé, que le dashboard lit à travers un Cloudflare Worker.

Sources
Lightspeed · Skello · Avis Google · Privatisations · Pennylane · Factures de livraison
→
Apps Script
scripts Google qui parsent & rangent
→
Google Sheet
onglets « pivot » normalisés · classeur privé
→
Worker
vérifie qui demande, puis relaie
→
Dashboard
page HTML derrière la connexion unique

5 Dashboard · sources de données

Lightspeed Restaurant — quotidien, par e-mail

Chaque jour, Lightspeed envoie un e-mail « Votre rapport Lightspeed Restaurant » (depuis no.reply@lightspeedhq.com) avec plusieurs fichiers .xls en pièce jointe. Un Apps Script les récupère automatiquement.

FichierContientUtilisé pour
shift_reportCA net midi / soir / total, couverts, ticket moyenKPI principaux
business_exportCA par catégorie (cuisine, tapas, alcool, boissons, bouteilles), modes de paiementCuisine vs Boissons, ticket food/boissons
product_breakdownVentes par articleTop 10 produits
cancellationsAnnulations (montant, motif, article…)Bloc Annulations
discountsRabais % et offerts (par catégorie / produit)Bloc Annulations (Rabais / Offert)

Skello — hebdomadaire, export manuel

Export .xlsx des heures travaillées. On n'utilise que l'onglet « détails » : une ligne par employé / par jour / par poste, avec la colonne Heures Travaillées (déjà nette de pause). Le poste de chaque ligne est classé en Salle ou Cuisine via une table de correspondance.

Comment l'obtenir : dans Skello → Rapports → Télécharger par semaine, puis déposer le fichier dans le dossier Drive Skello ↗ (chaque lundi, pour la semaine précédente). Le script majHeuresRH le lit automatiquement, remplit l'onglet Heures_RH, puis déplace le fichier traité dans le sous-dossier « Traités ».

Avis Google — quotidien, via Outscraper

L'API publique Google Places ne renvoie que 5 avis et la note arrondie à 0,1. Pour avoir le détail par jour, on passe par Outscraper (API tierce, payante à l'avis) : un Apps Script récupère les avis récents et écrit dans l'onglet Note_Jour la répartition par étoile de chaque jour (colonnes Nb_1…Nb_5) en plus de la note moyenne et du nombre d'avis. La note affichée dans le dashboard est ensuite recalculée par nos soins à partir de ces comptages (Σ étoiles ÷ Σ avis), et les graphes ventilent les avis par étoile.

Économie de crédits : la synchro quotidienne n'utilise le paramètre cutoff que pour ne récupérer que les avis postérieurs au dernier jour déjà enregistré (0–3 avis/jour au lieu de 50). Un backfillNoteJour reconstruit tout l'historique en une fois (coûteux, à lancer une seule fois).

Privatisations — quotidien, via l'API de l'outil de privatisations

Depuis le 25 août 2026, la source n'est plus un Google Sheet saisi à la main mais l'API de l'outil de suivi des privatisations, interrogée chaque jour par majPrivatisations qui remplit l'onglet Privatisations_Detail. On y trouve : date de l'événement, client, créneau, type (Privatisation / Formule groupe), nombre de convives, CA cuisine / alcools HT, et le détail des règlements avec leur origine. Seules les demandes « Confirmé » et déjà passées sont comptées (voir §8).

L'ancien Sheet portait des dates sans année et un marqueur « Lightspeed » posé au jugé. L'API porte le statut réel et l'origine de chaque paiement : l'exclusion des prestations déjà encaissées repose donc sur la donnée, et non plus sur une convention.

Livraisons fournisseurs — quotidien, lecture des PDF reçus par e-mail

Les relevés fournisseurs n'entrent dans Pennylane qu'une fois par mois : le coût matière réel est donc invisible pendant le mois. importFacturesLivraisons lit chaque jour les factures PDF reçues de Primeur Mondial, Natoora, Beaugrain, Broko, Armara et Boréal Hygiène, les fait extraire par l'API Claude (modèle Haiku, ~0,35 $/mois) et écrit l'onglet Livraisons_Detail.

Ces chiffres ne s'additionnent JAMAIS à ceux de Pennylane. Ils l'anticipent. Le P&L reste alimenté par Pennylane à partir des relevés mensuels ; les livraisons servent au bouton LIV des Ajustements et à l'onglet Livraisons, tous deux indicatifs.

Pennylane — quotidien, via API

La comptabilité Pennylane fournit les coûts du P&L : factures fournisseurs, catégorisées par sous-catégorie analytique. Un Apps Script les synchronise chaque jour et les agrège (voir §9). Un outil auditFactures permet de vérifier que toutes les factures de la période sont bien comptées (voir §9).

6 Dashboard · le Google Sheet « pivot »

Un Google Sheet « pivot » unique, désormais privé : seul le Cloudflare Worker y accède, avec ses propres identifiants (voir §2).

OngletGranularitéAlimenté par
KPI_Journaliers1 ligne / jourScript Lightspeed
Top10_Journaliers1 ligne / produit / jourScript Lightspeed
Google_Rating1 ligne / jour (note globale)Script Lightspeed (Places API) — secondaire
Note_Jour1 ligne / jour · note moyenne, nb avis, répartition par étoile (Nb_1…Nb_5)Script Outscraper
Heures_RHDate · Équipe · HeuresScript Skello (majHeuresRH)
Annulations_Detail1 ligne / article annulé (Somme ≠ 0)Script Lightspeed
Rabais_Detail1 ligne / produit · Type Rabais ou OffertScript Lightspeed
Pennylane_Facturesmémoire brute : 1 ligne / facture × sous-catégorieScript Pennylane (synchro)
Couts_MensuelsMois × Ligne × Sous-catégorie × FournisseurAgrégats Pennylane
Factures_MoisLigne × Fournisseur × Mois (7 derniers mois)Agrégats Pennylane
Couts_Historiquecoûts ≤ mai 2026 (détail sous-cat), figé depuis l'ExcelImport Excel (une fois)
Mapping_CategoriesSous-catégorie → Ligne P&L → Source (Auto/Manuel/Exclu)Manuel
Saisies_Manuellesclé → valeur (ajustements du P&L, partagés)Cloudflare Worker (dashboard)
Privatisations_Detail1 ligne / événement confirmé · Type, Origine, et colonnes _RetenuScript majPrivatisations (API)
Livraisons_Detail1 ligne / facture de livraison lue par e-mailScript importFacturesLivraisons
Audit_Facturesfactures à traiter (non comptées / à classer)Outil auditFactures

Tout est désormais dans ce seul classeur : le Sheet externe des privatisations n'est plus lu depuis le 25 août 2026.

7 Dashboard · les scripts (Apps Script)

Importateur Lightspeed quotidien

Déclencheur chaque matin (idéalement 10–11h, quand l'e-mail de la veille est arrivé). Il cherche les e-mails Lightspeed des 4 derniers jours, regroupe les pièces jointes .xls par date de rapport, et importe chaque jour encore absent (il rattrape donc automatiquement un jour manqué). Les fichiers sont convertis via l'API Drive, parsés, et ajoutés (jamais d'écrasement) dans KPI_Journaliers, Top10_Journaliers, Annulations_Detail et Rabais_Detail. Un anti-doublon (date normalisée en texte) + un verrou empêchent d'importer deux fois le même jour, même si deux exécutions se chevauchent. Il met aussi à jour la note Google globale (Google_Rating). Un utilitaire dedupeDailyTabs nettoie d'éventuels doublons déjà présents.

Note Google par jour (Outscraper) — majNoteJour

Déclencheur quotidien. Appelle l'API Outscraper avec le place_id, récupère les nouveaux avis (paramètre cutoff pour économiser les crédits), agrège la répartition par étoile de chaque jour et met à jour Note_Jour (upsert : seuls les jours concernés sont réécrits).

Heures Skello (majHeuresRH)

Déclencheur hebdomadaire (lundi). Scanne le dossier Drive Skello ↗, lit l'onglet « détails » de chaque nouveau fichier, croise chaque poste avec la table Salle / Cuisine, somme les heures par jour et par équipe, écrit Heures_RH, puis déplace le fichier traité dans « Traités ».

Synchro Pennylane (dailyPennylane)

Déclencheur quotidien. Enchaîne : synchro incrémentale des nouvelles factures, re-scan des 3 derniers mois (pour capter les changements d'imputation, qui ne modifient pas l'updated_at), puis recalcul des agrégats Couts_Mensuels et Factures_Mois (voir §9).

Privatisations (majPrivatisations)

Déclencheur quotidien. Interroge l'API de l'outil de privatisations, applique les règles d'exclusion du §8 et réécrit entièrement Privatisations_Detail. diagPrivatisations fait le même calcul sans rien écrire et affiche l'impact mois par mois — à lancer avant toute bascule.

Factures de livraison (importFacturesLivraisons)

Déclencheur quotidien, vers 20h-21h. Cherche dans Gmail les PDF des six fournisseurs suivis sur une fenêtre de 45 jours, écarte les relances et les relevés redondants avant tout appel payant, puis fait lire chaque facture par l'API Claude. Double anti-doublon : identifiant du message + nom du fichier, puis fournisseur + numéro + type. backfillLivraisons3Mois rattrape trois mois d'un coup ; diagLivraisonsDates et runListerPieces diagnostiquent sans rien dépenser.

Un seul projet Apps Script (« P&L Dashboard ») héberge tous les scripts et la Web App d'ingestion. Le bouton ⟳ Tout actualiser du dashboard lance Lightspeed, Skello, Pennylane, la note Google et les privatisations ; les livraisons en sont volontairement exclues, car leur lecture de PDF se donne 4 min 30 et ferait dépasser la limite de 6 minutes d'Apps Script — elles gardent leur propre déclencheur.
Pannes silencieuses — le risque principal de ce montage. Une ingestion qui ne trouve rien se termine « en succès » : le symptôme n'apparaît que des semaines plus tard, sur un chiffre plausible mais faux. Quatre cas vécus (clé API écrasée, onglet jamais rafraîchi, bouton confirmant sans vérifier, requête Gmail malformée). Des alertes par e-mail ont donc été ajoutées sur chaque point : clé manquante, API refusée, rapport Lightspeed incomplet, aucun e-mail reçu le matin, et plusieurs passages consécutifs sans la moindre écriture.

8 Dashboard · règles de calcul

CA net = CA Lightspeed + CA des privatisations confirmées et déjà passées. Le « déjà passé » s'arrête au dernier jour de données réelles Lightspeed (pour ne pas compter d'événements futurs).

Événementiel — la règle anti-double-comptage. Une prestation déjà encaissée en salle est dans Lightspeed : la recompter doublerait le CA. Deux critères, dans cet ordre.
1. Si un règlement est renseigné, c'est son origine qui tranche : Caisse → exclu (déjà dans Lightspeed), Facture → compté. Règlement mixte : répartition au prorata du TTC encaissé en caisse.
2. Si aucun règlement n'est renseigné, c'est le type qui décide : une Formule groupe est servie en salle et tapée dans Lightspeed comme une table normale → exclue ; une Privatisation est facturée à part → comptée.
L'exclusion est visible et non silencieuse : les lignes concernées figurent dans Privatisations_Detail avec 0 € dans les colonnes _Retenu, et leur Type et Origine sont affichés. Le dashboard ne lit que les colonnes _Retenu.

Couverts (KPI) = total Lightspeed. Pour les tickets moyens des répartitions ci-dessous, les convives des événements (# pax) sont en revanche ajoutés, répartis midi / soir.

Répartitions du CA — Déjeuner/Dîner, Cuisine/Boissons et Clients/Événements agrègent Lightspeed + privatisations et somment toutes les trois au CA total (clients + événements). Le créneau déjeuner/dîner des privatisations vient de la colonne dédiée du Sheet Privatisations ; cuisine/alcool de leurs colonnes HT.

Ticket moyen = CA net ÷ couverts. Les tickets des répartitions sont calculés sur ces totaux agrégés : TM Déjeuner = CA déjeuner (Lightspeed + événements midi) ÷ couverts déjeuner, etc. ; TM Événement = CA événements ÷ # pax ; TM Clients = CA Lightspeed ÷ couverts Lightspeed.

Taux de remplissage = couverts ÷ (89 × nombre de services réellement écoulés). Capacité de référence : 89 couverts par service, 2 services / jour. Un jour où seul le déjeuner a eu lieu compte donc pour 1 service (89), pas 2.

CA annualisé = CA net ÷ nombre de jours × 360.

Note Google actuelle = recalculée par nos soins à partir de la répartition par étoile de Note_Jour : Σ(étoile × nb) ÷ Σ(nb) sur tous les avis, affichée à 3 décimales (avec plus de 1 300 avis, un avis de plus ne déplace la moyenne que d'environ 0,002). Les graphes ventilent le nombre d'avis par étoile (1★→5★). Évolution hebdo = note cumulée à la fin de cette semaine − note cumulée à la fin de la semaine précédente, en points.

Annulations = somme des lignes du fichier cancellations dont le montant ≠ 0 (les « comptes rappelés » à 0 sont ignorés) ; montant compté en valeur absolue.

RH · CA par heure = CA du jour ÷ heures travaillées (total, et par équipe salle / cuisine), les heures Skello étant réparties par poste.

9 Dashboard · compte de résultat (P&L) & ajustements

Le sous-onglet P&L mensuel reconstitue un compte de résultat : Chiffre d'affaires → F&B cost → Staff cost → Marge brute → coûts d'exploitation (variables, fixes, loyer, maintenance, non catégorisé) → EBITDA → Remboursement prêts → Cash-flow → Amortissements → Cash net. Trois colonnes : les deux derniers mois clôturés et le mois calendaire en cours — seul ce dernier est mis en surbrillance « projeté ». Un mini-calendrier (échelle mois) et des flèches permettent de remonter dans le passé ; un clic sur une ligne déplie le détail par sous-catégorie, puis par fournisseur.

Origine des chiffres

Le modèle « valeur retenue » (onglet Ajustements)

Le P&L affiche exactement les valeurs saisies dans l'onglet Ajustements — ni plus, ni moins, sans clé de répartition. Pour chaque fournisseur (mois Pennylane) ou sous-catégorie (mois clôturé), la valeur retenue est modifiable : par défaut le réel (Pennylane à date extrapolé, ou Excel pour un mois clôturé), et 0 = exclu. Une catégorie = la somme de ses lignes. On choisit n'importe quel mois via le mini-calendrier ; pour un mois clôturé, la même structure de saisie que les mois Pennylane est proposée (ventes, salaires, loyer, prêts, stock), pré-remplie avec les chiffres d'origine.

Chaque fournisseur porte un tag de sous-catégorie et est ventilé dans ses vraies sous-catégories au prorata du réel Pennylane (un fournisseur multi-catégories, ex. FOODFLOW, est réparti, pas forcé dans une seule case). La colonne « Factures à date » reste un miroir dynamique de Pennylane (jamais figée). Une croix rouge retire de la liste un fournisseur qu'on ne réutilisera plus (ses valeurs passées restent dans le P&L).

Enregistrement. Chaque saisie est envoyée en ligne automatiquement (Worker → onglet Saisies_Manuelles), avec un délai d'1,2 s pour ne pas déclencher une requête par caractère frappé. Le bouton « Valider les ajustements » force l'envoi immédiat et attend la réponse : en cas de refus, une boîte de dialogue le dit explicitement. Un fournisseur non modifié reste en extrapolation vivante et continue de suivre Pennylane ; seule une valeur modifiée est figée.

Pourquoi c'est important : jusqu'au 20/09/2026, les saisies ne partaient en ligne qu'au clic sur « Valider » — et ce bouton affichait « ✓ Enregistré » sans vérifier que l'écriture avait abouti. Le P&L pouvait donc être juste sur le poste de celui qui saisissait, et plein de zéros pour tout le monde d'autre, sans aucun signal. Au chargement, les valeurs présentes en local mais absentes du classeur sont désormais renvoyées automatiquement.

Pennylane — synchronisation

Un Apps Script (dailyPennylane) tourne chaque jour et enchaîne trois étapes : (1) synchro incrémentale des nouvelles factures via l'API (repérées par leur updated_at), gardées en mémoire dans l'onglet Pennylane_Factures sans tout retélécharger ; (2) un re-scan des 3 derniers mois qui relit systématiquement l'imputation de chaque facture récente — indispensable car modifier une période d'imputation dans Pennylane ne change pas le updated_at, donc la synchro incrémentale seule raterait ces changements ; (3) le recalcul des agrégats Couts_Mensuels (P&L) et Factures_Mois (détail fournisseur). Les factures archivées sont exclues. La date retenue est la date d'imputation comptable (étalée au prorata des jours si la période couvre plusieurs mois), sinon la date de facture. Le bouton ↻ Actualiser du dashboard déclenche cette synchro à la demande.

Projection du mois en cours

Pour le mois calendaire en cours, les valeurs par défaut estiment la fin de mois : ventes (part Lightspeed + événementiel) et coûts par fournisseur sont extrapolés au prorata des jours écoulés (bouton « % »), avec un bouton « M-1 » pour reprendre le mois précédent. Les fournisseurs des 3 derniers mois sont listés par catégorie (Food, Beverage, Staff, Coûts variables/fixes, Maintenance, Amortissements, À catégoriser).

Un troisième bouton, « LIV », reprend le cumul des factures de livraison reçues par e-mail pour ce fournisseur et l'extrapole au mois entier. Il est particulièrement utile pour ceux dont le relevé n'entre dans Pennylane qu'en fin de mois : leur « Factures à date » y reste à zéro, et le prorata classique ne sert alors à rien. Chiffre indicatif — il remplace la valeur retenue, il ne s'y ajoute jamais.

Catégorisation : les catégories analytiques Pennylane n'existent que depuis le 23 juin 2026 ; les factures non encore ventilées (ou dont la sous-catégorie n'est pas dans le mapping) apparaissent en « À catégoriser » / « Non catégorisé » jusqu'à leur classement dans Pennylane. Rien n'est perdu : tout est capté, soit sur sa ligne, soit en « Non catégorisé ». Seules exceptions exclues volontairement : Salaires, Loyers, Remboursement de prêts (saisis à la main) et le CA (via Lightspeed). L'outil auditFactures écrit un onglet Audit_Factures qui liste les factures de la période à traiter (non catégorisées, ou sans date → jamais comptées).

10 Privatisations

Le suivi des demandes de privatisation et des formules groupe, de la première demande au paiement.

Les données

Chaque demande est une fiche de la base Firestore (collection demandes) : client, date, espace, convives, historique des échanges, chiffrage et paiements. Les réglages (modèles d'e-mails, menu, tarifs, invités de l'agenda) sont dans config. Chaque modification est enregistrée automatiquement moins d'une seconde après la saisie, et apparaît en temps réel chez les autres. Les demandes du formulaire du site rosario arrivent directement dans la base (anti-doublon par adresse, date et espace).

Les statuts — changés uniquement à la main

StatutCouleur
Nouvelle demandebleu
À répondrerouge
En attente clientvert
Relancévert clair
Confirmévert
Archivéegris

Depuis le 25/09/2026, aucun statut ne change tout seul : ni recalcul d'après les e-mails, ni archivage automatique après la date. Seule l'alerte « à relancer » est calculée — elle ne modifie rien : fiche « En attente client » ou « Relancé », dont le dernier échange est un message envoyé par nous il y a plus de 7 jours.

Le chiffrage

Ce que font les scripts Google

Les scripts n'acceptent que des appels portant un jeton de connexion @grupodomingo.io vérifié ou leur clé (dispositif « Garde »).

11 Réconciliation

Rapproche ce qui a été encaissé (Lightspeed) de ce qui a été reçu (Sunday, banque, espèces), prépare les dépôts d'espèces et répartit les pourboires.

Les données

Un Google Sheet de caisse privé, lu et écrit par le Worker de caisse. Onglets principaux : Clôtures (saisies du formulaire de caisse, seule source des données d'espèces), Journalier (une ligne par jour : CB et QR côté Lightspeed et côté Sunday, pourboires CB), Dépôts, Repartitions_Pourboires, Ajustements_Pourboires, ReconciliationTable (par table), Transactions (détail des paiements, conservé 30 jours) et Encaissements_Prestataire.

Les fichiers à importer

FichierOù le trouver
Lightspeed (.csv)Tous les rapports ▸ Paiements ▸ Période personnalisée (le rapport « Tickets » est refusé)
Sunday (.csv)Opérations ▸ Paiements ▸ Période personnalisée (seuls les paiements « Réussi » comptent)
Relevé BNP (.csv)Compte ▸ Historique ▸ Exporter en CSV — lu à chaque fois, jamais enregistré
Skello (.xlsx)export des heures par semaine, pour la répartition des pourboires

Journée d'exploitation : un paiement fait avant 6 h du matin compte pour la veille.

Les calculs

Période d'un dépôt = du lendemain du dernier dépôt jusqu'à hier.

Dépôt théorique = ventes espèces (saisies à la clôture) − dépenses − variation des espèces en caisse sur la période.

Dépôt réel = dépôt théorique arrondi à la dizaine inférieure ; la différence reste en caisse.

Écart de caisse = total mis au coffre − dépôt théorique : positif = pourboire caisse ; négatif = manquant (alerte au-delà de 20 €).

CB et QR = Lightspeed − Sunday, par jour ; « OK » jusqu'à 5 € d'écart. Le détail par table montre les tables où les deux ne concordent pas.

Banque = versements attendus de chaque prestataire comparés au relevé : exact à 2 centimes près, « à confirmer » jusqu'à 2 € ou 0,5 %, écart au-delà (Sunday QR : attendu = brut − 1,71 % de commission).

Continuité = fonds d'ouverture du jour comparé aux espèces comptées la veille ; une différence est signalée (diagnostic seulement).

Cagnotte de pourboires = somme, depuis le dernier versement, des écarts de chaque jour (espèces comptées − fonds théorique après coffre), corrigée des ruptures de continuité, + ajustements manuels. Part de chacun = cagnotte × ses heures ÷ total des heures (heures Skello).

Ce qu'écrivent les validations

L'assistant

La bulle d'aide envoie les chiffres de la période (et, les jours où CB ou QR s'écartent de plus de 5 €, le détail des paiements) à l'IA Claude, qui répond en français. Rien n'est modifié par l'assistant.

12 Clôture de caisse

Le formulaire rempli à chaque fin de service, souvent sur l'iPad. Accès par code PIN, sans compte Google.

Déroulé

Montant à mettre au coffre (proposé) = recette espèces − dépannage, arrondi à la dizaine inférieure.

Nouveau fonds de caisse théorique = fonds d'ouverture + recette espèces − dépannage − montant mis au coffre.

Écart = espèces comptées − nouveau fonds théorique : positif = pourboires ; négatif = manque (en rouge).

L'envoi ajoute une ligne à l'onglet Clôtures du Sheet de caisse, qui alimente la Réconciliation. La liste des responsables se gère depuis le formulaire (« Gérer la liste »).

13 Maintenance

Les pannes, les achats et l'entretien du restaurant, en français, espagnol et anglais.

Deux rôles

Cycle d'un ticket

Direction voitStaff voit
À trierEnvoyé à la directionouvert
Traité en interneThéo s'en occupeouvert
En attente de piècePièce commandéeouvert
Validé · à commanderValidé par Théoouvert
CommandéCommandéouvert
Prestataire contactéPrestataire prévenuouvert
Intervention planifiéeIntervention prévueouvert
Résolu · FacturéRégléclos
Sans suiteSans suiteclos

Niveau d'un ticket : 0 = pas encore trié, 1 = traité en interne, 2 = prestataire engagé. L'escalade prépare le message au prestataire, à envoyer soi-même. Chaque étape est horodatée (date et heure réelles depuis le 26/09/2026 ; les tickets plus anciens portent « 10/09 »).

Données : base Firestore (tickets, équipements, consommables, emplacements, prestataires, entretien, échéances, équipe). Le staff ne voit ni l'équipe, ni les échéances non partagées.

14 Admin

Le coffre-fort administratif des deux sociétés, Rosario (SASU) et Grupo Domingo (SAS).

Onglets : société, dirigeants, banque, signatures, clés (qui détient quoi — Rosario uniquement), documents, contacts clés, fiches dirigeants, mots de passe. Fiches dans la base Firestore ; les documents sont dans Google Drive (dossiers « Admin – Rosario » et « Admin – Grupo Domingo »).

15 Rapport quotidien

Formulaire de fin de service (en anglais) : responsable, date, service ; CA net HT, couverts et ticket moyen calculé ; no-shows, walk-ins et taux de no-show ; satisfaction, équipe salle et cuisine ; difficultés, réussites, résumé. Il est envoyé par e-mail (service EmailJS) aux destinataires fixés dans le modèle d'e-mail ; rien n'est enregistré dans une base. Accès libre, sans connexion.

16 Limites connues

17 Glossaire

unitésQuantité vendue d'un article sur la période.
# paxNombre de convives d'un événement privatisé.
ClientsActivité « normale » (Lightspeed), par opposition aux Événements (privatisations).
CA netChiffre d'affaires hors taxes, encaissé.
RetenuPart du CA d'une privatisation comptée dans le dashboard (0 € si déjà encaissée en caisse).
S-1La semaine précédente, sur les mêmes jours.
WorkerPetit programme hébergé par Cloudflare, seul à accéder aux classeurs Google ; il vérifie qui demande avant de répondre.
Apps ScriptScript Google rattaché au compte de Théo (ou d'Adrien), qui lit Gmail, l'agenda, Drive ou les classeurs.