---
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 |
