feat(commercial) : entités M2 fournisseurs + repositories (ERP-86)
Entités jumelles du M1 client, mapping ORM aligné sur la migration ERP-85, sans contact inline (ERP-106) : - Supplier (#[Auditable] + Timestampable/Blamable) : formulaire principal, Information (+ volumeForecast), Comptabilité (FK référentiels M1), archivage, soft-delete préparé. Catégories M2M via CategoryInterface (règle n°1). - SupplierContact / SupplierAddress (enum addressType, bennes, triageProvider) / SupplierRib. - Repositories : interfaces Domain + impls Doctrine. DoctrineSupplierRepository porte les fetch-joins anti-N+1 de la liste (categories + addresses.sites en 2 passes, pattern ERP-100) et les filtres (search companyName + contacts, categoryCode, siteId, archivage). Contrat de sérialisation (RETEX M1, 3 maillons posés sur l'entité) : read-groups sur les propriétés, getters isArchived/isTriageProvider avec SerializedName, embed contacts/addresses (supplier:item:read) et ribs (supplier:read:accounting). L'#[ApiResource] + Provider/Processor sont au ticket suivant (ERP-87). Validation FR (ERP-107) : messages FR sur toutes les contraintes, Length(max) calé sur les colonnes. Garde-fou EntityConstraintsHaveFrenchMessageTest étendu (Assert\Choice + whitelist addressType/postalCode). Clés i18n audit des 4 entités ajoutées. make test : 483/483 OK.
This commit is contained in:
@@ -52,6 +52,10 @@ final class EntityConstraintsHaveFrenchMessageTest extends TestCase
|
||||
private const array EXCLUDED_LENGTH_MIRROR = [
|
||||
// Le Regex /^[0-9]{4,5}$/ borne deja la longueur a 5 caracteres (< 20).
|
||||
'ClientAddress::postalCode' => 'Regex {4,5} borne deja la longueur.',
|
||||
// Idem cote fournisseur (meme Regex CP).
|
||||
'SupplierAddress::postalCode' => 'Regex {4,5} borne deja la longueur.',
|
||||
// Le Choice {PROSPECT,DEPART,RENDU} borne les valeurs (<= 8 < 20).
|
||||
'SupplierAddress::addressType' => 'Choice {PROSPECT,DEPART,RENDU} borne deja les valeurs.',
|
||||
// Le Regex /^#[0-9A-Fa-f]{6}$/ borne la longueur a exactement 7 caracteres.
|
||||
'Site::color' => 'Regex code hex #RRGGBB borne deja la longueur.',
|
||||
];
|
||||
@@ -70,6 +74,7 @@ final class EntityConstraintsHaveFrenchMessageTest extends TestCase
|
||||
Assert\NotBlank::class,
|
||||
Assert\NotNull::class,
|
||||
Assert\Email::class,
|
||||
Assert\Choice::class,
|
||||
Assert\Regex::class,
|
||||
Assert\Bic::class,
|
||||
Assert\Iban::class,
|
||||
|
||||
Reference in New Issue
Block a user