Aller au contenu

Modèle de données

Domaines principaux

Domaine Entités
Identité User, RefreshToken, ConfigApp
Catalogue Category, Product, ProductVariant, VariantValue
Stock ProductStock, Inventory, InventoryProduct, InventoryStock, ProductStockInventory
Vente Cart, Sale, SaleItem, SaleProductStock, Payment, SessionSale
Achats PurchaseOrder, HistoryPurchaseOrder, Supplier
Clients Customer
Trésorerie Fund, HistoryFund
Audit History

Relations structurantes

  • Un User possède des ventes, sessions, inventaires, paniers et historiques.
  • Une Category regroupe des produits de vente et d’entrepôt et peut avoir des sous-catégories.
  • Un Product appartient à une catégorie et éventuellement à un fournisseur ; il possède variantes, historiques et lignes de vente.
  • Une Sale appartient à un utilisateur, un client facultatif et une session ; elle contient des SaleItem et Payment.
  • Une SessionSale appartient à un utilisateur et regroupe les ventes d’une session.
  • Un ProductStock appartient à une catégorie et un fournisseur et participe aux inventaires et commandes d’achat.

Conventions

  • pointOfSaleId assure le partitionnement métier.
  • Les dates de création et mise à jour sont généralement stockées sur les entités transactionnelles.
  • Plusieurs suppressions sont logiques via des statuts d’archive.
  • Les numéros utilisent libphonenumber.
  • Les montants et statuts doivent rester cohérents entre vente, paiement et fonds.

Migrations

Toute évolution doit passer par :

php bin/console make:migration
php bin/console doctrine:migrations:migrate

Ne pas utiliser schema:update --force en production.