--- title: "Flux ERP outbound - Messages expédition" tags: [outbound, ERP, SOR, RUT, SOF, LOF, PCK, MOV, interface, adresse, tournee] status: draft standard_ref: concepts/erp-interface.md jira_refs: [LIM-117] confluence_refs: [] sources: [FR-SW-04-07_LIMAGRAIN_Functional_Analysis_V1.5.docx, "Expédition - LIMAGRAIN - DEV - Confluence.md", "CR CONSOLIDES REU ERP LIMAGRAIN V1 - CR.md", "Jira LIM-117 (lecture directe)"] last_updated: 2026-07-20 author: Arthur --- # Flux ERP outbound - Messages expédition > **Résumé** : catalogue des messages ERP liés aux processus d'expédition > chez Limagrain, avec direction, déclencheur et contenu principal. > **Standard EasyWMS** : → voir [ERP Integration](../../concepts/erp-interface.md) > Ce qui suit documente les **spécificités Limagrain** par rapport au standard. ## Contexte projet La communication ERP expédition utilise XML + Webservice (SAP EWM ↔ GNA). Pour les messages de réception, voir [Flux ERP inbound](../01-inbound/flux-erp-inbound.md). ## Messages entrants (SAP → EasyWMS) ### RUT - Route | Champ | Description | |-------|-------------| | Direction | ERP → WMS | | Déclencheur | Planification expédition camion | | Contenu | Image camion (tournée), 1+ ordres de sortie (SOR), date/heure libération, n° stops | | Types | « Client » (commandes client + messagerie palette), « Messagerie » (messagerie carton) | ### SOR - Shipping Order Request | Champ | Description | |-------|-------------| | Direction | ERP → WMS | | Déclencheur | Création commande de sortie dans SAP | | Contenu | Lignes de stock (article/lot SAP, propriétaire Limagrain, statut de stock, quantité), priorité, date/heure libération | | Types | « Production » (consommation OF hors recert), « Recert » (consommation OF avec recert) | ### [CUSTOM] Adresse de livraison des SOR de tournée (LIM-117) En standard, le SOR porte des champs d'adresse de livraison, mais la **liste de SOR d'un RUT** (`RouteErpCommand`) ne les expose pas. SAP transmet donc l'adresse dans le bloc **`CustomAttribute` de chaque SOR** du RUT. Un **post-subscription** WMS (à développer) lit ces attributs et les mappe sur l'**ordre de sortie (OS)** correspondant. | CstAtt du SOR | Contenu (déduit de l'exemple SAP) | Exemple | |---|---|---| | `Attribute1` | Code postal | `63720` | | `Attribute2` | Site / lieu-dit | `Biopôle Clermont-Limagne` | | `Attribute3` | Rue | `Rue Henri Mondor` | | `Attribute4` | Commune | `SAINT-BEAUZIRE` | | `Attribute5` | Région | `AUVERGNE-RHONE-ALPES` | | `Attribute6` | Pays | `FR` | | `Attribute7` | Téléphone / commentaire | `0415400300 ou commentaire` | Les attributs sont portés au niveau de chaque SOR de la `SorList`, quel que soit le type (l'exemple SAP `RUT-2026-000451_BIS` concerne un SOR `AccountCode = PRODUCTION`). > ⚠️ Statut LIM-117 **Ouvert** : mapping validé côté SAP (exemple fourni), > le post-subscription WMS reste **à développer**. Les libellés de champs > ci-dessus sont déduits des valeurs de l'exemple - à confirmer avec SAP. ## Messages sortants (EasyWMS → SAP) ### SOF - Shipping Order Fulfilled | Champ | Description | |-------|-------------| | Direction | WMS → ERP | | Déclencheur | Automatiquement (commande préparée à 100%) ou manuellement (clic opérateur). Envoi multiple possible en cas d'expédition partielle | | Statut | 🟡 Phase 2 possible. Démarrage possible sans SOF, activation ultérieure. Utile potentiellement pour déclencher la création de HU dans MII | | Contenu clé | SorCode, Status (Closed/Cancelled), LneContCode (HU), LneItemCode, ShippedQuantity, attributs logistiques | **Statuts SOF** : - **Closed** = stock réellement expédié, supprimé du WMS - **Cancelled** = commande annulée, ShippedQuantity = 0 sur les lignes non expédiées ### LOF - Load Order Fulfilled | Champ | Description | |-------|-------------| | Direction | WMS → ERP | | Déclencheur | Chargement camion terminé | | Contenu | État des lieux du chargement réel. Ne contient **que les HU effectivement chargées** (pas de ligne à 0 ni d'alerte pour les non chargées). Peut regrouper plusieurs SOR/commandes | **Articulation LOF / SOF** : | Message | Contenu | Granularité | |---------|---------|-------------| | SOF | Ce qui a été expédié par commande | Par ordre de sortie | | LOF | HU réellement chargées dans un camion | Par chargement | **Structure des conteneurs dans le LOF** : arborescence imbriquée : Palette support (IsSlave=TRUE) → Palette fille (IsSlave=FALSE) → Lignes de stock avec attributs logistiques. Cas des supports remontés M2I : Palette US (IsSlave=TRUE) → Séparateur 1 → Séparateur 2. ### [CUSTOM] PCK - Passage Conteneur Client | Champ | Description | |-------|-------------| | Direction | WMS → ERP | | Déclencheur | Stock préparé - passage en conteneur client EasyWMS | | Contenu | Information passage conteneur client | | Envoyé pour | Commande client, consommation OF hors recert, messagerie carton | ### ~~[CUSTOM] MOV - Movement~~ ANNULÉ > **ANNULÉ** - décision réunion client, jugé inutile. | Champ | Description | |-------|-------------| | Direction | WMS → ERP | | Déclencheur | ~~Déplacement de stock entre palettes (picking, regroupement)~~ | | Contenu | ~~Palette d'origine, palette de destination, nouvelle palette (Oui/Non), quantité + caractéristiques~~ | ## Communication ERP : LOC - Détails ### Principe retenu Un fichier JSON unique envoyé **toutes les 5 minutes** contenant toutes les palettes ayant eu un mouvement, les palettes nouvellement créées, et les palettes supprimées. ### Structure du message Chaque palette inclut : - **Flag de type** : Mouvement / Création / Suppression - **Nouvelle position** (zone de stockage) - **Quantité** actuelle - **Code** de la palette - **Client flag** true / false Le delta de 5 minutes se base sur le **dernier mouvement** pour détecter les mouvements (et non une autre date). > **Usage outbound** : le passage en conteneur client est visible dans le > LOC (client flag = true), ce qui remplace le besoin d'un message dédié > à chaque passage. ## Synthèse des communications ERP outbound | Événement | Mode de communication | |-----------|----------------------| | Passage en conteneur client | LOC (toutes les 5 min) | | ~~Déplacement stock picking~~ | ~~MOV~~ **ANNULÉ** | | Clôture ordre de sortie | SOF | | Chargement camion terminé | LOF | | Réception palette re-certifiée | ASN (depuis MII) | ## Diagramme de séquence - Expédition client complète ```mermaid sequenceDiagram participant SAP participant WMS as EasyWMS participant PK as Poste travail participant GAL as Galileo participant QUAI as Quai/Poumon SAP->>WMS: RUT (image camion + SOR) WMS->>WMS: Libération auto (date atteinte) WMS->>WMS: Assignation stock Note over WMS: Palettes complètes → défrag Note over WMS: Palettes picking → attente poste WMS->>PK: Assignation poste + palettes picking PK->>WMS: Picking terminé Note over WMS: LOC toutes les 5 min (client flag) WMS->>GAL: Tâches défrag → zone client WMS->>WMS: Assignation poumon WMS->>GAL: Tâches sortie + CstData étiqueteuse GAL->>QUAI: Palettes déposées (ordre STOP) QUAI->>WMS: Scan étiquette (chargement) WMS->>SAP: SOF (OS clôturé) WMS->>SAP: LOF (camion chargé) ``` ## Diagramme de séquence - Consommation OF avec recertification ```mermaid sequenceDiagram participant SAP participant WMS as EasyWMS participant PK as Poste travail SAP->>WMS: SOR (type Recert) WMS->>WMS: Libération + assignation WMS->>PK: Palette au poste PK->>WMS: HU supprimée WMS->>SAP: SOF Note over SAP: Nouvelle HU créée hors WMS SAP->>WMS: ASN (nouvelle palette) WMS->>WMS: Réception + stockage ``` ## Tableau récapitulatif des messages | Message | Direction | Standard/Custom | Processus | Statut | |---------|-----------|-----------------|-----------|--------| | RUT | ERP → WMS | Standard | Expédition client, messagerie | ✅ Actif | | SOR | ERP → WMS | Standard | Consommation OF, recert | ✅ Actif | | SOF | WMS → ERP | Standard | Tous (clôture OS) | 🟡 Phase 2 | | LOF | WMS → ERP | Standard | Chargement terminé | ✅ Actif | | LOC | WMS → ERP | [CUSTOM] | Toutes les 5 min (mouvements, créations, suppressions) | ✅ Actif | | PCK | WMS → ERP | [CUSTOM] | Client, OF hors recert, messagerie | ⚠️ **REMPLACÉ** par LOC | | MOV | WMS → ERP | [CUSTOM] | ~~Picking, regroupement~~ | ⚠️ **ANNULÉ** | ## Points d'attention ⚠️ Le message MOV est **ANNULÉ** (décision réunion client - jugé inutile). ⚠️ Le SOF est automatique quand tous les conteneurs sont chargés. En cas d'expédition partielle, la clôture (et le SOF) est manuelle. Les lignes sans quantité expédiée n'apparaissent pas dans le SOF. ⚠️ **Adresse de livraison (LIM-117)** : non exposée dans la liste de SOR d'un RUT ; transmise par SAP dans le `CustomAttribute` de chaque SOR et mappée sur l'OS par un post-subscription WMS à développer. ⚠️ Pour la recertification, le SOF est envoyé **avant** la réception de la nouvelle HU (séquence SOF → ASN). ⚠️ Le LOC est envoyé toutes les 5 minutes avec un delta basé sur le dernier mouvement. Le passage en conteneur client y est visible via le flag « client ». ## Historique des modifications | Date | Auteur | Modification | |------|--------|--------------| | 2026-05-05 | Arthur | Création initiale depuis AF V1.5 | | 2026-05-05 | Arthur | MOV annulé, LOC détaillé (5 min, delta, structure), synthèse communications | | 2026-05-06 | Arthur | Enrichissement SOF (phase 2, statuts, contenu), LOF (structure conteneurs, articulation SOF/LOF), PCK remplacé par LOC - depuis CR consolidé | | 2026-07-20 | Arthur | Ajout LIM-117 (LOT 2.1, lecture directe, Ouvert) : section « Adresse de livraison des SOR de tournée » (`CustomAttribute` Attribute1-7 des SOR du RUT, post-subscription WMS de mapping vers l'OS à développer) ; point d'attention ; front matter jira_refs/sources/tags/last_updated | ## Références | Source | Type | Date | |--------|------|------| | FR-SW-04-07_LIMAGRAIN_Functional_Analysis_V1.5 | Analyse fonctionnelle | 28/11/2025 | | Expédition - LIMAGRAIN - DEV - Confluence | Page ateliers DEV | 2026 | | CR CONSOLIDES REU ERP LIMAGRAIN V1 | CR ateliers interfaçage | 23/02/2026 | | [LIM-117](https://easywmsfrance.atlassian.net/browse/LIM-117) | Ticket Jira (LOT 2.1, mapping adresse SOR de tournée, Ouvert) | 2026-07 |