tristan
1bc432e8fa
feat(front) : referentiels + blocs reutilisables contact/adresse/placeholder (ERP-63)
...
- useClientReferentials : chargement des selects (categories, sites, modes TVA,
delais/types de reglement, banques) en ?pagination=false + listes
distributeurs/courtiers via ?categoryCode=DISTRIBUTEUR|COURTIER.
- ClientContactBlock / ClientAddressBlock : blocs reutilises par 1.11/1.12.
L'adresse gere la saisie assistee BAN (via le stub) avec bascule en mode
degrade (ville/adresse en saisie libre).
- TabPlaceholderBlank : frame vide des onglets non implementes.
2026-06-02 17:25:09 +02:00
tristan
ee1521384e
[ERP-62] Page Répertoire clients (datatable + Ajouter / Exporter) ( #44 )
...
Auto Tag Develop / tag (push) Successful in 8s
## ERP-62 — Page Répertoire clients (datatable + Ajouter / Exporter)
Tâche Lesstime #480 . **Stacke sur ERP-61** (clés i18n `commercial.clients.*`) — non encore mergé : la diff vers `develop` inclut le commit ERP-61 tant qu'il n'est pas mergé.
### Front
- Page `/clients` (route à plat) : `MalioDataTable` 6 colonnes (Nom entreprise / Contact / Téléphone formaté / Email / codes Catégories / badges Site(s)), toggle « Voir les archivés » (état 100 % local), boutons **+ Ajouter** (visible si `commercial.clients.manage`) et **Exporter** (visible si `view`, télécharge `clients/export.xlsx` via `useApi`), clic ligne → `/clients/{id}`, empty state.
- Composable `useClientsRepository` = wrapper de `usePaginatedList<Client>({ url: '/clients' })` + toggle `includeArchived` (repasse page 1).
- Util `formatPhoneFR` (signature cible à coordonner avec ERP-66 / 1.13) + clé i18n `showArchived`.
### Back — ⚠️ MAJ contrat de sérialisation (incluse dans cette MR)
Le `GET /api/clients` n'exposait ni les codes catégories ni les sites en liste (le bloc Lesstime l'affirmait à tort). Corrigé :
- `Client` : `category:read` + `site:read` ajoutés aux `normalizationContext` (GetCollection/Get/Post/Patch) + accesseur agrégé `getSites()` (`#[Groups(client:read)]`).
- `DoctrineClientRepository::createListQueryBuilder` : jointures + `addSelect` (categories / addresses / sites) anti N+1.
- Aucune migration (pure sérialisation).
### Tests
- Back : `ClientApiTest` (codes catégories + sites name/color en liste). `make test` ✅ 454.
- Front : `useClientsRepository.spec.ts` + `phone.test.ts`. `vitest` ✅ 111. `nuxi typecheck` ✅ (mes fichiers).
### Non couvert
Golden path navigateur non joué : dev-nuxt (conteneur) cassé (résolution `@malio/layer-ui/tailwind.config.ts`) + BDD sans clients démo (nécessite `make db-reset`). Aspects front restants traités séparément.
---------
Co-authored-by: Matthieu <contact@malio.fr >
Reviewed-on: #44
Co-authored-by: tristan <tristan@yuno.malio.fr >
Co-committed-by: tristan <tristan@yuno.malio.fr >
2026-06-02 14:16:29 +00:00