Files
mcp-wms-wiki/wiki/sources/archives/recap_session_LIM-72_13-05-2026.md
T
2026-05-20 09:41:27 +02:00

283 lines
15 KiB
Markdown

# É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 <token>`, `Connection: keep-alive`
- Body JSON : `{ "MessageType": "<code_flux>", "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": "<lot officiel scanné>",
"IV_RETURN": "<code OE retour>"
}
}
```
- `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 |