feat(catalog) : ERP-199 — entités Product + StorageType + repositories + contrat de sérialisation
Entité Product (#[Auditable], TimestampableBlamable, soft-delete préparé non exposé) et référentiel StorageType (lecture seule, provisoire) dans le module Catalog, avec le contrat de sérialisation posé une fois (read-groups par propriété affichée — RETEX M1→M5, 3 maillons spec § 4.0). - Product : code (unique global RG-6.01), name, states (json multi-select PURCHASE/SALE/OTHER ≥1, RG-6.02), manufactured/containsMolasses (RG-6.03), category ManyToOne (PRODUIT, RG-6.05), sites + storageTypes ManyToMany (≥1). Messages FR sur toutes les contraintes, Length calée colonnes. Opérations Get/GetCollection (.view) + Post/Patch (.manage), pas de Delete. Provider/ Processor référencés (implémentés en ERP-200). - StorageType : code/label + sites ManyToMany (filtrage par site, ERP-201). Référentiel statique → whitelist EntitiesAreTimestampableBlamableTest. - Repositories Product/StorageType (interfaces Domain + impl Doctrine). - Validation états via Assert\Choice(multiple) plutôt qu'Assert\All (seul Choice est géré par EntityConstraintsHaveFrenchMessageTest). - Garde-fous schema:update : 5 tables M6 ajoutées à ColumnCommentsCatalog, index partiel uq_product_code_active rejoué dans makefile test-db-setup. - i18n audit.entity.catalog_product.
This commit is contained in:
@@ -817,6 +817,7 @@
|
||||
"core_permission": "Permission",
|
||||
"sites_site": "Site",
|
||||
"catalog_category": "Catégorie",
|
||||
"catalog_product": "Produit",
|
||||
"commercial_client": "Client",
|
||||
"commercial_clientaddress": "Adresse client",
|
||||
"commercial_clientcontact": "Contact client",
|
||||
|
||||
Reference in New Issue
Block a user