MemoryCompta Documentation Accueil Acheter — 50€
Version 1.1.0 · documentation officielle

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é.

Node.js 16 ou plus Connexion Discord Données fichiers JSON Temps réel sans recharger Port 40244 par défaut
Chapitre 01

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

AdressePageQui y accède
/Site public (accueil)Tout le monde
/clientEspace clientToute personne connectée avec Discord
/postulerFormulaire de candidatureToute personne connectée avec Discord
/rdvPrise de rendez-vousToute personne connectée avec Discord
/panelPanel employé et patronEmployés et patron uniquement
/reglementLien court vers ton règlementTout le monde (redirection)
/setupAssistant d'installationUniquement pendant la première installation
/configConfiguration serveurLe patron (Owner ID) et l'administrateur
autrePage 404 personnaliséeRedirige vers l'accueil après 10 secondes

Vocabulaire

TermeSignification
PrestationToute vente ou intervention enregistrée (réparation, custom, menu, course, vente d'arme…). Chaque type de prestation se règle dans le catalogue.
CatalogueLa liste de tes types de prestation, avec leurs prix, coûts usine, primes, remises et options.
Coût usineCe que la prestation coûte à l'entreprise (pièces, matières). Il est déduit du bénéfice.
TaxePourcentage prélevé sur chaque facture (10 % par défaut), déduit du bénéfice.
Bénéfice netPrix facturé − coût usine − taxe. C'est ce qui entre en banque.
PrimeCe que gagne l'employé pour une prestation. Calculée automatiquement, jamais saisie à la main.
ContratAccord avec un partenaire (LSPD, EMS, entreprise…) qui donne des remises par type de prestation et peut fixer la prime.
Semaine comptaDu vendredi 0 h au jeudi 23 h 59. Primes, quota, statistiques et webhook utilisent cette semaine.
Custom persoUne custom qu'un employé fait pour lui-même : visible dans la fiche client mais hors CA, hors primes et hors banque.
PatronLe propriétaire de la compta, identifié par son Owner ID Discord. Ce n'est pas un grade qu'on attribue.
Chapitre 02

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.

  1. 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

  2. Installe et lance le serveur

    npm install puis npm start (ou pm2). Note le code d'installation affiché dans la console. → Installation

  3. Crée ton application Discord

    Sur discord.com/developers/applications : récupère le Client ID et le Client Secret, ajoute le lien de redirection https://ton-site/auth/callback. → Application Discord

  4. Suis l'assistant /setup

    Code d'installation → licence → application Discord → ton Owner ID → connexion avec ton compte Discord. → Assistant

  5. Configure ta société sur /config

    Nom de la société, logo et images, lien du règlement, webhook des primes, puis « Terminer l'installation ». → Page /config

  6. 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

  7. 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

  8. Personnalise le site public

    Type d'entreprise, ville, nom des employés, thème de couleur, services, textes et images. → Site public

  9. 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

  10. 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

Chapitre 03

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:40244 suffit 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) et compta.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 / dossierRôle
server.jsLe serveur : connexion Discord, API, temps réel, webhook des primes.
installation.jsAssistant /setup et page /config.
memorycompta.jsLicence, nom de société, images personnalisées.
catalogue.jsCatalogue des prestations (routes et enregistrement).
theme.jsThè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.
.envFacultatif : réglages avancés (port, accès administrateur…).

Installer et lancer

Terminal
# 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 :

Terminal
npm install -g pm2
pm2 start server.js --name memorycompta
pm2 save
pm2 logs memorycompta   # pour lire le code d'installation et les messages

Au premier lancement, la console affiche :

Console
🔧  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-XXXX

Ce 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.

VariableDéfautEffet
PORT40244Port d'écoute HTTP. Une valeur invalide (pas un nombre entre 1 et 65535) affiche un avertissement et garde 40244.
ADMIN_ACCESSonAccès administrateur du support MemoryCompta. off, false, 0, non, no ou desactive le désactivent. → détails
MEMORYCOMPTA_APIhttps://compta.memorylink.frAdresse 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_SECRETaléatoireSecret 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.

