# État des lieux - Flux retour client Limagrain (LIM-72) > **Date** : 13/05/2026 > **Auteur** : Arthur Ria > **Objectif** : Contexte complet pour mise à jour du wiki Limagrain et reprise de session --- ## 1. Contexte de la session Analyse v2 du ticket [LIM-72](https://easywmsfrance.atlassian.net/browse/LIM-72) (#LOT1.3 [RETOUR] Flux complet PK) pour lever tous les points ouverts avant finalisation du développement. Sources exploitées : - Ticket Jira LIM-72 (description + 2 commentaires) - Ticket Jira LIM-64 (déclaration image de quai) - Ticket Jira LIM-14 (CstAtt, séquences, paramètres) - Wiki EasyWMS : `reception-retour.md`, `controle-qualite-reception.md`, `gestion-camions.md`, `labels.md` - Échange mail du 07-10/04/2026 : Michael Chaudier ↔ Vincent Goyet (clarification API ATH214) - Échange mail du 24-29/04/2026 : Justine ↔ Leila ↔ Vincent Goyet ↔ Maxime Tourrette (doc connexion WS SAP CPI) - Document PDF : Athenzat SAP-CPI Webservices Documentation v1.0 (Maxime Tourrette, 24/04/2026) --- ## 2. État du développement LIM-72 ### Ce qui est implémenté (commit Vincent Charvet `8401f5456d`, 28/04/2026) - Entité `CST_StockStatus` : modification des custom attributes (CstAtt 1 = applicable en réception retour, CstAtt 2 = ZLOG, CstAtt 3 = ZINCO) - Query `CST_StockStatus_AllowedForReturn` : filtre les statuts autorisés en retour - Workflow `CST_Return_Stock_GetStatus_UI` : clone de `Stock_GetStatus_UI` simplifié pour les retours - Workflow `Reception_FilterLinesByProductAndContainer_UI_V1` : retrait du filtre quantité pour autoriser la réception en excès (tolérance illimitée) - Workflow `WorkStation_Reception_Supplier_UI` : sélection du statut de stock après sélection du lot - Workflow `Reception_GetQuantityAndUom_UI` : ajout du choix de modification de statut - Workflow `Reception_Supplier_CheckReceptionStatus_UI_V1` : autorisation de création de lignes pour les retours - Dialog `CST_GetProductQuantity_Prompt` : ajout de l'option SelectStatus ### Ce qui reste à développer - Appel API SAP ATH214 (vérification lot officiel) + gestion du token OAuth 2.0 - Écran d'attente ITM (polling alias en base toutes les 5s, timeout 1 min, 5 tentatives max) - Dialogue de choix multi-lot (quand ET_BATCH contient plusieurs articles) - Impression étiquette stock retour client (rapport custom à créer) - Configuration du flux de rejet PIE pour les retours (verrou ECART RETOUR, destination, notification) --- ## 3. Découvertes techniques clés ### 3.1. Architecture API SAP CPI Source : Athenzat SAP-CPI Webservices Documentation v1.0 - **Authentification** : OAuth 2.0 client_credentials - URL token TEST : `https://vilm-cpi-test-73ltxp48.authentication.eu30.hana.ondemand.com/oauth/token` - URL token PROD : à définir - Body : `x-www-form-urlencoded` avec `grant_type=client_credentials`, `client_id`, `client_secret`, `addTokenTo=header` - Expiration du token gérée côté client (WMS) - **Endpoint unique** pour tous les flux WMS → SAP : - URL TEST : `https://vilm-cpi-test-73ltxp48.it-cpi020-rt.cfapps.eu30.hana.ondemand.com/http/ATHInboundMessage` - URL PROD : à définir - Méthode : GET avec body JSON (spécifique SAP CPI) - Headers : `Authorization: Bearer `, `Connection: keep-alive` - Body JSON : `{ "MessageType": "", "data": { ... } }` - **Conséquence pour LIM-72** : le paramètre `SAP_LOT_VERIFY_URL` du ticket doit pointer vers l'endpoint CPI unique, pas vers `/api/v1/lot/verify`. Le `MessageType` sera `"ATH214"`. Le format d'enveloppe JSON doit inclure les structures `MessageType` + `data`. ### 3.2. API ATH214 - Check Batch (détail) Source : échanges mails Vincent Goyet (08/04 - 28/04/2026) **Payload de requête :** ```json { "MessageType": "ATH214", "data": { "IV_LGNUM": "WF02", "IV_MATNR": "", "IV_CHARG": "", "IV_BATCH_OFF": "", "IV_RETURN": "" } } ``` - `IV_LGNUM` (CHAR 4) : toujours "WF02" - `IV_MATNR` (CHAR 40) : OPTIONAL - code lot WMS (= product code SAP) - `IV_CHARG` (CHAR 10) : OPTIONAL - code article WMS (= lot SAP) - `IV_BATCH_OFF` (CHAR 30) : lot officiel scanné sur le sac - `IV_RETURN` (CHAR 10) : numéro du document de retour (code OE) **Payload de réponse :** ```json { "EV_RETURN": "X", "ET_RETURN": [ { "TYPE": "...", "MESSAGE": "...", ... } ], "ET_BATCH": [ { "MATNR": "000000000000020955", "CHARG": "2023293649", "BATCH_OFF": "F0964D002488", "EV_DEPLOY": "X" } ] } ``` - `EV_RETURN` : "X" = aucune erreur, vide = erreur - `ET_RETURN` : messages d'erreur ou de succès SAP - `ET_BATCH` : lots/articles trouvés - `MATNR` (CHAR 40) : code lot WMS = product code SAP (mapping contre-intuitif) - `CHARG` (CHAR 10) : code article WMS = lot SAP (mapping contre-intuitif) - `BATCH_OFF` (CHAR 30) : lot officiel - `EV_DEPLOY` ou `ZDEPLOY` (CHAR 1) : "X" = déployé/vendu, "" = non (nom ambigu dans les échanges - **à confirmer**) **Séquence d'échange :** 1. WMS appelle ATH214 avec lot officiel + code retour 2. SAP répond immédiatement avec `EV_RETURN` + `ET_BATCH` 3. Si OK : SAP pousse en parallèle les ITM via ATH002/ITM01 (automatique, pas d'appel supplémentaire WMS) 4. WMS poll toutes les 5s pour vérifier si l'alias (lot officiel) est apparu en base 5. Si trouvé → continue ; si timeout (1 min) → propose "Réessayer" (5 tentatives max) ### 3.3. Cartographie complète des interfaces Athenzat Source : diagramme dans la doc CPI + mail S15 de Justine | Code | Direction | Type SAP | Type Easy | Description | |------|-----------|----------|-----------|-------------| | ATH002 | SAP → Easy | BATMAS | ITM01 | Fiche article (Item) | | ATH103A | SAP → Easy | DELIVRY07 | ROR01 | Ordre de réception (Inbound delivery) | | ATH108 | SAP → Easy | ORDRSP | ROR01 | Ordre de réception retour (Return delivery) | | ATH103B | SAP → Easy | SHPUNT7 | RUT | Ordre de sortie (Outbound delivery) | | ATH102BOM | SAP → Easy | LOIPRO | SOR | Ordre d'expédition (Shipping order) | | ATH111 | SAP → Easy | ZSTKATH11 | ASN / STR | HU à recevoir / HU change | | ATH302 | SAP → Easy | ZQMINSPLOT | COR | Tâche inventaire/échantillon | | ATH214 | Easy → SAP | Z_IAT214 | Z_IATH214 | Check Batch (vérification lot retour) | | ATH215 | Easy → SAP | Z_IAT215 | REF | Bon de réception retour / achat | | ATH217 | Easy → SAP | Z_IAT217 | ROF | Bon de réception achat | | ATH201 | Easy → SAP | Z_IAT201 | LOC / STV | Mouvement stock (rangement ASRS, mvt HU, prep mix, customer flag, stock adjust) | | ATH202 | Easy → SAP | Z_IAT202 | LOF | Chargement (Loading / Goods Issue) | ### 3.4. Glossaire - Mapping articles Limagrain Source : confirmation Michael Chaudier (09/04) + Vincent Goyet (10/04) | Terme métier | Signification | Entité WMS | Champ WMS | Champ ATH214 | |--------------|---------------|------------|-----------|--------------| | Lot SAP | ID unique lot dans SAP = **code article WMS** | `Item` | `Item.Code` | `CHARG` (CHAR 10) | | Lot officiel | N° sur le sac physique (QR code) = **alias article WMS** | `ItemAlias` | `ItemAlias.Code` | `BATCH_OFF` (CHAR 30) | | Product code SAP | Code produit générique = **CstAtt du stock** | `StockLine` | `StockLine.CstAtt` (à préciser) | `MATNR` (CHAR 40) | | Code retour | N° document de retour = **code OE** | `InboundOrder` | `InboundOrder.Code` | `IV_RETURN` (CHAR 10) | | Déployé/vendu | Flag vente Limagrain | — | — | `EV_DEPLOY` (CHAR 1) | **Attention** : le mapping CHARG/MATNR est inversé par rapport à la nomenclature SAP standard. MATNR (normalement Material Number = code article) porte ici le product code, et CHARG (normalement Charge/Batch = lot) porte le code article WMS. ### 3.5. CstAtt Container - Mapping complet Source : [LIM-14](https://easywmsfrance.atlassian.net/browse/LIM-14) | CstAtt | Donnée | Type | Tâche | Statut | |--------|--------|------|-------|--------| | 01 | Big-bag potentiel (réception contient big-bag) | bool | LIM-64 | Utilisé | | 02 | Contient big-bag | bool | LIM-67 | Utilisé | | 03 | À anoxier | bool | LIM-67 | Utilisé | | 04 | Support ASN | bool | LIM-64 | Utilisé | | 05 | Programme de filmage | int | LIM-67 | Utilisé | | 06 | Code PK assigné | string | LIM-70 | Utilisé | | 07 | Date fin d'anoxie | datetime | — | Utilisé | | 08 | Code réception (conteneur virtuel) | string | — | Utilisé | | 09 | CERTIFICATION (fausse palette) | string | — | Utilisé | | 10 | Réception en cours au PK | bool | — | Utilisé | | 11 | Rangé ASRS après réception | bool | LIM-73 | Utilisé | | 12-20 | — | — | — | **Libres** | **Proposition** : utiliser **CstAtt12** pour stocker le code OE (association palette ↔ ordre d'entrée dès l'image de quai). ### 3.6. Contrôle qualité PIE - Retours clients Source : wiki `controle-qualite-reception.md` | Verrou | Flux | Comportement post-PIE | |--------|------|----------------------| | HORS TOLERANCE | Tous sauf retour | Palette entre dans l'ASRS malgré le verrou | | ECART RETOUR | Retour client uniquement | Palette refusée, envoyée vers poumon de rejet | - Le rejet dirige vers un "poumon au sol" avec notification SmartUI - L'ancienne approche de renvoi au PK pour recomptage est abandonnée - Impact clôture : une palette sans `CstAtt11 = true` bloque la clôture. Le client doit supprimer la palette du WMS pour débloquer. --- ## 4. Points ouverts - Mail envoyé le 13/05/2026 Mail envoyé à : Justine, Leila Chajjaoui, Antoine Martin, Vincent Goyet, Pierre Gaudy, Maxime Tourrette, Vincent Charvet, Michael Chaudier. ### Questions techniques SAP (Vincent Goyet / Pierre Gaudy) | # | Question | Criticité | Statut | |---|----------|-----------|--------| | A1 | Champs manquants dans ET_BATCH : description article, pays de destination, propriétaire Limagrain | **BLOQUANT** - sans pays d'origine, le dialogue de choix multi-lot ne peut pas fonctionner | En attente | | A2 | Nom final du champ de déploiement : `EV_DEPLOY` ou `ZDEPLOY` ? | Mineur mais source de bugs | En attente | | A3 | Délai typique entre réponse ATH214 et push ITM via ATH002 (dimensionnement du polling 5s / timeout 1 min) | Important | En attente | | A4 | Vérification "déployé" pour les lots déjà connus en base WMS (pas d'appel ATH214) : info dans l'ITM ou appel systématique ? | **IMPORTANT** - trou fonctionnel dans le design actuel | En attente | ### Questions fonctionnelles client (Leila / Antoine) | # | Question | Criticité | Statut | |---|----------|-----------|--------| | B1 | Étiquette stock retour : en complément de RFID ? Quels champs ? Format A6 ? Imprimante dédiée ? | Important | En attente | | B2 | Flux de rejet PIE : destination, notification, actions, retour PK abandonné ?, notification SAP ?, suppression palette | **IMPORTANT** | En attente | ### Point en suspens (hors mail) | # | Sujet | Décision | Statut | |---|-------|----------|--------| | PS | Association palette ↔ OE dès l'image de quai (modification LIM-64) | Arthur propose de valider les points précédents d'abord. CstAtt12 proposé pour stocker le code OE. Faisable techniquement, impact planning à évaluer. | Reporté - à traiter après réponses | --- ## 5. Actions à mener à réception des réponses ### 5.1. Mise à jour du ticket LIM-72 À intégrer dans la description v2 : - Corriger le format d'appel API : endpoint CPI unique + MessageType "ATH214" (pas `/api/v1/lot/verify`) - Ajouter la gestion OAuth 2.0 (token endpoint, client_credentials, gestion expiration) - Corriger le nom du champ de déploiement selon la réponse A2 - Préciser le comportement pour les lots déjà connus (selon réponse A4) - Ajouter les champs manquants dans le dialogue multi-lot (selon réponse A1) - Spécifier le rapport d'étiquette stock retour (selon réponse B1) - Documenter le flux de rejet PIE (selon réponse B2) - Ajouter les nouveaux cas de tests (42 à 49 proposés dans l'analyse v2) - Mettre à jour les paramètres : `SAP_LOT_VERIFY_URL` → URL endpoint CPI + paramètres d'auth ### 5.2. Mise à jour des tâches liées pour l'association palette ↔ OE Si GO sur l'informatisation de l'association palette ↔ OE, les tâches suivantes devront être modifiées : | Tâche | Modification | |-------|-------------| | [LIM-14](https://easywmsfrance.atlassian.net/browse/LIM-14) | Ajouter CstAtt12 Container = "Code OE associé" (string) | | [LIM-64](https://easywmsfrance.atlassian.net/browse/LIM-64) | Modifier le workflow TRF : après déclaration nb palettes + emplacement de départ, foreach sur chaque emplacement pour demander l'OE associé. Stocker dans CstAtt12. Gestion Échap avec rollback. Impression groupée. Écran de validation collage. | | [LIM-65](https://easywmsfrance.atlassian.net/browse/LIM-65) | Ajouter le code OE sur l'étiquette support image de quai | | [LIM-70](https://easywmsfrance.atlassian.net/browse/LIM-70) | Le routage AGV pourra exploiter CstAtt12 pour diriger la palette vers le bon PK (optimisation optionnelle) | | [LIM-72](https://easywmsfrance.atlassian.net/browse/LIM-72) | L'étape de sélection de la réception au PK peut être pré-remplie via CstAtt12 | ### 5.3. Mise à jour du wiki Limagrain Pages wiki à mettre à jour : | Page | Modifications | |------|--------------| | `limagrain/01-inbound/reception-retour.md` | Intégrer les détails auth OAuth 2.0, corriger le format d'appel CPI (endpoint unique + MessageType), corriger EV_DEPLOY/ZDEPLOY, ajouter le flux de rejet PIE, ajouter l'étiquette stock | | `limagrain/01-inbound/gestion-camions.md` | Si GO sur l'association OE : documenter le nouveau flux TRF avec foreach + CstAtt12 | | `limagrain/01-inbound/controle-qualite-reception.md` | Compléter le flux de rejet PIE pour les retours (destination, notification, actions) | | `limagrain/06-erp-interface/` (à créer ou mettre à jour) | Documenter l'architecture CPI (endpoint unique, auth, MessageType), la cartographie complète des interfaces ATH, et le détail de chaque flux | --- ## 6. Documents produits pendant la session | Document | Chemin | Description | |----------|--------|-------------| | Analyse v2 LIM-72 | `LIM-72_v2_analyse_retour_client.md` | Analyse complète avec réponses aux 4 questions, glossaire, plan d'action | | Ce récap | `recap_session_LIM-72_13-05-2026.md` | État des lieux pour reprise de contexte | --- ## 7. Contacts projet | Nom | Rôle | Organisation | |-----|------|-------------| | Arthur Ria | CDP / Intégrateur WMS | Mecalux France | | Justine Beutin | Chef de projets IT | Mecalux France | | Michael Chaudier | Directeur des opérations WMS | Mecalux France | | Vincent Charvet | Développeur WMS | Mecalux France | | Leila Chajjaoui | Domain Leader Supply Chain | Limagrain Europe | | Antoine Martin | Référent projet côté client | Limagrain | | Vincent Goyet | Consultant SAP / Développeur interfaces | 1465 Conseil (prestataire Limagrain) | | Pierre Gaudy | Consultant SAP | 1465 Conseil (prestataire Limagrain) | | Maxime Tourrette | Développeur IT Expert (SAP CPI) | Limagrain Europe |