Centre d'aide
Aide & documentation
Guides par rôle, fonctions de votre logiciel, statuts et questions fréquentes.
Voir la référence technique complèteFonctions de votre logiciel
Ce que le logiciel sait faire, module par module. Détail technique complet dans la Référence.
Cockpit COCKPIT
- Authentification & sessionLivréConnexion par identifiant + mot de passe haché en scrypt (jamais SHA1/MD5), session signée HMAC-SHA256 dans un cookie httpOnly, expiration auto à 12 h. Le middleware Edge redirige toute route non authentifiée vers /login.
- Rôles & permissions (RBAC)LivréMatrice rôles/permissions éditable depuis Paramètres : on attribue/retire chaque permission par rôle, on change le rôle d'un utilisateur, on ajoute/supprime des membres. Les permissions sont embarquées dans le jeton à la connexion et appliquées par le middleware et l'API de données (defense-in-depth).
- Journal d'auditLivréJournal « qui a fait quoi, quand » horodaté (Africa/Abidjan, JJ/MM/AAAA HH:mm), typé (connexion, création, modification, paiement, export, système). Affiché dans Paramètres ; lecture réservée à l'admin, écriture ouverte à tout utilisateur authentifié (logAudit).
- Organisation des tiers (page Tiers à onglets ou nav séparée — configurable)LivréOrganisation des tiers (clients, prospects, fournisseurs) CONFIGURABLE. Par défaut, un seul item « Tiers » ouvre une page à ONGLETS (Tous / Clients / Prospects / Fournisseurs) — fini le mélange dans une seule liste. L'admin peut basculer en navigation SÉPARÉE (items « Clients » et « Fournisseurs » distincts) selon les habitudes du client. Une SEULE notion de fournisseur : le référentiel d'achat (avec délais + catalogue d'articles, lié aux bons de commande) ; les clients sont Client ou Prospect (le type « Fournisseur » des contacts est déprécié). Le cycle d'achat (commandes/réceptions) n'est pas impacté.
- Politique de mots de passe robustesProStockage robuste garanti : hachage scrypt salé, jamais de mot de passe en clair, jamais SHA1/MD5. Un minimum de 8 caractères est imposé lors du déblocage maître ; la création d'utilisateur tolère encore un mot de passe court (défaut « demo »). La politique de complexité complète (longueur, casse, chiffres) n'est pas encore généralisée.
- Thème clair/sombre + densitéLivréBascule clair/sombre et densité confort/compact depuis le menu utilisateur, appliquée en direct via les tokens du design-system. Préférence conservée côté client.
- Visibilité des champs par rôle (masquage PA/marge/CMP…)LivréAu-delà de l'ACCÈS (RBAC), masquage de CHAMPS sensibles par rôle (prix d'achat, marge, coût moyen pondéré, prix d'entrée des mouvements…). Matrice « Visibilité des champs » dans Paramètres. Enforcement SERVEUR autoritaire : un champ masqué est retiré des réponses /api/data ET des écritures (un rôle ne peut ni lire ni écraser un champ qu'il ne voit pas) — le masquage UI (colonnes, KPIs, blocs tarif) n'est que cosmétique par-dessus.
- Suppression encadrée & corbeille (archive / corbeille / directe)ProSuppression ENCADRÉE par une politique à 3 niveaux (autorité serveur sur /api/data, impossible à contourner) : **ARCHIVE** = pièces à conservation légale/comptable ou traces de preuve (factures, paiements, écritures, paie, déclarations, contrats, mouvements, reçus, envois, relances, centres) → suppression REFUSÉE (409 OHADA) ; on archive / on contre-passe ; un ADMIN peut forcer (tracé à l'audit). **CORBEILLE** = données opérationnelles (devis, tiers, produits, opportunités, tâches, interventions, projets…) → soft-delete RÉCUPÉRABLE : l'élément part à la Corbeille, restaurable, éligible à la purge définitive après 60 jours. **DIRECTE** = transitoire/log → suppression réelle immédiate. Le droit d'écriture de la collection permet d'envoyer à la corbeille (posture souple, paramétrable) ; la PURGE définitive exige le droit `data:purge` (admin par défaut). Page Corbeille (restaurer / purger / vider les éligibles) ; bouton « Supprimer » réutilisable masqué pour les pièces en archive et pour qui n'a pas le droit. **GARDE D'INTÉGRITÉ (S4)** : un référentiel (client, produit, fournisseur) encore RÉFÉRENCÉ ne part pas à la corbeille — refus serveur 409 « N factures liées : archivez plutôt » + l'UI prévient avant le clic. **ARCHIVAGE (S4)** : flag réversible `archive` (le tiers reste consultable et référençable, mais quitte les listes/pickers actifs ; bouton Archiver/Désarchiver + filtre « voir les archivés »). **POSTURE (S4)** : preset d'instance **souple** (défaut) ou **strict** (la corbeille exige le droit dédié `data:delete`), réglé dans Paramètres, relu par le serveur à chaque suppression (effet immédiat).
- Numérotation configurable & atomique (par type de document)ProNumérotation des documents CONFIGURABLE par client et par type (devis, factures, commandes, réceptions, contrats, lots) et ATOMIQUE. L'admin règle le format en Paramètres via un éditeur de segments (texte fixe, séparateur, mois MM, année AA/AAAA, séquence, initiales de l'auteur, code centre) avec aperçu live — reproduisant à l'identique la codification officielle du client (ex. SEIT « MM-AA{NN}{II} » → 05-26119AD), au lieu d'un format ODIA imposé. Défaut = les 6 formats ODIA actuels (DV-05-NNN, F-MM-NNN…) → une instance qui ne touche rien garde son comportement. Le numéro est RÉSERVÉ de façon atomique côté serveur (UPSERT+RETURNING sur `doc_counters`, bucket type|période|portée recomposé depuis la session) → jamais deux fois le même, même sous double-clic / concurrence — corrige le `max+1` non transactionnel d'avant. Reprise d'historique : « Réinitialiser les compteurs » scanne l'existant et reprend au-dessus du dernier numéro (l'historique n'est jamais réécrit). Hors-ligne : l'émission numérotée est bloquée honnêtement (pas d'id provisoire).
- Déblocage maître ODIA (installé)ProDéblocage maître ODIA (exigence /verifier-logiciel Volet A) : l'écran « Mot de passe oublié » vérifie un code maître détenu par ODIA contre son empreinte scrypt (AUTH_MASTER_HASH), puis réarme un nouveau mot de passe administrateur. Fonctionnel si le code maître est configuré sur le déploiement (sinon réponse 503).
- Double authentification (MFA TOTP)LivréDouble authentification par code temporaire (TOTP, RFC 6238, sans dépendance externe). Auto-enrôlement depuis Paramètres : QR code + secret pour l'application d'authentification, confirmation par un code à 6 chiffres. À la connexion, le code n'est exigé QUE pour les comptes l'ayant activée (les autres se connectent comme avant). Désactivation protégée par un code valide. Secret stocké sur la table users (à chiffrer au repos avec l'infra).
- Sauvegarde 3-2-1 versionnéeLivréSauvegarde / restauration complète depuis Paramètres (réservé admin). Export JSON daté des DONNÉES VIVANTES de toutes les collections métier (route serveur /api/backup ; corrige l'ancien export qui figeait les données de démo). Restauration réelle par import de fichier (/api/backup/restore) : remplacement collection par collection, tolérant à l'échec partiel, avec confirmation destructive. La stratégie 3-2-1 versionnée + sauvegardes serveur automatiques arrivent avec l'infra PostgreSQL.
- Chiffrement au repos (AES-256) & transit (TLS)ProChiffrement en transit assuré : cookie de session httpOnly + secure (HTTPS) et hachage des secrets (scrypt). Le chiffrement au repos AES-256 relève de l'infrastructure de déploiement (volume/SGBD chiffré) et n'est pas géré au niveau applicatif à ce stade.
Référentiels REF
- Tiers (clients / fournisseurs)LivréRéférentiel central des tiers (clients / fournisseurs / prospects), mutualisé : la page Référentiels affiche, recherche et permet l'ajout rapide d'un tiers sur la collection PARTAGÉE `clients` (répartition par type + lien vers la gestion détaillée /clients). Aucune duplication : même source que le module Clients (la normalisation en clé étrangère explicite arrivera avec la vague Commerce).
- Articles & catalogueLivréRéférentiel d'articles & catalogue mutualisé : la page Référentiels affiche et recherche le catalogue PARTAGÉ (collection `produits` : réf., désignation, catégorie, prix de vente) avec le nombre de catégories et un lien vers la gestion détaillée (/produits). L'édition fine (prix d'achat, CMP, stock) reste dans Produits — même source partagée par Stock / Facturation / Caisse.
- Sites, unités, catégoriesProPage Référentiels livrée avec deux collections réellement gérées : Sites & lieux (nom, commune, type, géocoord. en seed) et Unités de mesure (code + libellé), en CRUD complet (ajout, suppression, persistance via store, toast). Les catégories et le géocodage avancé restent à venir (mentionné en bas de page).
- Centres / multi-établissement (sélecteur + vues filtrées)LivréMulti-établissement (Vague M). Registre des CENTRES (Paramètres → créer/activer/supprimer + rétro-affectation) + SÉLECTEUR de centre. DEUX niveaux : (M1) FILTRE ORGANISATIONNEL pour les utilisateurs NON restreints (admin/siège) — sélecteur « Tous » (consolidé) / un centre, focalise tableau de bord + factures + devis + stock ; (M2) ACCÈS RESTREINT par centre, vraie ISOLATION DE SÉCURITÉ côté SERVEUR : un utilisateur ASSIGNÉ à un centre (Paramètres → Équipe → Centre) ne peut LIRE ni ÉCRIRE que les données de SON centre, appliqué dans la CRUD générique `/api/data` (filtre en lecture + `centreId` FORCÉ à la création + garde 404 par id, impossible à contourner par appel API direct) ; son sélecteur est verrouillé (badge). `centreId` est ORTHOGONAL au rôle (admin sans centre = non restreint = voit tout). Collections isolées : factures, devis, paiements, stock, tickets, sessions de caisse, interventions. ⚠️ Un utilisateur restreint ne voit PAS les données legacy NON rattachées à son centre — l'admin doit les rétro-affecter (outil non destructif). La restriction prend effet à la reconnexion (centreId dans la session signée).
Alertes NOTIF
- Notifications in-app (cloche, centre)LivréCentre d'alertes vivant : computeNotifications() dérive en temps réel les créances en retard, les devis à relancer et les lignes de stock sous seuil. Alimente à la fois la cloche du bandeau (AppShell) et la page /notifications (3 KPIs + liste cliquable vers la fiche concernée).
- Fil d'activité (qui a fait quoi)LivréFil d'activité « qui a fait quoi » affiché sur le tableau de bord (ActiviteFeed). Lecture seule via la route /api/activite consommée par HttpReadPort du kernel, avec états chargement / erreur+réessayer / plein gérés. Vitrine du chemin distant route serveur → port → UI.
Facturation BILL
- Devis → factures → créancesLivréDevis multi-rubriques (lignes groupées, remises ligne et globale, TVA modifiable) avec CYCLE DE VIE explicite : Brouillon → Envoyé → Accepté/Refusé → Archivé (boutons de transition sur la fiche ; « Envoyer » avance en Envoyé ; kanban dans la liste). La conversion en facture n'est possible que depuis Envoyé/Accepté (jamais un brouillon), conserve lignes/totaux et lie devis↔facture (idempotente). Le statut de la FACTURE est DÉRIVÉ (payé vs TTC) — pas de changement manuel (un avoir/annulation = roadmap). Le PU d'achat saisi reste interne (jamais imprimé).
- TVA 18 % · FCFA · dates JJ/MM/AAAALivréCalcul automatique HT / TVA / TTC à 18 % (taux ivoirien), montants en FCFA (XOF), dates JJ/MM/AAAA. Les totaux apparaissent sur le devis, la facture et les documents officiels.
- Encaissements & échéancierLivréEnregistrement des paiements (Espèces, Mobile Money, Chèque, Virement) sur la fiche facture ; le statut et le reste dû se recalculent automatiquement. Échéancier des créances avec balance âgée (0–30 / 31–60 / 61–90 / 90+ j), DSO approché et retard moyen.
- Avoirs (notes de crédit) & contre-passation comptableProAVOIR (note de crédit) pour corriger ou annuler une facture SANS jamais la supprimer ni la modifier (pièce légale immuable, OHADA). Depuis la fiche facture : « Créer un avoir » (raison + montant ≤ solde facturable). L'avoir est une 2ᵉ pièce qui CONTRE-PASSE la 1ʳᵉ en comptabilité — écriture INVERSE de la vente (C 411 / D 701 / D 4431) déversée dans le journal, le grand livre, la balance et les états (équilibre garanti par construction). La fiche facture affiche les avoirs liés, le « Net après avoirs » et un reste-à-payer réduit. L'avoir s'ANNULE (statut Annulé, réversible) — exclu des calculs et de la compta, jamais effacé ; la collection `avoirs` est elle-même à conservation légale (suppression refusée). La certification FNE de l'avoir reste une profondeur à venir.
- Facture normalisée électronique (FNE-DGI)ProFacture normalisée électronique (DGI) : profil fiscal B2B/B2C/B2G, numéro normalisé, QR de vérification et cartouche FNE. Le mode dégradé (DGI indisponible) bascule la facture en file d'attente. En démonstration, la transmission est SIMULÉE (mention « SPÉCIMEN — non transmis à la DGI ») via un adaptateur dont l'interface calque l'API réelle ; seul le mode « simule » est câblé.
- Envoi de facture par e-mail / WhatsAppLivréEnvoi d'un devis / d'une facture par e-mail ou WhatsApp, dans la doctrine ODIA « message-à-copier » (volontaire — contrôle gérant, traçabilité, pas de dépendance API) : la modale d'envoi génère l'objet + le corps du message d'accompagnement (identité ODIA, montant FCFA), ouvre le PDF brandé à joindre, puis trace l'envoi (canal + date). Un devis « Brouillon » passe automatiquement « Envoyé ». L'intégration d'une API WhatsApp Business / e-mail (envoi 100 % automatique) reste une évolution ultérieure.
- Relances IA des impayésProRelances des impayés. PRIORISATION DÉTERMINISTE livrée (lot N2, sans IA) : worklist « À relancer en priorité » sur la page Créances = les créances EN RETARD non relancées récemment, triées par urgence (retard puis montant), avec ESCALADE automatique du palier (rappel courtois → relance ferme → mise en demeure) et un DÉLAI ANTI-SPAM (pas de re-relance avant 7 jours) ; un clic prépare le message (à copier, e-mail ou WhatsApp) et trace la relance. L'assistant oriente vers cette worklist (« qui relancer ? »). La couche IA proprement dite — rédaction adaptative au ton du client + cadence entièrement automatique — reste roadmap (honnêteté : la priorisation est par règles fixes, pas un modèle).
Contrats CONTR
- Contrats & abonnements récurrentsLivréCréation, consultation et édition des contrats récurrents avec cadence (hebdomadaire à trimestrielle), montant par échéance et statut. Liste en table/cartes/kanban, recherche, regroupements et export ; le kanban permet de changer le statut par glisser-déposer.
- Échéances & renouvellementsLivréÉchéancier CALCULÉ depuis la cadence (Hebdo +7j · Quinzaine +14j · Mensuel +1 mois · Trimestriel +3 mois) entre dateDebut et dateFin, + DÉTECTION D'EXPIRATION et RENOUVELLEMENT. Sur la fiche : badge « ⚠ Expiré le … » (fin passée, contrat non marqué Expiré) ou « ⏳ Expire dans N j » (≤ 30 j) et bouton « Renouveler (+12 mois) » (décale la fin + réactive). Sur la liste : badge expiré/expire-bientôt + KPI « à renouveler » + CA récurrent mensualisé estimé.
- Génération automatique des factures récurrentesLivréGénération de FACTURES RÉELLES depuis l'échéancier d'un contrat. Sur la fiche, « Générer l'échéancier » crée les échéances (collection `echeances-contrat`, idempotent : ne recrée jamais une date déjà présente), puis « Générer la facture » sur une échéance crée une facture (objet « <contrat> — échéance JJ/MM/AAAA », montant par échéance, paiement à +30 j) qui apparaît dans le module Facturation, et passe l'échéance à « Facturée » avec lien cliquable. À la demande (pas de cron) ; honnête : montant = celui du contrat, TVA 0 par défaut (régime Entreprenant ODIA).
Clients CRM
- Répertoire contacts/comptes (WhatsApp-first)LivréRépertoire des tiers (clients, prospects, fournisseurs) sur un vrai store CRUD : liste filtrable et recherchable, création avec code interne séquentiel CLI-NNN, modification et fiche détaillée. Navigation par DRILL-DOWN contextuel GÉNÉRALISÉ : cliquer une entité référencée depuis un AUTRE écran — référentiel (client, fournisseur, personnel, produit, site/dépôt) OU document (facture, devis, intervention) — ouvre un PANNEAU d'aperçu par-dessus la page courante (résumé + indicateurs), qu'on ferme pour revenir EXACTEMENT au contexte, ou « voir la fiche complète » pour aller à l'onglet-mère. Exemples : la fiche client ouvre ses devis/factures en panneau ; les créances ouvrent la facture ; une réclamation ouvre son document lié. Aucune navigation automatique vers un autre onglet sans action explicite (seuls les clics d'événements d'agenda restent une navigation, par convention calendrier). Les montants sensibles (coût d'achat, CMP, marge) ne sont jamais affichés dans un aperçu sans le droit (s'appuie sur le masquage serveur). Le téléphone reste interne (jamais sur un document client).
- Pipeline & opportunités (kanban, FCFA)LivréPipeline commercial en kanban : les opportunités (rattachées à un tiers par référence + montant FCFA) se déplacent par glisser-déposer d'une étape à l'autre (Prospect → Qualification → Proposition → Négociation → Gagné/Perdu), avec mise à jour persistée. KPIs : pipeline pondéré (Σ montant × probabilité des étapes ouvertes), nombre d'opportunités ouvertes, taux de conversion. Vues kanban/table/cartes ; création, édition, suppression.
- Tâches & relancesLivréTâches de suivi commercial (appel, relance, RDV, suivi) rattachées à un tiers et/ou une opportunité, avec échéance, priorité et statut À faire → En cours → Fait (par glisser-déposer). Les échéances dépassées sont signalées « en retard ». Collection `taches-crm` DISTINCTE des relances de recouvrement d'impayés (module Facturation). KPIs : à traiter, en retard, faites.
- Historique des interactionsLivréJournal d'interactions daté sur la fiche tiers (appels, e-mails, RDV, notes, WhatsApp) affiché en fil d'activité (Timeline) avec ajout inline — EN PLUS de la vue 360° des pièces commerciales (devis/factures liés + KPIs total facturé / reste dû). Ce qui marche : journal d'interactions saisi/tracé manuellement + 360° documents ; l'omnicanal livré (`crm.omnicanal`) trace l'échange manuellement (« message-à-copier »). Roadmap : capture AUTOMATIQUE depuis les canaux (lecture des conversations) — non livrée.
- Omnicanal (WhatsApp, e-mail) — message-à-copierLivréContact d'un tiers directement depuis sa fiche CRM via la modale « Contacter » : choix du canal (e-mail/WhatsApp) + modèle (prise de contact, relance commerciale, message libre), message ÉDITABLE prêt à copier, et traçage de l'échange dans l'historique des interactions. Doctrine ODIA « message-à-copier » (envoi non automatisé ; l'API WhatsApp Business / SMS reste une évolution ultérieure).
- Campagnes & fidélité (RFM, relance d'inactifs)LivréSegmentation RFM (Récence / Fréquence / Montant) calculée sur les factures liées au client (par clientId) : Récence = jours depuis la dernière facture, Fréquence = nombre de factures, Montant = chiffre d'affaires cumulé. Badge de segment (VIP / Actif / Régulier / Dormant / Sans achat) et filtre sur la liste des tiers — règles fixes documentées, sans IA. Base pour des relances ciblées ; les campagnes bulk restent ultérieures.
- Réclamations / SAV léger (lié à la commande)LivréRéclamations / SAV léger : ouvrir une réclamation rattachée à un client et, en option, à un document (devis/facture/commande) ; suivi en kanban 4 statuts (Ouverte / En traitement / Résolue / Fermée) avec priorité et traçabilité de la résolution. Distinct des tâches commerciales (CRM) et des impayés (Facturation). Hub /support + section dédiée sur la fiche client.
- Scoring/SDR IA, détection de churnProScoring client par SEGMENTATION RFM — DÉTERMINISTE, livré (lot N4 ; pas d'IA, règles fixes). Récence (jours depuis la dernière facture) · Fréquence (nb de factures) · Montant (Σ TTC) → segment VIP / Actif / Régulier / Dormant / Sans achat, visible en colonne + filtre sur la liste Clients, et désormais INTERROGEABLE par l'assistant (« mes meilleurs clients ? », « combien de dormants ? »). Le scoring PRÉDICTIF (SDR commercial, détection de churn par modèle) reste roadmap — ici la priorisation est par règles, pas un modèle.
Caisse POS
- Comptoir tactile, sessions, reçusLivréComptoir tactile complet : ouverture de session sur un dépôt avec fond de caisse, panier (articles du catalogue + article libre hors-catalogue, remise par ligne et globale), encaissement en tickets séquencés T-MM-NNN avec décrément du stock, puis clôture avec calcul d'écart (espèces comptées vs attendues) et rapport Z. Le journal de caisse historise sessions, ventes, activité par jour et top articles.
- Encaissement mobile money + espècesLivréChoix du mode de paiement à l'encaissement : Espèces, Mobile Money et Carte. Le mode est porté par chaque ticket et ventilé partout (KPI par mode, colonnes du journal, activité par jour, rapport Z). Le suivi des espèces (fond, ventes espèces, espèces en caisse) découle directement du mode choisi ; pas de connecteur opérateur (Orange/MTN/Wave) — le mode est déclaratif.
- Scan code-barres / QR → ajout au panierLivréScan code-barres / QR à l'encaissement : un champ « scanner / saisir un code » au-dessus du panier. La douchette en mode CLAVIER (keyboard-wedge : code + Entrée) saisit le code → le produit est retrouvé et ajouté au panier (qté +1 si déjà présent). Aucune dépendance matérielle ni accès caméra (toute douchette USB/Bluetooth en émulation clavier fonctionne) ; une intégration caméra/SDK reste possible plus tard sur le même point d'entrée.
- Reçu normalisé électronique (RNE B2C)LivréReçu normalisé électronique (RNE B2C) dans la continuité de la FNE. À l'encaissement, toute vente ≥ 5 000 FCFA (seuil légal DGI) est auto-certifiée : référence normalisée, QR de vérification et cartouche RNE sur le reçu imprimé. Réutilise l'adaptateur FNE (même système DGI, profil B2C) ; le mode dégradé (DGI indisponible) bascule en file d'attente, ré-essayable depuis la fiche ticket. En démonstration, la transmission est SIMULÉE (mention « SPÉCIMEN — non transmis à la DGI ») via un adaptateur dont l'interface calque l'API réelle ; seul le mode « simule » est câblé.
Stock INV
- Articles/SKU, code-barres, seuils d'alerteLivréCatalogue produits complet (référence/SKU, désignation, catégorie et sous-catégorie, prix d'achat/vente, marge interne). Recherche libre, import en masse et arborescence catégorie → sous-catégorie déduite des fiches. Le seuil d'alerte de réappro est porté par la ligne de stock ; le code-barres existe en donnée et alimente la recherche mais n'a pas encore de champ de saisie dédié.
- Entrées/sorties temps réelLivréSaisie de mouvements (Entrée, Sortie, Transfert) avec motif, répercutés immédiatement sur les quantités en stock et historisés par référence. Un import de stock crée des entrées tracées plutôt qu'une mise à jour silencieuse.
- Inventaire complet & tournantLivréInventaire valorisé (valeur du stock au CMP, références, nombre de lignes sous le seuil) et ajustement d'inventaire par dépôt : la quantité comptée génère un mouvement de régularisation (entrée/sortie), jamais une écriture silencieuse. Inventaire tournant possible référence par référence et dépôt par dépôt ; pas de session d'inventaire formalisée.
- Multi-dépôts / emplacementsLivréStock géré par couple article × dépôt (clé ref@dépôt) avec filtres par dépôt, transferts inter-dépôts et vue « par dépôt » sur la fiche article. La liste des dépôts est déduite des lignes de stock (datalist à la saisie).
- Valorisation CMP + frais d'approche importProValorisation au Coût Moyen Pondéré : recalcul à chaque entrée (moyenne pondérée par les quantités, arrondi FCFA), conservation du CMP sur transfert, valeur du stock affichée au CMP. Le volet « frais d'approche import » (intégration des frais de dédouanement/transport dans le coût) est annoncé mais pas encore implémenté.
- Multi-devises d'achat (EUR/USD/CNY → FCFA figé)ProEnregistrer un coût d'ACHAT import dans sa DEVISE réelle (EUR, USD, CNY…) avec le taux et la date, tout en gardant le FCFA comme monnaie unique de gestion, de stock et de vente. À la saisie d'achat (produit, commande, réception), un sélecteur de devise + taux pré-rempli + date affiche l'équivalent FCFA ; ce FCFA est FIGÉ au taux saisi et devient la source de vérité du coût de revient (CMP), de la marge et de la valorisation — JAMAIS recalculé au taux du jour (trace douane/ARTCI fiable). Le `Money` {valeur, devise, taux, date} est un ajout PARALLÈLE : un achat en FCFA reste inchangé. Le coût d'achat masqué (field-visibility) masque AUSSI sa variante devise (pas de fuite). La vente reste 100 % FCFA. Stratégie de taux MANUEL par défaut (le taux de la facture/douane) ; import de grille / API = slots à venir, indicatifs (jamais « officiel »).
- Lots / séries / dates de péremptionProRegistre des lots / numéros de série / dates de péremption, parallèle au stock agrégé : liste filtrable (dépôt, statut d'expiration), création et édition, alertes automatiques (Expiré / Bientôt ≤ 30 j / OK) calculées à la date du jour. Ce qui marche : traçabilité lot/série + alertes. Ce qui reste (roadmap) : la déduction automatique du lot le plus proche de la péremption à la sortie (FEFO) et la réconciliation Σ lots = quantité de stock — non câblées à la caisse/aux mouvements à ce stade.
- Prévision de demande IA, réappro autoProRéapprovisionnement assisté — DÉTERMINISTE, livré (lot N4 ; pas d'IA). Les articles sous leur seuil sont listés avec une QUANTITÉ SUGGÉRÉE (cible ≈ 2× seuil) et le FOURNISSEUR préféré (dérivé par catégorie, délai le plus court) — sur la page Stock et interrogeable par l'assistant (« quoi réapprovisionner ? »). La PRÉVISION DE DEMANDE par modèle (saisonnalité, tendance sur l'historique des mouvements) et le réappro entièrement automatique restent roadmap — ici le calcul est par règles fixes, pas un modèle.
Achats PROC
- Commandes d'achat & réceptionsLivréCommandes d'achat multi-lignes passées à un fournisseur, puis réception totale ou partielle. **Catalogue par fournisseur** (R5) : on choisit un fournisseur → la liste d'articles ne montre QUE ce qu'IL vend (lien fournisseur↔produit), avec le **PU auto-rempli à SON prix** ; un même produit peut être vendu par plusieurs fournisseurs à des prix différents. On peut aussi **saisir un article hors catalogue** (ponctuel non enregistré, OU enregistré au catalogue du fournisseur via une case) et **créer un produit au catalogue** directement depuis la commande. **Historique du prix d'achat fournisseur** : chaque changement de prix (commande à PU différent, réception au prix réel, ou édition) ajoute un point daté → courbe d'évolution sur la fiche fournisseur (catalogue & prix) et la fiche produit (fournisseurs & prix, comparaison + meilleur prix). La réception crée un bon (GRN), fait entrer chaque ligne en stock au dépôt choisi et recalcule le CMP ; le statut de la commande se dérive du cumul reçu vs commandé.
- Fournisseurs & dettesProRéférentiel fournisseurs complet (création, édition, catégorie, contact, délai de livraison, notes) avec liste filtrable et export. Le volet « dettes » (encours fournisseur, factures d'achat, à-payer) n'est pas encore livré.
- Réapprovisionnement sur seuilsLivréRéapprovisionnement sur seuils : l'écran liste les lignes de stock passées sous leur seuil, calcule la quantité suggérée (cible ≈ 2× seuil) et propose un fournisseur déduit de la catégorie de l'article. L'utilisateur ajuste les quantités/fournisseurs, coche les lignes, et génère en un clic des commandes d'achat groupées par fournisseur (statut « Commandée »), suivies dans le module Achats. Pas de génération programmée (cron) ni de prévision IA — c'est le périmètre d'inv.prevision-ia.
Trésorerie FIN
- Journal trésorerie (banque/caisse) + mobile moneyLivréJournal de trésorerie complet : saisie, modification et suppression d'écritures (recette/dépense) par compte Caisse, Banque ou Mobile Money. KPI Solde net / Recettes / Dépenses calculés en direct, table avec recherche, filtres, regroupement et export.
- Plan comptable SYSCOHADA + écriture auto depuis VentesLivréPlan comptable OHADA (jeu de comptes essentiels) + génération AUTOMATIQUE des écritures (projection) depuis Ventes (factures→411/701/4431), Achats (réceptions→601/4452/401), Règlements (→521/571↔411) et Caisse (tickets→571/521/701/4431) + **écritures MANUELLES (OD — opérations diverses)** saisies à la main (paie, amortissements, régularisations…), équilibrées et fusionnées au journal. Journal général + grand livre par compte (débit/crédit/solde) + balance équilibrée. Honnête : projection des flux + OD manuelles (1ʳᵉ source écrite) ; le lettrage et la clôture d'exercice arriveront avec la profondeur comptable ; la trésorerie libre n'est pas postée ; TVA caisse estimée au taux standard 18 %.
- Calcul & déclaration TVA 18 %LivréRegistre TVA par mois : TVA collectée (extraite du TTC des factures, au taux réel de chaque facture) − TVA déductible (réceptions, au taux standard 18 %) = TVA nette à payer ou crédit reportable. Génère une déclaration mensuelle en PDF brandé (brouillon type CA3). Doctrine ODIA : le cockpit prépare la déclaration, l'utilisateur la dépose sur e-impôts (DGI) puis la marque déposée (trace) — RIEN n'est transmis automatiquement. La déductible au taux standard et le détail par achat (mixte/exonéré) relèveront du module SYSCOHADA.
- États SYSCOHADA (bilan, CdR) + export FEC/balance cabinetLivréCompte de résultat (produits − charges = résultat net) et Bilan (Actif / Passif + résultat) dérivés du grand livre SYSCOHADA — équilibre garanti par construction (Total Actif = Total Passif + Résultat). Exports : FEC (format standard, séparateur tabulation), balance comptable (CSV), états brandés (PDF). Honnête : plan comptable essentiel — immobilisations, stocks, capital, amortissements et écritures de clôture restent à intégrer avec le cabinet ; FEC à valider, états d'aide à la décision non déposés.
- OCR des factures d'achat / reçusLivréLecture OCR d'une facture d'achat / reçu (Tesseract local, cf. doc.ocr) → parsing DÉTERMINISTE (regex, pas d'IA) des montants (TTC, TVA dérivée du TTC au taux 18 % si absente, HT = TTC − TVA), date et fournisseur → proposition de pièce d'achat ÉQUILIBRÉE (D 601 HT, D 4452 TVA, C 401 TTC) pré-remplie dans le formulaire OD. Honnête : extraction best-effort (badge de confiance + texte OCR brut affiché), montants à vérifier, JAMAIS d'enregistrement automatique (revue obligatoire) ; image transitoire (non archivée) ; si Tesseract absent → « indisponible » (pas de faux montants).
- Prévision de trésorerie multi-scénariosLivréPrévision de trésorerie sur 3 mois, DÉTERMINISTE (pas d'IA) : solde actuel (journal trésorerie) + encaissements attendus (factures impayées par échéance) − décaissements attendus (commandes ouvertes à leur livraison + charges récurrentes au run-rate historique), en 3 scénarios (optimiste/réaliste/pessimiste). Point bas + alerte si solde projeté négatif. Honnête : estimation indicative, hypothèses de recouvrement et de charges affichées — jamais présentée comme une garantie.
- Rapprochement bancaire IA, pré-comptabilisationProRapprochement des encaissements — appariement DÉTERMINISTE livré (lot N3, sans IA). Le gérant saisit/colle son relevé (virements, mobile money, espèces ; le cockpit ne se connecte PAS à la banque — réalité CI : relevés papier/PDF) ; pour chaque ligne, le cockpit propose la/les créance(s) correspondante(s) par RÈGLES FIXES avec un niveau de CONFIANCE affiché (Exact = montant + client identifié · Probable = montant OU client · À vérifier). Sur validation HUMAINE, le paiement est enregistré (la facture se solde et l'écriture se projette en comptabilité — Règlements 521/571↔411, équilibrée par construction) et la ligne passe « rapprochée ». Un encaissement sans correspondance reste VISIBLE (jamais masqué). La couche IA (lecture automatique d'un relevé importé + appariement probabiliste) reste roadmap : ici l'appariement est par règles, pas un modèle.
Projets PROJ
- Tâches, sous-tâches, kanban, échéancesLivréSOUS-TÂCHES par projet (collection `taches-projet`) : ajout inline (titre, échéance, assigné au personnel par FK), kanban À faire / En cours / Fait (glisser-déposer = changement de statut) + vue table, échéance en retard signalée. Distinct du kanban de STATUT du projet lui-même (liste /projets). L'avancement du projet en est DÉRIVÉ (voir proj.dashboard).
- Jalons datés (atteint / en retard)LivréJALONS datés d'un projet (étapes clés) : liste triée par date avec bascule « atteint », ajout (libellé + date), suppression. Un jalon non atteint dont la date est passée est signalé en rouge (et rend le projet « en retard »). Même collection que les tâches (`taches-projet`, kind=jalon).
- Suivi d'avancement & retardsLivréKPIs en direct (projets en cours, budget cumulé FCFA, avancement moyen) + barre d'avancement par ligne. L'avancement est DÉRIVÉ des tâches (faites / total ; repli sur l'avancement manuel si aucune tâche). DÉTECTION DE RETARD : un projet non terminé dont l'échéance cible est passée OU portant une tâche/jalon en retard est marqué « en retard » (liste + fiche).
Parc ASSET
- Inventaire des équipements + historiqueLivréInventaire des équipements (véhicules, engins, matériel) avec statut, valeur et prochain contrôle. Création, édition et fiche par équipement ; KPIs (parc actif, valeur totale, en panne), recherche, filtres, regroupements et export depuis la liste.
- Alerte de contrôle réglementaire (échéance)LivréAlerte de contrôle réglementaire DÉRIVÉE de `prochainControle` : badge « ⚠ Contrôle dû le … » (date passée) ou « ⏳ Contrôle dans N j » (≤ 30 j) sur la fiche et la liste, KPI « contrôle dû / proche », et bouton « Contrôle effectué (+1 an) » qui reporte l'échéance. Pas de bascule automatique du statut de l'équipement (badge dérivé only).
- Amortissements (dotation → OD comptable)LivréPlan d'amortissement LINÉAIRE des immobilisations : dérivé de la date d'acquisition + valeur d'acquisition (− valeur résiduelle) + durée (années). Chaque dotation annuelle se COMPTABILISE en écriture comptable OD équilibrée (D 681 « Dotations aux amortissements » / C 28x « Amortissements ») qui se déverse automatiquement dans le journal, le grand livre, la balance et les états (compte de résultat / bilan). Affiche la valeur nette comptable (VNC) par année et la VNC actuelle. Honnête : méthode linéaire uniquement (dégressif/dérogatoire roadmap) ; comptes SYSCOHADA (241/245/2841/2845/681) à valider avec le cabinet.
Terrain OPS
- Interventions / bons / attributionLivréBons d'intervention de bout en bout : création, fiche détaillée éditable et liste avec recherche, filtres et export. Chaque intervention porte client, site, type, ressource affectée, date, statut et compte rendu, avec vues table / cartes / kanban et glissé-déposé du statut.
- Planning & affectation des techniciensProAffectation des techniciens partielle : on assigne une ressource et une date sur chaque bon, et on pilote l'avancement via le kanban par statut sur la liste des interventions. Pas encore de planning calendaire dédié ni d'attribution automatique (annoncé pour le module Terrain complet).
- Saisie hors-ligne + synchronisation (terrain)LivréMode HORS-LIGNE complet du cockpit : (1) les données déjà consultées restent affichées sans réseau (cache local IndexedDB) et les saisies (interventions, comptes rendus, créneaux…) sont mises en FILE D'ATTENTE puis SYNCHRONISÉES automatiquement au retour du réseau, avec un bandeau de statut ; (2) **application installable (PWA)** + **service worker** qui cache l'app-shell, les pages déjà visitées et la session → l'app **se relance hors-ligne** (recharge à froid) sans rebond vers la connexion. Couvre TOUTES les collections (stores génériques + devis/factures/paiements) via un décorateur sur le port de données unique ; le service worker laisse la donnée à la couche IndexedDB (n'intercepte pas `/api/data`). Aucune nouvelle base, aucun changement RBAC.
Planning PLAN
- Créneaux & agenda (saisie par jour)LivréCréneaux datés gérés en CRUD complet : intitulé, jour (JJ/MM/AAAA), horaire début/fin, type et ressource affectée. Liste recherchable et groupée par jour, création et édition d'un créneau, export. La saisie se fait par date.
- Vues calendrier (mois / semaine)LivréVues calendrier réutilisables (mois et semaine) branchées sur le planning, les interventions, le journal de caisse et les congés. La vue Mois place chaque élément dans la cellule du jour ; la vue Semaine est une grille heures × jours (type Gantt) qui positionne les créneaux par horaire. Navigation mois/semaine + « Aujourd'hui ».
- Affectation des créneaux au personnel (planning par personne)LivréAffectation d'un créneau à une personne (ressource) avec intitulé (= la tâche) et horaire de début/fin. Le planning se filtre par personne et par type ; combiné à la vue Semaine, on obtient le planning par personne. L'affectation se fait à la saisie/édition du créneau.
- Planning par ressource (employé, véhicule, projet, site) + vue d'équipeLivréPlanning PAR RESSOURCE : chaque entité planifiable (employé, véhicule/équipement, projet, site) a une section « Planning » sur sa fiche, agrégeant SES événements depuis plusieurs sources (créneaux, interventions, congés, maintenance) — calendrier de cette ressource uniquement. Côté admin, la « vue d'équipe » du planning agrège tous les événements de toutes les ressources, filtrable par personne et par type, avec la présence du jour. Les créneaux/interventions portent un lien personne (ressource) et équipement.
- Récurrence : modèles de semaine type + générationLivréRécurrence par MODÈLES DE SEMAINE TYPE : on définit une semaine type (occurrences = jour de semaine + horaire + intitulé + ressource/équipement) réutilisable, puis on GÉNÈRE les créneaux datés sur une plage de dates. Aperçu du nombre de créneaux et détection des conflits (même ressource/jour/horaire) avant génération. La génération automatique d'occurrences glissantes (sans plage) reste à venir.
- Groupes & sous-groupes (équipes, flotte)LivréGROUPES & SOUS-GROUPES pour organiser personnel (équipes) et parc (flotte) et gagner en visibilité sur le planning & les interventions. Modèle = ARBRE DÉDUIT : deux champs string `groupe`/`sousGroupe` sur la fiche personnel et la fiche équipement (pas de table relationnelle, pas de migration). Filtre « Groupe » sur le planning (vue d'équipe + table créneaux) et sur les interventions — le groupe d'un créneau/intervention est DÉRIVÉ de sa ressource affectée (source unique, jamais dupliqué). Vue d'organisation (arbre groupe → sous-groupe → effectif) dans Référentiels. Colonne Groupe regroupable sur les listes Personnel & Parc.
- Charge d'équipe (workload)LivréCharge d'équipe (page `/planning/charge`) : taux d'occupation par personne sur une SEMAINE (navigation préc./suiv.), avec barre d'occupation, repérage des SURCHARGES (> 100 %) et des CONFLITS d'agenda (créneaux qui se chevauchent, listés). Heures = durée réelle des créneaux + interventions comptées en bloc forfaitaire (sans horaire). Capacité de base 40 h/sem (8 h × 5 j ouvrés), les jours de CONGÉ APPROUVÉ étant déduits (personne en congé toute la semaine → « en congé »). Filtrable par groupe d'équipe (réutilise les groupes). KPIs occupation moyenne (hors congés) / nb surcharge / nb conflits.
Personnel HR
- Dossiers salariés (n° CNPS, contribuable, parts fiscales)LivréAnnuaire des salariés avec création, consultation et modification de fiche (nom, poste, type de contrat, statut, date d'embauche, salaire et téléphone internes). Recherche, filtres et export depuis le tableau ; salaire et téléphone restent une vue interne, jamais sur un document externe.
- Moteur de paie CNPS + ITS (barèmes indicatifs, à valider cabinet)LivréMoteur de paie Côte d'Ivoire (PUR, testé) : salaire brut → retenues salariales (CNPS retraite plafonnée, ITS progressif au quotient familial / parts, CMU) → NET À PAYER, + charges patronales (CNPS retraite, prestations familiales, accidents du travail, CMU) → COÛT EMPLOYEUR. Prorata des jours de congé « Sans solde » approuvés. ⚠️ BARÈMES INDICATIFS (réf. 2024) centralisés dans un seul fichier paramétrable — NON certifiés DGI/CNPS, à VALIDER par un expert-comptable inscrit en CI avant tout usage réel.
- Bulletins de paie imprimables + livre de paieLivréBulletins de paie imprimables (A4 brandé) générés depuis le moteur de paie : gains (brut), retenues détaillées (CNPS/ITS/CMU), NET À PAYER, charges patronales + coût employeur, n° CNPS/contribuable, parts. Génération par mois pour tous les employés ACTIFS (idempotent — un bulletin par employé/mois) avec KPIs (masse brute / net / charges / coût) sur `/personnel/paie`. Chaque bulletin porte le disclaimer « barèmes indicatifs à valider ». Livre de paie consolidé + export comptable (66/42/43/44) = lot suivant.
- Congés & absences (demandes, validations, calendrier)LivréModule congés & absences DATÉ : poser un congé à l'avance pour un employé (type, dates début/fin, nombre de jours calculé, motif), circuit de validation Demandé → Approuvé/Refusé, et calendrier d'équipe (mois/semaine) des absences. KPIs à valider / en congé aujourd'hui / jours posés. Les soldes de congés acquis-restants et les déclarations sociales ne sont pas encore inclus (module RH complet).
- Soldes de congés (acquis au prorata, restants)LivréSolde de congés payés par employé : droit annuel (défaut ~26 j/an, droit CI ≈ 2,2 j/mois ; 0 pour un stage), jours ACQUIS au prorata depuis l'embauche, jours PRIS (congés payés approuvés de l'année) et RESTANT (acquis − pris). Affiché sur la fiche employé et à la pose d'un congé (alerte si dépassement). Calcul de démonstration (pas de report d'année ni d'ancienneté minimale ; moteur de paie conforme à venir).
- Export des écritures de paie (66/42/43/44)LivréComptabilisation de la paie : depuis `/personnel/paie`, le bouton « Comptabiliser la paie du mois » poste une ÉCRITURE DE PAIE AGRÉGÉE SYSCOHADA (D 661 brut / D 664 charges patronales · C 421 net / C 431 CNPS / C 447 ITS / C 438 CMU) dans le système d'écritures OD — équilibrée par construction, déversée automatiquement dans journal, grand livre, balance et états (compte de résultat / bilan). IDEMPOTENTE par mois (ref `PAIE-MM/AAAA` — jamais de double comptabilisation) ; badge « Comptabilisée » + lien vers l'OD.
- Déclarations sociales (DISA, états ITS)LivréDéclarations sociales mensuelles générées depuis les bulletins du mois (boutons sur `/personnel/paie`) : DÉCLARATION CNPS (cotisations salariales + patronales — retraite/PF/AT — par salarié + totaux) et ÉTAT ITS (base imposable + impôt retenu par salarié + total). PDF A4 brandés ODIA. BROUILLONS à déposer auprès de la CNPS / DGI (e-impôts) — NON transmis automatiquement ; barèmes indicatifs à valider par un expert-comptable. DISA annuelle (récap par salarié) = refinement ultérieur.
- Self-service salarié (bulletins, congés) sur mobileLivréPortail salarié en LECTURE SEULE via lien public sécurisé (sans compte) : depuis la fiche d'un salarié, un admin génère un lien `/p/salarie/<token>` ; le salarié y consulte SES bulletins de paie (impression incluse) + SON solde de congés. Web responsive (pas d'app native). SÉCURITÉ : token 192 bits inénumérable + mot de passe optionnel (scrypt, recommandé) + expiration + révocation immédiate + throttle anti-brute-force + erreurs génériques + filtrage serveur STRICT par employeId (un lien = un seul salarié). Création/révocation réservées admin et auditées.
Adhérents MEMB
- Adhérents, familles, inscriptionsLivréRépertoire complet des adhérents en CRUD réel : création, consultation et édition d'une fiche, rattachement à un foyer/famille et à une catégorie. Liste avec KPIs (adhérents, foyers, cumul cotisations), recherche, filtre par statut, regroupements (catégorie, foyer, date, montant), vues table/cartes et export.
- Cotisations & feuilles d'appelProLa cotisation (montant FCFA) est un champ réel par adhérent : saisi à la création, modifiable, affiché dans la liste et cumulé en KPI et en total de colonne. En revanche les feuilles d'appel par catégorie et la remise fratrie ne sont pas encore livrées (annoncées sur la page comme à venir avec le module Adhérents complet).
Analyses BI
- Dashboard dirigeant consolidé (KPI FCFA)LivréTableau de bord d'accueil CONFIGURABLE : grille de widgets que l'utilisateur ajoute / retire / réordonne (glisser-déposer) / redimensionne (¼ → plein), avec 2-3 TABLEAUX CONSEILLÉS dérivés des modules actifs (Direction, Commercial, Terrain, Recouvrement). Catalogue de widgets : KPIs (CA du mois + delta, devis en cours, valeur de stock, créances — calculés en direct depuis factures/devis/stock), graphe du CA (6/12 mois), répartition, derniers devis, activité, alertes, recouvrement (DSO + balance âgée), réapprovisionnement, et — à la demande de l'utilisateur — PLANNING de la semaine (créneaux + interventions) et EMPLOI DU TEMPS d'un salarié. Le catalogue + les presets ne proposent que les widgets dont les modules sont actifs. Onglet Synthèse de /analyses (courbe CA, répartition, heatmap, top clients) conservé en parallèle ; heatmap/top clients restent partiellement sur données de démonstration.
- Filtres de période + seuils couleurLivréFiltres réels par carte dans l'explorateur : plage de mois (avec raccourcis 3/6/12/24 mois) et slicers de valeurs par dimension (client, rubrique, commune, statut…). La carte CA de synthèse offre un sélecteur de plage 6/12 mois. Pas de seuils couleur configurables à ce stade.
- Drill-down + tableaux par rôleProPas de drill-down navigationnel (clic → niveau inférieur). En place : mode agrandi par carte avec panneau de détail (stats clés + tableau complet des valeurs), sous-répartition empilée par 2ᵉ dimension, agrégats (somme/moyenne/min/max/médiane) et transformations (cumul, moyenne mobile, variations M-1/N-1, part du total). « Tableaux par rôle » non implémenté.
- Alertes de seuils (trésorerie, stock)ProAssistant d'analyse à règles (hors-ligne) qui lit les données et remonte des constats à tonalité avertissement : recouvrement faible, forte dépendance à un client (>40 % du CA). Ce ne sont pas encore des alertes de seuils configurables sur la trésorerie ou le stock.
Cartographie GEO
- Carte des sites géolocalisésProPage Cartographie réelle alimentée par le référentiel Sites (CRUD partagé) : panneau liste affichant nom, commune, type et coordonnées lat/lng exactes. La vue carte est un fond décoratif (grille + halos) avec marqueurs positionnés par index, pas encore par géolocalisation — mention honnête « Carte interactive OSM à venir ».
- Ordonnancement de tournées (ordre de passage)LivréTournées du jour (page `/carte/tournees`) : pour une date + un dépôt de départ, les interventions sont ORDONNÉES par proximité de leur site (ordre de passage) avec distance par étape et cumulée. Filtrable par groupe d'équipe. Les interventions dont le site n'est pas géolocalisé sont listées à part (jamais droppées).
Formulaires FORM
- Formulaires dynamiques & checklistsProCatalogue des formulaires et checklists : liste filtrable/triable par statut et catégorie, recherche, export, plus création et édition d'une fiche (nom, catégorie, nombre de champs, statut, description). Le builder de champs réel n'existe pas encore : le nombre de champs est un simple compteur, pas un éditeur de champs.
Assistant IA IA
- Assistant RAG en français (sur données métier)LivréAssistant DÉTERMINISTE sur vos données réelles (lot N1). Il répond aux questions courantes avec les VRAIS chiffres du cockpit — chiffre d'affaires, devis en cours, créances (total, en retard, DSO, balance âgée, top débiteurs), stock (valeur, sous-seuil, réappro), trésorerie (solde, point bas) — en appelant les MÊMES sélecteurs que les écrans. Aucune donnée inventée : une question hors de son périmètre reçoit un aveu franc, jamais une réponse fabriquée. Lecture seule, aucune écriture, aucune route serveur (la sécurité — rôle, centre, champs masqués — est héritée du port /api/data). La couche conversationnelle libre (LLM) est un **slot optionnel PRÉPARÉ mais OFF** (lot N5) : s'il est branché, il ne sert qu'à REFORMULER le texte déjà chiffré (jamais à calculer), avec mention « à relire » ; tant qu'aucun modèle n'est configuré, l'assistant reste 100 % déterministe.
- Citations / sources (transparence)LivréChaque réponse chiffrée de l'assistant affiche sa/ses SOURCE(S) sous forme de lien(s) cliquable(s) vers la page d'où vient le chiffre (Tableau de bord, Devis, Créances, Stock, Finance), pour vérification en un clic. Transparence native du lot N1 (déterministe).
Portail PORTAL
- Accès self-service clients / partenairesProLa gestion des accès est livrée : on crée, modifie et révoque des accès pour des tiers (clients/partenaires) avec un périmètre partagé et un statut Actif/Invité/Révoqué, listés dans un tableau avec recherche, filtre et export. En revanche l'espace self-service réellement consommé par le tiers (connexion externe, consultation de ses factures/documents) n'est PAS encore implémenté — seule la moitié administration des accès fonctionne en démo.
Documents officiels DOC
- Rattachement document ↔ objet métierProChaque document est rattaché à son objet métier d'origine : la vue Documents agrège devis et factures et ouvre directement la pièce liée (devis #num, facture #num). Le rattachement à d'autres objets et l'import de pièces externes ne sont pas encore couverts.
- Bibliothèque de bons imprimables (commande, réception, livraison, retour, entrée/sortie, présence, reçu)LivréBibliothèque de bons d'entreprise imprimables, brandés ODIA (en-tête logo + filigrane + signatures), via un builder générique réutilisable (BonSpec) : bon de commande (depuis une commande d'achat), bon de réception (GRN), bon d'entrée/sortie/transfert de stock, + modèles bon de livraison / retour / feuille de présence / reçu. « Prêt à intégrer des modules » : un bon = une entrée déclarative dans le registre.
- Bons vierges à remplir au stylo + mode rempliLivréGabarit VIERGE générique (en-tête/filigrane/signature ODIA, N° ____, date ____, champs étiquetés « Label : ____ » et/ou table à lignes vides) — étendu de TOUS les types du catalogue, pas seulement les bons : devis, facture, fiche client, contrat, fiche adhérent, fiche personnel, fiche fournisseur, fiche produit, bons, reçu, feuille de présence. Adapté au terrain CI très papier. Les documents qui n'ont de sens que remplis depuis les données (ticket de caisse, déclaration TVA, états financiers) sont marqués « depuis les données » (pas de vierge trompeuse).
- Impression en lot (sélection → un seul PDF multi-pages)LivréSélection multiple sur la liste des documents → « Imprimer la sélection » concatène les N documents en UNE seule sortie HTML multi-pages (page-break-after) → un seul dialogue d'impression, un PDF de N pages. Évite N pop-ups d'impression.
- Pièces jointes / scans rattachés (PDF/image, gardé serveur)LivréPièces jointes / scans rattachés à une entité (bon papier signé scanné, justificatif…). Upload PDF/PNG/JPG ≤ 5 Mo, stockage en base (table attachments, base64 dual-dialect), liste/prévisualisation/téléchargement/suppression. Enforcement SERVEUR (droit d'écriture de la collection requis ; type & taille validés côté serveur, erreurs nommées).
- Classement, recherche, droits par dossierProHub Documents centralisé en 2 vues (Segmented Grille / Liste). GRILLE : catalogue de TOUS les documents que le logiciel produit, organisé par catégorie (Commercial · Achats & Stock · Caisse · Adhérents & Équipe · Référentiels · Finances) ; chaque type = une carte avec « Imprimer vierge » (ou « depuis les données ») + lien vers ses instances réelles ; recherche par type. LISTE : tableau des documents produits (devis + factures) cherchable/filtrable (Type, Statut), regroupement client/montant/date, impression en lot, export. Pas encore d'arborescence de dossiers ni de droits d'accès par dossier.
- Génération PDF signature ODIALivréDocument officiel ODIA rendu en HTML brandé (logo, filigrane motif, en-tête vert, signature DOSH Wassim, cartouche FNE si facture certifiée) et enregistrable en PDF via la fonction d'impression. Aperçu fidèle en iframe = même HTML que l'impression (source unique).
- Sauvegarde automatique testéeLivréSauvegarde / restauration complète via la carte Sauvegarde des Paramètres (réservé admin). Export JSON daté des DONNÉES VIVANTES de toutes les collections + restauration RÉELLE par import de fichier (remplacement par collection, confirmation destructive, échec partiel signalé). Même fonctionnalité que cockpit.backup — voir cette entrée pour le détail. La stratégie 3-2-1 versionnée + sauvegardes serveur automatiques arrivent avec l'infra PostgreSQL.
- OCR (Tesseract local en installé)LivréReconnaissance de texte (OCR) sur les pièces jointes image (PNG/JPG) via Tesseract LOCAL (binaire serveur) — bouton « Lancer l'OCR » par pièce, texte extrait stocké sur la pièce + affiché. Adaptateur mirroir du FNE : HONNÊTE — si Tesseract n'est pas installé sur le serveur, statut « indisponible » explicite (jamais de faux texte). Sécurité : execFile (pas de shell), fichier temp nettoyé, timeout, garde RBAC (écriture de la collection). PDF + recherche plein-texte = roadmap.
- Gestion des versionsLivréVersionnage des pièces jointes : « Remplacer » crée une nouvelle version (l'ancienne reste à l'historique), le panneau n'affiche que la version courante (badge vN), l'historique liste toutes les versions (téléchargeables) et permet de « Restaurer » une version antérieure (re-versionnage en avant = nouvelle copie, jamais d'écrasement ni de perte). Chaînage par group_id/version sur la table attachments (migration additive dual-dialect). Chaque version reste soumise à la conservation légale.
- Règles de conservation FNE 6-10 ans / OHADA 10 ansLivréConservation légale appliquée aux pièces jointes : durée par type de document (OHADA art. 24 AUDCIF — 10 ans pour les pièces comptables/commerciales), date d'échéance dérivée de la date d'upload (aucune colonne en base), badge « conservé jusqu'au … » sur chaque pièce. La suppression avant échéance est REFUSÉE côté serveur (409) ; un forçage explicite reste possible (upload erroné) mais il est tracé dans l'audit (« suppression FORCÉE avant échéance »). La garde est enforced serveur (source de vérité), pas seulement dans l'UI.
- Partage par lien sécurisé (expiration, mot de passe)LivréPartage d'une pièce jointe par lien PUBLIC sécurisé : token non-devinable (192 bits) donnant accès à UNE pièce via une route hors session, avec expiration et mot de passe (scrypt, vérifié à temps constant) optionnels + révocation immédiate. Création gardée RBAC (écriture de la collection) ; le hash n'est jamais exposé ; le fichier est servi avec les mêmes en-têtes que le download authentifié (nosniff). Page publique /p/<token> brandée ODIA.
Guide par rôle
Administrateur
- Configure la société, la TVA, les rôles et accès.
- Voit le journal d'audit et lance les sauvegardes complètes.
- Active/désactive les modules depuis le Composer.
Commercial
- Crée et suit les devis, les convertit en factures.
- Gère le référentiel clients et les relances.
- Exporte ses listes (Excel, CSV, PDF) à tout moment.
Magasinier
- Suit le stock multi-dépôts et les seuils de réappro.
- Tient le catalogue produits et les mouvements.
- Importe le catalogue en masse depuis un fichier.
Lecture seule
- Consulte tableaux de bord, listes et analyses.
- Exporte et imprime, sans rien modifier.
Parcours guidés
Cycle commercial
- Créez un devis multi-rubriques (Devis → Nouveau devis) avec remises et TVA modifiable.
- Convertissez-le en facture en un clic depuis sa fiche, ou créez une facture directe (Factures → Nouvelle facture).
- Enregistrez les paiements sur la fiche facture ; le statut (Payée / Partiel / En retard) se met à jour seul.
Réviser un devis
- Sur la fiche d'un devis déjà ENVOYÉ ou ACCEPTÉ, le bouton « Réviser » repart du contenu existant en conservant le MÊME numéro : en enregistrant, la version précédente est archivée et le devis repasse en Brouillon (à renvoyer).
- Le panneau « Historique des révisions » de la fiche liste toutes les versions (indice, date, auteur, montant) ; cliquez une version pour en voir le détail et comparer ce qui a changé. Le PDF porte la mention « Révision n°X ».
- Un devis déjà converti en facture est FIGÉ : il ne se révise plus (la facture conserve la trace de la version exacte facturée).
Référentiels & stock
- Clients, produits et stock se créent et s'éditent (boutons « Nouveau… » et « Modifier »).
- Les mouvements de stock (entrée / sortie / transfert) ajustent les quantités et tiennent un historique par référence.
- La fiche client agrège ses devis et factures (vue 360°).
Organiser les données
- Tri multi-niveaux : clic sur un en-tête, Maj+clic pour empiler plusieurs critères.
- Regroupement : bouton « Regrouper » → par client, par date (jour / semaine / mois) ou par tranche de montant (amplitudes réglables).
- Tout export (Excel / CSV / PDF) respecte vos filtres.
Caisse & encaissement
- Ouvrez la caisse en choisissant le dépôt (les ventes y décrémentent le stock) et le fond de caisse (espèces de départ).
- Choisissez l'affichage du catalogue (bouton en haut : Grille · Catégories repliables · Liste) — le choix est mémorisé. Les pastilles de catégorie et la recherche filtrent les articles ; chaque article affiche son stock du dépôt (rupture signalée).
- Vendez en cliquant un article (ou « Article libre » hors catalogue). Sur chaque ligne du panier : boutons +/− ou saisie directe de la quantité, remise par ligne ou globale. Choisissez le mode (espèces / mobile money / carte) puis « Encaisser » (ou touche Entrée) : le stock est décrémenté et un ticket imprimable est créé.
- La barre du haut montre en continu le total encaissé, le panier moyen et les espèces en caisse (fond + ventes espèces). À la fermeture, « Clôturer » compare les espèces attendues aux espèces comptées et calcule l'écart.
- « Journal de caisse » regroupe les ventes, l'historique des sessions (rapport Z) et l'activité par jour. Cliquez une session ou une journée pour son détail (KPIs, top articles, tickets) et exporter sa réconciliation (Excel / PDF).
Facturation normalisée (FNE)
- Sur la fiche d'une facture, section « Facture normalisée (FNE) » : choisissez le profil fiscal (B2B avec NCC du client, B2C particulier, B2G administration) puis « Certifier (FNE) ».
- La facture reçoit un numéro normalisé officiel + un QR de vérification ; le PDF affiche le cartouche FNE (numéro + QR).
- Mode démonstration : la certification est SIMULÉE — le document porte la mention « SPÉCIMEN — non transmis à la DGI ». Le branchement à la vraie plateforme DGI se fera sans changer l'écran.
Créances & relances
- La page « Créances & relances » liste les factures non soldées avec leur retard, une balance âgée (0-30 / 31-60 / 61-90 / 90+ jours) et des indicateurs (DSO, retard moyen).
- Bouton « Relancer » : choisissez le canal (e-mail / WhatsApp), le message se compose tout seul (montant dû, échéance, jours de retard) ; copiez-le et collez-le dans votre messagerie.
- Chaque relance est tracée par palier (rappel courtois → relance ferme → mise en demeure) et apparaît dans la timeline de la facture.
Composer un logiciel (Studio)
- Page « Composer » : partez d'un préréglage sectoriel (Négoce, Terrain, Centre) ou composez à la carte ; réglez le Niveau (Essentiel / Pro / Avancé-IA) et la Taille. Le socle (Cockpit, Référentiels, Documents, Analyses) est toujours inclus.
- « Générer la composition » : donnez-lui un nom (et un prospect) → sa fiche s'ouvre avec l'aperçu du logiciel assemblé (la navigation telle qu'elle sera), les modules/fonctions par profondeur, les barrières locales couvertes, et une estimation INDICATIVE (jamais un devis ferme).
- Dossier téléchargeable : notice technique (.md + PDF), config.json (la configuration technique), et un récap périmètre client (PDF) prêt à présenter.
- « Appliquer à la démo » reconfigure le cockpit en direct (la navigation se filtre aux modules choisis ; une bannière le signale) ; « Réinitialiser » rétablit toutes les capacités. Retrouvez vos compositions dans « Compositions ».
Documents & alertes
- Sur la fiche d'un devis ou d'une facture, « Document PDF » ouvre l'aperçu : « Imprimer » (vers l'imprimante) ou « Télécharger en PDF » (fichier à vos couleurs, numéro de page en bas, prêt à joindre à un e-mail ou WhatsApp) — vous restez sur la fiche.
- Personnalisez vos documents sans mise à jour (Paramètres → Documents) : mentions, modèles et messages d'envoi éditables ; « Réinitialiser par défaut » rétablit les valeurs d'origine.
- La cloche en haut à droite regroupe les alertes : créances en retard, devis à relancer, stock sous le seuil.
Glossaire des statuts
Devis
- Brouillon
- En cours de rédaction, non envoyé.
- Envoyé
- Transmis au client, en attente de réponse.
- Accepté
- Validé par le client, convertible en facture.
- Refusé
- Décliné par le client (archivé, réutilisable).
Facture
- Payée
- Soldée intégralement.
- Partiel
- Acompte ou paiement partiel encaissé.
- Impayée
- Émise, aucun paiement encore reçu.
- En retard
- Échéance dépassée sans solde — à relancer.
Stock
- OK
- Quantité au-dessus du seuil d'alerte.
- Réappro
- Sous le seuil — à réapprovisionner.
FNE
- Non certifiée
- Pas encore normalisée DGI.
- Certifiée
- Numéro + QR émis (spécimen en démo).
- En file
- Certification en attente (DGI indisponible).
Questions fréquentes
Comment créer une facture ?
Deux voies : convertir un devis accepté depuis sa fiche, ou « Factures → Nouvelle facture » pour une facture directe (rubriques, remises, TVA, échéance). Le PU d'achat saisi reste interne.
Comment réviser un devis déjà envoyé ?
Sur la fiche du devis (statut Envoyé ou Accepté), bouton « Réviser » : vous repartez du contenu en conservant le MÊME numéro. En enregistrant, la version précédente est archivée dans l'« Historique des révisions » de la fiche, le devis repasse en Brouillon (à renvoyer) et le PDF affiche « Révision n°X ». Un devis déjà converti en facture ne se révise plus.
Que se passe-t-il si je quitte l'édition d'un devis sans enregistrer ?
Un devis en création (ou un brouillon) suffisamment complet est enregistré AUTOMATIQUEMENT en brouillon quand vous quittez la page — rien n'est perdu. Pour un devis déjà envoyé que vous êtes en train de réviser, le logiciel vous DEMANDE de confirmer avant de quitter (enregistrer la révision, ou quitter sans enregistrer).
Comment certifier une facture (FNE) ?
Ouvrez la facture → section « Facture normalisée (FNE) » → choisissez le profil (B2B/B2C/B2G ; le NCC du client est requis en B2B) → « Certifier (FNE) ». Un numéro normalisé et un QR sont générés et imprimés sur le PDF. En mode démonstration la transmission est simulée (mention SPÉCIMEN), sans envoi réel à la DGI — le branchement à la vraie plateforme se fera sans changer l'écran.
Comment relancer un client qui n'a pas payé ?
Page « Créances & relances » → « Relancer » sur la ligne → choisissez e-mail ou WhatsApp → le message se rédige avec les bonnes informations (montant dû, échéance, retard). Copiez-le, envoyez-le depuis votre canal, puis « Marquer comme relancée » : la relance est tracée (niveau 1, 2 ou 3) dans l'historique de la facture.
Comment sortir le relevé de compte d'un client ?
Page « Créances » → « Relevé client (PDF) » : choisissez le client et le filtre (toutes les pièces / dues / payées). Le relevé liste les factures et les règlements avec le solde dû, prêt à imprimer ou à envoyer.
Comment éditer une note de crédit (avoir) en PDF ?
Sur la fiche d'un avoir, bouton « Document PDF » : l'avoir contre-passe une facture sans la modifier (montant négatif, référence à la facture d'origine).
Comment composer un logiciel sur mesure ?
Page « Composer » : choisissez un secteur (ou composez à la carte), un niveau de profondeur et une taille, puis « Générer la composition ». Vous obtenez un dossier (aperçu, notice, config.json, récap périmètre) et une estimation indicative. La composition est sauvegardée dans « Compositions » (réouvrable, duplicable, exportable).
Que veut dire « Appliquer à la démo » ?
C'est un aperçu vivant : le cockpit se reconfigure pour ne montrer que les modules de la composition (la navigation se filtre, une bannière l'indique). « Réinitialiser » rétablit l'ensemble. C'est une couche d'affichage — les droits d'accès liés aux rôles ne changent pas.
L'estimation affichée est-elle un devis ?
Non. C'est une fourchette INDICATIVE calculée à partir du périmètre (nombre de modules × profondeur), clairement signalée comme telle. Le chiffrage ferme est établi à l'atelier de cadrage.
Comment regrouper mes documents autrement ?
Bouton « Regrouper » d'une liste : choisissez la colonne (client, date, montant), la granularité (jour/semaine/mois pour les dates), les bornes de tranches pour les montants, et l'ordre des groupes.
Comment enregistrer un mouvement de stock ?
Stock → « Mouvement » (ou « Transfert ») : choisissez l'article, le dépôt, la quantité. Le stock est ajusté et le mouvement tracé dans l'historique de la référence.
Comment ajouter une unité (litre, kg…) utilisée dans mes devis ?
Référentiels → Unités de mesure → « Ajouter une unité » (code court + libellé). Elle devient immédiatement sélectionnable dans le menu « Unité » des devis et factures. Le libellé est modifiable (crayon) ; le code reste l'identifiant repris sur les pièces.
Où voir le journal de caisse et le montant en caisse ?
Caisse → « Journal de caisse » : toutes les ventes (filtrables par jour, dépôt, mode), l'historique des sessions clôturées (rapport Z) et l'activité par jour. Quand une caisse est ouverte, la barre du haut affiche en continu le total encaissé, le panier moyen et les « espèces en caisse » = fond de caisse + ventes espèces.
Comment voir le détail d'une journée ou d'une session de caisse ?
Dans « Journal de caisse », cliquez une ligne de la table « Sessions » ou « Activité par jour » : la fiche détaillée s'ouvre (total, panier moyen, répartition par mode, articles les plus vendus, liste des tickets, et pour une session le rapport Z fond/attendu/compté/écart). Le bouton « Réconciliation PDF » ou « Excel » exporte le récapitulatif.
Comment organiser l'affichage des articles en caisse ?
En haut du catalogue, le sélecteur propose 3 affichages : Grille (recherche libre), Catégories (accordéon catégorie → sous-catégorie qui se déplie) et Liste compacte. Les catégories et sous-catégories proviennent des fiches produits (mêmes valeurs partout : caisse, produits, stock). Les pastilles en filtrent l'affichage.
Comment filtrer ou trier une liste ?
Chaque liste a une barre de recherche, des filtres par statut/catégorie, et un tri par clic sur l'en-tête de colonne. Le bouton « Réinitialiser » remet tout à zéro.
Comment exporter mes données ?
Bouton « Exporter » en haut de chaque liste : Excel, CSV, JSON, ou impression/PDF. L'export respecte les filtres appliqués.
Comment importer un fichier existant ?
Bouton « Importer » : téléchargez d'abord le modèle, remplissez-le, puis téléversez-le. Un aperçu s'affiche avant validation.
J'ai oublié de valider un devis, est-ce grave ?
Un devis en Brouillon n'est jamais envoyé ni compté. Ouvrez-le et envoyez-le ; il passe alors en « Envoyé ».
Comment éviter une perte de données ?
Depuis Paramètres → Sauvegarde, exportez une sauvegarde complète (JSON) régulièrement et conservez-la hors du poste.
Pourquoi ai-je été déconnecté automatiquement ?
Pour la sécurité, la session se ferme après une durée d'inactivité, réglable par l'administrateur (Paramètres → Déconnexion automatique ; 0 = désactivée). Un avertissement avec compte à rebours s'affiche avant la coupure, et une saisie en cours n'est jamais interrompue en silence. Reconnectez-vous avec votre mot de passe.
Comment consulter ou exporter le journal d'audit ?
Paramètres → Journal d'audit (administrateur) : tableau filtrable par type d'action, utilisateur et période, exportable en CSV ou PDF. Chaque export est lui-même tracé dans le journal.
Pourquoi je ne vois pas certains menus ?
Les menus dépendent de votre rôle et des modules de votre version. Un administrateur peut ajuster les rôles.
Comment créer un rôle personnalisé ?
Paramètres → Rôles & accès → « Créer un rôle » : nommez-le (vous pouvez partir d'un rôle existant) puis cochez ses droits dans la matrice. Vous pouvez aussi renommer ou supprimer vos rôles (un rôle encore attribué à quelqu'un n'est pas supprimable). Aucune mise à jour du logiciel n'est nécessaire ; un changement de rôle ou de droits s'applique à la prochaine connexion de la personne concernée.
Comment imprimer ou télécharger un devis/une facture en PDF ?
Sur la fiche du document, « Document PDF » ouvre l'aperçu avec deux boutons : « Imprimer » (vers l'imprimante) et « Télécharger en PDF » (le fichier à vos couleurs, numéro de page en bas, prêt à joindre à un e-mail ou WhatsApp). Vous restez sur la fiche du document.
Comment personnaliser les mentions et modèles de mes documents ?
Paramètres → Documents : modifiez les mentions des devis/factures (texte, ordre, obligatoire ou optionnelle), créez des modèles (jeux de mentions + en-tête/pied) et adaptez les messages d'envoi (e-mail / WhatsApp). Tout est éditable à tout moment, sans mise à jour ; le bouton « Réinitialiser par défaut » restaure les valeurs d'origine.
Les montants sont-ils en FCFA ?
Oui — FCFA (XOF) par défaut, TVA 18 %, dates au format JJ/MM/AAAA.
La marge apparaît-elle sur les documents clients ?
Non. La marge est une vue interne, jamais imprimée sur un devis ou une facture.
Nouveautés
- V1.5Relevé de compte client (PDF), note de crédit (avoir) en PDF, journal d'audit filtrable et exportable, déconnexion automatique après inactivité (réglable par l'admin), unités de mesure gérées au référentiel (sélectionnables dans les devis), bon d'intervention (Terrain).
- ManuelRéférence technique générée (fonctions, paramètres, règles, statut) + tableau de complétude + export PDF/markdown.
- Vague CComposer : génération d'un logiciel à la carte (dossier + estimation) et application à la démo en direct.
- Vague B2FNE (facture normalisée, mode spécimen) + créances & relances (balance âgée, relances tracées).
- Vague B1Caisse polyvalente, journal de caisse (rapport Z), achats → stock (CMP).
À propos
- Version
- v0.1 — démo
- Plateforme
- ODIA Cockpit
- Support
- help@odiaci.com
- Éditeur
- ODIA CI · odiaci.com
Logiciel développé par ODIA CI. Les mentions légales du client (raison sociale, RCCM, contact) sont alimentées depuis la page Paramètres.