.env — exemple
# 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.

Nginx — exemple
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).

Chapitre 04

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.

  1. Code d'installation

    Entre le code XXXX-XXXX affiché 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. »).

  2. 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.

  3. 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 (ou http:// en local). Règles vérifiées : Client ID de 17 à 20 chiffres ; Client Secret de 16 à 128 caractères ; lien en http(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.

  4. 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.

  5. 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.

  6. Configuration

    Tu arrives sur /config en 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.

→ Webhook Discord

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.

Chapitre 05

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.

MessageSignification
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.
Chapitre 06

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

GradeNiveau d'accèsRemarques
👑 PatronTout, y compris /config et Paramètres comptaDéfini par l'Owner ID, pas attribuable dans le panel.
Co-PatronMêmes droits que le patron dans le panel, Paramètres compta comprisSeule différence : pas d'accès à la page /config.
GouvernementMê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.
ResponsableEmployé + Panel Patron en lecture seuleBandeau « Accès Lecture Seule » : voit tout, ne modifie rien.
ExpérimentéEmployéGrade junior le plus élevé.
NoviceEmployéPar défaut, peut faire les Customs.
StagiaireEmployé
RecrueEmployéGrade junior le plus bas.
AdministrateurMêmes droits que le patronAttribué 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

ActionClientEmployéResponsablePatron · 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.
Chapitre 07

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.

EntréeContenuVisible pour
DashboardTes chiffres de la semaine, l'activité du jour, les dernières prestations, l'équipe en ligne.Tous
PrestationsTout l'historique, avec filtres et pagination.Tous
EmployésL'équipe, en grille ou en liste, avec les fiches détaillées.Tous
ClientsLes clients classés par total dépensé.Tous (désactivable)
StatistiquesGraphiques et comparaison semaine par semaine.Tous
Hall Of FamePodium, trophées et records de tous les temps.Tous
Règlement ↗Ouvre ton règlement dans un nouvel onglet.Tous (désactivable)
Paramètres comptaLicence, catalogue, primes, site public, fonctions.Patron, Co-Patron, Gouvernement, Administrateur
PatronLe 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.

  1. 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. »

  2. 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).

  3. 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 »).

  4. 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.

  5. Informations complémentaires

    Les champs personnalisés du type (texte, nombre ou liste), puis les notes (obligatoires ou non selon le type).

  6. 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 »).

  7. 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éeDécerné à
Roi du chiffre d'affairesLe plus gros CA de tous les temps
Bourreau de travailLe plus de prestations
Le plus titréLe plus de titres « employé de la semaine » (meilleure prime de la semaine)
Plus grosse factureLa facture la plus élevée
Semaine de légendeLe meilleur CA sur une semaine
Journée recordLe plus de prestations en une seule journée
Série infernaleLe plus de jours consécutifs travaillés
Meilleur panier moyenPanier moyen le plus élevé (10 prestations minimum)
Ami des clientsLe plus de clients différents servis
Machine à bénéfLe plus gros bénéfice généré
Chasseur de primesLes plus grosses primes cumulées
Le plus régulierLe plus de semaines actives
Départ canonLe meilleur CA sur ses 7 premiers jours
Oiseau de nuitLe plus de prestations entre 22 h et 6 h
Lève-tôtLe plus de prestations entre 6 h et 10 h
Le vétéranLa 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énementEffet visible
Nouvelle prestationAjout dans les listes, chiffres mis à jour, notification de 5 secondes.
Prestation suppriméeRetirée partout.
Connexion / déconnexionListe « Équipe en ligne » mise à jour.
Catalogue modifiéFormulaire, filtres et calculs mis à jour.
Fonction activée / désactivéeBouton ou onglet affiché / masqué.
Mouvement bancaireSolde et historique de la banque à jour.
Client renommé, retiré ou réapparuListe Clients à jour.
Thème changéNouvelles couleurs appliquées + message « Le thème de la compta a changé ».
Chapitre 08

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.

