# LIM-62 — #LOT1.1 [RECEPTION] Gestion camions | Champ | Valeur | |---|---| | **Clé** | [LIM-62](https://easywmsfrance.atlassian.net/browse/LIM-62) | | **Projet** | LIMAGRAIN - DEV | | **Type** | Tâche | | **Statut** | En cours de test client (pré-production) | | **Priorité** | Medium | | **Rapporteur** | Arthur Ria | | **Assigné** | Arthur Ria | | **Epic** | LIM-1 | | **Créé le** | 18/02/2026 | | **Mis à jour** | 13/04/2026 | --- ## Contexte ### Arrivée et déclaration du camion Ce flux concerne l'arrivée physique d'un camion sur le site et son orientation vers un quai de déchargement. Il est commun à tous les types de réception. Il existe un emplacement fictif **PARKING**, plusieurs quais et plusieurs poumons de réception (parfois appelés "image de quai"). ### Résumé Un camion contient plusieurs OE. Un responsable crée la réception associée au camion dans la vue **"Ordre d'entrée > Réception"**. Il saisit la plaque d'immatriculation et la destination ("PARKING" ou un quai d'expédition). Ensuite, il choisit les OE concernés. L'affichage plaque + quai permet de guider le chauffeur. > **Note** : Chaque OE est flag via un CstAtt. Le gestionnaire verra tous les réceptions et pourra filtrer par plaque et/ou quai assigné. ### Flux détaillé #### Étape 1 : Annonce du camion à l'arrivée **Annonce manuelle par un agent de quai :** Le camion arrive sur site et s'annonce auprès d'un agent de quai. L'agent accède à la vue **"Ordre d'entrée > Réceptions"** dans SmartUI. Il crée une nouvelle réception d'ordres d'entrée en saisissant : - la plaque d'immatriculation du véhicule - la destination : par défaut **"PARKING"** (quai fictif d'attente) ou directement un quai réel si disponible - les OE concernés #### Étape 2 : Assignation du quai L'agent de quai consulte les disponibilités des quais et images de quai via un graphique dans la vue des Réceptions (à droite de la grille). Il sélectionne les réceptions dans la vue et associe un quai réel au camion (ou modifie le quai si "PARKING" est déjà appliqué). **Règles d'assignation :** - Le quai et l'image de quai sont réservés dès la sélection → il est quand même possible de réutiliser un combo quai/image de quai s'il y a de la place (gestion manuelle) - Blocage si flux différent (ex : expédition) - Si aucun quai n'est disponible → l'opérateur attend une libération ou choisit PARKING - ~~Un quai peut être déjà occupé mais non plein, dans ce cas, via calcul de la place restante, on peut l'attribuer~~ - Modification possible à posteriori si les contraintes d'exploitation l'exigent > Pour l'expédition, vérifier si l'image de quai a des supports associés à un OS. #### Étape 3 : Information au chauffeur Un écran d'affichage situé sur le parking montre la plaque d'immatriculation et le numéro de quai assigné. Le chauffeur peut ainsi se diriger vers le bon quai. Sera fait via une WS. --- ## Développement ### 1. Saisie plaque (Document) Dans la vue **Réceptions > Réception**, si on clique sur "Nouvelle réception du préavis de réception", que l'on sélectionne ses OE et que l'on fait suivant, renommer **Document** par **"Camion"** (à faire globalement dans le WMS pour les réceptions). Ici sera saisie la plaque du camion. Il faut empêcher l'utilisateur de créer une réception avec des ordres d'entrées de **classe différente**. Si c'est le cas, bloquer la création de la réception avec un message d'erreur : > *"Impossible de créer une réception avec des ordres d'entrée ayant des classes de préavis de réception différentes"* ### 2. Résumé occupation Dans l'espace à droite d'information globales, ajouter un tableau qui liste les quais. Pour chaque quai, afficher les combo réceptions/plaques associés ainsi que les combo tournées/plaques et OS/plaques. Exemple : | **QUAI** | **Réceptions / Camion** | |---|---| | 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] | | QUAI_03 | | | QUAI_04 | [18-02-26_012 - AR-096-IA] | | etc.. | | ### 3. Affichage chauffeur Voir [LIM-63](https://easywmsfrance.atlassian.net/browse/LIM-63) --- ## Cas de tests ### 1. Création de réception — Saisie plaque / OE | ID | Description | Préconditions | Actions | Résultat attendu | Validation Dév. | Validation CDP | |---|---|---|---|---|---|---| | C1-01 | OE de classes différentes sélectionnés | OE avec classes de préavis différentes existent | Sélectionner des OE de classes mixtes et faire Suivant | Blocage avec message : "Impossible de créer une réception avec des ordres d'entrée ayant des classes de préavis de réception différentes" | | | | C1-02 | OE de classes identiques — création OK | OE avec la même classe | Sélectionner des OE de même classe et faire Suivant | Passage à l'étape suivante, réception créée | | | | C1-03 | Un seul OE sélectionné (cas limite bas) | N/A | Sélectionner 1 seul OE | Création autorisée, pas de contrôle de classe bloquant | | | | C1-04 | Le champ "Document" est bien renommé "Camion" | N/A | Ouvrir le formulaire de nouvelle réception | Le libellé affiché est "Camion" et non "Document" | | | ### 2. Assignation de quai | ID | Description | Préconditions | Actions | Résultat attendu | Validation Dév. | Validation CDP | |---|---|---|---|---|---|---| | ~~A1-01~~ | ~~Quai avec flux expédition — blocage~~ | ~~Un quai est occupé par un flux expédition (supports liés à un OS)~~ | ~~Tenter d'assigner ce quai à une réception~~ | ~~Blocage, le quai n'est pas assignable~~ | | | | ~~A1-02~~ | ~~Quai PARKING assigné par défaut~~ | ~~N/A~~ | ~~Créer une réception sans choisir de quai réel~~ | ~~La destination est "PARKING" par défaut~~ | | | | A1-03 | Modification du quai après assignation initiale | Réception déjà assignée à PARKING | Modifier pour assigner un quai réel | La modification est acceptée, le nouveau quai est reflété | | | | A1-04 | Réassignation d'un combo quai/image de quai partiellement occupé | Quai avec de la place restante | Assigner une nouvelle réception sur ce même quai | Assignation autorisée (gestion manuelle de la place) | | | | ~~A1-05~~ | ~~Deux réceptions assignées simultanément au même quai plein~~ | ~~Quai/image de quai déjà plein~~ | ~~Tenter d'assigner une deuxième réception~~ | ~~Comportement défini : est-ce bloqué ou simple avertissement ? À clarifier~~ | | | ### 3. Tableau de résumé d'occupation des quais | ID | Description | Préconditions | Actions | Résultat attendu | Validation Dév. | Validation CDP | |---|---|---|---|---|---|---| | T1-01 | Un quai sans réception associée | Quai vide | Ouvrir la vue Réceptions | Le quai apparaît dans le tableau avec la colonne "Réceptions / Camion" vide | | | | T1-02 | Un quai avec plusieurs réceptions/camions | Quai avec 2 réceptions distinctes | Ouvrir la vue | Les deux paires réception/plaque sont affichées sur la même ligne, séparées par ";" | | | | T1-03 | PARKING avec plusieurs camions en attente | 3 camions sur PARKING | Ouvrir la vue | Les 3 paires sont affichées sur la ligne PARKING | | | | T1-04 | Une réception dont le quai est modifié après coup | Réception initialement sur PARKING, déplacée sur QUAI_01 | Modifier le quai | Le tableau se met à jour : la réception disparaît de PARKING et apparaît sur QUAI_01 | | | | T1-05 | Tableau affiché quand aucune réception n'existe | Base vide | Ouvrir la vue | Tous les quais apparaissent avec des colonnes vides, pas d'erreur d'affichage | | | | T1-06 | Un quai avec réceptions + tournées ~~+ OS~~ | | Ouvrir la vue | Afficher tous les combos quai/plaque sur le bon quai | | | --- ## Commentaires ### 💬 Vincent Charvet — 04/03/2026 **Revue fonctionnelle** **Empêcher l'assignation de différentes classes de préavis de réception** — Condition sur le `ViewAssistCreateReceptionOE` et exception levée si au moins un des `InboundClassCode` des ordres sélectionnés est différent du premier sélectionné (toujours au moins 1 élément sélectionné à ce stade). **Résumé d'occupation** — Créer une nouvelle entité avec le code du quai et une chaîne de caractère contenant les Réception/Tournées/OS associés, ajouter un `viewDetailPanel` dans la vue `ReceptionVList` avec cette entité. --- ### 💬 Justine Beutin — 04/03/2026 Corrections suite au point du 04/03 avec Vincent et Michaël. --- ### 💬 Vincent Charvet — 05/03/2026 #### Technical implementation **Entities :** - `CST_DockStationsWorkloadForView` : Entity created to display informations about dock workload in both `ReceptionVList` and `VAssistReceptionAssignDock` views **Queries :** - `CST_DockStationsWorkload_ForView` : Query for entity `CST_DockStationsWorkloadForView` **Views :** - `ReceptionVList` : Add ViewDetailPanel with workload for each dock (associated receptions and routes) - `VAssistCreateReceptionOE` : Add an exception in Commands expression codes steps 2 and 3 raised when inbound orders with different classes are selected - `VAssistReceptionAssignDock` : Change entity in step 1 from `Station` to `CST_DockStationsWorkloadForView` and show workload **Resources :** - `CST_Reception_MultiClassError` - FR : Impossible de créer une réception avec des ordres d'entrée ayant des classes de préavis de réception différentes - EN : Can't create reception with inbound orders with different inbound order class - `ViewField_VAssistantCreateReceptionOE_Truck` - FR : `#KEY#[Prop_Reception_Document, PARAMS[]]` - EN : `#KEY#[Prop_Reception_Document, PARAMS[]]` - `Reception_DockWorkload_Panel_Title` - FR : Occupation des quais - EN : Docks workload - `Prop_Reception_Document` - FR : Camion - EN : Truck - `Prop_Station_Workload` - FR : Assignations / Camions - EN : Assignations / Trucks **Git :** [`1d2acc3e6e`](https://msscode.mecalux.com/Proyectos_SW/EASYWMS_11351_LIMAGRAIN/commit/1d2acc3e6efef09df3e2a760574e35afd30ca166) --- ### 💬 Nicolas Chabanis — 06/03/2026 **Revue de code non valide** **Ressources :** - `Prop_Station_Workload`, `Reception_DockWorkload_Panel_Title`, `ViewField_VAssistantCreateReceptionOE_Truck` : Les ressources custom doivent être préfixées par `CST_` **Views :** - `VAssistCreateReceptionOE` - Dans l'expression code du step 3, il manque le commentaire `//Custom end` - Question à poser au CDP quant à la pertinence de rendre obligatoire le camion car sans l'affichage perd son intérêt et éviter le risque d'oubli - `ReceptionVList` - Mettre la propriété `Column Span = 2` sur le ViewDetailPanel `CST_Docks_Workload`, afin qu'il prenne toute la largeur - Le titre demandé pour la deuxième colonne est **"Réceptions / Camions"** --- ### 💬 Vincent Charvet — 09/03/2026 Plaque non obligatoire à priori, pourra être renseigné après création de la réception. Ajout des mêmes conditions sur les différentes classes d'ordres pour la création de réception depuis la vue des ordres d'entrées. --- ### 💬 Nicolas Chabanis — 09/03/2026 **Revue de code validée** ✅