feat(commercial) : fixtures Doctrine fournisseurs (≈13 suppliers complets + sous-collections) (ERP-112) #72

Merged
malio merged 3 commits from feature/ERP-112-fixtures-fournisseurs into develop 2026-06-08 07:49:28 +00:00
Owner

ERP-112 — Fixtures Doctrine fournisseurs (M2)

SupplierFixtures (calquée sur ClientFixtures / ERP-68) : ~13 fournisseurs de démonstration couvrant les cas pivots du répertoire fournisseurs (M2), chargés par make db-reset.

Contenu

  • 13 fournisseurs (dont 2 archivés — RG-2.17), companyName variés (UPPERCASE serveur), mono et multi-catégories de type FOURNISSEUR (RG-2.10).
  • 19 contacts (1 à 3 par fournisseur, dont un avec téléphone secondaire et un nommé par le seul nom — RG-2.04).
  • 15 adresses multi-types PROSPECT / DEPART / RENDU (RG-2.09) et multi-sites 86/17/82 (RG-2.06), avec bennes et triageProvider.
  • 3 RIB, compta complète sur une partie (siren, tvaMode, paymentDelay, paymentType).

Cas pivots

  • VIREMENT → banque renseignée (RG-2.07) ; LCR → 1 puis 2 RIB (RG-2.08) ; CHEQUE et NON_SOUMISE sans RIB.
  • Onglet Information complet (dont volumeForecast, spécifique fournisseur).
  • Cohérence gating comptable (un rôle sans accounting.view ne voit pas la compta) — support des tests ERP-92 et du golden path front.

Notes

  • Idempotent (lookup par companyName normalisé, aligné sur uq_supplier_company_name_active) ; rejouable sans doublon même purger désactivé.
  • Référentiels comptables réutilisés de M1 (tva_modes / payment_delays / payment_types / banks) — aucune nouvelle table.
  • Données de démonstration dev uniquement : early return en env test (les tests seedent leurs propres données).

Vérifications

  • make db-reset : 13 fournisseurs (2 archivés), 19 contacts, 15 adresses, 3 RIB chargés sans erreur.
  • Idempotence --append : compteurs inchangés.
  • make php-cs-fixer-allow-risky : 0 fichier à corriger.
  • make test : 574 tests OK.

Base : feature/ERP-92-tests-phpunit-m2 (sommet de la pile M2).

## ERP-112 — Fixtures Doctrine fournisseurs (M2) `SupplierFixtures` (calquée sur `ClientFixtures` / ERP-68) : ~13 fournisseurs de démonstration couvrant les cas pivots du répertoire fournisseurs (M2), chargés par `make db-reset`. ### Contenu - **13 fournisseurs** (dont **2 archivés** — RG-2.17), `companyName` variés (UPPERCASE serveur), mono et multi-catégories de type FOURNISSEUR (RG-2.10). - **19 contacts** (1 à 3 par fournisseur, dont un avec téléphone secondaire et un nommé par le seul nom — RG-2.04). - **15 adresses** multi-types PROSPECT / DEPART / RENDU (RG-2.09) et multi-sites 86/17/82 (RG-2.06), avec `bennes` et `triageProvider`. - **3 RIB**, compta complète sur une partie (siren, tvaMode, paymentDelay, paymentType). ### Cas pivots - VIREMENT → banque renseignée (RG-2.07) ; LCR → 1 puis 2 RIB (RG-2.08) ; CHEQUE et NON_SOUMISE sans RIB. - Onglet Information complet (dont `volumeForecast`, spécifique fournisseur). - Cohérence gating comptable (un rôle sans `accounting.view` ne voit pas la compta) — support des tests ERP-92 et du golden path front. ### Notes - **Idempotent** (lookup par companyName normalisé, aligné sur `uq_supplier_company_name_active`) ; rejouable sans doublon même purger désactivé. - Référentiels comptables **réutilisés de M1** (tva_modes / payment_delays / payment_types / banks) — aucune nouvelle table. - Données de démonstration **dev uniquement** : early return en env `test` (les tests seedent leurs propres données). ### Vérifications - `make db-reset` : 13 fournisseurs (2 archivés), 19 contacts, 15 adresses, 3 RIB chargés sans erreur. - Idempotence `--append` : compteurs inchangés. - `make php-cs-fixer-allow-risky` : 0 fichier à corriger. - `make test` : 574 tests OK. Base : `feature/ERP-92-tests-phpunit-m2` (sommet de la pile M2).
matthieu added the type/featbackM2-Fournisseur labels 2026-06-07 09:52:25 +00:00
Author
Owner

