lint(limagrain): corrections completes Phase 1+2
- Bloquants: mermaid 03-picking/_index reconstitue (archive 11-05), 13 liens vers pages squelette retires, 2 liens recibles (anoxie, application-dictionary) - Conventions: 910 em dashes -> tirets simples, 145 checklists -> puces question, 13 questions resolues barrees - Liens: 9 ancres reparees (slugs GitHub) - Delta: 12 standard_ref remappes, blocs Standard EasyWMS + sections References ajoutes, front matter complete - Glossaire: 15 termes standard deplaces en section rappel avec renvoi - Rapport: limagrain/_lint_report.md (Phase 1 + Phase 2 + re-scan final) - Inclut les pages des sessions precedentes non commitees + CLAUDE.md et consume.log en l'etat
This commit is contained in:
@@ -1,11 +1,11 @@
|
||||
---
|
||||
title: "Outbound — Vue d'ensemble"
|
||||
title: "Outbound - Vue d'ensemble"
|
||||
tags: [outbound, expédition, shipping, index]
|
||||
status: draft
|
||||
last_updated: 2026-05-05
|
||||
---
|
||||
|
||||
# Outbound — Vue d'ensemble
|
||||
# Outbound - Vue d'ensemble
|
||||
|
||||
> **Périmètre** : flux SOR → RUT → SOF → LOF, consolidation, chargement,
|
||||
> messages ERP outbound.
|
||||
@@ -18,6 +18,7 @@ last_updated: 2026-05-05
|
||||
- [Flux expédition](flux-expedition.md)
|
||||
- [Shipping Orders](shipping-orders.md)
|
||||
- [Séquençage shipping par STOP](sequencage-shipping-stop.md)
|
||||
- [Assignation automatique de l'image de quai](assignation-image-quai.md)
|
||||
- [Consolidation et chargement](consolidation-chargement.md)
|
||||
- [Flux ERP outbound](flux-erp-outbound.md)
|
||||
|
||||
@@ -44,4 +45,4 @@ flowchart LR
|
||||
| Commande client | RUT « Client » | Oui (partiel) | Poumon → camion |
|
||||
| Conso OF hors recert | SOR « Production » | Non | Poumon → production |
|
||||
| Conso OF avec recert | SOR « Recert » | Passage poste | Restockage |
|
||||
| Messagerie carton | RUT « Messagerie » | Oui | Emplacement sol |
|
||||
| Messagerie carton | RUT « Messagerie » | Oui | Emplacement sol |
|
||||
|
||||
@@ -0,0 +1,207 @@
|
||||
---
|
||||
title: "Assignation automatique de l'image de quai (OS/Tournée)"
|
||||
tags: [outbound, expédition, image-quai, stage, job, assignation, AGV]
|
||||
status: review
|
||||
standard_ref: concepts/shipping.md
|
||||
jira_refs: [LIM-94, LIM-88]
|
||||
confluence_refs: ["Expédition - LIMAGRAIN - DEV"]
|
||||
sources: ["Jira LIM-94 (lecture directe, 7 commentaires, revue de code)"]
|
||||
last_updated: 2026-07-17
|
||||
author: Arthur
|
||||
---
|
||||
|
||||
# Assignation automatique de l'image de quai (OS/Tournée)
|
||||
|
||||
> **Résumé** : job périodique qui assigne automatiquement une image de
|
||||
> quai (poumon d'expédition) aux ordres de sortie (OS) et tournées (RUT)
|
||||
> éligibles, via un « faux » stage `X_EXP`. Automatise ce qui était une
|
||||
> assignation manuelle et fournit le stage dont dépend le séquençage
|
||||
> shipping (LIM-88).
|
||||
|
||||
> **Standard EasyWMS** : → voir [Shipping](../../concepts/shipping.md)
|
||||
> Ce qui suit documente les **spécificités Limagrain** par rapport au
|
||||
> standard.
|
||||
|
||||
## Contexte projet
|
||||
|
||||
Par défaut, l'assignation quai + image de quai pour l'expédition est
|
||||
**manuelle** (voir
|
||||
[Quais, poumons et chargement](consolidation-chargement.md)). LIM-94
|
||||
automatise l'assignation de l'**image de quai** aux OS et tournées.
|
||||
|
||||
Ce job est **en amont** du
|
||||
[séquençage shipping par STOP (LIM-88)](sequencage-shipping-stop.md) :
|
||||
le garde-fou `Outbound_CreateShippingOrLoadTasksToDockOrStage_PR` de
|
||||
LIM-88 refuse de créer une tâche de chargement tant qu'aucun stage
|
||||
(image de quai) n'est associé à l'OS. LIM-94 fournit cette association.
|
||||
|
||||
## Stages virtuels `X_EXP`
|
||||
|
||||
Un OS ou une Route ne peut être assigné qu'à un **« faux » stage** nommé
|
||||
`X_EXP`, où `X` = code de l'image de quai (`A_EXP` pour l'image de quai
|
||||
A). Ce sont les **seuls stages assignables** à un OS/Route.
|
||||
|
||||
- **Layout** : ajout des stages `A_EXP`, `B_EXP`, ... avec une
|
||||
**capacité de 26** mais **un seul emplacement**
|
||||
- **Pourquoi un stage virtuel à 1 emplacement ?** L'assignation doit
|
||||
porter sur un **emplacement** et non une station. Sans ce stage
|
||||
virtuel, il faudrait choisir une position précise (1 parmi 26) de
|
||||
l'image de quai
|
||||
- **Identification de l'image de quai associée à un stage** : c'est la
|
||||
**seule image de quai ayant une route vers ce stage** (ex : la seule
|
||||
route vers `A_EXP` part de l'image de quai A)
|
||||
|
||||
## Job `CST_AssignDockStage`
|
||||
|
||||
Job `CST_AssignDockStage` → WF `CST_Job_AssignStage`, exécuté **toutes
|
||||
les 30 secondes**.
|
||||
|
||||
Le job récupère les Routes et les OS (OS **hors route**, en excluant les
|
||||
OS de classe **Recertification**) et tente d'assigner une image de quai :
|
||||
|
||||
1. Vérifie via `CST_GetOutboundOrderAndRoutes_ToAssignStage` s'il existe
|
||||
des ordres à assigner
|
||||
2. Si oui, cherche les stages disponibles via
|
||||
`CST_DockStage_GetAvailableStageToAssign`
|
||||
3. Boucle simple : assigne les ordres un par un jusqu'à épuisement des
|
||||
ordres ou des stages disponibles
|
||||
4. La commande d'assignation diffère selon le type (Route ou OS)
|
||||
|
||||
**Priorisation** : par **priorité**, puis par **date de libération**.
|
||||
|
||||
### Conditions d'éligibilité de l'OS / Route
|
||||
|
||||
- **Libéré**
|
||||
- **Toutes les palettes de picking sont revenues dans le TK** (même
|
||||
principe que la tâche d'ordonnancement TK)
|
||||
- Date actuelle à **H-3 de la date d'expédition prévue**
|
||||
|
||||
> La query contrôle en pratique : OS Released, non déjà assigné à un
|
||||
> stage, date d'expédition prévue < 3 h, picking terminé (aucun
|
||||
> conteneur picking + tous les conteneurs client en APS). Correction
|
||||
> revue de code (05/06) : utiliser la **date d'expédition prévue** (et
|
||||
> non la date de chargement prévue) pour les OS.
|
||||
|
||||
### Conditions d'assignabilité du stage
|
||||
|
||||
Un stage n'est assignable pour expédition que si le **stage virtuel**
|
||||
`X_EXP` **et** l'**image de quai physique** associée sont libres.
|
||||
|
||||
**Stage virtuel `X_EXP`** :
|
||||
|
||||
- Non verrouillé
|
||||
- Aucune tâche vers lui
|
||||
- Aucun conteneur dessus
|
||||
- Aucun autre OS, Route **ou réception** assigné
|
||||
|
||||
**Image de quai physique** (identifiée par la route qui va vers le
|
||||
stage virtuel) :
|
||||
|
||||
- Non verrouillée
|
||||
- Aucun conteneur dessus
|
||||
- Aucune tâche vers elle
|
||||
|
||||
Ces contrôles sont portés par la query
|
||||
`CST_DockStage_GetAvailableStageToAssign`.
|
||||
|
||||
## Génération des mouvements (PS → image de quai)
|
||||
|
||||
Le placement final vers l'image de quai est calculé au **poste de sortie
|
||||
(PS)**, pas à l'assignation du stage. Quand un conteneur arrive au PS, le
|
||||
WF `Container_MovedEventHandler_PS_PR` :
|
||||
|
||||
1. Récupère l'image de quai correspondant au stage assigné (la seule
|
||||
image de quai ayant une route vers ce stage)
|
||||
2. Change la destination de la tâche vers le **premier emplacement libre
|
||||
calculé** de l'image de quai : l'emplacement avec le **X le plus
|
||||
grand** n'ayant ni conteneur ni conteneur en mouvement
|
||||
|
||||
> Ce calcul « X le plus grand d'abord » rejoint le sens de dépose décrit
|
||||
> dans [Quais, poumons et chargement](consolidation-chargement.md)
|
||||
> (décharger en commençant par l'emplacement le plus éloigné du quai) et
|
||||
> limite le problème de dépose AGV sur emplacements serrés.
|
||||
|
||||
## Désassignation à l'arrêt de l'OS / Route
|
||||
|
||||
Quand un OS (ou une Route) ayant une image de quai associée est
|
||||
**stoppé** (repasse au statut « En attente »), l'association est
|
||||
**supprimée**.
|
||||
|
||||
**Pourquoi ?** Sans cela, l'association peut devenir caduque : ex. image
|
||||
B choisie, puis 2 jours plus tard, après re-libération, l'image B est
|
||||
entre-temps réservée par une réception, ce qui pose problème.
|
||||
|
||||
- WF `CST_OutboundOrderUnassignStage_PR` : désassigne le stage de l'OS
|
||||
s'il y en a un **et** que l'OS n'est pas inclus dans une route
|
||||
- WF `CST_RouteUnassignStage_PR` : désassigne le stage de la route
|
||||
- Souscription async `CST_OutboundOrderStopped_UnassignStage` sur
|
||||
l'événement `OutboundOrderSetStoppingOperationEvent`
|
||||
- Souscription async `CST_RouteStopped_UnassignStage` sur l'événement
|
||||
`RouteStoppedEvent`
|
||||
|
||||
> Correction revue de code (05/06) : ces WF vérifient l'**image de quai**
|
||||
> et non le quai de chargement.
|
||||
|
||||
## Assignation manuelle (VAssist)
|
||||
|
||||
L'assignation manuelle reste possible : les vues
|
||||
`VAssistOutboundOrderAssignDock` et `VAssistRouteAssignDock` sont
|
||||
restreintes pour n'afficher que les `DockStage` disponibles, selon les
|
||||
**mêmes critères** que `CST_DockStage_GetAvailableStageToAssign`.
|
||||
|
||||
## [CUSTOM] Éléments techniques (revue de code)
|
||||
|
||||
> **Statut** : LIM-94 « En cours de test client (préprod) ». Revue de
|
||||
> code réalisée (Maxime Halgand, Vincent Charvet).
|
||||
|
||||
| Élément | Type | Rôle |
|
||||
|---|---|---|
|
||||
| Stages `A_EXP`, `B_EXP`, ... | Layout | Stage virtuel par image de quai (capacité 26, 1 emplacement) |
|
||||
| `CST_DockStage_GetAvailableStageToAssign` | Query | Liste des stages virtuels assignables (contrôle virtuel + image de quai physique) |
|
||||
| `CST_GetOutboundOrderAndRoutes_ToAssignStage` | Query | Liste unifiée (Id + Description) des OS et Routes éligibles, pour un tri indépendant du type ; exclut la classe Recertification |
|
||||
| `CST_Job_AssignStage` | WF | Boucle d'assignation, appelée toutes les 30 s |
|
||||
| `CST_AssignDockStage` | Job | Appelle `CST_Job_AssignStage` toutes les 30 s |
|
||||
| `Container_MovedEventHandler_PS_PR` | WF | Fin d'ordre au PS : redirige la tâche vers le 1er emplacement libre (X max) de l'image de quai du stage |
|
||||
| `CST_OutboundOrderUnassignStage_PR` | WF | Désassigne le stage d'un OS stoppé (hors route) |
|
||||
| `CST_RouteUnassignStage_PR` | WF | Désassigne le stage d'une route stoppée |
|
||||
| `CST_OutboundOrderStopped_UnassignStage` | Souscription | Async sur `OutboundOrderSetStoppingOperationEvent` |
|
||||
| `CST_RouteStopped_UnassignStage` | Souscription | Async sur `RouteStoppedEvent` |
|
||||
| `VAssistOutboundOrderAssignDock` / `VAssistRouteAssignDock` | Vue | Assignation manuelle restreinte aux stages disponibles |
|
||||
|
||||
Commits : `f0536cce0c` (stages virtuels + redirection PS + vues),
|
||||
`e3889b8003` (fix quai désassigné au passage du job + optim query),
|
||||
`5de1618104` (désassignation à l'arrêt OS/Route).
|
||||
|
||||
## Points d'attention
|
||||
|
||||
⚠️ Le garde-fou LIM-88
|
||||
(`Outbound_CreateShippingOrLoadTasksToDockOrStage_PR`) dépend de
|
||||
l'association de stage posée ici : sans stage assigné, pas de tâche de
|
||||
chargement, les palettes bloquent aux PS.
|
||||
|
||||
⚠️ La désassignation à l'arrêt évite les réservations caduques d'image
|
||||
de quai (conflit possible avec une réception qui réserverait entre-temps
|
||||
la même image).
|
||||
|
||||
## Questions ouvertes
|
||||
|
||||
- Condition « l'image de quai n'a aucune réception assignée » : marquée
|
||||
**TBD** dans la description initiale. La query intègre bien un contrôle
|
||||
« aucune réception assignée » sur le stage virtuel ; confirmer le
|
||||
périmètre exact (@Justine)
|
||||
→ voir [Questions ouvertes](../08-transverse/questions-ouvertes.md)
|
||||
|
||||
## Historique des modifications
|
||||
|
||||
| Date | Auteur | Modification |
|
||||
|------|--------|--------------|
|
||||
| 2026-07-17 | Arthur | Création depuis LIM-94 (lecture directe + revue de code) : stages virtuels `X_EXP`, job `CST_AssignDockStage`/`CST_Job_AssignStage` (30 s), conditions d'éligibilité OS/Route et d'assignabilité stage, redirection PS `Container_MovedEventHandler_PS_PR` (X max), désassignation à l'arrêt (WF + souscriptions), VAssist restreintes, éléments techniques + commits |
|
||||
|
||||
## Références
|
||||
|
||||
| Source | Type | Date |
|
||||
|--------|------|------|
|
||||
| [LIM-94](https://easywmsfrance.atlassian.net/browse/LIM-94) | Ticket Jira (statut préprod / test client) | 2026-07-17 |
|
||||
| [LIM-88](https://easywmsfrance.atlassian.net/browse/LIM-88) | Ticket Jira (séquençage shipping, dépend du stage) | 2026 |
|
||||
| Revue de code LIM-94 (M. Halgand, V. Charvet) | Commits `f0536cce0c` / `e3889b8003` / `5de1618104` | 2026-05/06 |
|
||||
| Expédition - LIMAGRAIN - DEV | Page Confluence | 2026 |
|
||||
@@ -3,10 +3,10 @@ title: "Quais, poumons et chargement"
|
||||
tags: [outbound, quais, poumons, chargement, AGV, étiqueteuse]
|
||||
status: draft
|
||||
standard_ref: concepts/shipping.md
|
||||
jira_refs: []
|
||||
jira_refs: [LIM-94]
|
||||
confluence_refs: ["Expédition - LIMAGRAIN - DEV"]
|
||||
sources: [FR-SW-04-07_LIMAGRAIN_Functional_Analysis_V1.5.docx, "Expédition - LIMAGRAIN - DEV - Confluence.md"]
|
||||
last_updated: 2026-05-05
|
||||
last_updated: 2026-07-17
|
||||
author: Arthur
|
||||
---
|
||||
|
||||
@@ -39,7 +39,7 @@ Modes de fonctionnement configurables par quai :
|
||||
Chaque poumon est composé de **26 emplacements palettes au sol**, répartis en
|
||||
2 colonnes de 13 emplacements numérotés.
|
||||
|
||||
Toutes les combinaisons quai/poumon sont possibles — aucune restriction.
|
||||
Toutes les combinaisons quai/poumon sont possibles - aucune restriction.
|
||||
La cohérence des assignations est de la responsabilité de Limagrain.
|
||||
|
||||
### [CUSTOM] Quai fictif « Parking »
|
||||
@@ -79,6 +79,11 @@ poumon pour lancer la livraison.
|
||||
**Dès qu'un poumon est assigné** : les tâches de mouvement vers ce poumon
|
||||
sont générées, **même si aucun quai n'est encore assigné**.
|
||||
|
||||
> [CUSTOM] Depuis LIM-94, l'assignation de l'**image de quai** aux OS et
|
||||
> tournées peut être **automatique** (job périodique via un stage virtuel
|
||||
> `X_EXP`), en plus de l'assignation manuelle. Voir
|
||||
> [Assignation automatique de l'image de quai](assignation-image-quai.md).
|
||||
|
||||
**Libération** :
|
||||
|
||||
- Image de quai : **automatique** à la dernière palette chargée
|
||||
@@ -113,18 +118,18 @@ respectés par les caristes pour les prises/déposes AGV.
|
||||
| Quai bloqué | Plus assignable → assigner un autre quai manuellement |
|
||||
| Poumon bloqué | Plus assignable → assigner un autre poumon. Palettes déjà présentes traitées normalement, les suivantes réorientées |
|
||||
|
||||
### Cas particulier — Messagerie carton
|
||||
### Cas particulier - Messagerie carton
|
||||
|
||||
- Pas d'image de quai assignée
|
||||
- **Emplacement au sol dédié** par transporteur (ex: « Colissimo »,
|
||||
« Chronopost ») — ne pas utiliser d'image de quai classique pour ne
|
||||
« Chronopost ») - ne pas utiliser d'image de quai classique pour ne
|
||||
pas perdre 25 places
|
||||
- [CUSTOM] À l'import du SOR, vérification combo shipping class code +
|
||||
transporteur → poumon associé automatiquement
|
||||
|
||||
## Points d'attention
|
||||
|
||||
⚠️ Le process de messagerie carton n'utilise pas d'image de quai — un
|
||||
⚠️ Le process de messagerie carton n'utilise pas d'image de quai - un
|
||||
emplacement au sol spécifique est réservé (à définir).
|
||||
|
||||
⚠️ Possibilité de modifier quai/image de quai a posteriori manuellement
|
||||
@@ -143,10 +148,15 @@ emplacements serrés).
|
||||
laisser l'AGV (iGO/Still) choisir l'emplacement disponible le plus
|
||||
proche, puis remonter l'emplacement exact au WMS
|
||||
2. OU imposer à Still de **respecter l'ordre des STOP** tel que sorti par
|
||||
le WMS — c'est Still qui est responsable de l'ordonnancement
|
||||
le WMS - c'est Still qui est responsable de l'ordonnancement
|
||||
|
||||
> ⚠️ À valider avec Still lors d'une réunion technique dédiée.
|
||||
|
||||
> [CUSTOM] LIM-94 atténue ce problème côté WMS : le placement final est
|
||||
> calculé au PS (`Container_MovedEventHandler_PS_PR`) vers le premier
|
||||
> emplacement libre à **X le plus grand** de l'image de quai. Voir
|
||||
> [Assignation automatique de l'image de quai](assignation-image-quai.md).
|
||||
|
||||
## Confirmation prise/dépose AGV
|
||||
|
||||
Quand l'AGV prend une palette (sortie TK, sortie buffer, sortie PK), il
|
||||
@@ -157,7 +167,7 @@ doit **informer le WMS** que la palette est sur l'AGV (emplacement =
|
||||
incorrecte (occupée informatiquement alors que physiquement vide), ce qui
|
||||
bloque les flux suivants.
|
||||
|
||||
Confirmation de dépose (fin de mission) déjà prévue par Still — il faut
|
||||
Confirmation de dépose (fin de mission) déjà prévue par Still - il faut
|
||||
aussi le **début de mission** (prise palette).
|
||||
|
||||
Les AGV déposent les palettes sur le poumon en respectant l'**ordre des
|
||||
@@ -165,8 +175,8 @@ arrêts (STOP)** pour la livraison.
|
||||
|
||||
## Questions ouvertes
|
||||
|
||||
- [ ] Emplacement au sol exact par transporteur pour messagerie carton (@Théo)
|
||||
- [ ] Validation réunion technique Still pour le problème dépose AGV
|
||||
- ❓ Emplacement au sol exact par transporteur pour messagerie carton (@Théo)
|
||||
- ❓ Validation réunion technique Still pour le problème dépose AGV
|
||||
sur image de quai (@Théo)
|
||||
|
||||
## Historique des modifications
|
||||
@@ -175,6 +185,7 @@ arrêts (STOP)** pour la livraison.
|
||||
|------|--------|--------------|
|
||||
| 2026-05-05 | Arthur | Création initiale depuis AF V1.5 |
|
||||
| 2026-05-05 | Arthur | QUAI_TEMPORAIRE, messagerie carton, problème dépose AGV, confirmation prise/dépose |
|
||||
| 2026-07-17 | Arthur | Renvois vers la nouvelle page LIM-94 (assignation auto image de quai via stage `X_EXP` ; placement PS X max) dans « Règles d'assignation » et « Problème de dépose AGV » ; front matter jira_refs/last_updated |
|
||||
|
||||
## Références
|
||||
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
---
|
||||
title: "Flux ERP outbound — Messages expédition"
|
||||
tags: [outbound, ERP, SOR, RUT, SOF, LOF, PCK, MOV, interface]
|
||||
title: "Flux ERP outbound - Messages expédition"
|
||||
tags: [outbound, ERP, SOR, RUT, SOF, LOF, PCK, MOV, interface, adresse, tournee]
|
||||
status: draft
|
||||
standard_ref: architecture/erp-integration.md
|
||||
jira_refs: []
|
||||
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"]
|
||||
last_updated: 2026-05-06
|
||||
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
|
||||
# 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.
|
||||
@@ -26,7 +26,7 @@ Pour les messages de réception, voir
|
||||
|
||||
## Messages entrants (SAP → EasyWMS)
|
||||
|
||||
### RUT — Route
|
||||
### RUT - Route
|
||||
|
||||
| Champ | Description |
|
||||
|-------|-------------|
|
||||
@@ -35,7 +35,7 @@ Pour les messages de réception, voir
|
||||
| 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
|
||||
### SOR - Shipping Order Request
|
||||
|
||||
| Champ | Description |
|
||||
|-------|-------------|
|
||||
@@ -44,9 +44,35 @@ Pour les messages de réception, voir
|
||||
| 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
|
||||
### SOF - Shipping Order Fulfilled
|
||||
|
||||
| Champ | Description |
|
||||
|-------|-------------|
|
||||
@@ -61,7 +87,7 @@ Pour les messages de réception, voir
|
||||
- **Cancelled** = commande annulée, ShippedQuantity = 0 sur les lignes non
|
||||
expédiées
|
||||
|
||||
### LOF — Load Order Fulfilled
|
||||
### LOF - Load Order Fulfilled
|
||||
|
||||
| Champ | Description |
|
||||
|-------|-------------|
|
||||
@@ -81,18 +107,18 @@ 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
|
||||
### [CUSTOM] PCK - Passage Conteneur Client
|
||||
|
||||
| Champ | Description |
|
||||
|-------|-------------|
|
||||
| Direction | WMS → ERP |
|
||||
| Déclencheur | Stock préparé — passage en conteneur client EasyWMS |
|
||||
| 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É
|
||||
### ~~[CUSTOM] MOV - Movement~~ ANNULÉ
|
||||
|
||||
> **ANNULÉ** — décision réunion client, jugé inutile.
|
||||
> **ANNULÉ** - décision réunion client, jugé inutile.
|
||||
|
||||
| Champ | Description |
|
||||
|-------|-------------|
|
||||
@@ -100,7 +126,7 @@ Palette US (IsSlave=TRUE) → Séparateur 1 → Séparateur 2.
|
||||
| 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
|
||||
## Communication ERP : LOC - Détails
|
||||
|
||||
### Principe retenu
|
||||
|
||||
@@ -135,7 +161,7 @@ les mouvements (et non une autre date).
|
||||
| Chargement camion terminé | LOF |
|
||||
| Réception palette re-certifiée | ASN (depuis MII) |
|
||||
|
||||
## Diagramme de séquence — Expédition client complète
|
||||
## Diagramme de séquence - Expédition client complète
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
@@ -164,7 +190,7 @@ sequenceDiagram
|
||||
WMS->>SAP: LOF (camion chargé)
|
||||
```
|
||||
|
||||
## Diagramme de séquence — Consommation OF avec recertification
|
||||
## Diagramme de séquence - Consommation OF avec recertification
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
@@ -196,12 +222,16 @@ sequenceDiagram
|
||||
|
||||
## Points d'attention
|
||||
|
||||
⚠️ Le message MOV est **ANNULÉ** (décision réunion client — jugé inutile).
|
||||
⚠️ 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).
|
||||
|
||||
@@ -215,7 +245,8 @@ le flag « client ».
|
||||
|------|--------|--------------|
|
||||
| 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-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
|
||||
|
||||
@@ -224,3 +255,4 @@ le flag « client ».
|
||||
| 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 |
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
---
|
||||
title: "Flux expédition — Processus complet"
|
||||
title: "Flux expédition - Processus complet"
|
||||
tags: [outbound, expédition, défragmentation, étiquetage, chargement, recertification, messagerie, litiges, AGV]
|
||||
status: draft
|
||||
standard_ref: concepts/shipping.md
|
||||
jira_refs: []
|
||||
jira_refs: [LIM-105, LIM-107, LIM-111]
|
||||
confluence_refs: ["Expédition - LIMAGRAIN - DEV"]
|
||||
sources: [FR-SW-04-07_LIMAGRAIN_Functional_Analysis_V1.5.docx, "Expédition - LIMAGRAIN - DEV - Confluence.md"]
|
||||
last_updated: 2026-05-13
|
||||
sources: [FR-SW-04-07_LIMAGRAIN_Functional_Analysis_V1.5.docx, "Expédition - LIMAGRAIN - DEV - Confluence.md", "Jira LIM-105 (lecture directe 2026-07-20)", "Jira LIM-107 (lecture directe 2026-07-20)", "Jira LIM-111 (lecture directe 2026-07-20)"]
|
||||
last_updated: 2026-07-20
|
||||
author: Arthur
|
||||
---
|
||||
|
||||
# Flux expédition — Processus complet
|
||||
# Flux expédition - Processus complet
|
||||
|
||||
> **Résumé** : processus d'expédition de bout en bout en 12 étapes, de la
|
||||
> réception de l'OS jusqu'à la libération du quai, incluant les flux
|
||||
@@ -63,7 +63,7 @@ ordonnancés par n° de STOP). Voir [Ordres de sortie](shipping-orders.md).
|
||||
|
||||
### 3. Assignation du stock
|
||||
|
||||
Voir [Ordres de sortie — Assignation](shipping-orders.md#assignation-de-stock)
|
||||
Voir [Ordres de sortie - Assignation](shipping-orders.md#assignation-de-stock)
|
||||
pour les stratégies détaillées (FIFO 24h, économie de mouvement, pas de
|
||||
FEFO, max palettes complètes).
|
||||
|
||||
@@ -71,12 +71,12 @@ FEFO, max palettes complètes).
|
||||
|
||||
| Type de palette | Action |
|
||||
|-----------------|--------|
|
||||
| Palettes complètes / picking terminées | [CUSTOM] Tâche de défragmentation (reloc) vers zone d'expédition ASRS. Ne se déclenche que si **toutes** les palettes clientes sont « terminées » et qu'aucun quai n'est associé à l'OS. Voir [Défragmentation custom](../02-stockage/defragmentation.md#custom-défrag-client-par-tournée--quai-non-assigné-lim-87). |
|
||||
| Palettes complètes / picking terminées | [CUSTOM] Tâche de défragmentation (reloc) vers zone d'expédition ASRS. Ne se déclenche que si **toutes** les palettes clientes sont « terminées » et qu'aucun quai n'est associé à l'OS. Voir [Défragmentation custom](../02-stockage/defragmentation.md#custom-défrag-client-par-tournée---quai-non-assigné-lim-87). |
|
||||
| Palettes picking | Aucune tâche tant qu'un poste de travail n'est pas assigné |
|
||||
|
||||
> **Règle générale** : on n'envoie aucune palette sur l'image de quai tant
|
||||
> que le picking n'est pas terminé (et que les palettes sont revenues à
|
||||
> l'ASRS) — sauf si le stop précédent est fini.
|
||||
> l'ASRS) - sauf si le stop précédent est fini.
|
||||
>
|
||||
> **Deux customs complémentaires** gèrent l'ordonnancement par STOP :
|
||||
> quai non assigné → [Défragmentation custom](../02-stockage/defragmentation.md),
|
||||
@@ -126,7 +126,7 @@ workflow `StackerCrane_SortTasks_PR`.
|
||||
| Règle | Détail |
|
||||
|-------|--------|
|
||||
| Picking négatif | **Deux conditions cumulatives** (réu. 11/05/2026) : seuil fiche article (défaut **55%**, pas 50%) ET poids unitaire sac **≥ 7 kg**. Si l'une des deux n'est pas remplie → picking direct classique. Voir [Picking combinatoire](../03-picking/picking-combinatoire.md#custom-règle-du-picking-négatif). |
|
||||
| ~~Traitement commercial~~ | ~~Articles avec/sans traitement sur palettes filles séparées~~ — **SUPPRIMÉ** (réu. 11/05/2026, `CONTROLE_TRAITEMENT_COMMERCIAL = false`). L'entrepôt ne fait pas de bio. |
|
||||
| ~~Traitement commercial~~ | ~~Articles avec/sans traitement sur palettes filles séparées~~ - **SUPPRIMÉ** (réu. 11/05/2026, `CONTROLE_TRAITEMENT_COMMERCIAL = false`). L'entrepôt ne fait pas de bio. |
|
||||
| Verrou « HORS TOLERANCE » | Si présent → recomptage avant picking. Si stock restant suffisant après inventaire → assignation maintenue. Sinon → réassignation ailleurs + retrait verrou. |
|
||||
|
||||
#### Algorithme de répartition des palettes sur les TP
|
||||
@@ -135,7 +135,7 @@ workflow `StackerCrane_SortTasks_PR`.
|
||||
enchaînements, ordonnancement par espèce, terminer une palette pleine
|
||||
avant d'en entamer une autre, cadencement des buffers, pas de mélange
|
||||
traitement commercial, contrainte opérateur (pas de déplacement de sacs
|
||||
d'une table à l'autre — sacs lourds).
|
||||
d'une table à l'autre - sacs lourds).
|
||||
|
||||
**Table du milieu** : toujours occupée soit par une palette de picking
|
||||
négatif, soit par une palette vide de dépôt. Palette vide remise
|
||||
@@ -154,12 +154,16 @@ classe de commande.
|
||||
#### Message MOV
|
||||
|
||||
~~À chaque déplacement de stock durant le picking, un message MOV est
|
||||
envoyé à SAP.~~ **ANNULÉ** — vu en réunion client, jugé inutile.
|
||||
envoyé à SAP.~~ **ANNULÉ** - vu en réunion client, jugé inutile.
|
||||
|
||||
#### Filmage
|
||||
|
||||
Avant chaque évacuation, l'opérateur choisit le programme de filmage
|
||||
(CstData transmis à Galileo). Possibilité de choisir « pas de filmage ».
|
||||
(stocké dans `CstAtt05`, transmis à Galileo). Possibilité de choisir « pas
|
||||
de filmage ». Le mécanisme de transmission (event `MovementCreated` sur
|
||||
source PIE_02 → CustomData de la tâche) est décrit dans
|
||||
[Configuration Galileo - Transmission du filmage](../02-stockage/galileo-config.md#transmission-du-programme-de-filmage-à-la-filmeuse-lim-115)
|
||||
(LIM-115).
|
||||
|
||||
**Programmes de filmage disponibles** :
|
||||
|
||||
@@ -264,47 +268,90 @@ deuxième chargement est recréé automatiquement pour le reliquat.
|
||||
|
||||
| Élément | Mode de libération |
|
||||
|---------|-------------------|
|
||||
| Image de quai | **Automatique** — dernière palette chargée |
|
||||
| Quai | **Manuel** — départ du camion |
|
||||
| Image de quai | **Automatique** - dernière palette chargée |
|
||||
| Quai | **Manuel** - départ du camion |
|
||||
|
||||
## Étiqueteuse automatique
|
||||
|
||||
> **Statut** : le **mécanisme d'intégration Galileo** est spécifié dans
|
||||
> **LIM-111** (Ouvert) ; le **contenu des rapports** relève de **LIM-107** ;
|
||||
> la **pose initiale du flag `CstAtt14` au PK** relève de **LIM-91**. Cette
|
||||
> section documente le fonctionnement au poste de sortie TK.
|
||||
|
||||
### Principe
|
||||
|
||||
Deux étiqueteuses au niveau des deux postes de sortie TK, pouvant imprimer
|
||||
une ou plusieurs étiquettes selon le processus.
|
||||
Deux étiqueteuses automatiques, **LBLM_01** et **LBLM_02** (stations de type
|
||||
**ET**), équipent les deux postes de sortie de l'ASRS, sur les convoyeurs
|
||||
allant vers les images de quai. Elles servent **uniquement** aux supports
|
||||
qui sortent de l'ASRS pour aller **directement sur une image de quai** dans
|
||||
un flux d'expédition. Elles peuvent poser une ou deux étiquettes selon le
|
||||
processus. Le WMS envoie un *print command* avec l'un des rapports (mono ou
|
||||
multiréférence) - voir
|
||||
[Étiquette support RFID](../01-inbound/etiquette-rfid.md).
|
||||
|
||||
Positionnement dans la chaîne : sortie TK (ordonnancée par n° STOP, voir
|
||||
[Séquençage shipping par STOP](sequencage-shipping-stop.md)) → table de
|
||||
sortie TK → **étiqueteuse ET** → poste de sortie PS → AGV Still → image de
|
||||
quai → chargement camion.
|
||||
|
||||
### Étiquetage au picking (étiqueteuse auto)
|
||||
|
||||
100% des palettes passant par le picking sont étiquetées (étiquette
|
||||
d'expédition) directement au PK. Un `CstAtt` est positionné à `true` sur
|
||||
la palette pour indiquer qu'elle a déjà été étiquetée.
|
||||
100% des palettes passant par le picking sont étiquetées (étiquette de
|
||||
picking HU RFID) directement au PK. Le flag `CstAtt14` est positionné à
|
||||
`true` sur la palette (LIM-91) pour indiquer qu'elle a déjà été étiquetée.
|
||||
|
||||
### Comportement à la sortie TK
|
||||
### Comportement à la sortie TK - décision d'impression (LIM-111)
|
||||
|
||||
L'étiqueteuse **n'imprime pas** si :
|
||||
Deux étiquettes **distinctes** peuvent être posées, avec des règles
|
||||
**séparées**. Le flag **`CstAtt14`** (Container, String - voir
|
||||
[AD Customs](../07-admin/ad-customs.md#cstatt-support-container--palette)) ne conditionne
|
||||
que la **2e** (étiquette de picking), pas l'étiquette d'expédition.
|
||||
|
||||
- `CstAtt` = `true` (palette déjà étiquetée au picking)
|
||||
- OU hauteur palette trop faible (PLC height type = 1)
|
||||
| Étiquette | Rapport | Condition d'impression |
|
||||
|-----------|---------|------------------------|
|
||||
| Expédition (client / production) | LIM-107 | **Toujours**, sauf palette trop basse (PLC Height Type = 1). Indépendante de `CstAtt14`. |
|
||||
| Picking (HU RFID mono/multiréférence) | LIM-68 | Uniquement si `CstAtt14` = `false`/vide **et** PLC Height Type ≠ 1. Non imprimée si `CstAtt14` = `true` (déjà étiquetée au PK) ou palette trop basse. |
|
||||
|
||||
L'étiqueteuse **imprime** si :
|
||||
**Cas d'usage de la 2e étiquette** : une palette complète sortie
|
||||
directement de l'ASRS vers l'image de quai **sans passer par un poste de
|
||||
picking** n'a pas ses étiquettes HU RFID → `CstAtt14` vide → l'étiqueteuse
|
||||
les pose (monoref ou multiref RFID selon le nombre de lignes de stock).
|
||||
|
||||
- `CstAtt` = `false` ET PLC height type ≠ 1
|
||||
- Si impression réussie → `CstAtt` passe à `true`
|
||||
- Si impression échouée → `CstAtt` passe à `error`
|
||||
**Mise à jour du flag** après passage à l'étiqueteuse :
|
||||
|
||||
### Mode dégradé — Chargement camion
|
||||
- Impression OK → `CstAtt14` passe à `true`
|
||||
- Impression échouée → `CstAtt14` passe à `error` (voir Gestion des pannes)
|
||||
|
||||
Si l'opérateur scanne une palette sans étiquette (`CstAtt` = `false` ou
|
||||
`error`, PLC height type ≠ 1) au chargement camion → impression
|
||||
automatique sur une imprimante proche du quai.
|
||||
> ⚠️ La condition « PLC Height Type ≠ 1 » sur l'étiquette d'expédition
|
||||
> reste **à vérifier** avec le fournisseur (LIM-111 §4.2).
|
||||
|
||||
### Communication Galileo
|
||||
### Mode dégradé - Chargement camion
|
||||
|
||||
On envoie un **custom data** à Galileo (pas de changement de
|
||||
destination/route). Galileo, en recevant le custom data avec le bon
|
||||
tracking de palette, arrête les rouleaux et lance l'impression. Un seul
|
||||
chemin — l'arrêt est piloté par le custom data.
|
||||
Si l'opérateur scanne une palette sans étiquette (`CstAtt14` = `false` ou
|
||||
`error`, PLC height type ≠ 1) au chargement camion → le WMS propose de
|
||||
réimprimer le rapport d'expédition (LIM-107), avec prompt du code
|
||||
imprimante. Réimpression via imprimante proche du quai (menu TRF dédié).
|
||||
|
||||
### Communication Galileo (LIM-111)
|
||||
|
||||
Pilotage **par custom data**, sans changement de destination ni de route
|
||||
(un seul chemin physique). Même principe que le filmage (CstAtt05 → custom
|
||||
data, voir LIM-91).
|
||||
|
||||
Points d'insertion :
|
||||
|
||||
- **Subscription sur l'event `MovementCreated`** : si la destination est
|
||||
une étiqueteuse (`LBLM_01`/`LBLM_02`), le WMS met à jour le **CustomData
|
||||
de la tâche** avec le **nombre d'étiquettes** à imprimer. Ce nombre est
|
||||
essentiel : il indique au **bras articulé** s'il y a une ou deux
|
||||
positions de collage.
|
||||
- Galileo, en recevant le custom data avec le bon tracking de palette,
|
||||
**arrête les rouleaux**.
|
||||
- À la **fin d'ordre** (event = palette arrivée à l'étiqueteuse), le WMS
|
||||
lance le **`printerCommand`**. Le contenu du rapport est envoyé
|
||||
directement à l'imprimante par EasyWMS via le **`printerService`**.
|
||||
- Galileo gère l'impression et le **collage**, puis la **relance des
|
||||
rouleaux**.
|
||||
|
||||
### Multi-étiquettes (2 étiquettes)
|
||||
|
||||
@@ -321,10 +368,68 @@ la palette (positions à définir avec Théo).
|
||||
- [CUSTOM Galileo] Communication HS imprimante → mise en défaut ET à
|
||||
documenter dans le document TMS
|
||||
|
||||
### Contenu des étiquettes d'expédition par type (LIM-107)
|
||||
|
||||
> **Statut (LIM-107)** : en revue de code.
|
||||
|
||||
Dès qu'une palette sort de l'installation pour expédition, un rapport est
|
||||
imprimé **selon le type d'expédition** (classe de l'OS). Format **A5**. Le
|
||||
type est déterminé par la classe de l'OS via les paramètres
|
||||
`EXPEDITION_CLASSE_CLIENT` / `EXPEDITION_CLASSE_PRODUCTION` (voir
|
||||
[Paramètres projet](../07-admin/parametres-projet.md)).
|
||||
|
||||
Où l'étiquette est imprimée (arbitrage Justine 02/07/2026) :
|
||||
|
||||
- **Client** et **Production** → sur les **étiqueteuses automatiques**
|
||||
d'expédition (sortie TK).
|
||||
- **Échantillonnage** → sur les **étiqueteuses des postes de travail**, via
|
||||
le flux inventaire COR/COF. Contenu détaillé dans
|
||||
[Échantillonnage - Étiquette d'échantillonnage](../03-picking/echantillonnage.md#étiquette-déchantillonnage-lim-107).
|
||||
|
||||
Étiquette **CLIENT** (report `CST_RPT_OUTBOUND_CLIENT`) :
|
||||
|
||||
| # | Champ |
|
||||
|---|-------|
|
||||
| 1 | Code de la tournée |
|
||||
| 2 | Code de l'OS |
|
||||
| 3 | Code du transporteur de l'OS |
|
||||
| 4 | Adresse de livraison de l'OS |
|
||||
|
||||
Étiquette **PRODUCTION** (report `CST_RPT_OUTBOUND_PRODUCTION`) :
|
||||
|
||||
| # | Champ |
|
||||
|---|-------|
|
||||
| 1 | Code de l'OS |
|
||||
| 2 | Code-barre 128 du code de l'OS |
|
||||
| 3 | `SOR.Document` |
|
||||
|
||||
Une **impression manuelle** est aussi disponible depuis la vue conteneurs
|
||||
(`ContainerVList`) via deux boutons (« Imprimer étiquette d'expédition
|
||||
client / production »), affichés sous condition que le conteneur soit un
|
||||
conteneur client ou d'expédition de la bonne classe d'OS.
|
||||
|
||||
| Élément AD | Type | Rôle |
|
||||
|------------|------|------|
|
||||
| `EXPEDITION_CLASSE_CLIENT` / `EXPEDITION_CLASSE_PRODUCTION` | Paramètre | Classe d'OS identifiant le type d'expédition (client / production). |
|
||||
| `CST_RPT_OUTBOUND_CLIENT` | Report | Étiquette d'expédition client. |
|
||||
| `CST_RPT_OUTBOUND_PRODUCTION` | Report | Étiquette d'expédition production. |
|
||||
| `CST_RPT_ECHANTILLONAGE` | Report | Étiquette d'échantillonnage (voir [Échantillonnage](../03-picking/echantillonnage.md)). |
|
||||
| `CST_VSearchPrintShippingClientContainerLabel` | Vue | Génération de l'étiquette d'expédition client. |
|
||||
| `CST_VSearchPrintShippingProductionContainerLabel` | Vue | Génération de l'étiquette d'expédition production. |
|
||||
| `ContainerVList` | Vue | Ajout des 2 boutons de génération d'étiquette (sous condition de classe d'OS). |
|
||||
| `CST_ContainerVList_Action_PrintShippingClientLabel` / `...ProductionLabel` | Ressource i18n | Libellés des boutons d'impression. |
|
||||
| `CST_ShippingClientContainerLabel` (client + production) | Ressource i18n | Libellés « Générer étiquette expédition client / production ». |
|
||||
|
||||
## Flux spécifiques
|
||||
|
||||
### Re-certification
|
||||
|
||||
> **Workstation LIM-105** : le **process opérateur détaillé au poste de
|
||||
> picking** (scan ancienne/nouvelle étiquette, vérification ASN via
|
||||
> `SAP_ATH111_*`, échange de conteneur, filmage, éléments AD) est documenté
|
||||
> dans [Recertification - Workstation au poste de picking](../03-picking/recertification.md).
|
||||
> La section ci-dessous décrit le **flux outbound** de bout en bout.
|
||||
|
||||
La re-certification consiste à ré-étiqueter une palette existante pour
|
||||
lui donner une nouvelle identité (nouvelle HU) sans déplacer physiquement
|
||||
le stock. C'est une **sortie administrative** suivie d'une **réception
|
||||
@@ -343,7 +448,7 @@ manager), ce qui bloque le PK pour les autres types de tâches.
|
||||
(ex: PK02) dans un CstAtt de la palette
|
||||
5. **Route virtuelle** : la palette est déplacée informatiquement du PK
|
||||
vers QUAI_RECERTIF
|
||||
6. [CUSTOM] **Event sur le déplacement vers QUAI_RECERTIF** — 3 actions :
|
||||
6. [CUSTOM] **Event sur le déplacement vers QUAI_RECERTIF** - 3 actions :
|
||||
- Récupération du CstAtt (code PK d'origine)
|
||||
- Fermeture de la commande → expédition du stock → génération du SOF
|
||||
- Création d'une **palette vide** sur le PK d'origine (pour maintenir
|
||||
@@ -426,7 +531,7 @@ SOR.Line si besoin.
|
||||
- S'il reste du stock dispo : assignation maintenue (workflow
|
||||
`OnStockAdjust` recalcule uniquement si nécessaire)
|
||||
- Si plus assez de stock → réassignation ailleurs
|
||||
3. Autre problème — le support n'est pas ok (90% du stock a un problème) :
|
||||
3. Autre problème - le support n'est pas ok (90% du stock a un problème) :
|
||||
- **Verrou de support** interdisant le picking (bouton « mettre sous
|
||||
révision » en standard, à configurer)
|
||||
- Tâche créée pour que l'AGV dépose la palette sur un **emplacement
|
||||
@@ -464,20 +569,26 @@ documentés pour chaque process.
|
||||
|
||||
## Questions ouvertes
|
||||
|
||||
- [ ] Ordonnancement des palettes dans le canal du poumon d'expé du
|
||||
magasin automatique — géré par le WMS ou naturellement via l'ordre
|
||||
- ❓ Ordonnancement des palettes dans le canal du poumon d'expé du
|
||||
magasin automatique - géré par le WMS ou naturellement via l'ordre
|
||||
de stockage ? (@Nicolas)
|
||||
- [ ] Fermeture auto OS si chargement complet — standard ou custom ?
|
||||
- ❓ Fermeture auto OS si chargement complet - standard ou custom ?
|
||||
(@Nicolas)
|
||||
- [ ] Comportement du reliquat chargement camion avec fichier RUT —
|
||||
- ❓ Comportement du reliquat chargement camion avec fichier RUT -
|
||||
à paramétrer et tester (@Fabien)
|
||||
- [ ] Positions des 2 étiquettes articulées sur la palette (@Théo)
|
||||
- [ ] Custom Galileo : communication HS imprimante → mise en défaut ET
|
||||
— à documenter dans le TMS (@Théo)
|
||||
- [ ] Combien de commandes messagerie en parallèle sur un poste ? (@Justine)
|
||||
- [ ] Emplacement au sol buffer litige — localisation exacte (@Théo)
|
||||
- [ ] Emplacement au sol messagerie carton par transporteur (@Théo)
|
||||
- [ ] Réunion technique avec Still pour valider le problème de dépose
|
||||
- ❓ Positions des 2 étiquettes articulées sur la palette (@Théo)
|
||||
- ❓ Custom Galileo : communication HS imprimante → mise en défaut ET
|
||||
- à documenter dans le TMS (@Théo)
|
||||
- Étiqueteuse auto (LIM-111) : mécanisme de remontée d'une erreur
|
||||
d'impression par les automates au WMS à définir - nécessaire pour que
|
||||
le mode dégradé TRF sache si l'impression a réussi (@Vincent)
|
||||
- Étiqueteuse auto (LIM-111) : palette à l'arrêt en cas de problème
|
||||
d'impression - intervention opérateur (laquelle ?) et procédure de
|
||||
redémarrage de la palette à définir (@Théo / @Vincent)
|
||||
- ❓ Combien de commandes messagerie en parallèle sur un poste ? (@Justine)
|
||||
- ❓ Emplacement au sol buffer litige - localisation exacte (@Théo)
|
||||
- ❓ Emplacement au sol messagerie carton par transporteur (@Théo)
|
||||
- ❓ Réunion technique avec Still pour valider le problème de dépose
|
||||
AGV sur image de quai (@Théo)
|
||||
|
||||
## Historique des modifications
|
||||
@@ -486,4 +597,18 @@ documentés pour chaque process.
|
||||
|------|--------|--------------|
|
||||
| 2026-05-05 | Arthur | Création initiale depuis AF V1.5 |
|
||||
| 2026-05-05 | Arthur | Réécriture complète depuis ateliers DEV expédition |
|
||||
| 2026-05-13 | Arthur | Correction seuil picking négatif 50% → 55% + poids ≥ 7 kg, suppression règle traitement commercial |
|
||||
| 2026-05-13 | Arthur | Correction seuil picking négatif 50% → 55% + poids ≥ 7 kg, suppression règle traitement commercial |
|
||||
| 2026-07-20 | Arthur | Renvoi vers la nouvelle page [Recertification workstation](../03-picking/recertification.md) (LIM-105) depuis la section Re-certification ; front matter jira_refs/sources/last_updated |
|
||||
| 2026-07-20 | Arthur | LIM-107 (lecture directe, en revue de code) : sous-section « Contenu des étiquettes d'expédition par type » sous Étiqueteuse automatique (format A5 ; Client/Production sur étiqueteuses auto, Échantillonnage sur poste via COR/COF ; contenu étiquettes Client 4 champs + Production 3 champs ; params EXPEDITION_CLASSE_CLIENT/PRODUCTION ; reports/vues/ContainerVList/ressources ; impression manuelle via 2 boutons ContainerVList) ; front matter jira_refs +LIM-107/sources |
|
||||
| 2026-07-20 | Arthur | LIM-111 (lecture directe, Ouvert) : formalisation de l'intégration Galileo de l'étiqueteuse (noms de stations LBLM_01/LBLM_02 type ET ; refonte « Comportement à la sortie TK » en logique 2 étiquettes distinctes - expédition LIM-107 toujours sauf palette basse, picking LIM-68 conditionnée par CstAtt14 ; mécanisme Galileo subscription MovementCreated → CustomData nombre d'étiquettes → printerCommand/printerService ; CstAtt14 nommé) ; front matter jira_refs +LIM-111/sources ; 2 questions ouvertes (remontée erreur impression, palette à l'arrêt) |
|
||||
| 2026-07-20 | Arthur | Lint : ajout section Références ; correction ancres et liens |
|
||||
|
||||
## Références
|
||||
|
||||
| Source | Type | Date |
|
||||
|--------|------|------|
|
||||
| FR-SW-04-07_LIMAGRAIN_Functional_Analysis_V1.5 | AF (docx) | 2026 |
|
||||
| "Expédition - LIMAGRAIN - DEV" Confluence | Page | 2026 |
|
||||
| [LIM-105](https://easywmsfrance.atlassian.net/browse/LIM-105) | Ticket Jira (lecture directe) | 2026-07-20 |
|
||||
| [LIM-107](https://easywmsfrance.atlassian.net/browse/LIM-107) | Ticket Jira (lecture directe) | 2026-07-20 |
|
||||
| [LIM-111](https://easywmsfrance.atlassian.net/browse/LIM-111) | Ticket Jira (lecture directe) | 2026-07-20 |
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
---
|
||||
title: "Séquençage shipping par STOP — Quai assigné"
|
||||
title: "Séquençage shipping par STOP - Quai assigné"
|
||||
tags: [outbound, expédition, shipping, tournée, STOP, stacker-crane, custom, AGV]
|
||||
status: draft
|
||||
status: review
|
||||
standard_ref: concepts/shipping.md
|
||||
jira_refs: [LIM-88]
|
||||
jira_refs: [LIM-88, LIM-94]
|
||||
confluence_refs: ["Expédition - LIMAGRAIN - DEV"]
|
||||
sources: ["LIM-88 LOT2.1 [TOURNÉES] Séquençage des tâches de shipping par STOP - quai assigné.md"]
|
||||
last_updated: 2026-05-12
|
||||
sources: ["LIM-88 LOT2.1 [TOURNÉES] Séquençage des tâches de shipping par STOP - quai assigné.md", "Jira LIM-88 (lecture directe, revue de code)"]
|
||||
last_updated: 2026-07-17
|
||||
author: Arthur
|
||||
---
|
||||
|
||||
# Séquençage shipping par STOP — Quai assigné
|
||||
# Séquençage shipping par STOP - Quai assigné
|
||||
|
||||
> **Résumé** : quand un quai est déjà assigné à une tournée (RUT),
|
||||
> les palettes doivent sortir de l'ASRS vers l'image de quai dans
|
||||
@@ -30,9 +30,12 @@ Ce custom est le **cas complémentaire** de la
|
||||
(LIM-87) qui traite le cas « quai non assigné ».
|
||||
|
||||
Ici, le quai est **déjà assigné au RUT** quand la tournée est libérée
|
||||
(ou assigné avant la fin du picking, ou après). Dans ce cas, LIM-87
|
||||
(défrag custom) ne s'applique pas : c'est le **flux shipping standard**
|
||||
qui prend le relais pour envoyer les palettes vers l'image de quai.
|
||||
(ou assigné avant la fin du picking, ou après). L'assignation de l'image
|
||||
de quai peut être manuelle ou **automatique** via le job LIM-94 (voir
|
||||
[Assignation automatique de l'image de quai](assignation-image-quai.md)).
|
||||
Dans ce cas, LIM-87 (défrag custom) ne s'applique pas : c'est le **flux
|
||||
shipping standard** qui prend le relais pour envoyer les palettes vers
|
||||
l'image de quai.
|
||||
Il faut néanmoins respecter la règle métier d'ordonnancement par n° de
|
||||
STOP (ordre inverse : STOP max → STOP 1) pour que les palettes soient
|
||||
posées sur l'image de quai dans le bon ordre de chargement camion.
|
||||
@@ -50,7 +53,7 @@ pas :
|
||||
> Custom imaginé au départ : bloquer la génération des tâches de
|
||||
> shipping tant que tout le picking n'est pas terminé.
|
||||
|
||||
Trop restrictif — on ne profiterait pas du temps pendant lequel les
|
||||
Trop restrictif - on ne profiterait pas du temps pendant lequel les
|
||||
palettes complètes pourraient déjà être pré-positionnées sur l'image
|
||||
de quai dans l'ordre. Par ailleurs, bloquer la génération de tâche est
|
||||
complexe car de nombreux process la déclenchent (pas uniquement des
|
||||
@@ -65,7 +68,7 @@ jobs).
|
||||
Dès que le quai est assigné, toutes les palettes prêtes (complètes
|
||||
dans l'ASRS + palettes filles revenues de picking) ont leur tâche de
|
||||
shipping générée par le standard. Une palette non encore pickée n'a
|
||||
pas de tâche — sa tâche sera créée au moment où elle rentrera dans un
|
||||
pas de tâche - sa tâche sera créée au moment où elle rentrera dans un
|
||||
TK après picking.
|
||||
|
||||
#### 2. Ordonnancement d'exécution (custom stacker crane)
|
||||
@@ -99,7 +102,7 @@ palette rentre bien dans l'ASRS.
|
||||
|
||||
- **Le tri du stacker crane doit considérer les palettes sur tous les
|
||||
TK** (pas uniquement celles dans un TK unique comme en standard).
|
||||
Pattern déjà réalisé sur le **projet Bardinet** — à reprendre.
|
||||
Pattern déjà réalisé sur le **projet Bardinet** - à reprendre.
|
||||
|
||||
### Ce qui reste standard
|
||||
|
||||
@@ -109,6 +112,40 @@ palette rentre bien dans l'ASRS.
|
||||
si pas de stock trouvé → palettes suivantes du STOP envoyées ;
|
||||
si nouveau stock trouvé → récupère le séquençage
|
||||
|
||||
## Implémentation définitive (revue de code validée 2026-06-02)
|
||||
|
||||
> **Statut** : En cours de test client (pré-production). Revue de code
|
||||
> et tests validés. Deux revues successives : le tri multi-TK (Maxime
|
||||
> Halgand) puis un garde-fou complémentaire sur la génération des
|
||||
> tâches de chargement (Vincent Charvet).
|
||||
|
||||
Le custom se limite à une **query clonée** et deux **workflows**
|
||||
overridés. Aucune génération de tâche custom : le standard crée les
|
||||
tâches shipping au fil de l'eau, le custom n'intervient qu'au **tri**
|
||||
et pose un garde-fou sur la génération des tâches de chargement AGV.
|
||||
|
||||
### Query
|
||||
|
||||
| Élément | Rôle |
|
||||
|---|---|
|
||||
| `CST_Tasks_PendingOutboundForStackerCrane` | Cœur du custom. Clone de `Tasks_PendingOutboundForStackerCrane`. Filtre pour récupérer toutes les tâches shipping, conteneurs picking, conteneurs shipping et conteneurs client d'un **numéro de STOP supérieur**, et vérifier s'ils sont **tous en station image de quai (DockStage)** ou non |
|
||||
|
||||
### Workflows
|
||||
|
||||
| Workflow | Modification |
|
||||
|---|---|
|
||||
| `StackerCrane_GetOutboundPendingTasks_PR` | Utilise la query custom au lieu de la standard. Ajoute un log pour conserver les informations de recherche |
|
||||
| `Outbound_CreateShippingOrLoadTasksToDockOrStage_PR` | Empêche la création d'une tâche de chargement s'il n'y a **pas de stage (image de quai) associé à l'OS**. Sans ce garde-fou, les palettes bloquent aux PS car les AGV n'ont pas de destination pour effectuer le mouvement (commit `0aec1c3b`). Le stage est posé par [LIM-94](assignation-image-quai.md) |
|
||||
|
||||
### Règle de filtrage
|
||||
|
||||
Le filtre ne bloque que les **sorties d'expédition** : une palette d'un
|
||||
STOP donné ne sort vers l'image de quai que si tous les STOP supérieurs
|
||||
sont déjà arrivés en station DockStage. En revanche, les **sorties de
|
||||
palettes picking restent toujours autorisées** pour permettre le
|
||||
prélèvement anticipé : le picking n'est jamais bloqué par le
|
||||
séquençage.
|
||||
|
||||
## Flux fonctionnel
|
||||
|
||||
```mermaid
|
||||
@@ -149,7 +186,7 @@ sequenceDiagram
|
||||
|----|--------------|------------------|
|
||||
| CT-01 | RUT mono-STOP, 3 PC dans ASRS, quai assigné | 3 tâches shipping, palettes partent vers image de quai |
|
||||
| CT-02 | RUT multi-STOP (1, 2, 3), 2 PC chacun, quai assigné | 6 tâches. Stacker crane exécute STOP 3, puis 2, puis 1 |
|
||||
| CT-03 | RUT multi-STOP, picking terminé avant libération, toutes PF revenues | Identique à CT-02 — PF ou PC, même logique |
|
||||
| CT-03 | RUT multi-STOP, picking terminé avant libération, toutes PF revenues | Identique à CT-02 - PF ou PC, même logique |
|
||||
|
||||
### Cas limites (cœur du custom)
|
||||
|
||||
@@ -173,7 +210,7 @@ sequenceDiagram
|
||||
| CT-09 | 2 RUT en parallèle, quais distincts | Ordonnancement indépendant par RUT. Pas de fuite de tri |
|
||||
| CT-11 | RUT A avec quai, RUT B sans quai | RUT A traité par ce custom. RUT B relève de LIM-87 (défrag). Vérifier absence d'interférence |
|
||||
| CT-12 | SOR ajouté à un RUT en cours d'exécution | Nouvelles palettes s'insèrent dans l'ordre STOP. Si picking nécessaire → PF reviendront à l'ASRS |
|
||||
| CT-13 | Bascule de quai en cours de tournée | **À définir en recette.** Tâches restantes regénérées vers nouveau quai. Palettes déjà à l'ancien quai → traitement manuel |
|
||||
| CT-13 | Bascule de quai en cours de tournée | **Scénario exclu** : on ne peut pas changer le quai une fois la RUT libérée (contrainte WMS, note dev revue de code). Une rebascule relève d'une opération manuelle exceptionnelle, hors périmètre custom |
|
||||
|
||||
### Stock reassign au picking
|
||||
|
||||
@@ -184,25 +221,31 @@ sequenceDiagram
|
||||
|
||||
## Points d'attention
|
||||
|
||||
⚠️ Le custom de tri multi-TK reprend un **pattern Bardinet** — ne pas
|
||||
⚠️ Le custom de tri multi-TK reprend un **pattern Bardinet** - ne pas
|
||||
réinventer le mécanisme.
|
||||
|
||||
⚠️ Le retour systématique des PF vers l'ASRS (pas de crossdock) est
|
||||
le comportement standard attendu mais **doit être validé en recette**.
|
||||
|
||||
⚠️ La bascule de quai en cours de tournée (CT-13) n'est pas couverte
|
||||
par le custom — les palettes déjà à l'image de quai de l'ancien quai
|
||||
sont à traiter manuellement.
|
||||
⚠️ La bascule de quai en cours de tournée (CT-13) est **impossible** :
|
||||
le quai ne peut pas être changé une fois la RUT libérée. Une rebascule
|
||||
serait une opération manuelle exceptionnelle, hors périmètre custom.
|
||||
|
||||
⚠️ Les tâches de chargement ne doivent jamais être générées sans image
|
||||
de quai associée à l'OS, sinon les palettes bloquent aux PS (les AGV
|
||||
n'ont pas de destination). Garde-fou porté par
|
||||
`Outbound_CreateShippingOrLoadTasksToDockOrStage_PR`.
|
||||
|
||||
## Questions ouvertes
|
||||
|
||||
- [ ] Retour PF vers ASRS (CT-08) : confirmer que le standard crée
|
||||
- ❓ Retour PF vers ASRS (CT-08) : confirmer que le standard crée
|
||||
bien une tâche de rangement quand pas de route vers l'image de quai.
|
||||
Sinon custom de secours nécessaire. (@Nicolas)
|
||||
→ voir [Questions ouvertes](../08-transverse/questions-ouvertes.md)
|
||||
- [ ] Bascule de quai en cours de tournée (CT-13) : définir le
|
||||
comportement attendu pour les palettes déjà à l'ancien quai.
|
||||
(@Justine)
|
||||
- [x] ~~Bascule de quai en cours de tournée (CT-13) : définir le
|
||||
comportement attendu pour les palettes déjà à l'ancien quai.~~
|
||||
→ **Résolu** (note dev, revue de code) : on ne peut pas changer le
|
||||
quai une fois la RUT libérée. Scénario exclu du custom.
|
||||
→ voir [Questions ouvertes](../08-transverse/questions-ouvertes.md)
|
||||
|
||||
## Historique des modifications
|
||||
@@ -210,11 +253,14 @@ sont à traiter manuellement.
|
||||
| Date | Auteur | Modification |
|
||||
|------|--------|--------------|
|
||||
| 2026-05-12 | Arthur | Création initiale depuis LIM-88 |
|
||||
| 2026-07-17 | Arthur | Ajout implémentation définitive (revue de code 02/06 : query `CST_Tasks_PendingOutboundForStackerCrane`, WF `StackerCrane_GetOutboundPendingTasks_PR` + `Outbound_CreateShippingOrLoadTasksToDockOrStage_PR`, règle picking toujours autorisé) ; statut préprod ; résolution CT-13 (quai non modifiable après libération RUT) |
|
||||
| 2026-07-17 | Arthur | Cross-ref LIM-94 (assignation auto de l'image de quai / stage `X_EXP` dont dépend le garde-fou de chargement) ; jira_refs +LIM-94 |
|
||||
|
||||
## Références
|
||||
|
||||
| Source | Type | Date |
|
||||
|--------|------|------|
|
||||
| [LIM-88](https://easywmsfrance.atlassian.net/browse/LIM-88) | Ticket Jira | 2026 |
|
||||
| [LIM-88](https://easywmsfrance.atlassian.net/browse/LIM-88) | Ticket Jira (statut préprod / test client) | 2026 |
|
||||
| Revue de code LIM-88 (M. Halgand, V. Charvet, N. Chabanis) | Revue de code validée, commit `0aec1c3b` | 2026-06-02 |
|
||||
| Expédition - LIMAGRAIN - DEV | Page Confluence | 2026 |
|
||||
| Projet Bardinet | Pattern custom stacker crane multi-TK | — |
|
||||
| Projet Bardinet | Pattern custom stacker crane multi-TK | - |
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
---
|
||||
title: "Ordres de sortie — Types et libération"
|
||||
title: "Ordres de sortie - Types et libération"
|
||||
tags: [outbound, OS, SOR, RUT, libération, assignation, FIFO, LOC]
|
||||
status: draft
|
||||
standard_ref: concepts/order-outbound.md
|
||||
jira_refs: []
|
||||
jira_refs: [LIM-109, LIM-110]
|
||||
confluence_refs: ["Expédition - LIMAGRAIN - DEV"]
|
||||
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"]
|
||||
last_updated: 2026-05-06
|
||||
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-109 (lecture directe 2026-07-20)", "Jira LIM-110 (lecture directe 2026-07-20)"]
|
||||
last_updated: 2026-07-20
|
||||
author: Arthur
|
||||
---
|
||||
|
||||
# Ordres de sortie — Types et libération
|
||||
# Ordres de sortie - Types et libération
|
||||
|
||||
> **Résumé** : 4 types d'ordres de sortie chez Limagrain, avec des
|
||||
> comportements de libération, d'assignation et de préparation distincts.
|
||||
@@ -51,6 +51,29 @@ re-certification. Le message d'entrée diffère selon le type.
|
||||
- Chaque OS peut avoir plusieurs **lignes** (article + quantité)
|
||||
- Chaque palette est étiquetée et ordonnancée par **n° STOP**
|
||||
|
||||
## [CUSTOM] Lot obligatoire sur les lignes d'OS (LIM-109)
|
||||
|
||||
> **Statut (LIM-109)** : dev terminé, en attente de déploiement pour test.
|
||||
> Revue de code validée (Maxime, 29/06/2026).
|
||||
|
||||
La création d'un ordre de sortie ou d'une **ligne d'OS** est **interdite si
|
||||
l'attribut logistique lot n'est pas renseigné**. Le lot est indispensable à
|
||||
l'assignation de stock (critère « article/lot SAP », voir
|
||||
[Assignation de stock](#assignation-de-stock)) : une ligne sans lot ne
|
||||
pourrait jamais être servie.
|
||||
|
||||
Le contrôle est posé par une **subscription en Preview** sur l'event de
|
||||
création de ligne d'OS, qui lève une **exception** si le lot est vide. Combiné
|
||||
à `TransactionalLineList = true` (voir
|
||||
[Paramètres ERP](#paramètres-erp-des-sorrut)), le refus est **total** : tout
|
||||
l'import de l'OS est rejeté.
|
||||
|
||||
| Élément AD | Type | Rôle |
|
||||
|------------|------|------|
|
||||
| `CST_OutboundOrderLineCreated_CheckLotRequired_PRE` | Subscription | En **Preview** sur l'event de création de ligne d'OS ; appelle le WF de contrôle. |
|
||||
| `CST_OutboundOrderLineCreated_CheckLotRequired_PRE_PR` | Workflow | Lève une exception si le lot n'est pas renseigné sur la ligne. |
|
||||
| `CST_OutboundOrderLineCreation_MissingLot` | Ressource i18n | Message d'erreur « lot manquant ». |
|
||||
|
||||
## Paramètres ERP des SOR/RUT
|
||||
|
||||
| Paramètre | Valeur | Commentaire |
|
||||
@@ -62,7 +85,7 @@ re-certification. Le message d'entrée diffère selon le type.
|
||||
| CompleteSorList (RUT) | true | SOR absents de la RUT = supprimés |
|
||||
| AllowAssignStockExcess | true | Palettes pleines, jamais de picking partiel |
|
||||
| Limite d'annulation | Statut "Chargé" | Avant = OK, après = refusé |
|
||||
| IgnoreNulls (RUT) | false | — |
|
||||
| IgnoreNulls (RUT) | false | - |
|
||||
|
||||
## Gestion des ruptures SOR Production
|
||||
|
||||
@@ -76,9 +99,63 @@ manuel.
|
||||
|
||||
## Quai recertification
|
||||
|
||||
Pour les SOR de type recertification :
|
||||
`AssignedDockStationCode = "QUAI_RECERTIFICATION"` (quai fictif, renseigné
|
||||
par Limagrain dans le SOR).
|
||||
> **Statut (LIM-110)** : en cours de test client (pré-production). Revue de
|
||||
> code validée (Maxime, 03/07/2026).
|
||||
|
||||
Le quai de recertification (`QUAI_RECERTIFICATION`, code porté par le
|
||||
paramètre `RECERTIFICATION_CODE_QUAI`) est **assigné automatiquement** par le
|
||||
WMS :
|
||||
|
||||
- à la **création** d'un OS de classe RECERTIFICATION
|
||||
(`OutboundOrder_OutboundOrderCreatedEventHandler_PR`) ;
|
||||
- à l'**édition** d'un OS auquel on ajoute la classe RECERTIFICATION (ajout
|
||||
Vincent 09/07/2026).
|
||||
|
||||
Ce quai est **réservé à ce process**. Le **changement manuel** du quai
|
||||
(assignation ou dé-assignation) est **empêché** : les boutons correspondants
|
||||
sont masqués dans la vue `OutboundOrderVList` pour les OS de recertification.
|
||||
|
||||
> **Évolution vs V1** : le quai fictif `QUAI_RECERTIFICATION` était auparavant
|
||||
> renseigné par Limagrain **dans le SOR**. Il est désormais posé
|
||||
> **automatiquement** par le WMS (LIM-110).
|
||||
|
||||
Ce quai n'est **pas** géré par le job d'assignation des images de quai X_EXP
|
||||
(LIM-94), qui **exclut** la classe Recertification (voir
|
||||
[Assignation image de quai](assignation-image-quai.md)).
|
||||
|
||||
### Stratégie d'assignation de stock RECERTIFICATION (LIM-110)
|
||||
|
||||
Une stratégie d'assignation de stock spécifique, **« expédition uniquement des
|
||||
supports complets »**, est forcée pour les OS de classe RECERTIFICATION :
|
||||
|
||||
- La stratégie (code `RECERTIFICATION`) est **toujours désactivée** en
|
||||
configuration : elle n'est jamais choisie par le mécanisme standard.
|
||||
- Lors de l'assignation de stock d'un OS de recertification, le choix est
|
||||
**forcé** sur cette stratégie
|
||||
(`StockAssignProcess_GetStockAssignStrategies_PR`).
|
||||
- Le flag `AllowPick` est **forcé à `false`**
|
||||
(`StockAssignProcess_GetStockToAssignForStrategy_PR`) : supports complets
|
||||
uniquement, pas de picking.
|
||||
- La stratégie est identifiée par une **balise `[XXX]`** dans son code, avec
|
||||
`XXX = RECERTIFICATION_CODE_QUAI` ; la query
|
||||
`CST_StockAssignStrategyV2_Recertification` récupère les stratégies portant
|
||||
ce tag.
|
||||
|
||||
> ⚠️ La description du ticket indique que `RECERTIFICATION_CODE_QUAI` sert
|
||||
> aussi à **identifier les OS de classe recertification** ; à relier au
|
||||
> paramètre `RECERTIFICATION_CODE_CLASSE` (LIM-105) qui porte déjà ce rôle -
|
||||
> voir [questions ouvertes](../08-transverse/questions-ouvertes.md).
|
||||
|
||||
| Élément AD | Type | Rôle |
|
||||
|------------|------|------|
|
||||
| `OutboundOrder_OutboundOrderCreatedEventHandler_PR` | Workflow | À la création d'un OS de recertification, assigne automatiquement le quai (paramètre `RECERTIFICATION_CODE_QUAI`). |
|
||||
| `StockAssignProcess_GetStockAssignStrategies_PR` | Workflow | Filtre les stratégies d'assignation de stock à appliquer pour les OS de recertification. |
|
||||
| `StockAssignProcess_GetLockAndUpdateDetail_PR` | Workflow | Récupère l'`OutboundClassCode`. |
|
||||
| `StockAssignProcess_GetStockToAssignForStrategy_PR` | Workflow | Force `AllowPick = false` pour les ordres de recertification. |
|
||||
| `OutboundOrderVList` | Vue | Masque les boutons d'assignation / dé-assignation de quai pour les OS de recertification. |
|
||||
| `CST_StockAssignStrategyV2_Recertification` | Query | Récupère les stratégies dont le code contient le tag `[code classe recertification]`. |
|
||||
| `OutboundOrder_CreatedEvent` | Subscription | Ajout du paramètre `OutboundClassCode`. |
|
||||
| `RECERTIFICATION_CODE_QUAI` | Paramètre | Code du quai recertification / balise `[XXX]` de la stratégie. Voir [Paramètres projet](../07-admin/parametres-projet.md). |
|
||||
|
||||
## Libération
|
||||
|
||||
@@ -125,12 +202,12 @@ Filtres appliqués :
|
||||
Dans l'ordre de priorité :
|
||||
|
||||
1. **Article/lot SAP + attributs logistiques** spécifiés dans le SOR/RUT
|
||||
2. **Économie de mouvement** (minimum de mouvements) — **prioritaire**
|
||||
2. **Économie de mouvement** (minimum de mouvements) - **prioritaire**
|
||||
3. **FIFO sur 24h** : standard confirmé. Les palettes reçues le même jour
|
||||
ont le même FIFO (heures/minutes ignorées), ce qui permet de prendre
|
||||
la palette la plus accessible dans un canal. Pas de FIFO strict
|
||||
infra-journalier.
|
||||
4. **Pas de FEFO** — la proposition initiale de faire du FEFO sur du stock
|
||||
4. **Pas de FEFO** - la proposition initiale de faire du FEFO sur du stock
|
||||
sans DLC est **abandonnée**. Il n'y a pas de date d'expiration sur les
|
||||
produits. Le FIFO journalier est retenu.
|
||||
5. **Maximum palettes complètes** puis palettes incomplètes (avec picking)
|
||||
@@ -169,7 +246,7 @@ Dans l'ordre de priorité :
|
||||
- [CUSTOM] Stratégie d'assignation excluant les supports multi-lignes
|
||||
(= mono-ref uniquement). Combiné avec AllowAssignStockExcess → shipping
|
||||
sans picking.
|
||||
- Stock assigné directement déposé sur l'image de quai — aucun passage
|
||||
- Stock assigné directement déposé sur l'image de quai - aucun passage
|
||||
poste de travail
|
||||
- Ruptures de stock ne bloquent pas l'expédition. Le client utilise
|
||||
`isCritical` / `isRequired` au niveau SOR.Line si besoin.
|
||||
@@ -179,7 +256,7 @@ Dans l'ordre de priorité :
|
||||
|
||||
- Stock assigné mais **aucune tâche** tant que poste de travail non assigné
|
||||
- Le PK doit être passé en **mode recertif** (par le manager)
|
||||
- Flux détaillé en 11 étapes — voir
|
||||
- Flux détaillé en 11 étapes - voir
|
||||
[Re-certification](flux-expedition.md#re-certification)
|
||||
|
||||
### Messagerie carton
|
||||
@@ -188,7 +265,7 @@ Dans l'ordre de priorité :
|
||||
- Tous les OS de la RUT préparés **simultanément** sur un seul poste
|
||||
- Tri par transporteur (l'opérateur ne dépose que sur une seule palette)
|
||||
- Consolidation sur palette unique avec supports carton identifiés
|
||||
- Pas d'image de quai — emplacement au sol dédié par transporteur
|
||||
- Pas d'image de quai - emplacement au sol dédié par transporteur
|
||||
- [CUSTOM] À l'import du SOR, vérification combo shipping class code +
|
||||
transporteur → si OK, poumon associé automatiquement
|
||||
- Voir [Messagerie carton](flux-expedition.md#messagerie-carton)
|
||||
@@ -211,11 +288,11 @@ Possible depuis EasyWMS avec choix de destination :
|
||||
|
||||
## Points d'attention
|
||||
|
||||
⚠️ La libération automatique est le mode principal — la date est dans le
|
||||
⚠️ La libération automatique est le mode principal - la date est dans le
|
||||
message ERP.
|
||||
|
||||
⚠️ L'assignation spécifie **toujours** les 4 critères (article, lot SAP,
|
||||
propriétaire, statut) — pas d'assignation « ouverte ».
|
||||
propriétaire, statut) - pas d'assignation « ouverte ».
|
||||
|
||||
⚠️ Le FIFO est à la **journée** (palettes du même jour = même rang FIFO),
|
||||
avec l'**économie de mouvement** prioritaire sur le FIFO. Pas de FEFO.
|
||||
@@ -224,7 +301,7 @@ avec l'**économie de mouvement** prioritaire sur le FIFO. Pas de FEFO.
|
||||
possible **un canal dédié par route/STOP**.
|
||||
|
||||
⚠️ Le custom de défragmentation attend que toutes les palettes de picking
|
||||
soient terminées et retournées dans l'ASRS avant de lancer les relocs —
|
||||
soient terminées et retournées dans l'ASRS avant de lancer les relocs -
|
||||
c'est le développement clé du flux outbound.
|
||||
|
||||
## Historique des modifications
|
||||
@@ -234,6 +311,8 @@ c'est le développement clé du flux outbound.
|
||||
| 2026-05-05 | Arthur | Création initiale depuis AF V1.5 |
|
||||
| 2026-05-05 | Arthur | Enrichissement : 5 types OS, FIFO 24h, pas de FEFO, custom défrag, conso OF détaillé, messagerie carton |
|
||||
| 2026-05-06 | Arthur | Ajout classifications, paramètres ERP, ruptures production, quai recertif (CR consolidé) |
|
||||
| 2026-07-20 | Arthur | LIM-109 (lecture directe, attente déploiement test, revue validée 29/06) : section [CUSTOM] Lot obligatoire sur les lignes d'OS (subscription Preview `CST_OutboundOrderLineCreated_CheckLotRequired_PRE` → WF exception si lot vide, ressource `CST_OutboundOrderLineCreation_MissingLot`, refus total via TransactionalLineList) ; front matter jira_refs/sources/last_updated |
|
||||
| 2026-07-20 | Arthur | LIM-110 (lecture directe, pré-production, revue validée 03/07) : refonte section Quai recertification (assignation auto du quai à la création ET à l'édition d'un OS recertif, blocage du changement manuel via OutboundOrderVList, param `RECERTIFICATION_CODE_QUAI`, évolution vs V1 renseigné dans le SOR, exclusion LIM-94) + sous-section Stratégie d'assignation de stock RECERTIFICATION (supports complets uniquement, forcée, toujours désactivée, AllowPick=false, tag `[XXX]`, query `CST_StockAssignStrategyV2_Recertification`) ; table AD ; caveat param QUAI vs CLASSE |
|
||||
|
||||
## Références
|
||||
|
||||
@@ -242,3 +321,5 @@ c'est le développement clé du flux outbound.
|
||||
| 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-109](https://easywmsfrance.atlassian.net/browse/LIM-109) | Ticket Jira (interdire lignes d'OS sans lot - attente déploiement test) | 2026 |
|
||||
| [LIM-110](https://easywmsfrance.atlassian.net/browse/LIM-110) | Ticket Jira (quai recertification auto + stratégie assignation stock - pré-production) | 2026 |
|
||||
|
||||
Reference in New Issue
Block a user