349 lines
13 KiB
Markdown
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 |
|