#OngletSous-titre
1AccueilDashBoard Patron : primes, remise premier client, quota, impôts
2BanqueLe solde actuel
3ContratsRemises & tarifs
4Recherche PlaqueRetrouver un client
5EmployésÉquipe & rôles
6MembresInscrits sur le site
7CandidaturesDemandes de recrutement
8Rendez-vous« N en attente »
9AvertissementsSanctions & historique
10AdministratifDocuments 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

ChampDétail
Nom du contrat obligatoireEx. LSPD, EMS, Gouvernement…
Couleur du badgeCouleur d'affichage dans les listes (bleu #3498DB proposé par défaut).
Remises par type de prestationUn 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 papierFacultatif : 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.

Chapitre 09

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.

VoletContenu
01 GénéralLicence, nom de la société, thème de couleur, raccourci vers la configuration serveur.
02 Prestations & tarifsLe catalogue complet, la taxe sur facture.
03 Primes & gradesLe coefficient de prime de chaque grade.
04 Site publicIdentité, page d'accueil, « Qui sommes-nous ? », images et logo.
05 Fonctions du panelActiver 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
ModePourRéglages
💵 Prix fixeMême prix à chaque foisPrix facturé, coût usine (déduit du bénéfice, 0 = aucun).
🧭 OptionsZones, formules, tailles…Libellé du choix et jusqu'à 30 options (icône, nom, prix, coût usine).
🏭 Coût usine + margeCustoms, commandes sur mesureL'employé saisit le coût usine ; prix = coût × (1 + marge %). Libellé du champ personnalisable.
✍️ Prix libreDevis, montants variablesL'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.

ConditionRemplie 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… foisNombre de visites (tous types ou ce type) ≥ seuil.
La facture (avant remise) atteint… $Sous-total ≥ seuil.
La quantité atteint…Quantité ≥ seuil.
Client précisLe nom du client figure dans la liste (noms séparés par des virgules).
Certains jours de la semaineLe 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

InterrupteurQuand il est désactivé
Enregistrer ma CustomLe 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.

Chapitre 10

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

  1. 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é.

  2. 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 %).

  3. Remise du contrat

    Le pourcentage du contrat pour ce type est appliqué sur le prix plein.

  4. Remises « sur le prix »

    Appliquées ensuite, l'une après l'autre, sur le montant restant.

  5. Prix final

    Arrondi au dollar, jamais négatif. C'est la FACTURE CLIENT.

  6. Taxe

    Prix final × taxe % (arrondi), si le type est taxé.

  7. Bénéfice net

    Prix final − coût usine total − taxe. C'est le montant crédité en banque.

  8. Prime

    Voir ci-dessous.

Bénéfice net = Prix facturé − Coût usine − Taxe

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

  1. Si le type utilise la prime du contrat et qu'un contrat est appliqué → prime du contrat (× quantité si « par unité »).
  2. 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).
  3. Le coefficient du grade s'applique (sauf si une prime précise par grade a été utilisée).
  4. Puis le minimum (si la prime est supérieure à 0) et le plafond.
  5. Enfin le quota, appliqué par employé et par semaine compta.
Prime = valeur × coefficient du grade → minimum / plafond → quota

