feat(commercial) : migration BDD M2 fournisseurs (supplier + sous-collections + M2M) (ERP-85) #64

Merged
malio merged 3 commits from feature/ERP-85-migration-m2 into develop 2026-06-08 07:06:02 +00:00
Owner

ERP-85 — Migration BDD M2 Fournisseurs (étape 1/7)

PR empilée sur ERP-84 (#63) : ne contient que le commit ERP-85. À merger après #63 (la base rebascule sur develop automatiquement au merge de #63).

Contenu

Migration Version20260605130000.php (namespace racine DoctrineMigrations) — schéma M2 sous le module Commercial, jumeau du M1 client.

8 tables : supplier, supplier_category (M2M), supplier_contact, supplier_address, supplier_address_site / _contact / _category (3 M2M), supplier_rib.

Spécificités M2 (vs M1 client)

  • supplier sans contact inline (ERP-106) ni auto-référence distributor/broker ; ajout volume_forecast.
  • supplier_address : enum address_type CHECK (PROSPECT|DEPART|RENDU), bennes + triage_provider, pas de billing_email.
  • Index partiel unique uq_supplier_company_name_active (nom seul, hors archives/soft-delete).

Réutilisations (zéro duplication) : référentiels comptables M1 (tva_mode/payment_delay/payment_type/bank) + CategoryType FOURNISSEUR (seedé par ERP-84). Pas de re-seed.

Conventions : COMMENT ON COLUMN sur chaque colonne (règle n°12) + helper Timestampable/Blamable ; namespace racine (FK cross-module, exception règle n°11).

Vérifications

  • make db-reset de bout en bout (aucune erreur FK)
  • make test 483 tests OK (ColumnsHaveSqlCommentTest vert, 0 colonne sans commentaire)
  • make php-cs-fixer-allow-risky 0 fichier à corriger

Bloque : #86 (entités Supplier* + ApiResource).

## ERP-85 — Migration BDD M2 Fournisseurs (étape 1/7) PR **empilée sur ERP-84** (#63) : ne contient que le commit ERP-85. À merger après #63 (la base rebascule sur develop automatiquement au merge de #63). ### Contenu Migration `Version20260605130000.php` (namespace racine `DoctrineMigrations`) — schéma M2 sous le module Commercial, jumeau du M1 client. **8 tables** : `supplier`, `supplier_category` (M2M), `supplier_contact`, `supplier_address`, `supplier_address_site` / `_contact` / `_category` (3 M2M), `supplier_rib`. **Spécificités M2 (vs M1 client)** - `supplier` **sans contact inline** (ERP-106) ni auto-référence distributor/broker ; ajout `volume_forecast`. - `supplier_address` : enum `address_type` `CHECK (PROSPECT|DEPART|RENDU)`, `bennes` + `triage_provider`, **pas** de `billing_email`. - Index partiel unique `uq_supplier_company_name_active` (nom seul, hors archives/soft-delete). **Réutilisations (zéro duplication)** : référentiels comptables M1 (`tva_mode`/`payment_delay`/`payment_type`/`bank`) + `CategoryType FOURNISSEUR` (seedé par ERP-84). Pas de re-seed. **Conventions** : `COMMENT ON COLUMN` sur chaque colonne (règle n°12) + helper Timestampable/Blamable ; namespace racine (FK cross-module, exception règle n°11). ### Vérifications - `make db-reset` ✅ de bout en bout (aucune erreur FK) - `make test` ✅ 483 tests OK (`ColumnsHaveSqlCommentTest` vert, 0 colonne sans commentaire) - `make php-cs-fixer-allow-risky` ✅ 0 fichier à corriger Bloque : #86 (entités `Supplier*` + ApiResource).
matthieu added the backdbM2-Fournisseurtype/feat labels 2026-06-05 08:26:58 +00:00
malio changed target branch from feature/ERP-84-taxonomie-fournisseur to develop 2026-06-08 06:57:34 +00:00
malio added 2 commits 2026-06-08 06:57:34 +00:00
Recree le CategoryType FOURNISSEUR (unifie sur CLIENT par ERP-78) et implemente
un vrai filtre ?typeCode= sur GET /api/categories (inexistant en prod).

- CategoryProvider lit ?typeCode= depuis les filtres (meme pattern que
  includeDeleted) et le passe au repository ; naltere pas ?pagination=false.
- DoctrineCategoryRepository::createListQueryBuilder joint le CategoryType et
  filtre sur son code (compatible Paginator ORM fetchJoinCollection).
- Migration racine Version20260605120000 : seed du type FOURNISSEUR en
  ON CONFLICT + 5 categories de demo (Negociant, Cooperative, Producteur,
  Grossiste, Importateur) en NOT EXISTS. Aucune colonne creee.
- CategoryTypeFixtures / CategoryFixtures etendus a FOURNISSEUR (idempotent,
  survit a make db-reset).
- Test CategoryTypeCodeFilterTest : filtre exclusif, compat pagination Hydra,
  code inexistant -> liste vide.
Cree le schema M2 sous le module Commercial, jumeau du M1 client :
- supplier (formulaire + Information + Comptabilite + archive + soft-delete)
  sans contact inline (ERP-106) ni auto-reference distributor/broker ;
  ajout volume_forecast.
- Sous-collections : supplier_category (M2M), supplier_contact, supplier_address,
  supplier_rib + jointures supplier_address_site/_contact/_category.
- supplier_address : enum address_type (PROSPECT|DEPART|RENDU, CHECK exclusif),
  bennes + triage_provider, sans billing_email.
- Index partiel unique uq_supplier_company_name_active (nom seul, hors
  archives/soft-delete).
- COMMENT ON COLUMN sur chaque colonne (regle n12) + helper Timestampable/Blamable.

Referentiels comptables (tva_mode/payment_delay/payment_type/bank) et CategoryType
FOURNISSEUR reutilises (zero duplication). Namespace racine DoctrineMigrations
(FK cross-module, exception regle n11).
malio added 1 commit 2026-06-08 06:58:12 +00:00
Merge branch 'develop' into feature/ERP-85-migration-m2
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Successful in 2m15s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Successful in 1m8s
cdf630fd5b
malio merged commit 1a29bcf76c into develop 2026-06-08 07:06:02 +00:00
malio deleted branch feature/ERP-85-migration-m2 2026-06-08 07:06:02 +00:00
Sign in to join this conversation.