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
Userpossède des ventes, sessions, inventaires, paniers et historiques. - Une
Categoryregroupe des produits de vente et d’entrepôt et peut avoir des sous-catégories. - Un
Productappartient à une catégorie et éventuellement à un fournisseur ; il possède variantes, historiques et lignes de vente. - Une
Saleappartient à un utilisateur, un client facultatif et une session ; elle contient desSaleItemetPayment. - Une
SessionSaleappartient à un utilisateur et regroupe les ventes d’une session. - Un
ProductStockappartient à une catégorie et un fournisseur et participe aux inventaires et commandes d’achat.
Conventions¶
pointOfSaleIdassure 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.