Exemples chiffrés (catalogue d'origine, taxe 10 %, coefficients à 100 %)

🎨 Custom — coût usine 10 000 $
Coût usine10 000 $
Majoration +40 %+4 000 $
Facture client14 000 $
Taxe 10 %−1 400 $
Bénéfice net (banque)2 600 $
Prime (10 % du coût usine)1 000 $
🎨 Même custom, nouveau client, remise activée
Remise Premier Client −5 % coût usine−500 $
9 500 $ × 1,4013 300 $
Facture client13 300 $
Taxe 10 %−1 330 $
Bénéfice net (13 300 − 10 000 − 1 330)1 970 $
Prime (10 % de 10 000 $)1 000 $
🔧 Réparation avec un contrat −50 %
Prix fixe300 $
Remise contrat −50 %−150 $
Facture client150 $
Taxe 10 %−15 $
Bénéfice net135 $
Prime (prime du contrat)1 000 $
📦 Kit Réparation × 3
2 300 $ × 36 900 $
Facture client6 900 $
Taxe 10 %−690 $
Bénéfice net6 210 $
Prime (1 000 $ par unité)3 000 $

Exemple de quota (10 prestations / semaine)

Situation🎯 Si le quota est atteint🚀 Après le quota
8 prestations, 8 000 $ de primes brutes0 $ (quota non atteint)0 $ (les 10 premières ne rapportent rien)
12 prestations à 1 000 $ de prime12 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

IndicateurFormule
Impôts estimés (Panel Patron, Impôt Gouv)Bénéfice de la semaine × 12 %
Bilan des contratsMontants 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 persoPrix saisi × 1,10
Panier moyenCA ÷ nombre de prestations

Ces taux sont fixes : ils ne suivent pas le réglage de taxe du catalogue.

Chapitre 11

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.

PrestationPrixCoût usinePrimeClient / plaqueContratGrade min.
🔧 Réparation300 $ fixe01 000 $ (ou prime du contrat)non✓—
🎨 Customcoût usine + 40 %saisi10 % du coût usinenom + plaque obligatoires, visible espace client✓Novice
🚨 DéplacementNord 🧭 800 $ · Sud 🗺️ 1 200 $01 000 $ (ou prime du contrat)non✓—
🏚️ Fourrière200 $ fixe01 000 $ (ou prime du contrat)non✓—
📦 Kit Réparation2 300 $ × quantité01 000 $ par kitnon—Expérimenté
🧹 Vente Chiffon300 $ × quantité200 $ / unitéaucunenon—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).

Chapitre 12

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

  1. 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 ».
  2. 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).
  3. Bandeau de 4 chiffres animés.
  4. É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é. »
  5. Nos services : jusqu'à 12 cartes.
  6. Qui sommes-nous ? : texte, points forts et photo de l'équipe.
  7. Mon espace client : invitation à se connecter.
  8. 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églageRemplaceExemplesRè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ère40 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 :

SourceAffiche
Nombre total de prestationsToutes les prestations comptées dans les stats publiques
Nombre de customsPrestations du type Custom
Nombre d'employés actifsMembres de l'équipe actifs (hors administrateur)
Nombre de clientsClients différents
Prestations de la semaineDepuis vendredi 0 h
CA total / CA de la semaineEn dollars
Nombre de « type »Le total d'un type de ton catalogue
Texte fixeUn 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.

Chapitre 13

Espace client, candidatures et rendez-vous

Espace client /client

  1. Connexion Discord

    Sans connexion : « Connexion requise » et un bouton « Connexion Discord ».

  2. 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.

  3. 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 :

PartieChamps
IdentitéNom & Prénom · Âge · Numéro de téléphone · Discord (automatique)
DisponibilitésJours, horaires, fréquence
Motivation« Pourquoi vous et pas un autre ? » · « Pourquoi ta société ? »
SituationFait 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 :

StatutMessage affiché au candidat
⏳ En attenteTa candidature est reçue et en cours d'examen. Tu seras contacté sur Discord.
🎉 AcceptéeTa 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éeTa 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 /rdv affiche 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).

Chapitre 14

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 ».

Or#D4A017
Ambre#F59E0B
Orange#F97316
Rouge#EF4444
Rose#EC4899
Violet#A855F7
Indigo#818CF8
Bleu#3B82F6
Cyan#06B6D4
Émeraude#10B981
Vert#84CC16
Argent#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.
Chapitre 15

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é.

