feat(front) : onglet adresse prestataire (ERP-143) #105

Merged
tristan merged 1 commits from feature/ERP-143-onglet-adresse-prestataire into develop 2026-06-15 09:12:51 +00:00
Owner

Empilée sur ERP-142 (#104).

Périmètre ERP-143

Onglet Adresse de l'écran /providers/new — saisie multi-adresses (blocs ajoutables) via la sous-ressource addresses.

  • ProviderAddressBlock.vue (miroir SupplierAddressBlock simplifié) : Sélecteur de sites (≥1, RG-3.05) / Catégories (PRESTATAIRE, RG-3.09) / Contact(s) rattaché(s) (depuis l'onglet Contact) / Pays (défaut France) / Code postal / Ville / Adresse (autocomplete BAN) / Complément. Pas de type d'adresse, pas de bennes, pas de triage (différence M2).
  • RG-3.06 : useAddressAutocomplete() réutilisé tel quel — CP → liste des villes (BAN) ; cas dégradé (API down) → ville/adresse en saisie libre + toast unique.
  • useProviderForm étendu : addresses, canAddAddress (RG-3.05/3.09), add/removeAddress, submitAddresses (POST /providers/{id}/addresses + PATCH /provider_addresses/{id}, groupe provider:write:addresses), erreurs 422 par ligne.
  • useProviderReferentials : ajout des pays (/countries) pour le select Pays.
  • Helpers purs utils/forms/providerAddress.ts (isProviderAddressValid, buildProviderAddressPayload — relations en IRI, requis vides omis au POST).
  • « + Nouvelle adresse » / Supprimer (modal) / « Valider ». i18n technique.providers.form.address + confirmDelete.address.

Conformité

  • useApi() only ; Malio* only ; aucun texte FR en dur ; useAddressAutocomplete non réécrit ; pas d'import inter-module (helpers ré-implémentés côté Technique, règle ABSOLUE n°1).

Vérifications

  • Vitest : 436/436 (18 nouveaux : helpers adresse, bloc — BAN dégradé/allow-create/mapping erreurs, workflow adresses POST/PATCH/422 par ligne).
  • ESLint : OK.
  • nuxi typecheck : 0 erreur sur les fichiers source du ticket.
  • Golden path navigateur : page compile, onglet Contact OK. NB : l'onglet Adresse est gaté derrière la validation principal+contact (multiselect Malio non pilotable en a11y) — couvert par tests unitaires (montage + BAN + mapping) + typecheck.
Empilée sur ERP-142 (#104). ## Périmètre ERP-143 Onglet **Adresse** de l'écran `/providers/new` — saisie multi-adresses (blocs ajoutables) via la sous-ressource addresses. - **`ProviderAddressBlock.vue`** (miroir `SupplierAddressBlock` **simplifié**) : Sélecteur de sites (≥1, RG-3.05) / Catégories (PRESTATAIRE, RG-3.09) / Contact(s) rattaché(s) (depuis l'onglet Contact) / Pays (défaut France) / Code postal / Ville / Adresse (autocomplete BAN) / Complément. **Pas** de type d'adresse, **pas** de bennes, **pas** de triage (différence M2). - **RG-3.06** : `useAddressAutocomplete()` **réutilisé tel quel** — CP → liste des villes (BAN) ; cas dégradé (API down) → ville/adresse en saisie libre + toast unique. - **`useProviderForm`** étendu : `addresses`, `canAddAddress` (RG-3.05/3.09), `add/removeAddress`, `submitAddresses` (POST `/providers/{id}/addresses` + PATCH `/provider_addresses/{id}`, groupe `provider:write:addresses`), erreurs 422 **par ligne**. - **`useProviderReferentials`** : ajout des pays (`/countries`) pour le select Pays. - Helpers purs `utils/forms/providerAddress.ts` (`isProviderAddressValid`, `buildProviderAddressPayload` — relations en IRI, requis vides omis au POST). - « + Nouvelle adresse » / Supprimer (modal) / « Valider ». i18n `technique.providers.form.address` + `confirmDelete.address`. ## Conformité - `useApi()` only ; `Malio*` only ; aucun texte FR en dur ; `useAddressAutocomplete` non réécrit ; pas d'import inter-module (helpers ré-implémentés côté Technique, règle ABSOLUE n°1). ## Vérifications - Vitest : 436/436 (18 nouveaux : helpers adresse, bloc — BAN dégradé/allow-create/mapping erreurs, workflow adresses POST/PATCH/422 par ligne). - ESLint : OK. - `nuxi typecheck` : 0 erreur sur les fichiers source du ticket. - Golden path navigateur : page compile, onglet Contact OK. NB : l'onglet Adresse est gaté derrière la validation principal+contact (multiselect `Malio` non pilotable en a11y) — couvert par tests unitaires (montage + BAN + mapping) + typecheck.
Owner

Review — RAS, bon pour merge.

Onglet Adresse conforme :

  • ProviderAddressBlock réutilise l'autocomplete BAN partagé (shared/), mode dégradé (saisie libre) géré et notifié une seule fois.
  • Adaptation M3 correcte vs SupplierAddressBlock : suppression du type d'adresse et du filler email de facturation (absents au M3), bloc Contacts déplacé.
  • POST /providers/{id}/addresses / PATCH /provider_addresses/{id}, scalaires requis omis si vides pour laisser la 422 porter la violation par champ.
**Review — RAS, bon pour merge.** Onglet Adresse conforme : - `ProviderAddressBlock` réutilise l'autocomplete BAN partagé (`shared/`), mode dégradé (saisie libre) géré et notifié une seule fois. - Adaptation M3 correcte vs `SupplierAddressBlock` : suppression du type d'adresse et du filler email de facturation (absents au M3), bloc Contacts déplacé. - POST `/providers/{id}/addresses` / PATCH `/provider_addresses/{id}`, scalaires requis omis si vides pour laisser la 422 porter la violation par champ.
tristan changed target branch from feature/ERP-142-onglet-contact-prestataire to develop 2026-06-15 09:05:10 +00:00
tristan added 1 commit 2026-06-15 09:07:13 +00:00
feat(front) : onglet adresse prestataire
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Successful in 2m36s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Successful in 1m19s
eccec2ebe5
tristan force-pushed feature/ERP-143-onglet-adresse-prestataire from a3e64f0f9e to eccec2ebe5 2026-06-15 09:07:13 +00:00 Compare
tristan merged commit 3d4ae391fe into develop 2026-06-15 09:12:51 +00:00
tristan deleted branch feature/ERP-143-onglet-adresse-prestataire 2026-06-15 09:12:51 +00:00
Sign in to join this conversation.