Files
mcp-wms-wiki/wiki_old_13-05-2026/limagrain/01-inbound/gestion-camions.md
T
2026-05-20 09:41:27 +02:00

349 lines
13 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]
confluence_refs: []
sources: [LIM-62_gestion-camions.md, LIM-63_64_65.md]
last_updated: 2026-05-06
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.
## 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 (LIM-62)
L'agent consulte les disponibilités via le **tableau d'occupation des quais**
(ViewDetailPanel dans la vue `ReceptionVList`). Il sélectionne la réception et
assigne un quai réel.
### Règles d'assignation
- Le quai et l'image de quai sont réservés dès la sélection
- Un quai partiellement occupé peut être réutilisé (gestion manuelle de la
place restante)
- ~~Blocage si flux différent (ex : expédition)~~ — supprimé
- Si aucun 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)
Un écran d'affichage extérieur (WS / dialogue EasyWMS) montre aux chauffeurs
sur le parking les quais assignés avec les plaques d'immatriculation.
### Spécifications
- Afficher uniquement les quais avec des réceptions ou OS associés
- Prévoir l'affichage de **6 quais + le parking** sans scroll
- Afficher les plaques (champ "Camion" / Document)
> **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 via TRF (LIM-64)
Après déchargement physique, le cariste déclare les palettes via un menu TRF
dédié **Réceptions > Image de quai**.
### 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 7 écrans
Le parcours d'écrans dépend du type de réception :
- **Production** : écrans 1, 3, 4, 5, 7
- **Autres** (fournisseur, intersite, retours) : écrans 1, 2, 3, 4, 5, 6, 7
#### É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 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.
## Étiquette support image de quai (LIM-65)
Format **A5 paysage**. Imprimée pour chaque palette de type "Autres"
(pas pour la production).
| Champ | Contenu |
|-------|---------|
| CODE | Code du support (séquence 8xxx) |
| RECEPTION | Code de la réception |
| DATE | Date d'impression |
| EMPL. | Sous-emplacement du poumon |
| QR Code | Code du support |
## 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 |
| `VAssistReceptionAssignDock` | Step 1 : entité `CST_DockStationsWorkloadForView` remplace `Station` |
### 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_Prop_Station_Workload` | Assignations / Camions | Assignations / 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).
### 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
## 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)
## Historique des modifications
| Date | Auteur | Modification |
|------|--------|-------------|
| 2026-05-06 | Arthur | Création initiale depuis LIM-62, LIM-63, LIM-64, LIM-65 |
## Références
| Source | Type | Date |
|--------|------|------|
| [LIM-62](https://easywmsfrance.atlassian.net/browse/LIM-62) | Ticket Jira | 18/02/2026 |
| [LIM-63](https://easywmsfrance.atlassian.net/browse/LIM-63) | Ticket Jira | 2026 |
| [LIM-64](https://easywmsfrance.atlassian.net/browse/LIM-64) | Ticket Jira | 2026 |
| [LIM-65](https://easywmsfrance.atlassian.net/browse/LIM-65) | Ticket Jira | 2026 |
| [LIM-14](https://easywmsfrance.atlassian.net/browse/LIM-14) | Ticket Jira (séquences supports) | 2026 |