
Dans un magasin de vélos, une journée type passe par trois ou quatre interactions client qui n’ont rien à voir entre elles : un VAE à 4 200 € qui se négocie avec un acompte sur deux mois, une réparation de roue à 35 € qui s’encaisse en caisse dans la foulée, une commande d’accessoires pour un client pro avec demande de facture électronique, un échange de garantie sur un dérailleur. Tous ces flux passent pourtant par le même tunnel administratif : devis → commande → facture → encaissement. CRM Cycles modélise ce tunnel d’un seul tenant, sans ressaisie entre étapes.
Pourquoi un ERP généraliste cale vite chez un vélociste
Les ERP grand public (Sage, EBP, et même les SaaS modernes type Shopify POS) considèrent un produit comme un SKU avec une quantité en stock. Chez un magasin de cycles, ce modèle tombe à l’eau dès qu’on touche au cœur du métier :
- Un vélo n’est pas un SKU : c’est un produit sérialisé, avec un numéro de cadre unique, un EAN, une date de mise en stock individuelle. Deux Lapierre Xelius DRS 9.0 strictement identiques sur le papier vivent leur vie séparément en stock.
- Une ligne de devis peut mélanger un vélo (sérialisé), des accessoires (non sérialisés), une prestation atelier (main-d’œuvre + pièces) et un texte libre — tout dans le même document.
- Une vente peut s’étaler sur des mois : devis fait en janvier, acompte versé en février, commande confirmée en mars (avec décrémentation du stock pour bloquer le vélo), enlèvement et facturation en avril.
- La caisse n’est pas un module en plus : c’est une obligation légale (NF525) avec chaînage cryptographique des tickets.
Les vélocistes finissent vite avec deux ou trois outils en parallèle (Excel pour les acomptes, Sage pour les factures, une caisse certifiée séparée) et la double saisie qui va avec. CRM Cycles est conçu autour de ce métier : un seul document qui transite d’un statut à l’autre, sans repartir de zéro.
Devis → Commande → Facture : conversion en un clic, sans ressaisie
Le commerçant ne ressaisit jamais rien entre devis, commande et facture. Un clic, et la conversion crée un nouveau document en copiant automatiquement les lignes du document source (produits, services, vélos sérialisés) et en transférant les acomptes déjà versés vers le nouveau document. Le devis original passe alors au statut Converti (lecture seule) et garde un lien parent vers la commande créée — la traçabilité entre les trois étapes est préservée en base.
1. Devis
Étape de proposition. Statuts : Brouillon → En cours → Accepté → Converti. Quelques règles métier dignes d’être citées :
- Validité : un devis expire automatiquement passée sa date. Une alerte apparaît au-dessous de 7 jours restants.
- Alerte vente à perte : si une ligne est saisie sous le prix d’achat, une alerte rouge bloque la validation côté commerçant.
- TVA sur marge : support de l’art. 297A CGI pour les vélos d’occasion — taxation uniquement sur la marge, pas sur le prix de vente complet.
- Relances tracées : un compteur de relances et une date « dernière relance » remontent dans les indicateurs du tableau de bord (devis non relancés depuis > 5 jours).
2. Commande
Étape d’engagement. C’est ici que le stock bouge, pas à la facturation : à la confirmation d’une commande, les produits non sérialisés sont décrémentés immédiatement et les vélos sérialisés sont marqués « réservés » (le numéro de cadre est verrouillé pour ce client). Cette logique évite la survente d’un vélo unique : impossible que deux commandes confirmées pointent sur la même monture.
Statuts : Brouillon → Confirmée → Prête → Livrée → Convertie. L’annulation d’une commande confirmée restaure intégralement le stock — le vélo repart en « En stock » et peut être revendu à un autre client.
3. Facture
Document comptable officiel, validation irréversible. La validation déclenche en chaîne :
- Verrouillage du document : aucune modification possible après ce point.
- Signature NF525 : empreinte cryptographique SHA-256 chaînée avec la facture précédente. Aucun maillon ne peut être altéré sans casser la chaîne.
- Décrémentation du stock pour les lignes standard si la facture n’est pas issue d’une commande confirmée (sinon le stock a déjà été pris).
- Vélos sérialisés vendus : passage individuel au statut Vendu.
- Ajout automatique des vélos au parc du client — la fiche client se met à jour pour ouvrir la voie aux futurs ordres de réparation, à la garantie, aux relances d’entretien.
Un garde-fou côté UI : impossible de valider une facture contenant un vélo sérialisé sans avoir affecté un numéro de cadre. Le bouton « Valider » reste désactivé tant qu’une ligne vélo n’est pas associée à un produit physique du stock. C’est un détail qui fait gagner des heures de SAV plus tard, quand il faut retrouver quel client a quel vélo.
Caisse NF525 : la compliance qui s’efface
La caisse de CRM Cycles n’est pas un module satellite : c’est le mode d’encaissement par défaut, intégré au tunnel. La conformité NF525 (loi anti-fraude TVA de 2018) impose quatre exigences que beaucoup d’éditeurs séparent dans une caisse certifiée externe :
- Inaltérabilité : aucune modification possible après émission. Un avoir ne réécrit pas la facture, il l’annule en chaîne.
- Sécurisation : chaque ticket signé SHA-256 et chaîné au précédent. Une altération casse la chaîne et est détectable.
- Conservation : tous les tickets archivés 6 ans, accessibles à un contrôle fiscal en moins de 5 minutes.
- Numérotation continue : aucun saut dans la séquence des factures. Format
FAC{AAAA}{NNNNNN}, remise à zéro annuelle, un compteur dédié par exercice fiscal — implémenté avec verrou en base pour gérer les pics concurrents (deux ventes simultanées à la caisse magasin et sur l’app mobile commerciale).
L’encaissement supporte de base les modes mixtes (espèces + carte, ou carte + bon d’achat), le rendu de monnaie, le tiroir-caisse connecté, l’imprimante ticket Epson en USB ou réseau. Un export FEC normalisé (Fichier des Écritures Comptables) est généré sur demande pour l’expert-comptable, conforme à l’arrêté 2013.
Factur-X pour le B2B : zéro friction avec les pros
Avec la généralisation de la facturation électronique B2B en France (réforme 2026-2027), les clients pros — comités d’entreprise, collectivités locales, loueurs, équipes de course — attendent une facture machine-lisible, pas juste un PDF imprimable. CRM Cycles génère sur demande un fichier Factur-X PDF/A-3 : un PDF lisible humain avec un XML structuré CII/UBL intégré, conforme à la norme européenne EN 16931.
Concrètement, le commerçant clique « Facture électronique » sur une facture validée, télécharge le PDF/A-3 et l’envoie. Côté client pro, le PDF s’ouvre dans n’importe quel lecteur PDF, et son ERP comptable extrait automatiquement le XML pour intégration en compta sans ressaisie.
Sous le capot
Côté implémentation, le tunnel de vente repose sur :
- Yii2 en backend, architecture
common / backend / frontendséparée (le frontend héberge la caisse tactile, le backend la gestion). - Une table polymorphe
customer_documentpartagée par devis, commande et facture (discriminatordocument_type). Conversion = nouveau document avecparent_document_idqui pointe vers la source. LignesDocumentLinerecopiées, paiementsDocumentPaymenttransférés viaUPDATE customer_document_id— pas de double comptage en caisse. Le tout dans une transaction Yii2$transaction = Yii::$app->db->beginTransaction(): si une étape échoue, rollback complet. - Un compteur de numérotation stocké dans une table dédiée, mis à jour dans une transaction
SELECT ... FOR UPDATEpour garantir la séquence continue même en concurrence. - Le chaînage NF525 utilise un
hash_hmac('sha256', $payload, $secret)où$payloadinclut le hash de la facture précédente — c’est ce qui rend la chaîne inaltérable. - Les PDF sont générés via TCPDF avec un template Twig partagé entre devis, commande et facture (mêmes en-têtes, mêmes pieds — un seul changement de logo touche les trois documents).
- Génération Factur-X : XML CII produit avec
php-factur-x(lib open-source), puis embarqué dans le PDF/A-3 via TCPDF en pièce jointe XMP.
Ce qu’on gagne au quotidien
- Zéro double saisie entre le commercial qui fait le devis et la caisse qui encaisse — c’est le même document qui transite.
- Pas de feuille Excel parallèle pour suivre les acomptes : ils vivent attachés au document, et se transfèrent automatiquement lors des conversions.
- Compliance NF525 + Factur-X embarquée, pas à acheter en module à part.
- Vélos sérialisés modélisés en first-class citizen : leur cycle de vie (commandé → reçu → en stock → réservé → vendu → parc client) est lisible dans le code et dans l’UI, contrairement aux ERP qui les traitent comme des SKU normaux.
Les prochains articles de cette série couvriront les autres modules de CRM Cycles : ordres de réparation et planning atelier, fiches clients et historique, catalogue avec tags BLE pour géolocaliser le stock magasin, reprises d’occasion et livre de police, et la couche de sécurité multi-magasins (2FA, NFC, biométrie).

