From b1b4214c4abe7a988f9d51c6dcb04f732ce502c6 Mon Sep 17 00:00:00 2001 From: Matthieu Date: Mon, 8 Jun 2026 10:26:55 +0200 Subject: [PATCH] refactor(commercial) : reset memoisation payload Processor + doc filtre archivedOnly export (ERP-87) --- .../ApiPlatform/State/Processor/SupplierProcessor.php | 6 ++++++ .../Infrastructure/Controller/SupplierExportController.php | 5 +++++ 2 files changed, 11 insertions(+) diff --git a/src/Module/Commercial/Infrastructure/ApiPlatform/State/Processor/SupplierProcessor.php b/src/Module/Commercial/Infrastructure/ApiPlatform/State/Processor/SupplierProcessor.php index b2685d1..e66eb3c 100644 --- a/src/Module/Commercial/Infrastructure/ApiPlatform/State/Processor/SupplierProcessor.php +++ b/src/Module/Commercial/Infrastructure/ApiPlatform/State/Processor/SupplierProcessor.php @@ -114,6 +114,12 @@ final class SupplierProcessor implements ProcessorInterface return $this->persistProcessor->process($data, $operation, $uriVariables, $context); } + // Reinitialisation de la memoisation du payload en debut de traitement : + // le service est partage (stateful), on repart du corps de LA requete + // courante et on n'herite jamais des cles decodees d'une requete passee. + $this->decodedContent = null; + $this->decodedPayloadKeys = []; + $writableKeys = $this->writablePayloadKeys(); $isArchiveRequest = $this->guardArchive($data, $writableKeys); diff --git a/src/Module/Commercial/Infrastructure/Controller/SupplierExportController.php b/src/Module/Commercial/Infrastructure/Controller/SupplierExportController.php index 037e4dc..78f8edb 100644 --- a/src/Module/Commercial/Infrastructure/Controller/SupplierExportController.php +++ b/src/Module/Commercial/Infrastructure/Controller/SupplierExportController.php @@ -57,6 +57,11 @@ final class SupplierExportController #[IsGranted('commercial.suppliers.view')] public function __invoke(Request $request): Response { + // Memes filtres d'archivage que la vue liste (SupplierProvider) pour que + // l'export reflete exactement ce que l'utilisateur voit a l'ecran : + // - includeArchived : inclut les archives en plus des actifs ; + // - archivedOnly : restreint aux seules archives (prioritaire, cf. + // createListQueryBuilder). $includeArchived = $this->readBool($request->query->get('includeArchived')); $archivedOnly = $this->readBool($request->query->get('archivedOnly')); $search = $request->query->getString('search') ?: null;