Files
mcp-wms-wiki/wiki/limagrain/01-inbound/gestion-camions.md
T
arthur 7496aafe64 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
2026-07-20 12:56:42 +02:00

676 lines
35 KiB
Markdown

---
title: "Gestion des camions - Arrivée, quais et déclaration image de quai"
tags: [inbound, camion, quai, TRF, image-de-quai, étiquette, SmartUI]
status: draft
standard_ref: concepts/reception.md
jira_refs: [LIM-62, LIM-63, LIM-64, LIM-65, LIM-96, LIM-97, LIM-102]
confluence_refs: []
sources: [LIM-62_gestion-camions.md, LIM-63_64_65.md, "Jira LIM-96 (V2, préprod, revue de code validée 25/06)", "Jira LIM-97 (Gestion camions V2, préprod, validé Vincent 02/07)"]
last_updated: 2026-07-20
author: Arthur
---
# Gestion des camions - Arrivée, quais et déclaration image de quai
> **Résumé** : flux complet depuis l'arrivée physique d'un camion jusqu'à la
> déclaration des palettes sur une image de quai (poumon de réception). Couvre
> l'annonce camion, l'assignation de quai, l'affichage chauffeur, le workflow
> TRF de déclaration et l'impression d'étiquettes support.
> **Standard EasyWMS** : → voir [Reception](../../concepts/reception.md)
> Ce qui suit documente les **spécificités Limagrain** par rapport au standard.
> Le standard prévoit la création manuelle de réceptions et leur association à
> des ordres d'entrée ; Limagrain ajoute une couche de gestion physique des
> camions (plaque, quai, affichage chauffeur) et un workflow TRF dédié pour la
> déclaration des palettes sur les images de quai.
> **Statut Jira (20/07/2026)** : LIM-62 (Gestion camions **V1**) est **clôturé /
> annulé** (validation fonctionnelle par Justine le 27/05/2026). La suite est
> reprise par
> [LIM-97 - Gestion camions V2](https://easywmsfrance.atlassian.net/browse/LIM-97)
> (**En cours de test client / préprod**, validée par Vincent Charvet le
> 02/07/2026). Les étapes 1 et 2 ci-dessous intègrent le détail définitif V2,
> dont le mécanisme **faux stage / vrai stage** d'assignation de l'image de
> quai.
## Contexte projet
Chez Limagrain, le flux de réception commence **avant** le déchargement : un
agent de quai annonce le camion, lui assigne un quai, et les chauffeurs sont
orientés via un affichage extérieur. Après déchargement physique, un cariste
déclare les palettes sur l'image de quai via un workflow TRF dédié. Ce n'est
qu'après cette déclaration que les AGV viennent récupérer les palettes.
Ce processus est commun à tous les types de réception (production, extérieure,
retour). Les flux spécifiques de chaque type sont documentés dans les pages
dédiées : [Réception fournisseur](reception-fournisseur.md),
[Réception retour](reception-retour.md).
## Flux fonctionnel global
```mermaid
sequenceDiagram
participant CH as Chauffeur
participant AQ as Agent de quai
participant SM as SmartUI
participant AFF as Affichage extérieur
participant CAR as Cariste (TRF)
participant WMS as EasyWMS
participant AGV as AGV
CH->>AQ: Annonce arrivée camion
AQ->>SM: Crée réception + saisie plaque
SM->>SM: Vérifie classes OE identiques
AQ->>SM: Assigne quai (ou PARKING)
SM->>AFF: Mise à jour affichage (WS)
AFF->>CH: Plaque + quai assigné
CH->>CH: Se gare au quai indiqué
CH->>CAR: Déchargement physique
Note over CAR: Décharge depuis l'emplacement<br/>le plus éloigné du quai
CAR->>CAR: TRF > Réceptions > Image de quai
CAR->>WMS: Déclare nb palettes, poumon, position
WMS->>WMS: Crée palettes virtuelles PALETTE_US
WMS-->>CAR: Impression étiquettes (si type Autre)
AGV->>AGV: Récupère palettes sur image de quai
```
## Étape 1 - Annonce du camion (LIM-62)
### Création de la réception
L'agent de quai accède à la vue **Ordre d'entrée > Réceptions** dans SmartUI.
Il crée une nouvelle réception en saisissant :
- **Plaque d'immatriculation** (champ "Camion", ex-"Document") - non
obligatoire à la création, peut être renseignée après coup
- **Destination** : `PARKING` (quai fictif d'attente) par défaut, ou un quai
réel si disponible
- **Ordres d'entrée** : sélection des OE du camion
### Contrôle de classe
> **Règle** : il est interdit de créer une réception mélangeant des OE de
> classes de préavis de réception différentes (`InboundClassCode`).
Si l'utilisateur sélectionne des OE de classes différentes, un message
d'erreur bloque la création :
> *"Impossible de créer une réception avec des ordres d'entrée ayant des
> classes de préavis de réception différentes"*
Ce contrôle est implémenté dans le `VAssistCreateReceptionOE` (steps 2 et 3)
et dans la vue des ordres d'entrées. L'exception compare le `InboundClassCode`
de chaque OE sélectionné au premier de la liste.
## Étape 2 - Assignation du quai ET de l'image de quai (LIM-62 → LIM-97 V2)
L'agent consulte les disponibilités via le **tableau d'occupation des quais**
(ViewDetailPanel dans la vue `ReceptionVList`). Il sélectionne la réception,
puis assigne **deux éléments** :
- un **quai réel** (`QUAI_01` à `QUAI_06`) ou le quai fictif `PARKING` ;
- une **image de quai** (poumon de réception) sur laquelle les palettes seront
déposées.
L'assignation se fait au niveau de l'image de quai **prise comme une unité**,
et non au niveau de ses 26 sous-emplacements.
### Mécanisme faux stage / vrai stage (V2)
> [CUSTOM] Contournement mis en place car EasyWMS ne sait pas assigner une
> image de quai comme un objet unique.
Écart constaté au développement (LIM-97) par rapport à la tâche initiale
LIM-62 :
- Aucune commande standard ne permet d'assigner une station en tant que
**Stage / DockStage** : le WMS ne sait assigner qu'un **emplacement**. Une
assignation « station = Stage » devrait passer par un `CstAtt`.
- Si on proposait le **vrai stage** (le poumon physique réel) à l'assignation,
le WMS afficherait ses **26 sous-emplacements** (soit 286 au total sur les
11 poumons). L'opérateur ne pourrait pas le choisir comme une unité.
Solution retenue : deux notions de stage par image de quai.
| Notion | Rôle |
|--------|------|
| **Faux stage** (`A` à `K`) | Station fictive, une par image de quai, portant un nom propre simple. C'est ce que l'opérateur **sélectionne sur le PC**, en plus du quai réel. Sa seule raison d'être : présenter l'image de quai comme un **objet unique** (une seule sélection, sans dérouler les 286 emplacements). |
| **Vrai stage** | Le **poumon physique** de 26 emplacements où les palettes sont réellement déposées. Il conserve une **route vers le quai d'expédition** (à préserver pour le chargement camion). |
L'opérateur choisit donc, pour chaque réception : (1) un quai réel (ou
`PARKING`), (2) un faux stage (`A` à `K`) représentant l'image de quai.
> ⚠️ **Effet de bord** : les tâches générées ont pour destination le **faux
> stage** et non un emplacement réel du poumon. Le rattachement faux stage →
> emplacement du vrai stage → quai d'expédition relève d'un mécanisme de
> routage encore ouvert (custom sur la fin d'ordre au PS), car il touche au
> flux d'expédition. Voir [Questions ouvertes](#questions-ouvertes) et
> [Assignation automatique de l'image de quai](../04-outbound/assignation-image-quai.md)
> (LIM-94, stages virtuels `X_EXP` côté expédition).
### Règles d'assignation
- Le quai et l'image de quai (faux stage) sont réservés dès la sélection
- Un quai / une image de quai partiellement occupé peut être réutilisé
(gestion manuelle de la place restante)
- ~~Blocage si flux différent (ex : expédition)~~ - supprimé
- Si aucune image de quai disponible → l'opérateur conserve `PARKING` et attend
une libération
- Modification possible a posteriori
### Tableau d'occupation des quais
Le panneau `CST_Docks_Workload` (Column Span = 2) affiche pour chaque quai les
réceptions, tournées et OS associés avec les plaques correspondantes :
| Quai | Réceptions / Camions |
|------|----------------------|
| PARKING | [18-02-26_001 - ES-116-NA] ; [18-02-26-002 - GS-920-XJ] |
| QUAI_01 | |
| QUAI_02 | [18-02-26_006 - DJ-100-XD] |
| ... | |
Ce tableau est aussi disponible dans le `VAssistReceptionAssignDock` (step 1
utilise l'entité `CST_DockStationsWorkloadForView` au lieu de `Station`).
## Étape 3 - Affichage chauffeur (LIM-63)
> **Statut Jira (16/07/2026)** : En cours de test client (pré-production).
> Revue de code validée le 27/03/2026 (Nicolas Chabanis).
Une **station de travail dédiée** (`CST_Workstation_Docks`) affiche, sur un écran
extérieur au parking, les quais assignés avec les plaques d'immatriculation des
camions. La vue ouvre automatiquement un workflow qui récupère les quais et
appelle un dialogue d'affichage EasyBuilder. But : indiquer aux chauffeurs où
attendre / se garer.
### Spécifications
- Afficher uniquement les quais ayant des réceptions ou OS associés
- Prévoir l'affichage de **6 quais principaux + le parking** (placé en haut)
sans avoir à scroller
- Afficher les plaques (champ "Camion" / Document)
- Les plaques sont récupérées via la query `CST_DockStationsWorkload_ForView`
(mutualisée avec LIM-62)
### Implémentation technique (LIM-63)
| Élément AD | Type | Rôle |
|-----------|------|------|
| `CST_Workstation_Docks_DisplayDocksInformation` | Dialog | Récupère la liste des quais et l'affiche ; place les 6 quais principaux + Parking en haut |
| `CST_Workstation_Dock` | Workflow | Récupère tous les quais (code + OE/OS assignés), filtre les quais 1 à 7 (`Take(7)`), les ordonne par numéro, puis appelle le dialogue |
| `CST_Workstation_Docks` | ViewGroup + View | Vue de la station de travail ; ouvre le workflow par défaut |
| `RealStationWF.CST_LicencePlates` | Champ (Record) | Nouveau champ stockant les plaques (préféré à un CustomAttribute - décision de revue de code) |
| `CST_Workstation_Docks` | Ressource i18n | FR « Quais » / EN « Docks » |
| MenuItem `PanelMode = true` | Menu | Entrée d'accès ouvrant la vue en mode panneau |
> **Référence technique** : dialogue EasyBuilder, cf. [documentation
> Mecalux](https://msscc.mecalux.com/documentation/Development/master/ES/map_working_easybuilder/user_manual/dialogs/index.md)
## Étape 4 - Déclaration image de quai (LIM-64 V1 → LIM-96 V2)
> **Statut Jira (17/07/2026)** : LIM-64 (déclaration image de quai **V1**)
> est **clôturé / annulé** (revue de code validée le 02/04/2026), repris par
> [LIM-96 - Déclaration image de quai V2](https://easywmsfrance.atlassian.net/browse/LIM-96)
> (**En cours de test client / préprod**, revue de code validée le 25/06/2026).
> Le contenu ci-dessous reflète la **V2**. Évolutions majeures V2 vs V1 :
> sélection / réservation de l'image de quai déplacée côté **SmartUI (web)** et
> non plus dans le TRF ; nouvel **écran de déclaration des ordres d'entrée**
> (rattachement de chaque emplacement occupé à un OE → `CstAtt13`) ; nouvel
> **écran de validation du collage des étiquettes** (pose `CstAtt12 = true`,
> qui conditionne la prise en charge par le job AGV LIM-71) ; bouton de
> réimpression dans la confirmation d'étiquetage.
Après déchargement physique, le cariste déclare les palettes via un menu TRF
dédié **Réceptions > Image de quai**. En V2, la sélection de l'image de quai
elle-même se fait côté **SmartUI** (vue d'assignation), le TRF se limitant à
confirmer l'image de quai puis à dérouler la déclaration.
> [CUSTOM] **Sélection image de quai côté SmartUI (V2, Vincent Charvet 17/06)** :
> l'image de quai est réservée depuis SmartUI (routes dock → stage virtuel
> ajoutées au layout, dialogues `CST_DockStageReception_SelectStage` /
> `CST_DockStageReception_ConfirmStage`, vue `VAssistReceptionAssignDock` avec
> conditions sur les stages proposés). Pour les types **Production** et **Pile
> de palette**, on reprend le fonctionnement antérieur : choisir directement
> l'image de quai, sans passer par la recherche d'une réception puis la
> confirmation de l'image associée (Arthur, 17/06).
### Règle de déchargement physique
Le cariste doit décharger en commençant par l'emplacement le **plus éloigné
du quai** en suivant un ordre précis. Cela permet d'identifier les
emplacements occupés pour les AGV.
### Workflow d'écrans (V2)
Le parcours d'écrans dépend du type de réception :
- **Production / Pile de palette** : type → image de quai → nombre →
sous-emplacement → déclaration OE → validation
- **Autres** (fournisseur, intersite, retours) : type → réception →
confirmation image de quai → nombre → sous-emplacement → big-bag →
déclaration OE → validation → **validation du collage des étiquettes**
> Les deux écrans **Déclaration des ordres d'entrée** et **Validation du
> collage des étiquettes** sont des ajouts V2 (voir ci-dessous). La
> numérotation ci-dessous suit l'ordre logique de la V1 ; le WF réel
> (`CST_Reception_DockStage_UI`) applique l'ordre V2 : image de quai
> d'abord, puis nombre, puis sous-emplacement.
#### Écran 1 - Type de réception
Choix parmi :
- Production
- Autres (fournisseur, intersite, retours, etc.)
- Pile de palette
Échap : retour menu.
#### Écran 2 - Sélection de la réception
Uniquement si type = **Autres**. L'opérateur choisit la réception concernée.
Échap : retour écran 1.
#### Écran 3 - Nombre de palettes
Prompt : « Nombre de palettes de la réception »
Validation :
- Nombre entre 1 et 26 inclus
- Somme des supports déjà présents sur le poumon + nombre saisi ≤ 26
Message d'erreur explicatif si invalide. Échap : retour écran 2.
#### Écran 4 - Choix image de quai (poumon)
Le workflow liste tous les poumons liés aux quais (réception + expédition)
puis filtre :
- Exclure les poumons ayant des supports clients (liés à des OS) ou des
tâches de shipping en destination
- Exclure les poumons pleins (supports = capacité)
- Exclure les poumons sans assez d'emplacements libres consécutifs après le
dernier conteneur
> **Double check** : au moment du choix effectif, les vérifications sont
> refaites - entre l'affichage de la liste et la sélection, la réalité a pu
> changer.
Échap : retour écran 3.
#### Écran 5 - Sous-emplacement de départ
Prompt : « Sous-emplacement de la première palette de la réception »
Validation :
- Nombre valide
- L'emplacement de départ et tous les suivants (pour atteindre le nombre de
palettes déclaré) doivent être **vides**
Exemple : si des palettes d'une autre réception occupent la position 5, et
qu'on déclare 5 palettes à partir de la position 3, c'est rejeté car la
position 5 est occupée.
Échap : retour écran 4.
#### Écran 6 - Présence de big-bags
Uniquement si type = **Autres**.
Prompt : « Présence d'un big-bag parmi les palettes de la réception ? »
Boutons OUI / NON. L'information est conservée pour la suite du flux.
Échap : retour écran 4.
#### Écran - Déclaration des ordres d'entrée (V2)
> Ajout V2 (LIM-96). Rattache chaque palette (emplacement occupé) à son
> **ordre d'entrée** → pose le `CstAtt13` (« Ordre d'entrée ») sur le
> support, **dès l'image de quai** (et non plus seulement au PK).
> **Ordre d'exécution** : côté implémentation, les conteneurs sont
> **déjà créés** quand cet écran s'affiche (l'écran scanne des palettes
> existantes pour vérifier leur appartenance à la réception). La création
> décrite à l'écran 7 ci-dessous intervient donc **en amont** de la
> déclaration OE dans le WF réel.
Pour chaque OE de la réception, l'opérateur sélectionne les emplacements
concernés :
- La liste ne propose que les **emplacements portant une palette de la
réception en cours**
- Boucle sur un dialogue avec un **compteur** de conteneurs qui
s'incrémente, et un bouton **« Ordre suivant »** pour passer à l'OE
suivant
- À chaque scan, le WMS vérifie le conteneur sur l'emplacement (qui vient
d'être créé) et qu'il correspond bien à la réception en cours
- Si le conteneur a **déjà été sélectionné**, l'opérateur en est informé ;
une confirmation permet de **corriger** une erreur de saisie antérieure
#### Écran 7 - Validation et création
Récapitulatif affiché :
- Image de quai
- Type de réception
- Nombre de palettes
- Sous-emplacement de départ
- Présence de big-bags (si applicable)
À la validation :
1. **Création des palettes virtuelles** : type `PALETTE_US`, réparties sur les
sous-emplacements consécutifs à partir de la position de départ
2. **Séquence spéciale** : 18 caractères commençant par `8`
(ex : `800000000000000001`, `800000000000000002`, etc.)
- cf. [LIM-14](https://easywmsfrance.atlassian.net/browse/LIM-14)
3. **Impression étiquettes** : uniquement si type = **Autres**, une étiquette
par palette déclarée (format LIM-65)
Échap : retour écran 5. Après validation : retour écran 2.
> **Validation de sécurité** : si le poumon ou la position de départ est
> devenu indisponible entre l'écran 5 et la validation, un message d'erreur
> est affiché. Idem si la réception sélectionnée a été supprimée entre-temps.
> **Séquence** : le préfixe de la séquence 18 caractères a été corrigé de
> `800000` à `800` en revue de code (cf. [LIM-14](https://easywmsfrance.atlassian.net/browse/LIM-14)).
#### Écran - Validation du collage des étiquettes (V2)
> Ajout V2 (LIM-96), affiché après impression pour les réceptions de type
> **Autres**.
Dialogue : « Confirmez-vous avoir collé toutes les étiquettes ? Oui
entraînera la récupération des palettes par les AGV » avec un bouton
**Oui** et un bouton de **réimpression** (`CST_Reception_DockStage_ConfirmLabels`).
À la confirmation (Oui) :
- Le `CstAtt12` (« Conteneur étiqueté ») de **toutes les palettes
virtuelles** de la réception est mis à `true` - **y compris** les
palettes qui n'ont pas besoin d'étiquette (Production / Pile)
- Ce flag conditionne la prise en charge par le **job AGV
[LIM-71](https://easywmsfrance.atlassian.net/browse/LIM-71)** : les
palettes ne sont **déplacées que si `CstAtt12 = true`** (« on ne bouge
pas les palettes s'il n'y a pas d'étiquettes »)
> ⚠️ **À réconcilier avec LIM-71** : la page
> [Job réception production](../05-agv/job-reception-production.md) indique
> que la condition `CstAtt12` avait été **retirée** du job (palettes
> production / piles sans étiquette). LIM-96 réintroduit un contrôle
> `CstAtt12 = true` comme **gate de prise AGV** en le posant pour *toutes*
> les palettes à cet écran. Confirmer la logique effective côté job LIM-71
> (voir [Questions ouvertes](../08-transverse/questions-ouvertes.md)).
### Attributs de support renseignés
Chaque palette virtuelle créée porte des CustomAttributes exploités en aval,
affichés dans la vue des supports (`ContainerVList`) :
| Attribut | Contenu | Libellé vue support |
|----------|---------|---------------------|
| `CustomAttribute1` | Réception big-bag | Reception big-bag [CST 1] |
| `CustomAttribute4` | Réception ASN | Reception ASN [CST 4] |
| `CustomAttribute8` | Code de la réception | Reception [CST 8] |
| `CustomAttribute13` | Code de l'ordre d'entrée (posé à l'écran déclaration OE, V2) | Ordre d'entrée [CST 13] |
| `CustomAttribute12` | Conteneur étiqueté (posé à `true` à l'écran collage étiquettes, V2) | - |
Le `CstAtt08` (code réception) sert notamment à compter les palettes déjà
déclarées pour une réception. Le `CstAtt13` (ordre d'entrée) est désormais
posé **dès l'image de quai** (écran déclaration OE), et non plus seulement
au PK. La vue `ContainerVList` affiche les CstAtt 1, 4, 8 et 13.
> **Distinction big-bag (confirmée V2)** : le `CstAtt01` du support virtuel
> (« Réception big-bag ») est le flag **au niveau réception** saisi à l'écran
> big-bag de la déclaration image de quai. Le flag big-bag **par support**
> (posé au poste de travail réception) est porté par le `CstAtt02` (cf.
> glossaire). Les deux coexistent : réception vs support.
### Compteur de palettes déjà déclarées
L'écran de données de réception affiche le **nombre de supports déjà déclarés**
pour la réception en cours, à côté du « Nombre de supports prévus ». Ce nombre
est calculé en comptant les conteneurs dont le `CustomAttribute8` = code de la
réception (query `CST_Reception_NumDeclaredContainers`).
### Réimpression d'étiquette
Un bouton de **réimpression** est disponible depuis la vue des supports
(`ContainerVList`). Il n'est visible que pour un **support fictif** (code
commençant par `800`) et **actif** (`IsActive`). Une seule impression regroupe
toutes les étiquettes demandées. Un message d'erreur est levé si aucune
imprimante n'est configurée.
### Mode « Pile de palettes » (palettes bois)
Un mode de réception **pile de palettes** a été ajouté (Justine, 16/04/2026) :
le stock créé utilise un produit dédié de type `PALETTES BOIS`, récupéré via la
query `CST_GetPileProduct`.
### KPI - conteneurs par type de réception (LIM-102)
> Statut : préprod, revue de code validée le 03/06/2026 (Maxime Halgand),
> commit [`5a7d213d48`](https://msscode.mecalux.com/Proyectos_SW/EASYWMS_11351_LIMAGRAIN/commit/5a7d213d48bcfa4aa78cca511ce172cb226e9883).
Pour tracer le **nombre de conteneurs créés par type de réception**, chaque
conteneur créé par le process de réception custom (LIM-96) génère une
transaction **`CON.CREATE.RECEP`** (catalogue :
[Paramètres projet](../07-admin/parametres-projet.md#transactions-customs)).
| Champ | Contenu |
|-------|---------|
| `TransactionTypeCode` | `CON.CREATE.RECEP` |
| `LocationCode` | Emplacement du conteneur |
| `ContainerCode` | Code conteneur |
| `Document1` | **Type de réception** (dimension du KPI) |
| `IdOrig` | Id du conteneur |
Le `Document1` prend l'une des valeurs suivantes :
- `PALETTE BOIS` (mode pile de palettes) ;
- `PRODUCTION` ;
- pour une réception de type **AUTRES** : le `InboundClassCode` de la réception.
Le WF `CST_Reception_DockStage_UI` récupère le `InboundClassCode` de la
réception, et `CST_Reception_DockStage_CreateContainers_PR` crée la transaction.
### Implémentation technique (LIM-64 V1 → LIM-96 V2)
| Élément AD | Type | Rôle |
|-----------|------|------|
| `CST_Reception_DockStage_UI` | Workflow | Process principal : ordre V2 (image de quai → nombre → sous-emplacement), déclaration OE, confirmation collage ; gère le mode pile de palettes ; récupère le `InboundClassCode` de la réception pour le KPI (LIM-102) |
| `CST_Reception_DockStage_CreateContainers_PR` | Workflow | Création des conteneurs (code via séquence) ; crée la transaction `CON.CREATE.RECEP` avec `Document1` = type de réception (KPI, LIM-102) |
| `CST_Reception_DockStage_PrintLabels` | Workflow | Impression des étiquettes des conteneurs créés (V2) |
| `CST_DockStageReception_SelectStage` | Dialog | Sélection de l'image de quai (renommé depuis `CST_DockStageReception_GetStage`, V2) |
| `CST_DockStageReception_ConfirmStage` | Dialog | Confirmation de l'image de quai sélectionnée (V2) |
| `CST_DockStageReception_BigBag` | Dialog | Sélection présence big-bag |
| `CST_DockStageReception_Validation` | Dialog | Récapitulatif et validation |
| `CST_Reception_DockStage_ConfirmLabels` | Dialog | Confirmation du collage des étiquettes + bouton réimpression (V2) |
| `CST_DockStageStations_WithoutAssignation` | Query | Poumons disponibles (renommé depuis `CST_DockStageStations_WithoutOutbound`, supprimée ; ajout de conditions sur réceptions / OS / routes assignés). Ne renvoie que les **stages physiques**, pas les stages virtuels d'expédition |
| `CST_Receptions_PendingAndReceiving_WithDockStageAssigned` | Query | Clone de `Receptions_PendingAndReceiving` avec condition sur le quai et le stage associé (V2) |
| `CST_Reception_NumDeclaredContainers` | Query | Nombre de conteneurs d'une réception (via `CstAtt08`) |
| `CST_GetPileProduct` | Query | Produit `PALETTES BOIS` (mode pile de palettes) |
| `StageWF.CST_GreatestOccupiedPosition` | Champ (Record) | Position X la plus haute occupée sur l'image de quai |
| `CST_RPT_DOCKSTAGERECEPTION_VIRTUAL_CONTAINER_LABEL` | Report | Étiquette support virtuel (impression multiple simultanée) |
| `ContainerVList` | View | Bouton réimpression + colonnes CstAtt 1, 4, 8, 13 |
| `VAssistReceptionAssignDock` / `VAssistOutboundOrderAssignDock` / `VAssistRouteAssignDock` | Vue | Conditions sur les stages proposés lors de l'assignation SmartUI (V2) |
| Routes dock → stage virtuel | Layout | Ajoutées pour l'assignation de l'image de quai côté SmartUI (V2) |
Ressources i18n V2 : `CST_Reception_DockStage_ConfirmPrinting`,
`CST_Reception_DockStage_NoInboundOrder`, `CST_View_InboundOrder`
(« Ordre d'entrée [CST 13] »), `CST_InboundOrder_Asociated_1`,
`CST_InboundOrderSelection_End`, `CST_NextOrder`.
Commit V2 : [`1b2570b164`](https://msscode.mecalux.com/Proyectos_SW/EASYWMS_11351_LIMAGRAIN/commit/1b2570b16429102b93d1f1d860f6fa807ee5ede8)
(migration sélection image de quai vers SmartUI).
## Étiquette support image de quai (LIM-65)
> **Statut Jira (16/07/2026)** : En cours de test client (pré-production).
> Revue de code validée le 25/06/2026.
Format **A5 paysage**. Imprimée pour chaque palette d'une réception qui n'est
**pas de type PRODUCTION** (impression déclenchée par le workflow de LIM-96).
| Champ | Contenu |
|-------|---------|
| CODE | Code du support (séquence 8xxx) |
| RECEPTION | Code de la réception |
| DATE | Date d'impression |
| EMPL. | Sous-emplacement du poumon |
| OE | Code de l'ordre d'entrée (ajouté 06/2026 - en texte sous la réception) |
| QR Code | Code support + code OE au format GS1 |
### QR Code GS1
Le QR Code encode deux données au format GS1 :
- AI `00` → code du support (SSCC)
- AI `91` → code de l'ordre d'entrée
Exemple : `#00800000000000000001#91804565206`
Ce label GS1 est réutilisé dans le **flux retour fournisseur** : le scan permet
de récupérer à la fois le support et l'OE.
### Implémentation technique (LIM-65)
| Élément AD | Type | Rôle |
|-----------|------|------|
| `CST_RPT_DOCKSTAGERECEPTION_VIRTUAL_CONTAINER_LABEL` | Report | Étiquette support virtuel - ajout du code OE + QR Code (support + OE) |
| `ParsedContainerLabelWF` | Record | Ajout du champ code d'ordre d'entrée |
| `ParseContainerLabel` | Workflow | Parse de l'identifiant GS1 `#91` → code OE |
| `CST_Reception_Return_ATH214_CheckData_UI` | Workflow | Parse container sur le dialog du code OE (scan QR) - flux retour |
## Implémentation technique (AD customs)
### Entités
| Entité | Usage |
|--------|-------|
| `CST_DockStationsWorkloadForView` | Affichage occupation des quais dans les vues réception |
### Queries
| Query | Entité cible |
|-------|-------------|
| `CST_DockStationsWorkload_ForView` | `CST_DockStationsWorkloadForView` |
### Vues modifiées
| Vue | Modification |
|-----|-------------|
| `ReceptionVList` | ViewDetailPanel `CST_Docks_Workload` (Column Span = 2) - occupation quais |
| `VAssistCreateReceptionOE` | Exception steps 2 et 3 - blocage classes OE différentes |
| `VAssistCreateReceptionOEFromReceptions` | Mêmes conditions sur les classes d'OE - blocage à la création de réception depuis la vue des ordres d'entrées (LIM-97) |
| `VAssistReceptionAssignDock` | Step 1 : entité `CST_DockStationsWorkloadForView` remplace `Station` ; assignation du quai réel + du faux stage (image de quai en unité) |
### Élément AD - faux stages (LIM-97)
| Élément AD | Type | Rôle |
|-----------|------|------|
| Faux stages `A` à `K` | Station fictive | Une par image de quai ; sélectionnable comme unité à l'assignation SmartUI (voir [Mécanisme faux stage / vrai stage](#mécanisme-faux-stage--vrai-stage-v2)). Nouveau, à formaliser dans l'AD |
### Ressources i18n
| Code | FR | EN |
|------|----|----|
| `CST_Reception_MultiClassError` | Impossible de créer une réception avec des ordres d'entrée ayant des classes de préavis de réception différentes | Can't create reception with inbound orders with different inbound order class |
| `CST_Prop_Reception_Document` | Camion | Truck |
| `CST_ViewField_VAssistantCreateReceptionOE_Truck` | #KEY#[CST_Prop_Reception_Document, PARAMS[]] | #KEY#[CST_Prop_Reception_Document, PARAMS[]] |
| `CST_Prop_Station_Workload` | Réceptions / Camions | Receptions / Trucks |
| `CST_Reception_DockWorkload_Panel_Title` | Occupation des quais | Docks workload |
> **Note** : toutes les ressources custom sont préfixées `CST_` (convention
> Mecalux France validée lors de la revue de code).
> **Divergence de libellé (LIM-97 §8.4)** : `CST_Prop_Station_Workload` a été
> commentée « Assignations / Camions » (Vincent, 05/03) puis « Réceptions /
> Camions » en revue de code (Nicolas, 06/03) - valeur retenue par défaut,
> alignée sur le tableau d'occupation ci-dessus. À confirmer.
### Revue de code
- **05/03/2026** - Vincent Charvet : implémentation initiale
([`1d2acc3e6e`](https://msscode.mecalux.com/Proyectos_SW/EASYWMS_11351_LIMAGRAIN/commit/1d2acc3e6efef09df3e2a760574e35afd30ca166))
- **06/03/2026** - Nicolas Chabanis : revue non valide (préfixes ressources,
commentaire `//Custom end` manquant, Column Span, titre colonne)
- **09/03/2026** - Nicolas Chabanis : **revue validée**
## Points d'attention
- La plaque du camion n'est **pas obligatoire** à la création de la réception
- elle peut être renseignée après coup (confirmé 09/03/2026)
- Le déchargement doit respecter l'ordre : emplacement le plus éloigné
d'abord, sinon les AGV ne peuvent pas identifier correctement les positions
occupées
- La capacité maximale d'un poumon est de **26 emplacements**
- Les palettes de type "Production" ne génèrent **pas** d'étiquettes au TRF
(elles arrivent déjà étiquetées via ASN)
- Le double-check de disponibilité du poumon au moment du choix est
**critique** pour éviter les collisions entre opérateurs simultanés
- Les séquences de supports virtuels commencent par `8` et font 18 caractères
- ne pas confondre avec les séquences SSCC standard
- **V2 (LIM-97)** : la tâche générée vise le **faux stage**, pas un emplacement
réel du poumon ; un custom (fin d'ordre au PS) doit rediriger la destination
vers le bon emplacement du vrai stage, et la **route vers le quai
d'expédition** doit être préservée pour le chargement camion
- **V2 (LIM-97)** : une **27e palette** ne tient pas sur l'image de quai
(capacité 26) ni dans le camion ; sans traitement, le process plante
- **V2 (LIM-97)** : la **dépose AGV** sur des positions serrées de l'image de
quai peut se bloquer si l'ordre de dépose n'est pas respecté (un AGV en
position 26 avant un AGV en position 23)
## Questions ouvertes
- ❓ Gestion TRF si AGV pas prêts au démarrage - lié aussi à la déclaration
image de quai (@Théo)
- ❓ Position étiquette image de quai (devant/côté palette) - à valider
avec le client (@Justine)
- ❓ Faut-il rendre la saisie du camion (plaque) obligatoire pour garantir
la cohérence de l'affichage chauffeur ? (@Justine)
- Routage de la tâche faux stage → emplacement du vrai stage → quai
d'expédition (LIM-97 §8.1) : proposition = custom sur la fin d'ordre au PS
qui redirige la destination, logique différenciée par `locationType` (buffer
vs DockStage). Risque de rollback en boucle (mouvement généré à la fin
d'ordre au PS) ; cadencement AGV à reconfirmer avec Still (@Vincent / @Still)
- Débordement au-delà de 26 palettes sur l'image de quai (27e palette,
LIM-97 §8.2) : à arbitrer (ne pas générer la tâche tant qu'aucune place ne
se libère, ou maintenir la palette en zone tampon ASRS) (@Justine)
- Ordonnancement de la dépose AGV sur l'image de quai (positions serrées,
LIM-97 §8.3) : dépose sans position précise (l'AGV choisit l'emplacement
libre le plus proche puis le remonte au WMS) ou respect strict de l'ordre
des STOP (LIM-88) ; à valider en réunion technique dédiée (@Théo / @Still)
## Historique des modifications
| Date | Auteur | Modification |
|------|--------|-------------|
| 2026-05-06 | Arthur | Création initiale depuis LIM-62, LIM-63, LIM-64, LIM-65 |
| 2026-07-16 | Arthur | Mise à jour statut LIM-62 : V1 clôturée/annulée, validée fonctionnellement (Justine 27/05), suite en LIM-97 (V2) |
| 2026-07-16 | Arthur | LIM-63 : ajout implémentation technique (station `CST_Workstation_Docks`, workflow, dialog, champ `CST_LicencePlates`) + statut pré-production |
| 2026-07-16 | Arthur | LIM-64 : statut V1 annulée → LIM-96 (V2) ; ajout attributs support (CstAtt01/04/08), compteur palettes déclarées, réimpression, mode pile de palettes, éléments AD |
| 2026-07-16 | Arthur | LIM-65 : ajout champ OE sur l'étiquette + QR Code GS1 (AI 00 support / AI 91 OE) réutilisé flux retour fournisseur, éléments AD parsing ; statut pré-production |
| 2026-07-17 | Arthur | Intégration LIM-96 V2 (préprod, revue de code validée 25/06) : étape 4 réécrite (statut V1→V2), sélection image de quai côté SmartUI (dialogues `CST_DockStageReception_SelectStage`/`ConfirmStage`, `VAssistReceptionAssignDock`, routes dock→stage virtuel), écran **Déclaration des OE** (CstAtt13 posé dès l'image de quai), écran **Validation collage étiquettes** (CstAtt12=true, gate job LIM-71 + caveat réconciliation), workflow d'écrans V2, attributs support (+CstAtt12/CstAtt13), table AD V2 (query renommée `CST_DockStageStations_WithoutAssignation`, clone `CST_Receptions_PendingAndReceiving_WithDockStageAssigned`, WF `CST_Reception_DockStage_PrintLabels`, ressources, commit `1b2570b164`), distinction big-bag CstAtt01/CstAtt02 confirmée ; front matter sources/last_updated |
| 2026-07-20 | Arthur | Intégration LIM-97 (Gestion camions V2, préprod, validé Vincent 02/07) : étape 2 réécrite (assignation quai + image de quai, **mécanisme faux stage A-K / vrai stage**, effet de bord routage) ; ajout vue `VAssistCreateReceptionOEFromReceptions` + ressource `CST_ViewField_VAssistantCreateReceptionOE_Truck` + Élément AD faux stages A-K ; libellé `CST_Prop_Station_Workload` corrigé (Réceptions / Camions + caveat §8.4) ; 3 points d'attention V2 (débordement 27e palette, ordonnancement dépose AGV, routage à préserver) ; 3 questions ouvertes (routage §8.1, débordement §8.2, ordonnancement §8.3) ; front matter sources/last_updated |
| 2026-07-20 | Arthur | Intégration LIM-102 (KPI conteneurs par type de réception, préprod, revue validée 03/06) : nouvelle sous-section KPI (transaction `CON.CREATE.RECEP`, `Document1` = type de réception : PALETTE BOIS / PRODUCTION / InboundClassCode) ; enrichissement des WF `CST_Reception_DockStage_UI` (récupération InboundClassCode) et `CST_Reception_DockStage_CreateContainers_PR` (création transaction) ; jira_refs +LIM-102 |
## Références
| Source | Type | Date |
|--------|------|------|
| [LIM-62](https://easywmsfrance.atlassian.net/browse/LIM-62) | Ticket Jira (V1 - Annulé, suite LIM-97) | 18/02/2026 |
| [LIM-97](https://easywmsfrance.atlassian.net/browse/LIM-97) | Ticket Jira (Gestion camions V2 - préprod, validé Vincent 02/07/2026, faux stages A-K, commit `1d2acc3e6e`) | 2026 |
| [LIM-63](https://easywmsfrance.atlassian.net/browse/LIM-63) | Ticket Jira (affichage chauffeurs - pré-production) | 2026 |
| [LIM-64](https://easywmsfrance.atlassian.net/browse/LIM-64) | Ticket Jira (V1 - Annulé, suite LIM-96) | 18/02/2026 |
| [LIM-96](https://easywmsfrance.atlassian.net/browse/LIM-96) | Ticket Jira (déclaration image de quai V2 - préprod, revue de code validée 25/06, commit `1b2570b164`) | 2026-06 → 07 |
| [LIM-65](https://easywmsfrance.atlassian.net/browse/LIM-65) | Ticket Jira (étiquette support - pré-production) | 2026 |
| [LIM-102](https://easywmsfrance.atlassian.net/browse/LIM-102) | Ticket Jira (KPI conteneurs par type de réception - préprod, revue validée 03/06, commit `5a7d213d48`) | 2026 |
| [LIM-14](https://easywmsfrance.atlassian.net/browse/LIM-14) | Ticket Jira (séquences supports) | 2026 |