Revue — ERP-112 : fixtures Doctrine fournisseurs

Relecture sénior + vérifications relancées localement (pas seulement sur la base du récap).

Vérifications

Contrôle Résultat
php-cs-fixer (dry, fichier) 0 correction
make db-reset (chargement réel) charge sans erreur
Comptages base dev 13 fournisseurs (2 archivés), 19 contacts, 15 adresses, 3 RIB
Idempotence --append compteurs inchangés (13/19/15/3)
IBAN des 3 RIB (checksum mod-97) tous valides
Catégories FOURNISSEUR référencées existent toutes (Négociant/Coopérative/Producteur/Grossiste/Importateur)
CHECK BDD (chk_*_contact_name, chk_*_address_type) respectés sur toutes les lignes
RG-2.07 (VIREMENT⇒banque) / RG-2.08 (LCR⇒≥1 RIB) satisfaites sur tous les pivots
Docblocks (exactitude factuelle) exacts

Verdict

Correct et mergeable. Jumelle fidèle de ClientFixtures (ERP-68) : même pattern d'idempotence (lookup par companyName normalisé), mêmes garde-fous (early-return en env test, résolution inter-modules via les contrats CategoryInterface / SiteProviderInterface).

Findings (tous P3 — cosmétique, aucun bug fonctionnel)

  • BIC↔IBAN sur le RIB secondaire de Grossiste Multi-Métaux : BIC SOGEFRPPXXX (SG = code banque 30003) mais IBAN FR76 30001… (30001 = Banque de France). Inoffensif (IBAN valide, BIC non validé contre l'IBAN) et hérité du pattern ClientFixtures (transports : SOGE + 30006/BNP). Décision : laissé tel quel (réutilisation d'IBAN de test connus-valides).
  • Duplication des 4 résolveurs de référentiels (tvaMode/paymentDelay/paymentType/bank) : duplication Client/Fournisseur assumée (§2.1 isolation) → ne pas casser.
  • category(ObjectManager $manager, …) garde un paramètre alors que $this->manager existe → parité voulue avec ClientFixtures.

Aucune modification demandée : « corriger » ces points dégraderait la cohérence du couple Client/Fournisseur. LGTM.

