# WT9 — Export XLSX (ticket 1.10 / ERP-162) > ```bash > git fetch origin > git worktree add ../sb-erp162-export -b feat/erp-162-carrier-export origin/develop > cd ../sb-erp162-export && claude > ``` > **Base** : `origin/develop` **après merge de WT3** (lecture Carrier). Parallèle à WT5/WT6/WT7/WT8. --- ## Prompt à coller Projet Starseed (Symfony 8 / API Platform 4, DDD). Lis `CLAUDE.md`, `.claude/rules/backend.md`. **Miroir** : `src/Module/Commercial/Infrastructure/Controller/SupplierExportController.php` (PhpSpreadsheet déjà présent). **Mission** : export Excel du répertoire et du tableau Prix regroupé. **Spec** : `spec-back.md § 4.6`. **À livrer** : - `GET /api/carriers/export.xlsx` : transporteurs affichés (**mêmes filtres** que la liste) ; colonnes § 4.6. - `GET /api/carriers/{id}/prices/export.xlsx` : tableau Prix regroupé Benne / Fond Mouvant (colonnes docx p.10). - **Controllers custom** avec `#[Route(priority: 1)]` (sinon conflit API Platform `{id}`) ; en-tête `Content-Disposition`. **Tests à écrire** : 200 + en-tête fichier (Content-Disposition + type XLSX) ; respect des filtres. **Scope STRICT** : controllers d'export + service de génération. **NE TOUCHE PAS** entités, processors, `CarrierFixtures` (WT10). Réutilise le Provider/filtres de WT3 pour la cohérence des données exportées. **Fini quand** : `make test` vert + `make php-cs-fixer-allow-risky`. Commit (`--no-verify` si vert), puis **ouvre la PR** : ```bash git push -u origin feat/erp-162-carrier-export tea pr create --base develop --head feat/erp-162-carrier-export \ --title "feat(transport) : export XLSX répertoire + prix (ERP-162)" \ --description "GET /api/carriers/export.xlsx + /carriers/{id}/prices/export.xlsx. Ticket ERP-162." ``` Puis labellise via l'API Gitea. Cible **develop**. Aucune mention IA.