Files
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

726 lines
32 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: "Réception fournisseur - Production et extérieures/intersites"
tags: [inbound, réception, production, ASN, ROR, PIE, clôture, REF, ROF]
status: draft
standard_ref: concepts/reception.md
jira_refs: [LIM-67, LIM-68, LIM-71, LIM-73, LIM-93]
confluence_refs: []
sources: [FR-SW-04-07_LIMAGRAIN_Functional_Analysis_V1.5.docx, "Réception - LIMAGRAIN - DEV - Confluence.md", LIM-67_Postes_Travail_Reception.md, "Jira LIM-67 (relecture commentaires 2026-07-16)", "LIM-73 - LOT1.3 [RECEPTION] Fermetures, REF et gestion retours.md", "Jira LIM-73 (revue de code validée 2026-06-02, relecture 2026-07-17)"]
last_updated: 2026-07-17
author: Arthur
---
# Réception fournisseur - Production et extérieures/intersites
> **Résumé** : deux flux de réception distincts chez Limagrain - production
> (directe ASRS via ASN) et extérieures/intersites (passage poste de travail
> via ROR). Le déchargement camion est une étape commune.
> **Standard EasyWMS** : → voir [Reception](../../concepts/reception.md)
> Ce qui suit documente les **spécificités Limagrain** par rapport au standard.
## Contexte projet
Limagrain gère 3 types de réception. Cette page couvre les deux premiers :
1. **Réception depuis la production** (flux majoritaire)
2. **Réceptions extérieures / transferts intersites**
Le troisième type (retours client) est couvert dans
[Réception retour](reception-retour.md).
## Étape commune - Arrivée et déclaration du camion
> **Page dédiée** : le flux complet d'arrivée camion, d'assignation de quai,
> d'affichage chauffeur et de déclaration image de quai via TRF est documenté
> en détail dans [Gestion des camions](gestion-camions.md) (LIM-62/63/64/65).
> Ce qui suit est un résumé.
### [CUSTOM] Réservation image de quai
1. Camion arrive → agent de quai crée une **réception** dans la vue
« Ordre d'entrée > Réceptions » (SmartUI)
2. Saisie de la **plaque d'immatriculation** et de la **destination** :
« PARKING » par défaut (quai fictif d'attente) ou quai réel si disponible
3. Sélection des OE (ordres d'entrée) concernés - chaque OE est flagué
via un CstAtt
4. Agent consulte la disponibilité des quais via un graphique dans la vue
des réceptions et assigne un quai réel
5. [CUSTOM] Écran parking (via WS) affiche plaque + n° quai pour le chauffeur
**Contraintes d'assignation image de quai :**
- Quai et image de quai **réservés** dès la sélection - réutilisation possible
si place restante (gestion manuelle)
- Blocage si flux différent (ex : expédition en cours sur ce quai)
- Blocage si l'image de quai a des supports associés à un OS (expédition)
ou inversement
- Si aucun quai disponible → attente de libération
- Il faut empêcher de créer une réception avec des OE de **classes de
préavis différentes** (message d'erreur bloquant)
Voir aussi [Quais et poumons](../04-outbound/consolidation-chargement.md).
### Déchargement physique
- Cariste décharge palettes depuis emplacement **le plus éloigné du quai**
- Permet d'identifier précisément les emplacements occupés pour les AGV
### [CUSTOM] Déclaration sur l'image de quai
Menu TRF custom : Réception > Images de quai > Déclaration
**Séquence commune :**
1. Scan de l'image de quai
2. Choix du type de réception (Production / Fournisseur / Retour client /
Palettes vides)
3. Saisie du nombre de palettes + emplacement de départ
4. Association à la réception (auto pour Production via CstAtt « ASN »,
sélection manuelle de l'OE pour les autres)
5. Prompt big-bag (Oui/Non) - sauté pour Production
6. Écran de validation
7. Création des supports dans le WMS
**Pour les réceptions extérieures/retours client :**
- Impression d'une **étiquette par support** à coller sur la palette
(ROR.Code + date + « À réceptionner » + code support + empl. image de quai)
- Vérification capacité image de quai
### Création tâches de mouvement AGV
- EasyWMS indique **point de prise** et **point de dépose** uniquement
- Sens prise/dépose géré par le gestionnaire de flotte AGV (iGo)
- Pour réceptions nécessitant un poste : assignation automatique selon
contraintes déclarées (mode, big-bag, distance la plus courte)
- Assignation manuelle également possible
- Si aucun poste disponible → tâche en attente
### Libérations
- **Image de quai** : libérée **automatiquement** quand il n'y a plus
de palettes dessus (vérification via supports présents)
- **Quai** : libéré **manuellement** par l'agent au départ du véhicule
---
## Flux 1 - Réception depuis la production
### Flux physique
```mermaid
sequenceDiagram
participant Cariste
participant Quai/Poumon
participant AGV
participant Buffer
participant PIE_01
participant ASRS
Cariste->>Quai/Poumon: Déchargement
Note over Quai/Poumon: Supports virtuels créés
AGV->>Buffer: Transport support virtuel
Buffer->>PIE_01: Convoyeur entrée production
Note over PIE_01: Suppression support virtuel (containerMovedEvent)
PIE_01->>PIE_01: Déplacement palette ASN + contrôles
alt PIE OK
PIE_01->>ASRS: Stockage (stratégie rangement)
else PIE NOK
PIE_01->>Cariste: Rejet → poumon au sol + notification
end
```
### Résumé du processus
1. Déclaration sur l'image de quai (voir étape commune ci-dessus)
2. Déplacement AGV → entrée production (via supports virtuels)
3. Passage PIE (suppression support virtuel + validation palette ASN)
4. Stockage ou rejet
5. Libération quai / image de quai
### 1) [CUSTOM] Pré-notification ASN
Message **ASN** descendu de SAP **avant** l'arrivée physique (expédition
depuis l'ancien magasin). Contenu :
- Numéro unique HU
- Article / Lot SAP
- [CUSTOM] Propriétaire Limagrain
- Statut de stock
- Quantité (unités de vente)
Batch possible : jusqu'à **500 conteneurs par message ASN**.
> Les palettes sont étiquetées RFID en sortie de production (hors EasyWMS).
> L'étiquette est collée sur la housse.
### 2) [CUSTOM] Supports virtuels et déplacement AGV
**Principe des supports virtuels :**
- Création de supports « virtuels » identiques à de vrais supports mais
avec une **séquence différente (8000)** pour les identifier
- La flotte AGV déplace la palette fictive jusqu'au PIE
- Le tracking s'effectue avec le support virtuel sur le premier convoyeur
**Destination** : entrée production (convoyeur vers ASRS). L'AGV dépose
sur un **buffer d'entrée** (type POUMON MINILOAD AD) - jamais directement
sur le PIE.
**Suppression du support virtuel :**
- Basée sur le fonctionnement standard des routes AGV
- Surveillance des **containerMovedEvent**
- Filtre : type palette ASN + destination type PIE → suppression du
support virtuel (séquence 8000)
### [CUSTOM] Redirection si entrée production saturée
En cas de blocage long terme sur l'entrée production :
- **Solution standard** : système de routes avec distances - route
principale distance 1, routes secondaires distance 2
- On ferme le PIE de production → le WMS redirige automatiquement vers
les autres entrées disponibles
- **Élément à bloquer** : le PIE (pas un élément physiquement plus
proche de l'entrée)
> Pour les tests sans AGV : utilisation de **routes virtuelles** en
> configuration easyS qui téléportent automatiquement les palettes.
### 3) Passage au PIE et création palette ASN
**Séquence au PIE :**
1. Fin d'ordre AGV au PIE → suppression du support virtuel
(via containerMovedEvent)
2. Déplacement de la palette depuis l'emplacement « ASN » au PIE
3. Le ratio poids s'effectue au niveau de l'article
Contrôles : dimensions (1300×1100×1900), poids (≤1250 kg), état palette,
RFID connue (ASN). Voir
[Contrôle qualité réception](controle-qualite-reception.md) pour le
détail des contrôles PIE et la répartition du poids.
**PIE OK :**
- [CUSTOM] Aucun message ASO généré
- [CUSTOM] Vérification poids - tolérance par type article, verrou
« Réception » sur le **support** si écart > seuil
- Mise à jour CstAtt01 de la ligne de stock (poids unitaire calculé)
- [CUSTOM] Si type article ZSIZ → message ajustement stock vers SAP
via WSC (poids réel HU) - voir
[Contrôle qualité réception](controle-qualite-reception.md) pour
la gestion du timing avec le REF
- Stratégie de rangement appliquée
- Réservation canal optimale selon nb palettes ASN restantes
**PIE NOK :**
- Rejet standard - plus besoin d'étiquette spécifique
- Palette dirigée automatiquement vers un **poumon au sol** (zone de
rejet)
- **Notification SmartUI** envoyée aux opérateurs
- Opérateur se rend physiquement à la zone de rejet pour corriger
- Si non corrigeable : bouton custom édite étiquette « NON CONFORME,
RENVOI » et crée une tâche vers un poumon dédié
- [CUSTOM] Aucun message ASK généré
- [CUSTOM] CstAtt du support flagué avec « Prod » (pas de poste de
travail d'origine)
---
## Flux 2 - Réceptions extérieures / transferts intersites
### Flux physique (extérieur)
```mermaid
sequenceDiagram
participant Cariste
participant Quai/Poumon
participant AGV
participant Poste PK
participant Filmeuse
participant PIE_02/03
participant ASRS
Cariste->>Quai/Poumon: Déchargement
AGV->>Poste PK: Transport vers poste de travail
Poste PK->>Poste PK: Traitement réception
AGV->>Filmeuse: Évacuation (filmage si demandé)
Filmeuse->>PIE_02/03: Table d'entrée
PIE_02/03->>PIE_02/03: Contrôles
alt PIE OK
PIE_02/03->>ASRS: Stockage
else PIE NOK
PIE_02/03->>Poste PK: Rejet → poumon au sol + notification
end
```
### Résumé du processus (extérieur)
1. Déclaration sur l'image de quai
2. Déplacement AGV → poste de travail
3. Traitement au poste de travail (constitution mono-ref + déclaration)
4. Déplacement AGV → table d'entrée (+ filmage si demandé)
5. Passage PIE
6. Stockage ou rejet
7. Clôture de la réception
8. Libération quai / image de quai
### 1) Notification ROR
Message **ROR** de SAP → EasyWMS :
- Numéro de réception (1 ROR = 1 livraison SAP, un camion peut
contenir N livraisons)
- Articles / Lots SAP / Quantités (en unités de vente)
- Pas de création de lignes autorisée
- Tolérance quantité : **0 %** pour intersites (palettes déjà
identifiées), paramétrable **par ligne ROR** pour extérieures
(uniquement en dépassement %)
- `IsSingleReceipt = true` - le WMS ne gère pas de reliquats
automatiques. Si réception incomplète, SAP crée une nouvelle
livraison
- `InboundType = 0` (Standard) pour les deux sous-types
| Élément SAP | Correspondance EasyWMS | Remarque |
|-------------|------------------------|----------|
| Commande d'achat | - | Peut être cadencée en plusieurs livraisons |
| Livraison | 1 ROR | Un ROR = une livraison |
| Camion | N livraisons | Un camion peut contenir plusieurs livraisons |
> Les transferts intersites : le site émetteur est considéré comme un
> fournisseur dans EasyWMS.
### 2) [CUSTOM] Gestion des SSCC et codes conteneurs du ROR
Deux cas selon que le ROR fournit ou non des codes conteneurs
(`LineList>ContainerCode`) :
**a) Le ROR fournit des codes conteneurs attendus** (livraison Limagrain
avec supports identifiés)
- Avant la création du support, un écran analyse si l'ordre d'entrée
associé à la palette scannée contient des **numéros de supports
attendus** dans ses lignes
- Si oui : l'opérateur doit **scanner le code support "LIMAGRAIN"**
(un bouton **Liste** affiche les codes attendus au cas où l'étiquette
serait illisible)
- Au scan, vérification que le code fait partie de la liste des codes
attendus, sinon message d'erreur
- Le code conteneur retenu est celui du ROR ; le code de l'ordre
d'entrée du conteneur est conservé dans le **CstAtt13** du support
- Réf. commentaires LIM-67 des 19-23/06/2026 (livré préprod)
**b) Le ROR ne fournit aucun code conteneur** (fournisseur/intersite
classique)
- Le SSCC est récupéré au moment du **scan RFID** en réception
- Si SSCC présent sur la palette → conservation lors de la réédition
RFID
- Si SSCC absent → **création d'un nouveau SSCC** et ré-étiquetage
> Règle : un SSCC n'est généré que si le ROR ne fournit **aucun** code
> support dans ses lignes. Raison : éviter la complexification du process
> si l'étiquette est endommagée.
### 3) [CUSTOM] Déplacement vers poste de travail
Assignation automatique du poste selon :
1. Non bloqué
2. En service
3. Mode autorise la réception
4. Capacité compatible avec la déclaration
5. Distance la plus courte
Assignation manuelle aussi possible. Si aucun poste disponible → attente.
### 4) Constitution palettes mono référence
Les palettes à destination ASRS doivent être **mono référence** autant
que possible. Si multi-référence à l'arrivée :
- Opérateur dispose manuellement une palette vide sur une TP
(non géré par le WMS)
- Tri de marchandise pour constituer des conteneurs mono-ref
> Le process de constitution mono-référence est **standard** - pas de
> développement spécifique.
#### [CUSTOM] Tables de préparation et poste de picking adjacent
Le développement gère **6 tables de préparation** pour les réceptions
(commentaire LIM-67 du 30/04/2026). La station de réception est couplée
à un **poste de picking adjacent** (voir paramètre `PK_ADJACENT`) :
- avant l'ouverture d'un poste de picking, vérification que le poste
**adjacent** n'utilise pas déjà les tables de préparation (sinon
blocage avec message « Impossible d'ouvrir le poste de travail.
Utilisation des tables de préparation par le poste adjacent ») ;
- les palettes **liées** au poste adjacent restent utilisables sans
forcer leur déplacement vers le poste en cours d'utilisation ;
- le conteneur créé porte le code du poste de picking lié dans son
`CstAtt06`.
### 5) [CUSTOM] Traitement au poste de travail
Ref. [LIM-67](https://easywmsfrance.atlassian.net/browse/LIM-67) - revue
de code validée le 29/06/2026, **livré en préprod** le 09/07/2026
(en cours de test client).
Les opérateurs utilisent le mode **Tâches automatiques** sur PC. Le
code de réception est récupéré automatiquement via le `CstAtt08` du
conteneur présent sur le poste.
**Affichage fournisseur** : sur **tous les écrans** du process,
afficher `"Fournisseur: CODE - NOM"`. Le nom est porté par le champ
`CST_SupplierName` du record `ReceptionWF` (pas par le `SupplierCode`,
pour éviter les bugs d'usage ultérieur).
#### a) Scan du conteneur virtuel et création du support réel (Big Bag)
Le process démarre par le **scan du conteneur virtuel** posé sur le
poste (créé à la déclaration image de quai). Ce scan :
- récupère la **réception associée** via le `CstAtt08` du conteneur
virtuel ;
- **génère automatiquement** un nouveau code de conteneur (généré dans
EasyWMS, plus saisi par l'opérateur) ;
- après le paramétrage Big Bag et filmage, **supprime le conteneur
virtuel** et crée le nouveau conteneur réel **sur le même
emplacement** ;
- reporte le `CstAtt08` sur le nouveau conteneur pour **conserver la
réception** si l'opérateur quitte avant la fin.
Sur l'écran de confirmation de création du support réel :
- Ligne `"BIG BAG : NON"` (état initial)
- Bouton **"BIG BAG ON"** → toggle vers `"BIG BAG : OUI"` / **"BIG BAG
OFF"**
- Valeur `true`/`false` stockée dans **CstAtt02** du support
- Impression automatique d'une **étiquette RFID** dès confirmation -
voir [Étiquette RFID](etiquette-rfid.md) (LIM-68)
#### b) Menu principal du poste
Écran central avec 6 actions - les informations du support actuel sont
toujours affichées à droite. Après chaque action, retour à ce menu.
| Action | Description |
|--------|-------------|
| **Ajouter stock** | Sélection article, lot, quantité (écrans standard). Afficher quantité attendue + UdM sans pré-remplir le prompt. Statut de stock affiché mais **non modifiable** (boutons masqués). Écrans date fin de statut et commentaire **skippés**. Pour l'anoxie : set **CstAtt03** du support à `true` |
| **Nouveau support** | Scan emplacement, confirmation de création (retour à l'étape a). Le nouveau conteneur devient le support actif |
| **Changer de support** | Scan du code support à sélectionner comme support actif |
| **Retirer support** | Suppression d'un conteneur du poste. Si le support contient du stock déclaré, un message d'avertissement demande confirmation avant suppression (ajouté au commentaire LIM-67 du 30/04/2026) |
| **Imprimer étiquette** | Réimpression de l'étiquette RFID (voir [Étiquette RFID](etiquette-rfid.md)) |
| **Terminer** | Vérification fermeture + filmage + évacuation (voir ci-dessous) |
#### c) Action « Terminer »
**Vérification fermeture réception** : si le conteneur actuel est le
**dernier** de la réception (nombre de conteneurs virtuels avec
`CstAtt08 = codeRecep` + conteneurs avec `CstAtt08 = codeRecep` et
`CstAtt10 = true`), proposer la fermeture de la réception avec
uniquement l'option confirmer.
**Sélection du programme de filmage** : dialogue avec liste issue du
paramètre **"FILMAGES"** :
```
Valeur par défaut : 0;Pas de filmage|A;Programme 1|B;Programme 2|C;Programme 3
```
La valeur choisie (`0`, `A`, `B`, `C`…) est stockée dans le
**CstAtt05** du support et transmise à Galileo en custom data.
Après validation, une **tâche d'évacuation** est générée pour le
transport AGV du poste de travail vers la table d'entrée.
#### Résumé des CstAtt support (poste de travail)
| CstAtt | Contenu | Set par |
|--------|---------|---------|
| CstAtt02 | Flag Big Bag (`true`/`false`) | Écran confirmation support |
| CstAtt03 | Flag anoxie (`true`) | Action « Ajouter stock » |
| CstAtt05 | Programme de filmage (`0`, `A`, `B`…) | Action « Terminer » |
| CstAtt06 | Code du poste de picking lié au conteneur (LIM-67, 30/04/2026) - conflit levé : LIM-71 a abandonné son marquage CstAtt06 ; usage confirmé par LIM-70 et le job de régénération LIM-71 | Création du conteneur au poste |
| CstAtt08 | Code de réception | Déclaration image de quai |
| CstAtt10 | Flag support traité (`true`) | Fin de traitement |
| CstAtt13 | Code de l'ordre d'entrée du conteneur (quand le ROR fournit un code support attendu) | Sélection du code conteneur du ROR |
#### Validation des attributs logistiques (optimisation → LIM-93)
Demande d'optimisation portée par
[LIM-93](https://easywmsfrance.atlassian.net/browse/LIM-93) : les
attributs logistiques sont **validés automatiquement** s'ils sont bien
renseignés dans le ROR ; s'il en manque un, il est demandé à
l'opérateur. Si le ROR possède plusieurs lignes avec le **même lot SAP**
mais des attributs logistiques différents, ils sont aussi demandés
(EasyWMS ne peut pas deviner la ligne concernée à la réception).
### 6) Déplacement AGV → table d'entrée et filmage
- L'AGV déplace le conteneur vers la table d'entrée
- **Gestion du filmage** : le programme de filmage est transmis à
Galileo via custom data au moment du passage. Si le PIE dit NOK →
pas de filmage (custom data non transmis). Le filmage ne se fait que
si le PIE valide la palette
### 7) Passage PIE
Identique au flux production (mêmes formules de répartition poids,
mêmes contrôles PIE). Voir
[Contrôle qualité réception](controle-qualite-reception.md).
**Différence en cas de rejet PIE** : la palette est dirigée vers un
**poumon au sol** avec **notification SmartUI** (ancienne approche de
renvoi au poste de travail d'origine abandonnée - risque de blocage
AGV/table/poste). CstAtt du support flagué avec le poste de travail
d'origine.
---
## Clôture des réceptions (extérieures/intersites)
Ref. [LIM-73](https://easywmsfrance.atlassian.net/browse/LIM-73) - LOT
1.3.
La clôture concerne uniquement les flux passant par un poste de travail
(extérieures, intersites, retours client). La réception production (ASN)
n'est pas concernée (pas de clôture manuelle).
**Relation réception ↔ OE** : une réception peut servir **plusieurs
OE**, mais un OE est servi par **une seule réception**. Si la réception
associée à un OE est incomplète, SAP gère le reliquat via une nouvelle
livraison (donc nouvel OE).
### Paramétrage
- `IsSingleReceipt = true` - une seule réception par OE, pas de
reliquats WMS
- `AutoCloseReception = true` - le WMS clôture automatiquement la
réception quand les conditions custom sont remplies (§ Déclenchement).
Valeur confirmée `true` ; le tableau [LIM-14](../07-admin/parametres-projet.md)
affiche encore `false` (à corriger côté ticket)
- `AutoCloseInboundOrder = true` - à la clôture de la réception, chaque
OE complété à 100 % ou dans la tolérance est auto-clôturé (ROF
envoyé) et auto-archivé (absent de la vue). Les OE en écart hors
tolérance restent ouverts
### Deux niveaux de clôture
| Niveau | Description | Message ERP |
|--------|-------------|-------------|
| Réception | Clôture d'une livraison physique | REF |
| Ordre d'entrée (OE) | Clôture de la commande complète | ROF |
### Déclenchement de l'auto-close (LIM-73 §1.1)
L'auto-close de la réception se déclenche - et le bouton « Fermer
réception » n'est visible - que si les deux conditions suivantes sont
**simultanément** remplies :
1. **Aucune palette fictive** ayant `CstAtt08 = <code de la réception>`
n'est présente (plus de palettes à venir de l'image de quai)
2. **ET** :
- **Si Workstation** : au plus **1** palette réelle au PK avec
`CstAtt10 = true` (la dernière en cours)
- **Si Vue Réception** : **aucune** palette réelle au PK avec
`CstAtt10 = true`
Si au moins une ligne est **hors tolérance**, un message d'avertissement
s'affiche : « La réception a été clôturée mais les quantités reçues sont
hors tolérance, voir avec le manager pour réguler les quantités attendues
puis fermer l'ordre d'entrée ».
### [CUSTOM] Adaptation Reception_Close_PR_V2 (LIM-73 §1.3)
Le workflow standard de clôture est modifié pour deux comportements :
**Partie A - Condition retours** : si la réception est de type retour
client, la clôture et le REF sont différés jusqu'au rangement ASRS
complet. Voir [Réception retour - Clôture](reception-retour.md) pour le
détail (CstAtt11, CstAtt01 réception, statut « Clôture en cours »).
**Partie B - Pose CstAtt01 OE hors tolérance** : à la clôture effective,
pour chaque **ligne article hors tolérance** (en plus ou en moins) :
1. Rechercher le **premier OE** (FirstOrDefault) parmi les OE associés
contenant ce combo code article / lot
2. Poser `CstAtt01 = true` sur cet OE
> En pratique un combo code article/lot n'est jamais partagé entre
> plusieurs OE d'une même réception - le FirstOrDefault est
> déterministe.
**Contrôle de tolérance (custom)** : dans le standard la tolérance ne
sert que pour l'excès ; ici elle est vérifiée **dans les deux sens**
(quantité reçue inférieure ou supérieure à l'attendu). Le pourcentage
`ReceiveMorePercent` provient de la **valeur de la ligne du ROR**, et à
défaut de la **valeur du profil de réception de l'article**
(WF `Reception_CheckIfAllReceptionLinesAreCompleted_PR`).
Les OE flaggés ne se clôturent pas automatiquement (ROF bloqué) et
s'affichent en rouge dans la vue (voir § Clôture des OE ci-dessous).
### Contenu du REF (custom)
Un seul REF est envoyé par réception (pas de REF progressif, car
`IsSingleReceipt = true`). Contenu :
- Numéros de conteneurs réceptionnés
- Lignes de stocks associées
- [CUSTOM] **Zone de stockage** dans le champ **`LneStockCstAtt01`**
(récupérée depuis le code emplacement du support, GNA
`REF01Observer.boo`) :
- Fournisseur / intersite : si un support se trouve hors de l'ASRS
au moment du REF → valeur **"NON RANGEE"**
- Retour client : ce cas ne se produit pas (REF conditionné au
rangement complet - voir [Réception retour](reception-retour.md))
- [CUSTOM] Attributs stock remontés : code produit SAP, code
propriétaire réel, description courte, pays de destination, lot SAP
**LOC** : envoyé sur delta de 5 min (palette créée/déplacée/supprimée).
Le LOC ne prend pas en compte les palettes liées à une réception non
fermée (standard dans le WSC forké - développement dédié
[LIM-76](https://easywmsfrance.atlassian.net/browse/LIM-76)).
### Clôture des ordres d'entrée (OE) (LIM-73 §2)
| Situation OE | Clôture | ROF | Affichage vue OE |
|--------------|---------|-----|------------------|
| Reçu = attendu | Auto-close | Envoi auto | Auto-archivé → absent |
| Écart dans la tolérance | Auto-close (custom) | Envoi auto | Auto-archivé → absent |
| Écart hors tolérance (`CstAtt01 OE = true`) | Manuelle par non-opérateur | Envoyé manuellement | **Rouge** - bouton restreint |
**Visibilité du bouton « Clôturer l'OE »** :
- OE sans écart ou dans la tolérance : accessible à tous (standard),
mais auto-archivé donc invisible
- OE hors tolérance (CstAtt01 OE = true, **rouge**) : bouton visible
**uniquement pour les profils non-opérateurs** (admin, manager, chef
d'équipe). Masqué pour les opérateurs standards
Le manager régularise dans SAP (envoi éventuel d'un nouveau ROR) puis
clôture manuellement l'OE → ROF envoyé.
### [CUSTOM] Éléments techniques (revue de code validée 2026-06-02)
Implémentation définitive issue de la revue de code LIM-73. Éléments
clés au-delà de `Reception_Close_PR_V2` (§ ci-dessus) :
| Élément | Type | Rôle |
|---------|------|------|
| `InboundOrder_AutoCloseInboundOrder_PR_V2` | WF | Ne clôture pas l'OE si `CstAtt01 OE = true` (blocage ROF hors tolérance). Résout la question « modifier le WF existant vs en créer un » : c'est le V2 existant qui est adapté |
| `Container_MovedEventHandler_Warehouse_PR` | WF | Pose `CstAtt11 = true` sur le conteneur quand la tâche de rangement se termine en APS (retour) |
| `ReceiptLine_AutoClose_PR_V2` | WF | Auto-close des **lignes de réception désactivé** (causait des problèmes avec le process de réception au poste ; la clôture est gérée par le process ci-dessus) |
| `Reception_CheckReceiveMore_UI` | WF | Ne bloque plus l'excédent au poste : le client peut recevoir autant qu'il veut (l'écart est traité à la clôture via `CstAtt01 OE`) |
| `Reception_CheckIfAllReceptionLinesAreCompleted_PR` | WF | Vérifie la tolérance sur chaque ligne dans les deux sens ; source `ReceiveMorePercent` = ligne ROR ou profil article |
| `InboundOrder_UpdateStatus_By_Reception_ChangedStatus_PR_V2` | WF | Un OE partiellement reçu **et** `CstAtt01 = true` est considéré comme clôturé |
| `WorkStation_Reception_Supplier_UI` | WF/UI | Activité « Close Reception » après avoir informé l'opérateur que le manager devra clôturer l'OE manuellement |
| `CST_View_RecOrder_ToleranceError` | Ressource | Message d'avertissement hors tolérance affiché à la fermeture (FR/EN) |
| `REF01Observer.boo` | GNA | Zone de stockage du support dans `LneStockCstAtt01` (« NON RANGEE » si hors ASRS) |
> **Revue de code (points corrigés)** : test de nullité de
> `CST_InboundOrder` après la query `CST_GetInboundOrder`
> (`InboundOrder_AutoCloseInboundOrder_PR_V2`) et test de nullité après
> les `FirstOrDefault` dans `REF01Observer.boo`.
### Réception excédentaire (> % autorisé)
> ⚠️ Depuis LIM-73, `Reception_CheckReceiveMore_UI` **ne bloque plus**
> l'opérateur sur un excédent : le client peut réceptionner autant qu'il
> veut. L'excès est traité à la clôture (flag `CstAtt01 OE`, affichage
> rouge, régularisation SAP). Les solutions ci-dessous restent valables
> côté SAP pour régulariser l'attendu.
| Solution | Description |
|----------|-------------|
| Modifier la commande | Message ROR UPSERT depuis SAP |
| Réception aveugle | Sans lien fournisseur (nécessite gestion REF BLIND) |
| Nouvelle commande | Créer une nouvelle commande d'achat pour le reliquat |
## Points d'attention
⚠️ En cas de blocage long terme sur l'entrée production, le WMS
redirige automatiquement vers les autres entrées via le système de
routes avec distances (fermeture du PIE de production).
⚠️ Les palettes issues de réceptions extérieures/intersites reçoivent
**automatiquement** le flag « A anoxier » (CstAtt03).
⚠️ L'impression étiquettes réception au déchargement n'est possible que
pour les réceptions extérieures et retours clients (pas production).
⚠️ Les rejets PIE sont dirigés vers un **poumon au sol** avec
notification SmartUI (ancienne approche de renvoi au PK abandonnée).
⚠️ Le process de constitution mono-référence est **standard** (pas de
développement spécifique).
⚠️ Filmage : transmis à Galileo via custom data (CstAtt05) - uniquement
si PIE OK. Paramètre SmartUI `FILMAGES` définit la liste des programmes.
⚠️ `AutoCloseReception = true` mais la clôture effective dépend des
CstAtt08/CstAtt10 (tous supports traités). La clôture OE est
automatique si conditions remplies (`AutoCloseInboundOrder`).
⚠️ Le CstAtt01 poids unitaire mesuré (PIE) est **prioritaire** sur le
poids ITM pour tous les calculs suivants.
## Questions ouvertes
- [x] ~~Programme de filmage exact~~ - documenté, 8 programmes A→H,
paramètre SmartUI `FILMAGES` (LIM-67)
- ❓ Gestion TRF si AGV pas prêts au démarrage (@Théo)
- ❓ Utilisation du ROC (confirmation de réception) - point interne
Limagrain (@Justine)
- ❓ Création fournisseurs/clients à la volée dans EasyWMS -
faisabilité technique (@Nicolas)
- ❓ Vérifier fonctionnement ExceedPercentageAllowed vs profil de
réception (@Nicolas)
- ❓ Choix fournisseur imprimantes RFID - exiger compatibilité
ZPL (@Théo)
- ❓ Position étiquette image de quai (devant/côté) - à valider
avec le client (@Justine)
- ❓ Poids variable - vérifier si le standard gère la capture de
poids (@Nicolas)
- ❓ Surplus non réceptionné hors tolérance - quelle solution pour
les palettes impossibles à réceptionner ? (@Justine)
- ❓ Palette refusée PIE mais non supprimée - comment gérer le
support qui reste en base ? (@Nicolas) (LIM-73)
- [x] ~~WF clôture OE : faut-il modifier le WF existant ou en créer
un nouveau pour la condition CstAtt01 ? (@Fabien) (LIM-73)~~ →
**Résolu** (revue de code validée 2026-06-02) : le WF existant
`InboundOrder_AutoCloseInboundOrder_PR_V2` est adapté pour ne pas
clôturer l'OE si `CstAtt01 = true` (pas de nouveau WF)
- ~~Conflit d'usage `CstAtt06` (support) : LIM-71 marqueur de destination
vs LIM-67 code du poste de picking~~ → **Résolu** : LIM-71 a abandonné
son marquage `CstAtt06` (destination via stratégies de rangement).
`CstAtt06` = uniquement code du PK lié (LIM-67), confirmé par LIM-70 et
le job de régénération réception→PK (LIM-71).
## Historique des modifications
| Date | Auteur | Modification |
|------|--------|--------------|
| 2026-05-05 | Arthur | Création initiale depuis AF V1.5 |
| 2026-05-05 | Arthur | Enrichissement depuis ateliers DEV Confluence |
| 2026-05-12 | Arthur | Réécriture section traitement poste travail (LIM-67) : menu 5 actions, CstAtt02/03/05/08/10, filmage FILMAGES |
| 2026-05-12 | Arthur | Réécriture section clôture (LIM-73) : AutoCloseReception=true, Reception_Close_PR_V2, REF custom, clôture OE 3 cas |
| 2026-05-13 | Arthur | Restauration sections tronquées (points d'attention, questions, historique, références) |
| 2026-07-16 | Arthur | Relecture commentaires LIM-67 (revue de code, livré préprod 09/07) : scan conteneur virtuel + code auto-généré, gestion codes conteneurs ROR / support LIMAGRAIN (CstAtt13), 6 tables préparation + poste adjacent (CstAtt06), action « Retirer support », optimisation attributs logistiques → LIM-93, conflit CstAtt06 signalé |
| 2026-07-17 | Arthur | Conflit CstAtt06 résolu (LIM-71 a abandonné son marquage) : note tableau CstAtt et question ouverte mises à jour |
| 2026-07-17 | Arthur | Relecture commentaires + revue de code LIM-73 (validée 02/06, préprod) : section « Éléments techniques » (WF définitifs), champ REF `LneStockCstAtt01`, source tolérance (ligne ROR / profil article), excédent non bloquant (`Reception_CheckReceiveMore_UI`), question WF clôture OE résolue (`InboundOrder_AutoCloseInboundOrder_PR_V2`) |
## Références
| Source | Type | Date |
|--------|------|------|
| FR-SW-04-07_LIMAGRAIN_Functional_Analysis_V1.5 | Analyse fonctionnelle | 28/11/2025 |
| Réception - LIMAGRAIN - DEV - Confluence | Page ateliers DEV | 2026 |
| [LIM-67](https://easywmsfrance.atlassian.net/browse/LIM-67) | Ticket Jira (postes travail) - relecture commentaires + revue de code | 2026-07-16 |
| [LIM-73](https://easywmsfrance.atlassian.net/browse/LIM-73) | Ticket Jira (clôture/REF) - revue de code validée, préprod | 2026-06-02 |
| [LIM-93](https://easywmsfrance.atlassian.net/browse/LIM-93) | Ticket Jira (optimisation attributs logistiques) | 2026 |