Tout savoir sur
MemoryCompta.
Le guide complet du panel de gestion pour entreprises RP FiveM et Nova-Life : installation, licence, rôles, saisie des prestations, calcul des prix et des primes, panel patron, site public, espace client, thèmes, webhook Discord, données et dépannage. Rien n'est laissé de côté.
Présentation
MemoryCompta est un panel web autonome (Node.js + Express) qui gère toute la comptabilité d'une entreprise RP : ventes et prestations, clients, employés et grades, contrats partenaires, primes, quota, banque de l'entreprise, recrutement, rendez-vous, sanctions et documents RH. Il fournit aussi un site public à l'image de ton entreprise et un espace client.
Il tourne à côté de ton serveur FiveM ou Nova-Life et ne dépend d'aucun framework de jeu (ESX, QBCore…) : tout se passe dans le navigateur, et chaque personne se connecte avec son propre compte Discord. Aucun mot de passe n'est géré par la compta.
Les trois espaces
Site public /
La vitrine de ton entreprise : équipe en service en direct, services, chiffres, « Qui sommes-nous ? », boutons vers le recrutement, les rendez-vous et l'espace client. Entièrement personnalisable depuis le panel.
Espace client /client
Chaque client se connecte avec Discord, déclare son identité RP et retrouve son historique, son total dépensé, son classement, ses candidatures et son rendez-vous.
Panel /panel
L'outil de travail des employés et du patron : saisie des prestations, statistiques, Hall of Fame, Panel Patron (banque, contrats, RH…) et Paramètres compta.
Toutes les pages
| Adresse | Page | Qui y accède |
|---|---|---|
/ | Site public (accueil) | Tout le monde |
/client | Espace client | Toute personne connectée avec Discord |
/postuler | Formulaire de candidature | Toute personne connectée avec Discord |
/rdv | Prise de rendez-vous | Toute personne connectée avec Discord |
/panel | Panel employé et patron | Employés et patron uniquement |
/reglement | Lien court vers ton règlement | Tout le monde (redirection) |
/setup | Assistant d'installation | Uniquement pendant la première installation |
/config | Configuration serveur | Le patron (Owner ID) et l'administrateur |
| autre | Page 404 personnalisée | Redirige vers l'accueil après 10 secondes |
Vocabulaire
| Terme | Signification |
|---|---|
| Prestation | Toute vente ou intervention enregistrée (réparation, custom, menu, course, vente d'arme…). Chaque type de prestation se règle dans le catalogue. |
| Catalogue | La liste de tes types de prestation, avec leurs prix, coûts usine, primes, remises et options. |
| Coût usine | Ce que la prestation coûte à l'entreprise (pièces, matières). Il est déduit du bénéfice. |
| Taxe | Pourcentage prélevé sur chaque facture (10 % par défaut), déduit du bénéfice. |
| Bénéfice net | Prix facturé − coût usine − taxe. C'est ce qui entre en banque. |
| Prime | Ce que gagne l'employé pour une prestation. Calculée automatiquement, jamais saisie à la main. |
| Contrat | Accord avec un partenaire (LSPD, EMS, entreprise…) qui donne des remises par type de prestation et peut fixer la prime. |
| Semaine compta | Du vendredi 0 h au jeudi 23 h 59. Primes, quota, statistiques et webhook utilisent cette semaine. |
| Custom perso | Une custom qu'un employé fait pour lui-même : visible dans la fiche client mais hors CA, hors primes et hors banque. |
| Patron | Le propriétaire de la compta, identifié par son Owner ID Discord. Ce n'est pas un grade qu'on attribue. |
Démarrage rapide
Le chemin le plus court entre l'achat et ta première prestation enregistrée. Chaque étape renvoie vers le chapitre détaillé.
Hébergement inclus 6 mois : si ton panel est hébergé par MemoryCompta, les étapes 1 à 3 sont faites pour toi. Tu reçois l'adresse de ta compta et tu commences directement à l'étape 4.
- Récupère ta clé de licence
Elle arrive par e-mail après le paiement, au format
MEMC-XXXX-XXXX-XXXX-XXXX. Vérifie tes spams. → Licence - Installe et lance le serveur
npm installpuisnpm start(ou pm2). Note le code d'installation affiché dans la console. → Installation - Crée ton application Discord
Sur
discord.com/developers/applications: récupère le Client ID et le Client Secret, ajoute le lien de redirectionhttps://ton-site/auth/callback. → Application Discord - Suis l'assistant
/setupCode d'installation → licence → application Discord → ton Owner ID → connexion avec ton compte Discord. → Assistant
- Configure ta société sur
/configNom de la société, logo et images, lien du règlement, webhook des primes, puis « Terminer l'installation ». → Page /config
- Découvre ton panel
« Terminer l'installation » t'envoie sur
/panel, avec le menu Patron et Paramètres compta. Remplis ton profil (clic sur ton nom en bas du menu). → Le panel - Règle ton catalogue
Panel → Paramètres compta → Prestations & tarifs : adapte les 6 prestations d'exemple ou crée les tiennes, et règle la taxe. → Catalogue
- Personnalise le site public
Type d'entreprise, ville, nom des employés, thème de couleur, services, textes et images. → Site public
- Ajoute ton équipe
Panel Patron → Employés → « Ajouter » avec l'ID Discord, le nom RP et le grade de chaque employé. Ils n'ont plus qu'à se connecter. → Employés
- Enregistre ta première prestation
Dashboard → Nouvelle Prestation. Le prix, la taxe, le bénéfice et la prime se calculent tout seuls. → Saisir une prestation
Installation
Ce chapitre concerne l'installation sur ton propre serveur (VPS, hébergeur Node.js, machine perso). Si ta compta est hébergée par MemoryCompta, passe directement à l'assistant.
Prérequis
- Node.js 16 ou plus récent (une version LTS récente est conseillée) et npm.
- Une adresse publique (nom de domaine ou sous-domaine), idéalement en HTTPS. En local,
http://localhost:40244suffit pour tester. - Une application Discord (gratuite) pour la connexion.
- Une clé de licence MemoryCompta valide.
- Un accès sortant à Internet : la compta contacte
discord.com(connexion et webhook) etcompta.memorylink.fr(licence).
Dépendances installées par npm : express, express-session, multer (envoi de fichiers) et node-fetch. Aucune base de données à installer : tout est enregistré dans des fichiers JSON.
Contenu du dossier
| Fichier / dossier | Rôle |
|---|---|
server.js | Le serveur : connexion Discord, API, temps réel, webhook des primes. |
installation.js | Assistant /setup et page /config. |
memorycompta.js | Licence, nom de société, images personnalisées. |
catalogue.js | Catalogue des prestations (routes et enregistrement). |
theme.js | Thème de couleur appliqué à tout le site. |
public/ | Les pages (accueil, panel, espace client…), styles, scripts et images d'origine. |
data/ | Créé au premier lancement : toutes tes données. → Données |
pp/ | Créé au premier lancement : photos de profil envoyées par les utilisateurs. |
.env | Facultatif : réglages avancés (port, accès administrateur…). |
Installer et lancer
# dans le dossier de la compta npm install npm start # → 🚗 Compta démarrée sur le port 40244
Pour la laisser tourner en permanence et la relancer automatiquement, utilise pm2 :
npm install -g pm2
pm2 start server.js --name memorycompta
pm2 save
pm2 logs memorycompta # pour lire le code d'installation et les messagesAu premier lancement, la console affiche :
🔧 INSTALLATION REQUISE — premier lancement de la compta
1. Ouvre le site dans ton navigateur → /setup
(en local : http://localhost:40244/setup)
2. Code d'installation : XXXX-XXXXCe code de 8 caractères (sans 0, O, 1 ni I pour éviter les confusions) prouve que c'est bien toi qui installes. Il reste le même tant que l'installation n'est pas terminée.
Le fichier .env
Facultatif. Crée un fichier .env à la racine, une ligne CLE=valeur par réglage. Les lignes qui commencent par # sont des commentaires, et les guillemets autour d'une valeur sont retirés. Une variable déjà définie par ton hébergeur ou pm2 est prioritaire sur le .env. Redémarre la compta après chaque modification.
| Variable | Défaut | Effet |
|---|---|---|
PORT | 40244 | Port d'écoute HTTP. Une valeur invalide (pas un nombre entre 1 et 65535) affiche un avertissement et garde 40244. |
ADMIN_ACCESS | on | Accès administrateur du support MemoryCompta. off, false, 0, non, no ou desactive le désactivent. → détails |
MEMORYCOMPTA_API | https://compta.memorylink.fr | Adresse du serveur de licence. À ne changer que sur demande du support. |
DISCORD_CLIENT_ID | — | Client ID Discord, si tu préfères le fournir ici plutôt que dans l'assistant. |
DISCORD_CLIENT_SECRET | — | Client Secret Discord (même remarque). |
DISCORD_REDIRECT_URI | — | Lien de redirection Discord (même remarque). |
OWNER_ID | — | ID Discord du patron (même remarque). |
WEBHOOK_URL | — | Webhook Discord des primes (même remarque). |
SESSION_SECRET | aléatoire | Secret des sessions. Généré automatiquement (32 octets) et enregistré au premier lancement : inutile de le définir. |
Les identifiants Discord, l'Owner ID et le webhook sont normalement saisis dans l'assistant et enregistrés dans data/config.json. Une valeur enregistrée par l'assistant est prioritaire sur la variable d'environnement.
# Port de la compta PORT=40244 # Accès administrateur du support (on / off) ADMIN_ACCESS=on
Nom de domaine, HTTPS et proxy
En production, place la compta derrière un reverse proxy (Nginx, Caddy, Apache, Cloudflare Tunnel…) qui gère le HTTPS et transmet les requêtes au port de la compta. La compta fait confiance au premier proxy pour connaître le protocole et l'adresse d'origine.
server { server_name compta.ton-domaine.fr; # (certificat HTTPS géré par certbot ou ton hébergeur) location / { proxy_pass http://127.0.0.1:40244; proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_read_timeout 1h; # garde ouvert le flux temps réel } }
Le temps réel du panel passe par /api/live (Server-Sent Events). La compta envoie elle-même l'en-tête X-Accel-Buffering: no et un signal toutes les 15 secondes pour que la connexion reste ouverte derrière Nginx.
Le lien de redirection Discord (…/auth/callback) doit utiliser exactement la même adresse que celle par laquelle les gens ouvrent le site (même domaine, même http/https).
Assistant et configuration
Tant que l'installation n'est pas terminée, tout le site redirige vers /setup. L'assistant enchaîne 6 étapes ; les étapes déjà validées restent cliquables pour revenir en arrière.
- Code d'installation
Entre le code
XXXX-XXXXaffiché dans la console (terminal,pm2 logs, panel de l'hébergeur). Il se met en majuscules et le tiret s'ajoute tout seul. Le déverrouillage est lié à ton navigateur.Protection : après 8 codes faux depuis la même adresse IP, l'assistant se bloque 10 minutes (« Trop d'essais. Réessaie dans 10 minutes. »).
- Licence MemoryCompta
Colle ta clé
MEMC-XXXX-XXXX-XXXX-XXXX. Elle est vérifiée en direct auprès du serveur de licence. Rien ne fonctionne sans licence active. Si une licence est déjà active, tu peux la remplacer ou continuer. - Application Discord
Sur discord.com/developers/applications :
- New Application, donne-lui le nom de ton entreprise.
- Onglet OAuth2 : copie le Client ID, clique sur Reset Secret et copie le Client Secret.
- OAuth2 → Redirects → Add Redirect : colle exactement le lien affiché par l'assistant (bouton « Copier »), puis Save Changes.
Le lien proposé est
https://ton-site/auth/callback(ouhttp://en local). Règles vérifiées : Client ID de 17 à 20 chiffres ; Client Secret de 16 à 128 caractères ; lien enhttp(s)://qui se termine par/auth/callback. L'assistant teste ensuite les identifiants auprès de Discord : s'ils sont refusés, tu vois « Discord refuse ce Client ID / Client Secret ». Si Discord est injoignable, ils sont enregistrés quand même, avec un avertissement.La compta ne demande à Discord que la permission
identify(pseudo, avatar, identifiant) : ni e-mail, ni liste de serveurs, ni messages. - Owner ID (le patron)
L'identifiant Discord du compte qui aura tous les droits. Pour le copier : Discord → Paramètres utilisateur → Avancés → active le Mode développeur, puis clic droit sur ton pseudo → Copier l'identifiant utilisateur. C'est un nombre de 17 à 20 chiffres.
- Connexion du patron
Clique sur « Se connecter avec Discord » avec le compte du patron. Pendant l'installation, seul ce compte peut se connecter. Avec un autre compte, l'assistant l'affiche : « Tu t'es connecté avec le compte …, mais l'Owner ID enregistré est … ». Si Discord affiche « redirect_uri invalide », le lien de redirection n'est pas identique dans le portail Discord.
- Configuration
Tu arrives sur
/configen mode « Dernière étape » : voir ci-dessous. Le bouton Terminer l'installation ouvre le site à tout le monde et t'envoie sur le panel.
La page /config
Après l'installation, /config reste accessible au patron (et à l'administrateur) : depuis le panel → Paramètres compta → Configuration serveur, ou directement à l'adresse /config. Les autres comptes sont renvoyés vers le panel.
Ta société Obligatoire
- Nom de la société : 2 à 40 caractères (lettres, chiffres, espaces, apostrophe typographique ’, point, tiret). Il remplace « LS Custom » partout.
- Images du site : logo, image de fond de l'accueil, photo de l'équipe. PNG, JPG, WEBP ou GIF, 8 Mo max. Le bouton ↺ remet l'image d'origine.
- Lien du règlement : la page ouverte par le bouton « Règlement » du panel et par
/reglement.
Webhook des primes Facultatif
Le classement des primes est posté dans un salon Discord. Création : paramètres du salon → Intégrations → Webhooks → Nouveau webhook → Copier l'URL.
- Format accepté :
https://discord.com/api/webhooks/…(ptb, canary et discordapp.com aussi). - Boutons Envoyer un test, Retirer, Enregistrer.
Application Discord
Client ID, Client Secret (laisse vide pour garder l'actuel) et lien de redirection, avec la même vérification qu'à l'installation.
Owner ID : le changer transfère les droits de patron à un autre compte Discord (une confirmation est demandée).
Licence
État (Active / Inactive), clé masquée (MEMC-AB12-••••-••••-WXYZ) et champ pour changer de clé.
Les secrets ne sont jamais réaffichés en entier : le Client Secret et le jeton du webhook sont masqués.
Pour terminer l'installation il faut : une licence active, l'application Discord et l'Owner ID renseignés, et un nom de société. Sans webhook, une confirmation te prévient que les primes ne seront pas postées sur Discord.
Le fichier data/config.json est écrit avec des droits restreints (lecture/écriture pour le propriétaire uniquement). Les changements faits sur /config s'appliquent sans redémarrer.
Licence
Une licence MemoryCompta valide est obligatoire pour utiliser la compta et afficher le site. Elle se présente sous la forme MEMC-XXXX-XXXX-XXXX-XXXX et arrive par e-mail après l'achat.
Vérification
- La clé est vérifiée à l'activation, au démarrage, puis toutes les 6 heures.
- La compta envoie au serveur de licence la clé, un identifiant d'installation unique (créé une fois pour toutes dans
data/memorycompta.json) et le nom de domaine de ton site. - À la première activation, la licence est liée à cette installation : elle est ensuite refusée sur toute autre installation.
- Si le serveur de licence est injoignable, la compta continue de fonctionner normalement pendant 72 heures après la dernière vérification réussie.
- Si le serveur répond que la clé est invalide ou expirée, la compta se bloque immédiatement.
- L'activation d'une nouvelle clé nécessite que le serveur de licence soit joignable (pas d'activation hors ligne).
Que se passe-t-il sans licence ?
Pour les visiteurs
Toutes les pages publiques affichent « Bientôt disponible » : « Le site est momentanément indisponible : la licence de la compta n'est pas encore activée. » avec un bouton Connexion patron.
Dans le panel
Un écran de blocage s'affiche. Le patron peut y coller une clé (et le nom de la société) puis cliquer sur Activer. Les employés voient « Compta non activée — Demande au patron de renseigner la clé dans le panel. »
Changer ou revérifier la clé
Panel → Paramètres compta → Général → bloc Licence MemoryCompta : on y voit la clé enregistrée (masquée), la date de la dernière vérification et de la dernière validation, la raison en cas de problème, et deux boutons : Activer (nouvelle clé) et Vérifier (revérification immédiate). On peut aussi changer de clé sur /config.
| Message | Signification |
|---|---|
| Format de clé invalide (ex : MEMC-XXXX-XXXX-XXXX-XXXX). | La clé est mal recopiée (4 groupes de 4 lettres/chiffres après MEMC). |
| Serveur de licence injoignable (…) | Ton serveur n'arrive pas à joindre compta.memorylink.fr (pare-feu, DNS, panne). Réessaie plus tard. |
| Clé de licence inconnue. | La clé n'existe pas : vérifie qu'elle est recopiée sans erreur. |
| Cette licence est déjà activée sur une autre installation. | Une licence ne fonctionne que sur une seule installation. Pour déménager ta compta sur un autre serveur, contacte le support pour détacher la licence. |
| Cette licence a été révoquée. | La licence a été désactivée par MemoryCompta : contacte le support. |
| Trop de tentatives, réessaie dans une minute. | Plus de 30 vérifications en une minute depuis la même adresse. |
Rôles et permissions
Chaque personne se connecte avec Discord. Ce qu'elle peut faire dépend de son statut : patron (Owner ID), employé avec un grade, ou simple client (toute personne connectée qui n'est pas dans l'équipe).
Les grades
| Grade | Niveau d'accès | Remarques |
|---|---|---|
| 👑 Patron | Tout, y compris /config et Paramètres compta | Défini par l'Owner ID, pas attribuable dans le panel. |
| Co-Patron | Mêmes droits que le patron dans le panel, Paramètres compta compris | Seule différence : pas d'accès à la page /config. |
| Gouvernement | Mêmes droits que le patron dans le panel, Paramètres compta compris (pas /config) | Pensé pour un contrôleur externe : n'apparaît ni dans la page Employés, ni dans les classements, le quota et le Hall of Fame. |
| Responsable | Employé + Panel Patron en lecture seule | Bandeau « Accès Lecture Seule » : voit tout, ne modifie rien. |
| Expérimenté | Employé | Grade junior le plus élevé. |
| Novice | Employé | Par défaut, peut faire les Customs. |
| Stagiaire | Employé | |
| Recrue | Employé | Grade junior le plus bas. |
| Administrateur | Mêmes droits que le patron | Attribué automatiquement au compte support, qui a aussi accès à /config (→ détails). Masqué de la présence publique. Attention : ce grade est aussi sélectionnable dans le panel ; un employé ainsi promu a tous les droits du patron (sauf /config). |
Les quatre grades juniors suivent l'ordre Recrue < Stagiaire < Novice < Expérimenté. Chaque type de prestation peut exiger un grade minimum (ex. « Novice et plus ») : un grade trop bas ne voit pas ce type dans le formulaire, et le serveur refuse l'enregistrement (« Grade insuffisant »). Tous les grades au-dessus d'Expérimenté (Responsable, Co-Patron, Gouvernement…) peuvent tout enregistrer.
Qui peut faire quoi
| Action | Client | Employé | Responsable | Patron · Co-Patron · Gouv. |
|---|---|---|---|---|
| Voir le site, l'équipe en service, les chiffres | ✓ | ✓ | ✓ | ✓ |
| Espace client, candidature, rendez-vous | ✓ | ✓ | ✓ | ✓ |
| Accéder au panel | — | ✓ | ✓ | ✓ |
| Enregistrer une prestation (selon grade minimum) | — | ✓ | ✓ | ✓ |
| Modifier les notes de ses propres prestations | — | ✓ | ✓ | ✓ (toutes) |
| Supprimer une prestation | — | — | — | ✓ |
| Voir Dashboard, Prestations, Employés, Clients, Statistiques, Hall of Fame | — | ✓ | ✓ | ✓ |
| Voir le Panel Patron | — | — | lecture | ✓ |
| Banque, contrats, employés, candidatures, RDV, avertissements, documents RH | — | — | lecture | ✓ |
| Renommer / retirer un client, régler le quota | — | — | — | ✓ |
| Paramètres compta (catalogue, thème, site public…) | — | — | — | ✓ |
Page /config (Discord, Owner ID, webhook) | — | — | — | Patron (Owner ID) et compte support |
Les droits sont vérifiés par le serveur à chaque action, pas seulement par l'affichage. Un employé retiré de l'équipe perd l'accès au panel immédiatement (le panel le renvoie vers l'accueil du site).
Accès administrateur (support)
Par défaut, un compte Discord du support MemoryCompta (JustSimon) est présent dans l'équipe avec le grade Administrateur. Il a les mêmes droits que le patron, y compris l'accès à /config, pour pouvoir t'aider à configurer ou dépanner ta compta. Ce compte est recréé à chaque démarrage tant que l'accès est actif, et il n'apparaît pas dans l'équipe en service du site public ni dans le compteur d'employés actifs.
Tu peux le retirer à tout moment : ajoute ADMIN_ACCESS=off dans le fichier .env puis redémarre la compta. Le compte Administrateur est alors supprimé de l'équipe et perd tout accès. Remets ADMIN_ACCESS=on si tu as besoin d'aide plus tard.
Connexion et session
- Bouton Connexion du site, ou n'importe quelle page qui le demande → autorisation Discord → retour sur la page demandée. Sans page demandée : le panel pour l'équipe, l'espace client pour les autres.
- Une session dure 24 heures. Les sessions sont enregistrées dans
data/sessions.json: tout le monde reste connecté après un redémarrage de la compta (mise à jour, crash, hébergeur). - Dans le panel, une session expirée affiche « 🔒 Session expirée » et la page se recharge toute seule au bout de 5 secondes.
- Déconnexion : bouton en bas du menu du panel, ou menu du compte sur le site.
Le panel employé
Le panel s'ouvre sur /panel. Sur ordinateur, le menu est à gauche ; sur téléphone (moins de 900 px), il devient une barre d'onglets flottante en bas de l'écran, façon iPhone, et les fenêtres s'ouvrent en feuille depuis le bas.
Le menu
| Entrée | Contenu | Visible pour |
|---|---|---|
| Dashboard | Tes chiffres de la semaine, l'activité du jour, les dernières prestations, l'équipe en ligne. | Tous |
| Prestations | Tout l'historique, avec filtres et pagination. | Tous |
| Employés | L'équipe, en grille ou en liste, avec les fiches détaillées. | Tous |
| Clients | Les clients classés par total dépensé. | Tous (désactivable) |
| Statistiques | Graphiques et comparaison semaine par semaine. | Tous |
| Hall Of Fame | Podium, trophées et records de tous les temps. | Tous |
| Règlement ↗ | Ouvre ton règlement dans un nouvel onglet. | Tous (désactivable) |
| Paramètres compta | Licence, catalogue, primes, site public, fonctions. | Patron, Co-Patron, Gouvernement, Administrateur |
| Patron | Le Panel Patron et ses 10 onglets. | Patron, Co-Patron, Gouvernement, Administrateur, Responsable (lecture) |
En bas du menu : ta photo, ton nom et ton grade (clic → Mon profil) et le bouton Déconnexion.
Dashboard
- En-tête : « Bonjour, Prénom », ton grade, la date du jour et le bouton Nouvelle Prestation.
- Ma Prime Estimée : ta prime de la semaine, grade et quota compris. Si un quota est actif, une barre indique ta progression : « 🔒 Quota 6/10 · encore 4 prestas pour débloquer ta prime » ou « ✅ Quota atteint ».
- Mon CA Semaine (somme de tes factures) et Mon Bénéfice (avec le détail par type, ex. « 🔧 3 🎨 2 »).
- Aujourd'hui : facturé et bénéfice de toute l'entreprise depuis minuit. Cette semaine : CA total, bénéfice et nombre de prestations par type, avec le rappel « reset ven. 0:00 ».
- Dernières Prestations : les 8 plus récentes (les tiennes sont mises en évidence) et « Voir tout → ».
- Équipe en ligne : qui a le panel ouvert, depuis combien de temps (rafraîchi toutes les 30 s).
Les customs perso ne comptent pas dans ces chiffres.
Enregistrer une prestation
Bouton Nouvelle Prestation (Dashboard) ou + Nouvelle Prestation (page Prestations). Le formulaire est construit automatiquement à partir du catalogue : il ne montre que les champs utiles au type choisi.
- Choisis le type
Seuls les types actifs autorisés pour ton grade s'affichent. Le titre de la fenêtre reprend l'icône et le nom du type, et sa description sert de sous-titre. Si aucun type n'est autorisé : « Aucune prestation disponible pour ton grade. »
- Informations client si le type les demande
Nom complet du client (écrit automatiquement en MAJUSCULES) avec suggestions dès 2 lettres : les 8 clients les plus fréquents qui correspondent, avec leur dernière plaque. Navigation au clavier : ↑ ↓ Entrée Échap. Si le client a un compte sur le site, un encadré affiche son total dépensé, son téléphone, son âge et sa ville. Plaque d'immatriculation (majuscules, ex. LS-1234).
- Contrat applicable si le type accepte les contrats
« — Aucun contrat — » ou un contrat actif, avec sa remise pour ce type (« LSPD — -50% », « EMS — GRATUIT », « std »).
- Calcul du prix
Selon le type : rien à saisir (prix fixe), un choix d'option (ex. zone Nord / Sud), le coût usine (le prix client = coût × marge), ou un prix libre avec minimum/maximum. Une quantité peut être demandée.
- Informations complémentaires
Les champs personnalisés du type (texte, nombre ou liste), puis les notes (obligatoires ou non selon le type).
- Vérifie le récapitulatif
L'encadré se met à jour en direct : prix ou coût usine, majoration, remises automatiques (🎁), remise contrat (📋), FACTURE CLIENT, taxe, bénéfice net de l'entreprise et ta prime (ex. « 10% coût usine », « 1 000 $ / unité · Novice »).
- Créer la Prestation
« ✅ Prestation enregistrée — 14 000 $ ». Toute l'équipe la voit apparaître en direct (« ⚡ Custom — MARCUS BELLAMY · 14 000 $ par … »). Le type reste sélectionné pour enchaîner.
Anti-triche : le prix est toujours recalculé par le serveur à partir du catalogue, du contrat et des remises. Un prix modifié dans le navigateur n'est jamais pris en compte (sauf pour les customs perso, à prix libre par nature).
À chaque prestation : le bénéfice net est crédité en banque automatiquement, le client est ajouté (ou remis) dans la liste Clients, et le grade de l'employé au moment de la saisie est mémorisé pour le calcul de sa prime.
Page Prestations
- Filtres : Toutes · un bouton par type · 📋 Contrat (paiements de contrats) · Custom perso · menu « 👤 Tous les mécanos » pour n'afficher qu'un employé.
- 50 prestations par page, avec « ‹ Précédent », numéros de page et « Suivant › ».
- Chaque ligne montre : type, client, plaque, option, quantité, contrat et prix de base, coût usine, remises appliquées, champs personnalisés, notes, employé, date et prix.
- ✏ Modifier notes : seules les notes sont modifiables (prix, type et client ne changent pas après coup). Un employé ne peut modifier que ses propres prestations ; le patron peut modifier toutes les notes.
- 🗑 Supprimer (patron, Co-Patron, Gouvernement) : suppression définitive, avec annulation automatique en banque du bénéfice crédité.
Page Employés
- Synthèse : nombre d'employés, en ligne, primes hebdo cumulées, et Sortant (estimation de ce que la semaine coûte : primes des employés + part reversée calculée sur le CA).
- Filtre par grade, tri par Grade / Prestas / Embauche (recliquer inverse l'ordre), vue grille ou liste.
- Clic sur un employé → fiche : photo, grade, statut en ligne, âge, téléphone, ville, véhicule, date d'embauche, bio, total de prestations, CA généré, prime de la semaine, courbe d'activité depuis son embauche et, pour le patron, ses avertissements.
L'ajout, la modification et le retrait d'employés se font dans le Panel Patron.
Page Clients
Un client n'est pas un compte à créer : c'est un nom regroupé automatiquement à partir des prestations (sans tenir compte des majuscules). La liste ne reprend que les types qui demandent un nom de client, classés par total dépensé.
- Recherche instantanée, rang #, dernière visite, nombre de prestations par type, total dépensé. Un 🔗 signale un client qui a aussi un compte sur le site : son profil (âge, téléphone, ville, véhicule, bio) s'ouvre avec ↗.
- ✏ Renommer (patron) : renomme toutes ses prestations d'un coup et met à jour le compte client lié. Renommer vers un nom existant regroupe les deux historiques.
- 🗑 Retirer (patron) : le client disparaît de la liste, mais ses prestations, son CA et les primes sont conservés. Il réapparaît tout seul à sa prochaine prestation.
Enregistrer ma Custom (custom perso)
Pour qu'un employé enregistre une custom faite sur son propre véhicule. Le nom est verrouillé sur le sien ; il saisit la plaque, le prix de la custom et une note. Prix à payer = prix saisi + 10 %. Une custom perso apparaît dans la fiche client et la liste des prestations (filtre « Custom perso »), mais ne compte ni dans le CA, ni dans les primes, ni dans le quota, ni en banque, ni dans le Hall of Fame. Elle demande le même grade minimum que la Custom (Novice et plus par défaut). Dans l'espace client du propriétaire du véhicule, elle compte dans son total dépensé et son classement. Le patron peut désactiver cette fonction (Fonctions du panel).
Statistiques
Par semaine compta, avec ‹ › pour remonter dans le temps (le badge indique « CETTE SEMAINE » ou les dates). Les customs perso sont exclues.
- 5 indicateurs : CA, bénéfice, nombre de prestations, employés actifs (au moins une prestation), coût usine — chacun comparé à la semaine précédente (↑ +12 %, ↓, = Stable, ↑ Nouveau).
- Bénéfice par jour (vendredi → jeudi, comparé à S-1), répartition par type (anneau), prestations par jour (barres).
- Records : meilleure journée, heure de pointe, panier moyen, évolution, employés actifs.
- Carte de chaleur 7 jours × 24 h de l'activité.
- Comparatif détaillé : CA, bénéfice, prestations (au total et par type), employés actifs, panier moyen, avec l'évolution en %.
Hall Of Fame
Les légendes de l'entreprise depuis la première prestation (customs perso et Gouvernement exclus). Les primes sont recalculées avec les réglages actuels. Bouton Actualiser ; mise à jour automatique à chaque nouvelle prestation.
- Indicateurs : CA historique (+ moyenne par semaine), prestations, bénéfice généré, primes cumulées, nombre de légendes, clients servis.
- Ma place : « Tu es #3 sur 12 en CA avec … Encore … pour dépasser … ! »
- Podium de tous les temps par Chiffre d'affaires, Prestations, Primes cumulées, Bénéfice généré, Clients servis ou Titres de la semaine (case « Inclure les anciens »).
- Classement général triable : prestas, CA, bénéfice, primes, panier moyen, clients, semaines, titres, série max, ancienneté. Clic sur un nom → fiche employé.
- La course au CA (CA cumulé du top 5 semaine par semaine), Employés de la semaine (plus grosse prime, puis CA) et Les spécialistes (top 3 par type).
Les 16 trophées
| Trophée | Décerné à |
|---|---|
| Roi du chiffre d'affaires | Le plus gros CA de tous les temps |
| Bourreau de travail | Le plus de prestations |
| Le plus titré | Le plus de titres « employé de la semaine » (meilleure prime de la semaine) |
| Plus grosse facture | La facture la plus élevée |
| Semaine de légende | Le meilleur CA sur une semaine |
| Journée record | Le plus de prestations en une seule journée |
| Série infernale | Le plus de jours consécutifs travaillés |
| Meilleur panier moyen | Panier moyen le plus élevé (10 prestations minimum) |
| Ami des clients | Le plus de clients différents servis |
| Machine à bénéf | Le plus gros bénéfice généré |
| Chasseur de primes | Les plus grosses primes cumulées |
| Le plus régulier | Le plus de semaines actives |
| Départ canon | Le meilleur CA sur ses 7 premiers jours |
| Oiseau de nuit | Le plus de prestations entre 22 h et 6 h |
| Lève-tôt | Le plus de prestations entre 6 h et 10 h |
| Le vétéran | La plus grande ancienneté (hors anciens employés) |
Mon profil
Clic sur ton nom en bas du menu. Tous les champs sont facultatifs et s'affichent dans ta fiche employé : photo (image de 5 Mo max), âge, téléphone, description / bio, ville / quartier, véhicule personnel. Le nom RP et le grade sont gérés par le patron.
Pour le patron, le nom affiché est son nom Discord.
Temps réel
Le panel reste connecté au serveur : ces changements apparaissent sans recharger la page chez tous les membres connectés.
| Événement | Effet visible |
|---|---|
| Nouvelle prestation | Ajout dans les listes, chiffres mis à jour, notification de 5 secondes. |
| Prestation supprimée | Retirée partout. |
| Connexion / déconnexion | Liste « Équipe en ligne » mise à jour. |
| Catalogue modifié | Formulaire, filtres et calculs mis à jour. |
| Fonction activée / désactivée | Bouton ou onglet affiché / masqué. |
| Mouvement bancaire | Solde et historique de la banque à jour. |
| Client renommé, retiré ou réapparu | Liste Clients à jour. |
| Thème changé | Nouvelles couleurs appliquées + message « Le thème de la compta a changé ». |
Le Panel Patron
Menu Patron (badge PATRON). Accessible au patron, au Co-Patron et au Gouvernement en écriture, au Responsable en lecture seule. En haut : employés actifs, contrats actifs et impôts estimés de la semaine. Dix onglets ; le dernier ouvert est retenu tant que la page n'est pas rechargée.
| # | Onglet | Sous-titre |
|---|---|---|
| 1 | Accueil | DashBoard Patron : primes, remise premier client, quota, impôts |
| 2 | Banque | Le solde actuel |
| 3 | Contrats | Remises & tarifs |
| 4 | Recherche Plaque | Retrouver un client |
| 5 | Employés | Équipe & rôles |
| 6 | Membres | Inscrits sur le site |
| 7 | Candidatures | Demandes de recrutement |
| 8 | Rendez-vous | « N en attente » |
| 9 | Avertissements | Sanctions & historique |
| 10 | Administratif | Documents RH employés |
Accueil (DashBoard Patron)
Classement Prime
Les primes estimées par employé pour la semaine (‹ › pour les semaines passées) : rang, nom, avancement du quota (« ✅ 12/10 » ou « 🔒 6/10 · 4 200 $ en attente »), détail par type et montant. Les 6 premiers s'affichent ; Voir tout ouvre le classement complet de tous les employés actifs, même ceux à 0 $.
Remise Premier Client
Interrupteur ACTIVÉ / DÉSACTIVÉ. Quand il est activé, les clients qui n'ont encore aucune prestation reçoivent la remise « Remise Premier Client » prévue dans le catalogue (−5 % sur le coût usine d'une Custom, par défaut). L'encart Perte générée totalise ce que cette remise a coûté sur tout l'historique. L'interrupteur agit sur toutes les remises cochées « Suivre l'interrupteur » dans le catalogue.
Quota de prestations
Le nombre minimum de prestations par semaine pour toucher sa prime.
- Quota par semaine : 1 à 10 000 (10 par défaut).
- Quand l'employé touche sa prime : 🎯 Si le quota est atteint (tout ou rien : sous le quota, la prime de la semaine est 0) ou 🚀 La prime commence après le quota (les N premières prestations ne rapportent rien, les suivantes normalement).
- Compter les quantités : une vente de 5 kits compte pour 5 prestations.
- Les customs perso et les paiements de contrat ne comptent jamais.
- Quand le quota est actif : nombre d'employés qui l'ont atteint et montant des primes bloquées ou non versées.
Les changements forment un brouillon : Annuler ou Enregistrer. À l'enregistrement, toutes les primes (classements, fiches, Hall of Fame, webhook) sont recalculées immédiatement.
Impôt Gouv
La déclaration hebdomadaire : impôts estimés = bénéfice de la semaine × 12 %, avec le CA de la semaine. Navigation ‹ › par semaine.
Banque
Le compte de l'entreprise, mis à jour en temps réel. Chaque prestation crédite automatiquement son bénéfice net (prix − coût usine − taxe) ; la suppression d'une prestation le retire (ligne « Annulation »).
- Solde en banque (en rouge s'il est négatif), dernier mouvement, entrées et sorties des 7 derniers jours.
- Ajouter de l'argent : montant + motif facultatif.
- Retirer de l'argent : montant + motif obligatoire parmi Prime, Impôts, Coût usine, Autre, + détail facultatif.
- Définir le solde : fixe le solde exact (la différence est enregistrée dans l'historique).
- Aperçu du « Solde après opération » avant de valider. Les montants sont des dollars entiers. Un retrait peut rendre le solde négatif.
- Mouvements : 💰 Prestation, ↩️ Annulation, ➕ Ajout, 🏆 Primes, 🏛️ Impôts, 🏭 Coût usine, 💸 Autre, ✏️ Solde défini — avec date, auteur, montant et solde après opération. Les 300 dernières opérations sont conservées.
- Vider l'historique : efface la liste des mouvements, le solde est conservé.
La banque se consulte dans le Panel Patron (le Responsable en lecture seule) ; seuls le patron, le Co-Patron et le Gouvernement peuvent la modifier.
Contrats
Un contrat lie l'entreprise à un partenaire (LSPD, EMS, Gouvernement, autre entreprise…). Il fixe une remise par type de prestation, un montant versé par le partenaire et une prime par prestation.
Créer ou modifier un contrat
| Champ | Détail |
|---|---|
| Nom du contrat obligatoire | Ex. LSPD, EMS, Gouvernement… |
| Couleur du badge | Couleur d'affichage dans les listes (bleu #3498DB proposé par défaut). |
| Remises par type de prestation | Un pourcentage de 0 à 100 pour chaque type qui accepte les contrats. Vide = pas de remise (« std »), 100 % = gratuit. Aperçu du prix remisé en direct. |
| Montant versé par l'entreprise ($) | Ce que le partenaire paie à chaque renouvellement (ex. 300 000). |
| Prime par prestation ($) | 1 000 par défaut. Utilisée à la place de la prime normale pour les types réglés sur « utiliser la prime prévue par le contrat ». |
| Lien vers le contrat papier | Facultatif : affiché comme lien « Contrat ↗ ». |
Carte d'un contrat
Remises par type (« -50% », « GRATUIT », « std »), montant par renouvellement, prime par prestation, bénéfice ou perte du contrat, nombre de prestations et total offert en remises depuis le dernier paiement. En haut, le bilan total de tous les contrats = montants prévus par renouvellement − remises offertes − taxe gouvernementale de 10 % sur ces montants.
Encaisser un contrat (bouton « Payé »)
Enregistre le paiement du partenaire comme une prestation spéciale 📋 Paiement contrat (paiement par virement) : elle compte dans le CA, apparaît avec le filtre « Contrat », est créditée en banque (taxe sur facture déduite) et ne donne ni prime ni avancement de quota. Dans le Hall of Fame, elle compte dans le CA de la personne qui a cliqué sur « Payé ». Le bouton n'apparaît que si un montant est défini.
Supprimer un contrat ne touche pas aux prestations passées, qui gardent son nom et leur prix. Leurs primes, elles, sont recalculées avec la prime normale du type (la prime du contrat n'existe plus). Il n'y a pas de bouton pour désactiver un contrat : supprime-le s'il ne doit plus servir.
Recherche Plaque
Tape une plaque (même partielle) : la recherche se fait à chaque frappe. Résultat : la dernière personne venue avec ce véhicule (nom, date, employé, prix, contrat) et l'historique complet des passages.
Employés (gestion)
Tableau de toute l'équipe : nom, ID Discord, grade, date d'embauche, statut en ligne, actions.
- Ajouter : Discord ID (17 à 19 chiffres : clic droit sur le profil → Copier l'identifiant, mode développeur activé), Nom RP, Rôle. La personne a accès au panel dès qu'elle se connecte avec Discord. La date d'embauche est enregistrée automatiquement.
- Modifier : nom et grade. Une promotion ne change pas les primes déjà gagnées : c'est le grade au moment de la prestation qui compte.
- Supprimer : retire l'employé de l'équipe et lui coupe l'accès. Ses prestations restent dans l'historique (il apparaît comme « Ancien » dans le Hall of Fame).
Ajouter un employé avec un ID Discord déjà présent remplace sa fiche (date d'embauche comprise). Pour changer un grade, utilise plutôt Modifier.
Membres
Les comptes Discord connectés au site qui ont déclaré une identité RP dans l'espace client (hors patron et employés) : photo, nom RP, pseudo, ID, badge 🧑 Client, date d'inscription. Recherche par nom, pseudo ou ID. Lecture seule.
Candidatures
« N candidature(s) · M en attente ». Filtres : Toutes, En attente (par défaut), Acceptées, Employés, Refusées. Chaque carte montre l'avatar et le pseudo Discord, le nom RP, la date, l'âge, le téléphone, le passé illégal (⚠️ Oui / ✅ Non / ⚡ Anciennement), les disponibilités et les deux réponses de motivation.
Boutons de statut : ✅ Accepter, 👷 Employé, ❌ Refuser, ⏳ En attente. Le candidat voit le statut et le message correspondant dans son espace client.
Le statut « Employé » informe le candidat mais ne l'ajoute pas à l'équipe : ajoute-le ensuite dans l'onglet Employés avec son ID Discord (visible sur la carte).
Rendez-vous
« N demande(s) — M en attente ». Filtres : Tous, En attente (par défaut), Traités, Non traités. Chaque carte : nom, téléphone, pseudo Discord, date, demande et disponibilités. Boutons ✅ Traité et ❌ Non traité ; le client voit le résultat dans son espace. Recontacte le client sur Discord pour fixer le créneau.
Avertissements
Les sanctions de l'équipe, regroupées par employé (compteur en rouge), filtrables par employé et par raison.
- Nouvel Avertissement : employé, date (aujourd'hui par défaut), raison, détails.
- Raisons : Inactivité, Non respect du règlement, Comportement inapproprié, Absence non justifiée, Retard répétitif, Manque de professionnalisme, Autre.
- L'auteur de l'avertissement est enregistré. Suppression avec confirmation.
- Les avertissements apparaissent aussi dans la fiche de l'employé (visible par le patron).
Administratif
Deux documents par employé, regroupés par grade : 📋 Règlement signé et 🏥 Visite médicale. Pour chacun : « ✓ Fourni » ou « Manquant », 👁 Voir (ouvre le document dans le navigateur), 📎 Uploader / Remplacer, 🗑 supprimer. Formats PDF ou PNG, 10 Mo maximum. Le compteur indique combien de documents sont fournis sur le total attendu.
Paramètres compta
« Ta compta, réglée au millimètre. » Menu réservé au patron (et aux grades Co-Patron et Gouvernement). En haut à droite, l'état en direct : licence, société, nombre de prestations actives, taxe et quota. Cinq volets, le dernier ouvert est retenu sur ton navigateur.
| Volet | Contenu |
|---|---|
| 01 Général | Licence, nom de la société, thème de couleur, raccourci vers la configuration serveur. |
| 02 Prestations & tarifs | Le catalogue complet, la taxe sur facture. |
| 03 Primes & grades | Le coefficient de prime de chaque grade. |
| 04 Site public | Identité, page d'accueil, « Qui sommes-nous ? », images et logo. |
| 05 Fonctions du panel | Activer ou couper des fonctions pour toute l'équipe. |
Général
- Licence : voir Changer ou revérifier la clé.
- Nom de la société (40 caractères max) : remplace « LS Custom » sur l'accueil, l'espace client, les candidatures, les rendez-vous et le panel. Visible au prochain chargement de page.
- Thème de couleur : voir Thème.
- Configuration serveur : rappel de l'application Discord, du webhook et de l'Owner ID, avec un bouton « Ouvrir » vers
/config(si ton compte y a accès).
Prestations & tarifs (le catalogue)
Ici tu définis ce que ton entreprise vend et comment c'est payé. Toute modification est diffusée en direct à tous les panels ouverts.
- Taxe sur facture : 0 à 100 % (par pas de 0,5), 10 % par défaut. Bouton 💾 pour l'enregistrer.
- Nouvelle prestation et Réinitialiser : remet les 6 prestations d'origine ainsi que la taxe (10 %), les coefficients de grade (100 %) et le quota (désactivé). Tes prestations créées déjà utilisées sont archivées ; celles jamais utilisées sont supprimées.
- Pour chaque type : ▲ ▼ pour l'ordre, résumé (prix, prime, client, plaque, contrats, remises, grade minimum, « Sans taxe »), interrupteur actif / inactif (une prestation inactive disparaît du formulaire), ✏ Modifier, Dupliquer, 🗑 Supprimer.
- Supprimer un type jamais utilisé l'efface ; un type déjà utilisé est archivé : l'historique, la banque et les primes passées restent intacts, et il peut être restauré depuis « Prestations supprimées ». Il doit toujours rester au moins un type.
Les primes sont toujours recalculées avec le catalogue actuel, y compris pour les prestations passées. Le prix déjà facturé à un client, lui, ne change jamais.
L'éditeur de prestation
Six onglets et un simulateur en bas qui montre le résultat en direct.
Général
- Nom (obligatoire, 40 car.) et nom au pluriel (filtres et statistiques).
- Icône : un emoji libre ou la grille de 48 emojis. Couleur (graphiques). Description (sous-titre du formulaire, 200 car.).
- Grade minimum : Tout le monde, Recrue et plus, Stagiaire et plus, Novice et plus, Expérimenté et plus. Les grades au-dessus d'Expérimenté ont toujours accès.
- Active et Compter dans les stats du site public.
Prix & coût usine
| Mode | Pour | Réglages |
|---|---|---|
| 💵 Prix fixe | Même prix à chaque fois | Prix facturé, coût usine (déduit du bénéfice, 0 = aucun). |
| 🧭 Options | Zones, formules, tailles… | Libellé du choix et jusqu'à 30 options (icône, nom, prix, coût usine). |
| 🏭 Coût usine + marge | Customs, commandes sur mesure | L'employé saisit le coût usine ; prix = coût × (1 + marge %). Libellé du champ personnalisable. |
| ✍️ Prix libre | Devis, montants variables | L'employé tape le prix ; minimum et maximum (0 = pas de limite) ; option « Demander aussi le coût usine ». |
Pour tous les modes : Multiplier par une quantité (libellé + quantité max, 0 = illimitée) et Appliquer la taxe sur facture.
Prime employé
- Mode : Aucune prime, Montant fixe, % du coût usine, % du prix facturé, % du bénéfice net.
- Prime par unité (multipliée par la quantité, pour le montant fixe), prime minimum et prime maximum ($).
- Avec un contrat, utiliser la prime prévue par le contrat.
- Prime selon le grade : un montant ou un pourcentage précis par grade. Une valeur saisie ici remplace la prime normale et le coefficient du grade.
Client & contrats
- Nom du client et plaque : Non demandé, Optionnel ou Obligatoire.
- Nom affiché à la place du client quand il n'est pas demandé (ex. « Réparation »).
- Visible dans l'espace client du site : ces prestations apparaissent dans l'historique du client (par défaut, seulement les Customs).
- Les contrats peuvent s'appliquer.
Remises automatiques
Jusqu'à 30 remises par type, appliquées toutes seules quand leur condition est remplie.
| Condition | Remplie quand… |
|---|---|
| Toujours | À chaque fois. |
| Nouveau client (1ʳᵉ visite) | Aucune prestation n'existe encore à ce nom. |
| Le client a déjà dépensé plus de… $ | Total dépensé (sur tous les types ou ce type seulement) supérieur au seuil. |
| Le client est déjà venu au moins… fois | Nombre de visites (tous types ou ce type) ≥ seuil. |
| La facture (avant remise) atteint… $ | Sous-total ≥ seuil. |
| La quantité atteint… | Quantité ≥ seuil. |
| Client précis | Le nom du client figure dans la liste (noms séparés par des virgules). |
| Certains jours de la semaine | Le jour coché (Dim → Sam). |
Réglages de chaque remise : valeur en % ou en $ ; appliquée sur le coût usine (mode usine uniquement) ou sur le prix final ; Pas si un contrat est appliqué ; Suivre l'interrupteur « Remise Premier Client » (proposé pour la condition « Nouveau client ») ; active ou non ; ordre (▲). Si plusieurs remises sont possibles : appliquer seulement la première de la liste, ou les cumuler toutes. Une remise ne peut jamais dépasser le montant sur lequel elle s'applique. Les customs perso ne comptent pas dans l'historique d'un client.
Champs & notes
- Notes : libellé, texte d'exemple, obligatoire ou non.
- Champs personnalisés (15 max) : Texte, Nombre ou Liste de choix (30 choix max), obligatoires ou non. Les réponses sont enregistrées avec la prestation et affichées dans l'historique.
Aperçu (simulateur)
Teste ta prestation avant de l'enregistrer : coût usine, prix, option, quantité, grade de l'employé et type de client (Nouveau, Fidèle — 5 M$ dépensés et 20 visites —, ou Sans nom). Le simulateur affiche la facture, le coût usine, les remises, la taxe, le bénéfice et la prime.
Limites : nom 40 caractères, description 200, 30 options, 30 remises, 15 champs personnalisés. L'identifiant interne d'une prestation ne change jamais, même si tu la renommes : l'historique reste cohérent.
Primes & grades
Un coefficient de prime par grade (Patron, Co-Patron, Responsable, Expérimenté, Novice, Stagiaire, Recrue), de 0 à 1 000 % par pas de 5 (100 % = prime normale). Exemple affiché : « prime de 1 000 $ → 800 $ » pour un coefficient de 80 %. Bouton « Tout à 100 % » et Enregistrer (les primes sont recalculées immédiatement). Le grade retenu est celui au moment de la prestation. Gouvernement et Administrateur n'ont pas de coefficient : leurs primes sont toujours à 100 %. Le quota hebdomadaire se règle dans le Panel Patron.
Fonctions du panel
| Interrupteur | Quand il est désactivé |
|---|---|
| Enregistrer ma Custom | Le bouton et le filtre « Custom perso » disparaissent, et le serveur refuse les customs perso. |
| Bouton « Règlement » | Le lien disparaît du menu pour tout le monde. |
| Bouton « Clients » | L'onglet Clients disparaît pour tout le monde (les données sont conservées). |
Les changements s'appliquent en direct chez tous les membres connectés.
Calcul des prix, du bénéfice et des primes
Le même moteur de calcul tourne dans le navigateur (pour l'aperçu) et sur le serveur (qui fait foi). Voici l'ordre exact des opérations.
Ordre de calcul
- Sous-total
Prix fixe ou prix de l'option × quantité ; en mode usine : coût usine × quantité × (1 + marge %) ; en prix libre : le montant saisi × quantité.
- Remises « sur coût usine » mode usine
Elles réduisent d'abord le coût usine, puis le prix plein = coût usine remisé × (1 + marge %).
- Remise du contrat
Le pourcentage du contrat pour ce type est appliqué sur le prix plein.
- Remises « sur le prix »
Appliquées ensuite, l'une après l'autre, sur le montant restant.
- Prix final
Arrondi au dollar, jamais négatif. C'est la FACTURE CLIENT.
- Taxe
Prix final × taxe % (arrondi), si le type est taxé.
- Bénéfice net
Prix final − coût usine total − taxe. C'est le montant crédité en banque.
- Prime
Voir ci-dessous.
Le coût usine déduit est le coût réel saisi : une remise sur coût usine baisse le prix pour le client, pas le coût pour l'entreprise.
Calcul de la prime
- Si le type utilise la prime du contrat et qu'un contrat est appliqué → prime du contrat (× quantité si « par unité »).
- Sinon → la prime précise du grade si elle existe, sinon la valeur normale, selon le mode : montant fixe (× quantité si par unité), % du coût usine, % du prix facturé ou % du bénéfice net (jamais négatif).
- Le coefficient du grade s'applique (sauf si une prime précise par grade a été utilisée).
- Puis le minimum (si la prime est supérieure à 0) et le plafond.
- Enfin le quota, appliqué par employé et par semaine compta.
Exemples chiffrés (catalogue d'origine, taxe 10 %, coefficients à 100 %)
Exemple de quota (10 prestations / semaine)
| Situation | 🎯 Si le quota est atteint | 🚀 Après le quota |
|---|---|---|
| 8 prestations, 8 000 $ de primes brutes | 0 $ (quota non atteint) | 0 $ (les 10 premières ne rapportent rien) |
| 12 prestations à 1 000 $ de prime | 12 000 $ | 2 000 $ (11ᵉ et 12ᵉ) |
Les prestations sont prises dans l'ordre chronologique. Les customs perso et paiements de contrat ne comptent pas. Avec « Compter les quantités », une vente de 5 kits compte pour 5.
La semaine compta
Elle commence le vendredi à 0 h et se termine le jeudi à 23 h 59. Le webhook envoie le classement final le jeudi à 23 h 58. Les statistiques « Aujourd'hui » commencent à minuit.
Les estimations du panel
| Indicateur | Formule |
|---|---|
| Impôts estimés (Panel Patron, Impôt Gouv) | Bénéfice de la semaine × 12 % |
| Bilan des contrats | Montants prévus − remises offertes − 10 % des montants prévus |
| Sortant (page Employés) | Primes de la semaine (hors patron) + (CA × 0,90 − coût usine) × 18 % |
| Custom perso | Prix saisi × 1,10 |
| Panier moyen | CA ÷ nombre de prestations |
Ces taux sont fixes : ils ne suivent pas le réglage de taxe du catalogue.
Le catalogue d'origine
À l'installation, la compta contient 6 prestations d'exemple (un garage). Modifie-les, désactive-les ou crée les tiennes : restaurant, taxi, bar, armurerie… tout est configurable. « Réinitialiser » les remet à tout moment.
| Prestation | Prix | Coût usine | Prime | Client / plaque | Contrat | Grade min. |
|---|---|---|---|---|---|---|
| 🔧 Réparation | 300 $ fixe | 0 | 1 000 $ (ou prime du contrat) | non | ✓ | — |
| 🎨 Custom | coût usine + 40 % | saisi | 10 % du coût usine | nom + plaque obligatoires, visible espace client | ✓ | Novice |
| 🚨 Déplacement | Nord 🧭 800 $ · Sud 🗺️ 1 200 $ | 0 | 1 000 $ (ou prime du contrat) | non | ✓ | — |
| 🏚️ Fourrière | 200 $ fixe | 0 | 1 000 $ (ou prime du contrat) | non | ✓ | — |
| 📦 Kit Réparation | 2 300 $ × quantité | 0 | 1 000 $ par kit | non | — | Expérimenté |
| 🧹 Vente Chiffon | 300 $ × quantité | 200 $ / unité | aucune | non | — | Expérimenté |
Remises d'origine de la Custom (seule la première applicable est utilisée) : Remise Premier Client (−5 % sur le coût usine pour un nouveau client, hors contrat, suit l'interrupteur — désactivé par défaut) et Remise Gros Client (−5 % sur le coût usine si le client a déjà dépensé plus de 2 000 000 $ en customs, hors contrat).
Réglages d'origine : taxe 10 %, coefficients de prime à 100 % pour tous les grades, quota désactivé (10 / semaine, mode « si le quota est atteint »).
Les prix affichés dans la section « Nos services » du site public sont du texte libre, indépendant du catalogue. Si tu changes tes tarifs, pense à mettre aussi à jour tes cartes de services (→ Nos services).
Le site public
La page d'accueil / est la vitrine de ton entreprise. Presque tout se personnalise dans Paramètres compta → Site public (sous-onglets Identité, Page d'accueil, Qui sommes-nous ?, Images & logo) ; chaque bloc a un bouton « Voir sur le site ». Les changements sont visibles au prochain chargement de la page.
Les sections de l'accueil
- Barre de navigation : logo, nom, liens vers les sections, bouton Connexion Discord. Une fois connecté : avatar, nom (nom RP pour un employé), menu « Mon compte » et « Déconnexion ».
- En-tête : image de fond, petit titre, nom de la société en grand, phrase d'accroche et boutons (Postuler, Mon Espace Client, Rendez-vous, Catalogue de Jantes, Panel Employé — ce dernier visible seulement pour l'équipe).
- Bandeau de 4 chiffres animés.
- Équipe en service : les membres qui ont le panel ouvert, en temps réel (rafraîchi toutes les 30 s), avec leur grade et depuis quand ils sont en ligne. Sans personne : « Aucun mécanicien en ligne — Le garage est momentanément fermé. »
- Nos services : jusqu'à 12 cartes.
- Qui sommes-nous ? : texte, points forts et photo de l'équipe.
- Mon espace client : invitation à se connecter.
- Pied de page et crédits.
Identité : type d'entreprise, ville, nom des employés
Le site d'origine parle d'un garage à Los Santos et de mécaniciens. Trois réglages remplacent ces mots partout (accueil, espace client, candidatures, rendez-vous, panel), en respectant les majuscules et le pluriel :
| Réglage | Remplace | Exemples | Règles |
|---|---|---|---|
| Type d'entreprise | « garage » | Restaurant, Taxi, Bar, Boîte de nuit, Concession, Café, Brasserie, Épicerie, Salon de tatouage, Coiffeur, Armurerie, Ranch, Hôpital, Agence immobilière | 40 car. ; lettres, chiffres, espaces, ' ’ - & . |
| Ville / lieu | « Los Santos » | Sandy Shores, Paleto Bay, Vinewood… | 40 car. ; lettres, chiffres, espaces, - . ’ |
| Nom des employés | « mécanicien(s) » | Serveur, Chauffeur, Agent de sécurité… | Singulier + pluriel (calculé tout seul si vide) |
Seul le texte visible est modifié (jamais le code de la page). Les accords grammaticaux (le/la) ne sont pas adaptés : relis tes textes après un changement. Le lien du règlement se règle aussi ici, avec un bouton « Tester » ; l'adresse courte ton-site/reglement y redirige.
Page d'accueil
En-tête
Petit titre (80 caractères) et phrase d'accroche (300 caractères). « Texte d'origine » pour revenir en arrière.
Boutons
- Les 5 boutons d'origine : texte (40 car.), lien (
https://…ou/chemin), case « Masquer ». - Jusqu'à 4 boutons ajoutés : icône (20 au choix), texte et lien obligatoires, case « nouvel onglet ».
- Sur les boutons d'origine, un lien externe s'ouvre toujours dans un nouvel onglet ; sur les boutons ajoutés, seulement si la case est cochée.
- « Boutons d'origine » efface aussi les boutons ajoutés.
Chiffres
4 cases, chacune avec un libellé (60 car.), une case « Masquer » et une source :
| Source | Affiche |
|---|---|
| Nombre total de prestations | Toutes les prestations comptées dans les stats publiques |
| Nombre de customs | Prestations du type Custom |
| Nombre d'employés actifs | Membres de l'équipe actifs (hors administrateur) |
| Nombre de clients | Clients différents |
| Prestations de la semaine | Depuis vendredi 0 h |
| CA total / CA de la semaine | En dollars |
| Nombre de « type » | Le total d'un type de ton catalogue |
| Texte fixe | Un texte libre (60 car.) |
Les customs perso et les types décochés « Compter dans les stats du site public » ne sont jamais comptés.
Nos services
- Masquer toute la section (le lien du menu disparaît aussi), petit titre, titre en deux parties (blanche et grisée).
- Jusqu'à 12 cartes : icône (42 icônes ou un emoji), nom (obligatoire, 60 car.), description (400 car.), prix (120 car. ;
**texte**s'affiche en couleur), compteur (une source de chiffres ou un type) et son texte (80 car. ;{n}= le nombre,(s)et(x)= pluriel automatique, ex.{n} réparation(s) réalisée(s)), case « Masquer », ordre ▲ ▼. - Importer depuis mes prestations crée des cartes à partir de ton catalogue. « Remettre les services d'origine » restaure les 6 cartes d'exemple.
Qui sommes-nous ?
- Petit titre (60 car., vide = masqué) et titre principal (obligatoire, 150 car.).
- Jusqu'à 10 paragraphes de 2 000 caractères.
- Jusqu'à 8 points forts (icône, titre 120 car., texte 300 car.). Variables :
{employes}ou{mecaniciens}= nombre d'employés actifs,{prestations}= nombre total de prestations. - Image (PNG, JPG, WEBP ou GIF, 8 Mo max, enregistrée immédiatement) et sa description. « Image par défaut » revient à la photo d'origine.
Images & logo
Trois images remplaçables, au même endroit que sur /config : Logo, image de fond de l'accueil, photo de l'équipe. PNG, JPG, WEBP ou GIF, 8 Mo max ; le changement est immédiat, et ↺ remet l'image d'origine.
Espace client, candidatures et rendez-vous
Espace client /client
- Connexion Discord
Sans connexion : « Connexion requise » et un bouton « Connexion Discord ».
- Ton identité
À la première visite, une fenêtre demande le Nom Prénom RP (obligatoire, avec suggestions dès 2 lettres parmi les clients existants), l'âge et le téléphone. Elle revient tant qu'il manque une information.
- Ton historique
Le nom RP fait le lien avec les prestations : il doit être identique (majuscules mises à part) au nom saisi par les employés.
Ce que le client voit :
- Bienvenue, son avatar et « Client depuis … ».
- 5 chiffres : nombre de prestations, total dépensé, classement parmi tous les clients (🥇🥈🥉 ou #rang / N clients), dernière visite, nombre de véhicules (plaques différentes).
- Mon profil : nom RP, Discord, âge, téléphone, date d'arrivée, avec un bouton Modifier.
- Mes customs : les prestations des types « visibles dans l'espace client » (plaque, description, employé, prix, date).
- Mes candidatures et Mon rendez-vous, avec leur statut.
Un nom qui correspond à un client retiré de la liste par le patron est refusé : « Ce nom correspond à un compte client supprimé. Choisis un autre nom ou contacte un membre du staff. »
Candidature /postuler
Connexion Discord obligatoire (le pseudo Discord est rempli automatiquement et ne peut pas être modifié). Tous les champs sont obligatoires :
| Partie | Champs |
|---|---|
| Identité | Nom & Prénom · Âge · Numéro de téléphone · Discord (automatique) |
| Disponibilités | Jours, horaires, fréquence |
| Motivation | « Pourquoi vous et pas un autre ? » · « Pourquoi ta société ? » |
| Situation | Fait partie d'un gang / activité illégale : Oui · Non · Anciennement |
Après l'envoi : « CANDIDATURE ENVOYÉE ! … Tu seras contacté sur Discord. » Le candidat suit ensuite sa candidature dans son espace client :
| Statut | Message affiché au candidat |
|---|---|
| ⏳ En attente | Ta candidature est reçue et en cours d'examen. Tu seras contacté sur Discord. |
| 🎉 Acceptée | Ta candidature a été retenue. Le patron va te contacter sur Discord. Félicitations ! |
| 👷 Recruté | Tu fais partie de l'équipe ! … le patron te contactera sur Discord pour la suite. |
| ❌ Refusée | Ta candidature n'a pas été retenue. N'hésite pas à repostuler dans le futur. |
Rendez-vous /rdv
Connexion Discord obligatoire. Champs obligatoires : Nom & Prénom (60 car.), Numéro de téléphone (30 car.), Ta demande (800 car.), Tes créneaux disponibles (400 car.). Message : « Demande envoyée ! On te contacte sur Discord. »
- Une seule demande par compte Discord : ensuite, la page
/rdvaffiche directement le statut de la demande au lieu du formulaire. - Statuts : ⏳ En attente « en cours de traitement », ✅ Traité « Rendez-vous confirmé ! Vérifie tes messages Discord », ❌ Non traité « Ta demande n'a pas pu être traitée ».
Les candidatures et les rendez-vous ne déclenchent pas de notification Discord : consulte régulièrement les onglets Candidatures et Rendez-vous du Panel Patron (le nombre de rendez-vous en attente s'affiche sur la tuile).
Thème de couleur
Une seule couleur principale habille tout : panel, site public, espace client, candidatures, rendez-vous, assistant. Réglage : Paramètres compta → Général → Thème de couleur, puis « Appliquer le thème ».
#D4A017#F59E0B#F97316#EF4444#EC4899#A855F7#818CF8#3B82F6#06B6D4#10B981#84CC16#B8C0CC- Perso : n'importe quelle couleur au format
#RRGGBB. Une couleur trop sombre est éclaircie automatiquement (même teinte) pour que les boutons restent lisibles. - À partir de la couleur choisie, la compta calcule une palette complète (clair, foncé, très clair…) et l'applique aux pages, styles et scripts.
- Le changement est immédiat pour tout le monde : les panels ouverts se recolorent avec le message « Le thème de la compta a changé ».
- Les embeds Discord du webhook gardent leur couleur dorée.
Webhook Discord des primes
Si un webhook est configuré (sur /config), la compta poste automatiquement le classement des primes de la semaine dans ton salon Discord.
Quand ?
- Au démarrage du serveur.
- Toutes les 12 heures.
- Chaque jeudi à 23 h 58 (heure du serveur) : la clôture de la semaine.
Contenu du message
💰 Primes Hebdomadaires — Ta société
Semaine du vendredi … · raison de l'envoi
📊 Stats de la semaine : 🧾 prestations · 💵 CA brut · 🏆 total des primes · 🎯 quota (s'il est actif).
🏅 Classement : 🥇🥈🥉 puis #4, #5… — nom, prime, avancement du quota (✅ ou 🔒) et détail par type.
Pied : « Ta société Panel • Primes calculées selon les réglages du catalogue de prestations ».
Les primes envoyées tiennent compte des grades et du quota. Le bouton Envoyer un test de /config poste « ✅ Webhook connecté » pour vérifier que tout fonctionne. Sans webhook, rien n'est envoyé.
Données et sauvegardes
Toutes les données sont des fichiers JSON lisibles, rangés dans le dossier data/ (et les photos de profil dans pp/). Pas de base de données : sauvegarder ces deux dossiers suffit.
| Fichier | Contenu |
|---|---|
data/config.json | Configuration serveur : application Discord, Owner ID, webhook, secret de session, état de l'installation. Confidentiel. |
data/memorycompta.json | Licence, identifiant d'installation, nom de la société, images personnalisées. |
data/catalogue.json | Catalogue des prestations, taxe, coefficients de grade, quota. |
data/theme.json | Thème de couleur. |
data/users.json | Patron et employés (nom RP, grade, date d'embauche…). |
data/presta.json | Toutes les prestations. |
data/profiles.json | Profils : identité client, âge, téléphone, bio, ville, véhicule, infos Discord. |
data/settings.json | Interrupteurs (remise premier client, custom perso, boutons du menu…). |
data/contrats.json | Contrats. |
data/clients_masques.json | Clients retirés de la liste. |
data/banque.json | Solde et 300 derniers mouvements. |
data/candidatures.json | Candidatures. |
data/rdv.json | Rendez-vous. |
data/avertissements.json | Avertissements. |
data/admin-docs.json + data/admin-docs/ | Index et fichiers des documents RH. |
data/site-content.json + data/site-media/ | Textes et images du site public. |
data/branding/ | Logo, fond d'accueil et photo d'équipe personnalisés. |
pp/ | Photos de profil. |
Sauvegarder et restaurer
# archive datée de toutes les données
tar -czf sauvegarde-compta-$(date +%F).tar.gz data pp .env- Fais une sauvegarde avant chaque mise à jour et régulièrement (une fois par jour, par exemple avec une tâche cron).
- Pour restaurer : arrête la compta, remets les dossiers
data/etpp/, relance. - Pour déménager la compta sur un autre serveur : copie tout le dossier (code +
data/+pp/), lancenpm install(garderdata/memorycompta.jsonconserve la liaison de ta licence ; sur une installation neuve, demande au support de détacher la licence), puis mets à jour le lien de redirection sur/configet dans le portail Discord si l'adresse change. - N'édite pas les fichiers JSON pendant que la compta tourne : un fichier mal formé est lu comme vide.
data/config.json contient le Client Secret Discord et le secret de session : ne le partage jamais et ne le publie pas (GitHub, captures d'écran…).
Ce qui n'est pas enregistré sur le disque
Les sessions (qui est connecté) sont enregistrées dans data/sessions.json : personne n'est déconnecté par un redémarrage. La présence (qui est en ligne) est gardée en mémoire : la liste « en ligne » se reconstitue en quelques secondes après un redémarrage.
Données personnelles
- Via Discord, la compta ne reçoit que l'identifiant, le pseudo, le nom affiché et l'avatar (permission
identify). Le jeton Discord n'est pas conservé. - Toute personne qui se connecte obtient une fiche de profil (infos Discord, date de dernière connexion).
- Les clients, candidats et employés renseignent eux-mêmes leur âge et leur téléphone RP.
- La présence publique (« Équipe en service ») affiche le nom, le grade et l'avatar des membres connectés au panel.
Limites et valeurs de référence
La licence ne limite ni le nombre d'employés, ni le nombre de prestations, ni le nombre de clients. Voici toutes les valeurs fixes de la compta.
| Élément | Valeur |
|---|---|
| Port par défaut | 40244 |
| Durée d'une session | 24 heures |
| Code d'installation | 8 caractères, blocage 10 min après 8 essais faux |
| Vérification de la licence | Au démarrage puis toutes les 6 h |
| Fonctionnement sans serveur de licence | 72 heures |
| Nom de la société | 2 à 40 caractères |
| Client ID / Owner ID | 17 à 20 chiffres |
| ID Discord d'un employé (ajout) | 17 à 19 chiffres |
| Photo de profil | Image, 5 Mo max |
| Logo, fond, photo d'équipe, image « Qui sommes-nous ? » | PNG, JPG, WEBP, GIF — 8 Mo max |
| Documents RH | PDF ou PNG — 10 Mo max |
| Prestations par page | 50 |
| Options / remises par type | 30 / 30 |
| Champs personnalisés par type | 15 |
| Taxe sur facture | 0 à 100 % (défaut 10 %) |
| Coefficient de prime par grade | 0 à 1 000 % (défaut 100 %) |
| Quota hebdomadaire | 1 à 10 000 prestations (défaut 10, désactivé) |
| Cartes « Nos services » | 12 |
| Boutons ajoutés sur l'accueil | 4 |
| Paragraphes / points forts « Qui sommes-nous ? » | 10 / 8 |
| Historique de la banque | 300 mouvements |
| Suggestions de noms de clients | 8, dès 2 lettres |
| Rendez-vous | 1 demande par compte Discord |
| Rafraîchissement « Équipe en ligne / en service » | 30 secondes |
| Webhook des primes | Démarrage, toutes les 12 h, jeudi 23 h 58 |
| Semaine compta | Vendredi 0 h → jeudi 23 h 59 |
Dépannage
Les situations les plus courantes, avec le message affiché et la solution.
Installation et connexion
Toutes les pages redirigent vers /setup
L'installation n'est pas terminée. Va au bout de l'assistant puis clique sur Terminer l'installation sur /config. En attendant, l'API répond « Installation non terminée. ».
Je ne trouve pas le code d'installation
Il s'affiche dans la console au démarrage (npm start, pm2 logs memorycompta ou la console de ton hébergeur), après « INSTALLATION REQUISE ». Redémarre la compta pour le réafficher : il ne change pas tant que l'installation n'est pas finie. Après 8 essais faux : attends 10 minutes.
Discord affiche « redirect_uri invalide » / « Invalid OAuth2 redirect_uri »
Le lien de redirection enregistré dans la compta n'est pas exactement le même que dans le portail Discord (OAuth2 → Redirects). Vérifie http/https, le nom de domaine, le port éventuel et la fin /auth/callback, puis Save Changes côté Discord.
« Discord refuse ce Client ID / Client Secret »
Le Client Secret a probablement été régénéré ou mal copié. Dans le portail Discord, onglet OAuth2 : Reset Secret, copie-le et colle-le aussitôt sur /config (ou dans l'assistant).
« Tu t'es connecté avec le compte …, mais l'Owner ID enregistré est … »
Pendant l'installation, seul le compte du patron peut se connecter. Déconnecte-toi de Discord dans le navigateur et reconnecte-toi avec le bon compte, ou corrige l'Owner ID à l'étape 4.
Un employé arrive sur l'espace client au lieu du panel
Son ID Discord n'est pas dans l'équipe (ou une erreur s'est glissée dans l'ID). Panel Patron → Employés → Ajouter avec le bon ID (clic droit sur son profil → Copier l'identifiant). Il lui suffit ensuite d'ouvrir /panel.
Tout le monde a été déconnecté
Une session dure 24 h au maximum : au-delà, chacun se reconnecte en un clic. Un redémarrage de la compta ne déconnecte personne (sessions enregistrées dans data/sessions.json), sauf si ce fichier a été supprimé ou si le dossier data/ n'a pas été gardé lors d'un changement de serveur.
« ⚠️ PORT invalide dans .env » ou le port est déjà utilisé
La valeur de PORT doit être un nombre entre 1 et 65535. Si un autre programme utilise déjà le port, choisis-en un autre dans le .env et adapte ton proxy.
Licence
Le site affiche « Bientôt disponible » / le panel affiche « Compta non activée »
La licence n'est pas active : clé absente, refusée, ou serveur de licence injoignable depuis plus de 72 h. Le patron se connecte, saisit la clé sur l'écran de blocage du panel (ou sur /config) et clique sur Activer. Si la clé était bonne et que seul le serveur était injoignable, elle est revérifiée automatiquement au démarrage puis toutes les 6 h. Vérifie que ta machine peut accéder à Internet en HTTPS.
Dans le panel
Un employé ne voit pas un type de prestation
Soit le type est désactivé dans le catalogue, soit il demande un grade minimum plus élevé que celui de l'employé (ex. Custom = Novice et plus). Le serveur refuse de toute façon avec « Grade insuffisant ».
« Contrat introuvable ou désactivé. »
Le contrat choisi a été supprimé entre-temps. Recharge la page et choisis un autre contrat.
« L'enregistrement des customs perso est désactivé par le patron. »
La fonction « Enregistrer ma Custom » est coupée dans Paramètres compta → Fonctions du panel.
Je ne peux pas corriger le prix d'une prestation
Le panel ne permet de modifier que les notes. En cas d'erreur, le patron supprime la prestation (la banque est corrigée automatiquement) et l'employé la ressaisit.
Les primes des semaines passées ont changé
C'est voulu : les primes sont toujours recalculées avec le catalogue, les coefficients et le quota actuels. Les prix facturés et la banque, eux, ne bougent pas.
Le solde de la banque ne correspond pas à mes calculs
La banque reçoit le bénéfice net (pas le prix facturé) de chaque prestation et de chaque paiement de contrat, plus les ajouts, retraits et soldes définis à la main. Les customs perso n'y entrent pas. L'historique détaille chaque mouvement avec son auteur.
La liste « en ligne » ou les nouvelles prestations ne s'actualisent pas toutes seules
Le temps réel ne passe pas à travers ton proxy. Vérifie qu'il ne met pas en mémoire tampon /api/live et qu'il ne coupe pas les connexions longues (voir l'exemple Nginx). Recharge la page pour forcer la reconnexion.
« 🔒 Session expirée »
La session a dépassé 24 h. La page se recharge seule au bout de 5 secondes ; reconnecte-toi.
Une image est refusée
Logo, fond, photo d'équipe et image « Qui sommes-nous ? » : PNG, JPG, WEBP ou GIF de 8 Mo maximum. Photo de profil : 5 Mo maximum. Documents RH : PDF ou PNG de 10 Mo maximum.
Site et clients
Un client ne retrouve pas son historique
Le nom RP de son espace client doit être exactement celui saisi par les employés (seules les majuscules ne comptent pas). Il peut le corriger avec Modifier dans « Mon profil », ou le patron peut renommer le client dans l'onglet Clients. Seuls les types « visibles dans l'espace client » apparaissent (par défaut, les Customs).
« Tu as déjà une demande de rendez-vous en cours. »
Chaque compte Discord ne peut envoyer qu'une demande de rendez-vous, quel que soit son statut. Pour permettre une nouvelle demande, il faut retirer l'ancienne du fichier data/rdv.json (compta arrêtée).
Mon nouveau nom de société / mes textes n'apparaissent pas
Recharge la page (les pages sont générées à chaque visite). Pour les mots remplacés (garage, ville, mécanicien), relis aussi les textes que tu as écrits toi-même : ils sont affichés tels quels.
Les prix du site ne correspondent pas à mes tarifs
Les cartes « Nos services » sont du texte libre : mets-les à jour dans Paramètres compta → Site public → Page d'accueil → Nos services, ou utilise « Importer depuis mes prestations ».
Le webhook ne poste rien
Clique sur Envoyer un test sur /config. « Discord a refusé le message » : le webhook a été supprimé côté Discord, recrée-le. « Aucun webhook enregistré » : colle l'URL et enregistre. Rappel : l'envoi a lieu au démarrage, toutes les 12 h et le jeudi à 23 h 58 (heure du serveur).
Messages d'erreur du serveur
| Message | Cause |
|---|---|
| Non authentifié | Pas connecté ou session expirée. |
| Accès refusé - Pas employé | Le compte n'est pas dans l'équipe. |
| Accès refusé - Patron uniquement | Action réservée au patron, Co-Patron, Gouvernement ou Administrateur (y compris quand un Responsable tente une modification). |
| Accès refusé - Grade insuffisant (…) | Grade inférieur au grade minimum du type. |
| Ce type de prestation n'existe pas ou est désactivé. | Type supprimé ou désactivé pendant la saisie. |
| Champs manquants | Un champ obligatoire est vide. |
| Compta non activée : une licence MemoryCompta valide est requise. | Licence inactive. |
| Installation non terminée. | L'assistant /setup n'est pas fini. |
| Montant invalide. / Type de paiement invalide. | Opération bancaire mal remplie. |
| Aucun montant défini pour ce contrat | Encaissement d'un contrat sans montant. |
| 12 services maximum. | Trop de cartes de services. |
| Route introuvable | Adresse d'API inconnue. |
Questions fréquentes
Ça marche pour une entreprise qui n'est pas un garage ?
Oui. Crée tes propres prestations dans le catalogue (prix fixe, options, coût + marge ou prix libre), change le type d'entreprise, la ville et le nom des employés : tout le site et le panel suivent.
Est-ce compatible FiveM (ESX / QBCore) et Nova-Life ?
MemoryCompta est un site web autonome : il ne s'installe pas dans ton serveur de jeu et fonctionne avec FiveM comme avec Nova-Life, quel que soit ton framework.
Combien d'employés et de prestations puis-je avoir ?
Autant que tu veux : la licence ne fixe aucune limite.
Les employés doivent-ils créer un compte ?
Non. Tu les ajoutes avec leur ID Discord ; ils se connectent avec Discord, sans mot de passe.
Comment gérer les salaires ?
La rémunération est gérée par les primes (calculées automatiquement) et versées via la banque (« Retirer de l'argent » → motif Prime). Le classement des primes peut être posté automatiquement sur Discord.
Que se passe-t-il quand je promeus un employé ?
Ses prochaines prestations utilisent son nouveau grade (coefficient, prime par grade, types autorisés). Ses prestations passées gardent le grade qu'il avait au moment de les faire.
Puis-je exporter mes données ?
Toutes les données sont des fichiers JSON dans data/, lisibles par n'importe quel outil. Le panel n'a pas de bouton d'export.
Que se passe-t-il après les 6 mois d'hébergement inclus ?
Le script t'appartient. Tu peux l'héberger toi-même en suivant le chapitre Installation (pense à récupérer tes dossiers data/ et pp/), ou prolonger l'hébergement et les mises à jour.
Comment mettre à jour la compta ?
Depuis la version 1.2.0 : en un clic. Ouvre ton dashboard MemoryLink → Memory Compta, puis clique sur Mettre à jour sur ta compta. Dans la minute, elle télécharge uniquement les fichiers qui ont changé, sauvegarde les anciens dans data/sauvegardes-maj/ et redémarre. data/, pp/ et .env ne sont jamais touchés.
Le redémarrage est automatique, quel que soit ton hébergement (pm2, panel d'hébergeur, terminal) : rien à régler. Pour désactiver complètement les mises à jour en un clic, ajoute MEMORYCOMPTA_MAJ=off dans .env.
Version 1.1.0 ou plus ancienne : une dernière fois à la main. Sauvegarde data/, pp/ et .env, remplace les fichiers du script par la nouvelle version (sans toucher à ces dossiers), lance npm install puis redémarre.
Le panel fonctionne-t-il sur téléphone ?
Oui : sous 900 px de large, le menu devient une barre d'onglets en bas de l'écran et les fenêtres s'ouvrent en feuille depuis le bas.
Référence technique de l'API
Pour les développeurs qui veulent comprendre ou intégrer la compta. Toutes les routes répondent en JSON. Une session Discord (cookie) est nécessaire sauf mention « public ».
| Niveau | Signification |
|---|---|
| public | Sans connexion |
| connecté | N'importe quel compte Discord connecté |
| employé | Membre de l'équipe ou patron |
| patron / resp. | Patron, Co-Patron, Gouvernement ; Responsable en lecture (GET) |
| patron | Patron, Co-Patron, Gouvernement, Administrateur |
Connexion et compte
| Méthode | Route | Niveau | Rôle |
|---|---|---|---|
| GET | /auth/discord?redirect= | public | Lance la connexion Discord |
| GET | /auth/callback | public | Retour de Discord |
| GET | /auth/logout | public | Déconnexion |
| GET | /api/me | public | Utilisateur courant et ses droits |
| GET / POST | /api/profile | connecté | Lire / enregistrer son profil (âge, tel, description, ville, véhicule) |
| POST | /api/profile/avatar | connecté | Photo de profil (champ avatar, 5 Mo) |
| GET | /api/profile/:id | employé | Profil d'un autre compte |
Prestations, clients, statistiques
| Méthode | Route | Niveau | Rôle |
|---|---|---|---|
| GET | /api/prestations | employé | Toutes les prestations |
| POST | /api/prestations | employé | Créer (prix recalculé par le serveur) |
| PATCH | /api/prestations/:id | employé | Modifier les notes (auteur ou patron) ; le patron peut aussi passer prix (sans correction de la banque) |
| DELETE | /api/prestations/:id | patron | Supprimer (annulation en banque) |
| PATCH | /api/clients/:nom | patron | Renommer un client {new_name} |
| DELETE | /api/clients/:nom | patron | Retirer un client de la liste |
| GET | /api/clients/hidden | employé | Clients retirés |
| GET | /api/stats | employé | Totaux, CA du jour et du mois, par type |
| GET | /api/live | employé | Flux temps réel (Server-Sent Events) |
| GET | /api/presence | employé | Membres connectés |
Équipe, contrats, banque, RH
| Méthode | Route | Niveau | Rôle |
|---|---|---|---|
| GET | /api/employees | employé | L'équipe |
| POST / PATCH / DELETE | /api/employees[/:id] | patron | Ajouter, modifier, retirer |
| GET | /api/contrats | employé | Les contrats |
| POST / PATCH / DELETE | /api/contrats[/:id] | patron | Créer, modifier, supprimer |
| POST | /api/contrats/:id/paiement | patron | Encaisser un contrat |
| GET | /api/banque | employé | Solde et 100 derniers mouvements |
| POST | /api/banque/depot · /paiement · /solde | patron | Ajouter, retirer (primes, impots, cout_usine, autre), définir |
| DELETE | /api/banque/historique | patron | Vider l'historique |
| GET / POST / DELETE | /api/avertissements[/:id] | patron / resp. | Lire, créer, supprimer |
| GET | /api/admin-docs | patron / resp. | Index des documents fournis |
| GET / POST / DELETE | /api/admin-docs/:emp/:type | patron / resp. | Documents reglement, visite_medicale (champ doc) |
| GET / PATCH | /api/candidatures[/:id] | patron / resp. | Lire, changer le statut |
| GET / PATCH | /api/rdv[/:id] | patron / resp. | Lire, changer le statut (en_attente, traite, non_traite) |
| GET | /api/patron/members | patron / resp. | Membres clients du site |
| GET / POST | /api/settings/:cle | employé / patron | Lire / changer un interrupteur |
Catalogue, thème, licence, configuration
| Méthode | Route | Niveau | Rôle |
|---|---|---|---|
| GET | /api/catalogue | employé | Le catalogue |
| PATCH | /api/catalogue/reglages | patron | Taxe, coefficients, quota |
| POST / PUT / DELETE | /api/catalogue/types[/:id] | patron | Créer, modifier, supprimer ou archiver un type |
| PATCH | /api/catalogue/types/:id/actif | patron | Activer / désactiver |
| POST | /api/catalogue/types/:id/restaurer · /api/catalogue/ordre · /api/catalogue/reinitialiser | patron | Restaurer, ordonner, réinitialiser |
| GET / POST | /api/theme | public / patron | Lire / changer le thème |
| GET | /api/compta/public | public | Licence active ? Nom de société |
| GET | /api/compta/parametres | patron | État de la licence et des images |
| POST | /api/compta/licence · /licence/verifier · /societe | patron | Activer, revérifier, renommer |
| POST / DELETE | /api/compta/images/:cle | patron | logo, hero, team (champ image) |
| GET / POST | /api/setup/* | installation | Assistant (désactivé une fois installé) |
| GET | /api/config | Owner ID + support | État de la configuration |
| POST | /api/config/discord · /owner · /webhook · /webhook/test · /terminer | Owner ID + support | Page /config |
Site public, espace client
| Méthode | Route | Niveau | Rôle |
|---|---|---|---|
| GET | /api/public/stats | public | Chiffres du site |
| GET | /api/public/presence | public | Équipe en service |
| GET | /api/public/site-content | public | Textes du site (personnalisés) |
| GET | /api/public/clients?q= | public | Suggestions de noms (8 max) |
| GET | /api/site-content | patron | Textes bruts pour l'éditeur |
| POST | /api/site-content/entreprise · /ville · /employe · /reglement | patron | Identité |
| POST | /api/site-content/hero · /stats · /boutons · /services · /about (+ /reset) | patron | Sections de l'accueil |
| POST / DELETE | /api/site-content/about-image | patron | Image « Qui sommes-nous ? » |
| POST | /api/client/identity | connecté | Déclarer son identité RP |
| GET | /api/client/me | connecté | Historique, classement, total |
| GET | /api/clients/site-users | connecté | Comptes du site ayant une identité RP (suggestions dans le panel) |
| POST · GET | /api/candidatures · /api/client/candidature | connecté | Postuler, voir ses candidatures |
| POST · GET | /api/rdv · /api/rdv/me | connecté | Demander un rendez-vous, voir le sien |
Événements temps réel
Diffusés sur /api/live : connected, presence_update, new_presta, delete_presta, client_renamed, client_deleted, client_unhidden, settings_update, catalogue_update, banque_update. Un signal de maintien est envoyé toutes les 15 secondes.