Aller au contenu

Architecture

Socle

  • PHP 8.1+ et Symfony 6.4
  • Doctrine ORM/DBAL et migrations
  • API Platform 3.2
  • Twig pour l’interface web
  • LexikJWTAuthenticationBundle pour l’API
  • MySQL
  • Symfony HttpClient, Mailer et Notifier
  • Dompdf, PhpSpreadsheet, impression ESC/POS et génération de codes-barres

Organisation

L’application suit une architecture Symfony classique :

  1. Les contrôleurs reçoivent les requêtes web ou API.
  2. Les formulaires et contraintes valident les données.
  3. Les services portent la logique réutilisable.
  4. Doctrine persiste les entités.
  5. Les subscribers traitent les effets secondaires.
  6. Twig, JSON ou API Platform produisent la réponse.

Isolation multi-POS

La majorité des données métier portent un pointOfSaleId. L’utilisateur authentifié fournit le contexte du point de vente. Toute nouvelle requête doit filtrer explicitement sur ce contexte afin d’éviter une fuite inter-POS.

MultiPosUserProvider gère l’identification d’un même email dans plusieurs points de vente. Le client mobile envoie un identifiant combinant email et POS lors de l’authentification.

Modules

  • Catalogue : catégories, produits, variantes, codes-barres.
  • Stock : stock de vente, entrepôt, seuils et historiques.
  • Vente : panier, vente, lignes, paiements, remises, annulation et facture.
  • Caisse : sessions, fonds et validation managériale.
  • Référentiels : clients, fournisseurs et domaines d’activité.
  • Administration : utilisateurs, configuration et droits.
  • Reporting : dashboard, analytics, PDF et exports.
  • API mobile : authentification, synchronisation, sessions et ventes.

Flux de vente

Une vente valide une session active, contrôle les quantités, crée Sale et ses lignes, enregistre les paiements, diminue le stock, alimente les historiques et le fonds, puis déclenche les éventuelles alertes. Une vente différée reste non payée jusqu’à l’appel de validation du paiement.

Dépendances externes

  • BConnect Business : informations du POS, fonctionnalités et utilisateurs.
  • BrainSense MySMS : envoi SMS.
  • Serveur SMTP : emails.
  • Gemini : génération assistée de descriptions.