Chapitre 16

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.

FichierContenu
data/config.jsonConfiguration serveur : application Discord, Owner ID, webhook, secret de session, état de l'installation. Confidentiel.
data/memorycompta.jsonLicence, identifiant d'installation, nom de la société, images personnalisées.
data/catalogue.jsonCatalogue des prestations, taxe, coefficients de grade, quota.
data/theme.jsonThème de couleur.
data/users.jsonPatron et employés (nom RP, grade, date d'embauche…).
data/presta.jsonToutes les prestations.
data/profiles.jsonProfils : identité client, âge, téléphone, bio, ville, véhicule, infos Discord.
data/settings.jsonInterrupteurs (remise premier client, custom perso, boutons du menu…).
data/contrats.jsonContrats.
data/clients_masques.jsonClients retirés de la liste.
data/banque.jsonSolde et 300 derniers mouvements.
data/candidatures.jsonCandidatures.
data/rdv.jsonRendez-vous.
data/avertissements.jsonAvertissements.
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

Sauvegarde
# 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/ et pp/, relance.
  • Pour déménager la compta sur un autre serveur : copie tout le dossier (code + data/ + pp/), lance npm install (garder data/memorycompta.json conserve 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 /config et 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.
Chapitre 17

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émentValeur
Port par défaut40244
Durée d'une session24 heures
Code d'installation8 caractères, blocage 10 min après 8 essais faux
Vérification de la licenceAu démarrage puis toutes les 6 h
Fonctionnement sans serveur de licence72 heures
Nom de la société2 à 40 caractères
Client ID / Owner ID17 à 20 chiffres
ID Discord d'un employé (ajout)17 à 19 chiffres
Photo de profilImage, 5 Mo max
Logo, fond, photo d'équipe, image « Qui sommes-nous ? »PNG, JPG, WEBP, GIF — 8 Mo max
Documents RHPDF ou PNG — 10 Mo max
Prestations par page50
Options / remises par type30 / 30
Champs personnalisés par type15
Taxe sur facture0 à 100 % (défaut 10 %)
Coefficient de prime par grade0 à 1 000 % (défaut 100 %)
Quota hebdomadaire1 à 10 000 prestations (défaut 10, désactivé)
Cartes « Nos services »12
Boutons ajoutés sur l'accueil4
Paragraphes / points forts « Qui sommes-nous ? »10 / 8
Historique de la banque300 mouvements
Suggestions de noms de clients8, dès 2 lettres
Rendez-vous1 demande par compte Discord
Rafraîchissement « Équipe en ligne / en service »30 secondes
Webhook des primesDémarrage, toutes les 12 h, jeudi 23 h 58
Semaine comptaVendredi 0 h → jeudi 23 h 59
Chapitre 18

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

MessageCause
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 uniquementAction 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 manquantsUn 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 contratEncaissement d'un contrat sans montant.
12 services maximum.Trop de cartes de services.
Route introuvableAdresse d'API inconnue.
Chapitre 19

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.

Chapitre 20

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 ».

NiveauSignification
publicSans 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)
patronPatron, Co-Patron, Gouvernement, Administrateur
Connexion et compte
MéthodeRouteNiveauRôle
GET/auth/discord?redirect=publicLance la connexion Discord
GET/auth/callbackpublicRetour de Discord
GET/auth/logoutpublicDéconnexion
GET/api/mepublicUtilisateur courant et ses droits
GET / POST/api/profileconnectéLire / enregistrer son profil (âge, tel, description, ville, véhicule)
POST/api/profile/avatarconnectéPhoto de profil (champ avatar, 5 Mo)
GET/api/profile/:idemployéProfil d'un autre compte
Prestations, clients, statistiques
MéthodeRouteNiveauRôle
GET/api/prestationsemployéToutes les prestations
POST/api/prestationsemployéCréer (prix recalculé par le serveur)
PATCH/api/prestations/:idemployéModifier les notes (auteur ou patron) ; le patron peut aussi passer prix (sans correction de la banque)
DELETE/api/prestations/:idpatronSupprimer (annulation en banque)
PATCH/api/clients/:nompatronRenommer un client {new_name}
DELETE/api/clients/:nompatronRetirer un client de la liste
GET/api/clients/hiddenemployéClients retirés
GET/api/statsemployéTotaux, CA du jour et du mois, par type
GET/api/liveemployéFlux temps réel (Server-Sent Events)
GET/api/presenceemployéMembres connectés
Équipe, contrats, banque, RH
MéthodeRouteNiveauRôle
GET/api/employeesemployéL'équipe
POST / PATCH / DELETE/api/employees[/:id]patronAjouter, modifier, retirer
GET/api/contratsemployéLes contrats
POST / PATCH / DELETE/api/contrats[/:id]patronCréer, modifier, supprimer
POST/api/contrats/:id/paiementpatronEncaisser un contrat
GET/api/banqueemployéSolde et 100 derniers mouvements
POST/api/banque/depot · /paiement · /soldepatronAjouter, retirer (primes, impots, cout_usine, autre), définir
DELETE/api/banque/historiquepatronVider l'historique
GET / POST / DELETE/api/avertissements[/:id]patron / resp.Lire, créer, supprimer
GET/api/admin-docspatron / resp.Index des documents fournis
GET / POST / DELETE/api/admin-docs/:emp/:typepatron / 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/memberspatron / resp.Membres clients du site
GET / POST/api/settings/:cleemployé / patronLire / changer un interrupteur
Catalogue, thème, licence, configuration
MéthodeRouteNiveauRôle
GET/api/catalogueemployéLe catalogue
PATCH/api/catalogue/reglagespatronTaxe, coefficients, quota
POST / PUT / DELETE/api/catalogue/types[/:id]patronCréer, modifier, supprimer ou archiver un type
PATCH/api/catalogue/types/:id/actifpatronActiver / désactiver
POST/api/catalogue/types/:id/restaurer · /api/catalogue/ordre · /api/catalogue/reinitialiserpatronRestaurer, ordonner, réinitialiser
GET / POST/api/themepublic / patronLire / changer le thème
GET/api/compta/publicpublicLicence active ? Nom de société
GET/api/compta/parametrespatronÉtat de la licence et des images
POST/api/compta/licence · /licence/verifier · /societepatronActiver, revérifier, renommer
POST / DELETE/api/compta/images/:clepatronlogo, hero, team (champ image)
GET / POST/api/setup/*installationAssistant (désactivé une fois installé)
GET/api/configOwner ID + supportÉtat de la configuration
POST/api/config/discord · /owner · /webhook · /webhook/test · /terminerOwner ID + supportPage /config
Site public, espace client
MéthodeRouteNiveauRôle
GET/api/public/statspublicChiffres du site
GET/api/public/presencepublicÉquipe en service
GET/api/public/site-contentpublicTextes du site (personnalisés)
GET/api/public/clients?q=publicSuggestions de noms (8 max)
GET/api/site-contentpatronTextes bruts pour l'éditeur
POST/api/site-content/entreprise · /ville · /employe · /reglementpatronIdentité
POST/api/site-content/hero · /stats · /boutons · /services · /about (+ /reset)patronSections de l'accueil
POST / DELETE/api/site-content/about-imagepatronImage « Qui sommes-nous ? »
POST/api/client/identityconnectéDéclarer son identité RP
GET/api/client/meconnectéHistorique, classement, total
GET/api/clients/site-usersconnectéComptes du site ayant une identité RP (suggestions dans le panel)
POST · GET/api/candidatures · /api/client/candidatureconnectéPostuler, voir ses candidatures
POST · GET/api/rdv · /api/rdv/meconnecté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.