feat(logistique) : export XLSX des tickets de pesée (ERP-186) #136

Merged
matthieu merged 1 commits from feat/erp-186-export-xlsx-tickets-pesee into develop 2026-06-18 12:47:17 +00:00
Owner

ERP-186 (1.6) — Export XLSX des tickets de pesée (M5 § 4.5)

Endpoint GET /api/weighing_tickets/export.xlsx : exporte toute la liste des tickets de pesée (bouton « Exporter »), filtrée par le site courant + les filtres actifs, sans pagination (export complet).

Implémentation

  • Controller Symfony custom WeighingTicketExportController avec priority: 1 (évite le conflit avec l'item API Platform {id}.{_format}) — même pattern que les exports M2/M3/M4.
  • Génération déléguée au service partagé SpreadsheetExporterInterface (PhpSpreadsheet) — pas de réinvention.
  • Rejoue exactement la sélection du WeighingTicketProvider : recherche ?search, tri ?order[displayDate], cloisonnement par site courant (miroir applySiteScope / bypass_scope).
  • Sécurité : is_granted('logistique.weighing_tickets.view').

Colonnes

Numéro · Type contrepartie · Contrepartie (nom Client/Fournisseur/Autre) · Date · Immatriculation · Poids vide · Poids plein · Poids net · DSD vide · DSD plein.

Tests (make test — 816 verts)

WeighingTicketExportControllerTest : 200 + Content-Type/Content-Disposition, mapping des colonnes avec net = plein − vide (RG-5.05), cloisonnement par site (non-admin), 403 sans permission, 401 anonyme.

Note

Pas d'entrée CollectionsArePaginatedTest::EXCLUDED : l'export est un controller (binaire), pas une GetCollection API Platform — le garde-fou pagination ne le concerne pas (cohérent avec M1→M4).

## ERP-186 (1.6) — Export XLSX des tickets de pesée (M5 § 4.5) Endpoint **`GET /api/weighing_tickets/export.xlsx`** : exporte **toute la liste** des tickets de pesée (bouton « Exporter »), filtrée par le **site courant** + les filtres actifs, **sans pagination** (export complet). ### Implémentation - Controller Symfony custom `WeighingTicketExportController` avec `priority: 1` (évite le conflit avec l'item API Platform `{id}.{_format}`) — **même pattern que les exports M2/M3/M4**. - Génération déléguée au service partagé `SpreadsheetExporterInterface` (PhpSpreadsheet) — pas de réinvention. - Rejoue **exactement** la sélection du `WeighingTicketProvider` : recherche `?search`, tri `?order[displayDate]`, cloisonnement par site courant (miroir `applySiteScope` / `bypass_scope`). - Sécurité : `is_granted('logistique.weighing_tickets.view')`. ### Colonnes Numéro · Type contrepartie · Contrepartie (nom Client/Fournisseur/Autre) · Date · Immatriculation · Poids vide · Poids plein · **Poids net** · DSD vide · DSD plein. ### Tests (`make test` — 816 verts) `WeighingTicketExportControllerTest` : 200 + Content-Type/Content-Disposition, mapping des colonnes avec **net = plein − vide** (RG-5.05), cloisonnement par site (non-admin), 403 sans permission, 401 anonyme. ### Note Pas d'entrée `CollectionsArePaginatedTest::EXCLUDED` : l'export est un **controller** (binaire), pas une `GetCollection` API Platform — le garde-fou pagination ne le concerne pas (cohérent avec M1→M4).
matthieu added the backM5-Ticket-peseetype/feat labels 2026-06-18 09:31:32 +00:00
matthieu changed target branch from feat/erp-185-provider-processor-weighingticket to develop 2026-06-18 12:47:13 +00:00
matthieu added 1 commit 2026-06-18 12:47:13 +00:00
Endpoint GET /api/weighing_tickets/export.xlsx — controller custom (priority: 1)
calque sur les exports M2/M3/M4, delegue la generation au SpreadsheetExporter
partage. Rejoue la selection du WeighingTicketProvider (recherche ?search, tri
?order[displayDate], cloisonnement par site courant) SANS pagination : export
complet de la liste (§ 4.5).

Colonnes : Numero, Type contrepartie, Contrepartie (nom Client/Fournisseur/
Autre), Date, Immatriculation, Poids vide, Poids plein, Poids net, DSD vide,
DSD plein. Securite logistique.weighing_tickets.view.

Tests fonctionnels : 200 + en-tetes/Content-Disposition, mapping des colonnes
avec net = plein - vide (RG-5.05), cloisonnement par site (non-admin), 403, 401.
matthieu merged commit 10c113dbad into develop 2026-06-18 12:47:17 +00:00
matthieu deleted branch feat/erp-186-export-xlsx-tickets-pesee 2026-06-18 12:47:17 +00:00
Sign in to join this conversation.