## Revue — ERP-112 : fixtures Doctrine fournisseurs ✅ Relecture sénior + **vérifications relancées localement** (pas seulement sur la base du récap). ### Vérifications | Contrôle | Résultat | |---|---| | `php-cs-fixer` (dry, fichier) | 0 correction | | `make db-reset` (chargement réel) | charge sans erreur | | Comptages base dev | **13** fournisseurs (2 archivés), **19** contacts, **15** adresses, **3** RIB | | Idempotence `--append` | compteurs inchangés (13/19/15/3) | | IBAN des 3 RIB (checksum mod-97) | tous valides | | Catégories `FOURNISSEUR` référencées | existent toutes (Négociant/Coopérative/Producteur/Grossiste/Importateur) | | CHECK BDD (`chk_*_contact_name`, `chk_*_address_type`) | respectés sur toutes les lignes | | RG-2.07 (VIREMENT⇒banque) / RG-2.08 (LCR⇒≥1 RIB) | satisfaites sur tous les pivots | | Docblocks (exactitude factuelle) | exacts | ### Verdict **Correct et mergeable.** Jumelle fidèle de `ClientFixtures` (ERP-68) : même pattern d'idempotence (lookup par `companyName` normalisé), mêmes garde-fous (early-return en env `test`, résolution inter-modules via les contrats `CategoryInterface` / `SiteProviderInterface`). ### Findings (tous P3 — cosmétique, aucun bug fonctionnel) - **BIC↔IBAN** sur le RIB secondaire de *Grossiste Multi-Métaux* : BIC `SOGEFRPPXXX` (SG = code banque `30003`) mais IBAN `FR76 30001…` (`30001` = Banque de France). Inoffensif (IBAN valide, BIC non validé contre l'IBAN) et hérité du pattern `ClientFixtures` (`transports` : SOGE + `30006`/BNP). **Décision : laissé tel quel** (réutilisation d'IBAN de test connus-valides). - **Duplication des 4 résolveurs de référentiels** (`tvaMode`/`paymentDelay`/`paymentType`/`bank`) : duplication Client/Fournisseur **assumée** (§2.1 isolation) → ne pas casser. - **`category(ObjectManager $manager, …)`** garde un paramètre alors que `$this->manager` existe → **parité voulue** avec `ClientFixtures`. Aucune modification demandée : « corriger » ces points dégraderait la cohérence du couple Client/Fournisseur. **LGTM.**
malio changed target branch from feature/ERP-92-tests-phpunit-m2 to develop 2026-06-08 07:49:19 +00:00
matthieu added 3 commits 2026-06-08 07:49:22 +00:00
Suite fonctionnelle M2 assertant sur le CORPS JSON (jamais les annotations),
jumelle de la suite clients M1 :
- contrat de sérialisation : 4 régressions M1 re-testées (RIB gaté absent pour
  Commerciale, booléens triageProvider/isArchived présents, embed
  categories[].code/name, embed sites[].name/postalCode objet) + enveloppe AP4
  (member/totalItems/view, archivés exclus) + suppression du contact inline ;
- matrice RBAC réelle (app:seed-rbac) bureau/compta/commerciale/usine 200/403,
  gating accounting par omission de clé, mode strict PATCH (RG-2.16) ;
- RG-2.03/2.04/2.05/2.06/2.07/2.08/2.09/2.10/2.11/2.12/2.14/2.15/2.17 ;
- sous-ressources contacts/adresses/ribs (CRUD, sécurité, normalisation) ;
- anti N+1 liste (compte de requêtes constant), audit Supplier + RIB iban/bic.

Fix de contrat découvert et corrigé (sinon DoD figée sur un contrat faux) :
les référentiels comptables (TvaMode/PaymentType/PaymentDelay/Bank) ne portaient
que le groupe client:read:accounting (M1) → sur un fournisseur ils sortaient en
IRI nu. Ajout de supplier:read:accounting → objet {id, code, label} embarqué.

makefile : test-db-setup recrée l'index partiel uq_supplier_company_name_active
(droppé par schema:update comme pour le client) — oubli M2.

DoD § 4.0.bis : réponses JSON RÉELLES (liste + détail admin/commerciale) collées,
capturées via SupplierSerializationContractTest.
- config/packages/test/doctrine.yaml : force dbal profiling en test pour que
  doctrine.debug_data_holder existe sous APP_DEBUG=0 (CI). Le test anti-N+1
  SupplierListTest passait en local (debug=1) mais cassait en CI.
- RBACMatrix/SupplierApi : les 422 RG-2.03 et RG-2.14 assertent desormais le
  propertyPath / message (plus seulement le code) — un 422 orthogonal ne peut
  plus faire passer le test.
- RBACMatrix : gating bureau/commerciale verifie l'ensemble des champs
  comptables (accountNumber/nTva/tvaMode/paymentType), plus seulement siren/ribs.
- violationsByPath() mutualise dans AbstractSupplierApiTestCase (dedup).
feat(commercial) : fixtures Doctrine fournisseurs (≈13 suppliers complets + sous-collections) (ERP-112)
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Successful in 2m18s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Successful in 1m8s
c1e74e30ca
matthieu force-pushed feature/ERP-112-fixtures-fournisseurs from c23a8c17c4 to c1e74e30ca 2026-06-08 07:49:22 +00:00 Compare
malio merged commit b35deed8fe into develop 2026-06-08 07:49:28 +00:00
malio deleted branch feature/ERP-112-fixtures-fournisseurs 2026-06-08 07:49:28 +00:00
Sign in to join this conversation.