màj wiki avec retour MES lot-5 AD
This commit is contained in:
@@ -0,0 +1,239 @@
|
||||
---
|
||||
title: "Contrôle qualité réception — Vérification poids PIE"
|
||||
tags: [inbound, PIE, poids, verrou, inventaire, qualité]
|
||||
status: draft
|
||||
standard_ref: architecture/galileo-integration.md
|
||||
jira_refs: [LIM-66]
|
||||
confluence_refs: []
|
||||
sources: [FR-SW-04-07_LIMAGRAIN_Functional_Analysis_V1.5.docx, "Réception - LIMAGRAIN - DEV - Confluence.md", LIM-66_Passage_PIE.md]
|
||||
last_updated: 2026-05-12
|
||||
author: Arthur
|
||||
---
|
||||
|
||||
# Contrôle qualité réception — Vérification poids PIE
|
||||
|
||||
> **Résumé** : mécanisme [CUSTOM] de contrôle de poids au passage PIE avec
|
||||
> calcul de tolérance par type article, application automatique de verrous
|
||||
> et mise à jour du poids unitaire.
|
||||
|
||||
> **Standard EasyWMS** : → voir [GALILEO Integration](../../architecture/galileo-integration.md)
|
||||
> Ce qui suit documente les **spécificités Limagrain** par rapport au standard.
|
||||
|
||||
## Contexte projet
|
||||
|
||||
Chez Limagrain, chaque passage au PIE déclenche une vérification de poids
|
||||
qui sert d'**inventaire permanent** par pesée. Ce mécanisme s'applique à
|
||||
**tous les processus** (réception production, extérieure, retour, picking,
|
||||
regroupement, échantillonnage).
|
||||
|
||||
## Contrôles au PIE
|
||||
|
||||
Le PIE effectue les contrôles suivants :
|
||||
|
||||
| Contrôle | Critère de validation |
|
||||
|----------|----------------------|
|
||||
| Étiquette RFID | Connue (détectable) |
|
||||
| Hauteur | ≤ 1900 mm |
|
||||
| Largeur | ≤ 1100 mm |
|
||||
| Longueur | ≤ 1300 mm |
|
||||
| Poids | ≤ 1250 kg |
|
||||
| État palette bois | Correct (lames TK ne doivent pas toucher le bois, pas de ski manquant) |
|
||||
|
||||
> Les erreurs sont configurables par type dans easyS — possibilité
|
||||
> d'envoyer vers différentes destinations selon le type d'erreur
|
||||
> (station error type). Exemple : scotch qui dépasse → station de
|
||||
> reconditionnement, palette vraiment non conforme → rejet complet.
|
||||
|
||||
## Formule de calcul du poids
|
||||
|
||||
### Étape 1 — Poids des lignes de stock
|
||||
|
||||
```
|
||||
Poids lignes de stock = Poids total mesuré − Poids théorique support (PALETTE_US)
|
||||
```
|
||||
|
||||
### Étape 2 — Répartition au prorata entre lignes de stock
|
||||
|
||||
Le poids mesuré est réparti au prorata entre les différentes lignes
|
||||
de stock.
|
||||
|
||||
**Source du poids théorique (par ordre de priorité)** : ancienne pesée
|
||||
(champ « Poids » de la ligne de stock), puis poids conversion ITM
|
||||
(champ « Poids théorique » de la ligne de stock).
|
||||
|
||||
**Formules :**
|
||||
|
||||
```
|
||||
Ratio = Poids théorique de la ligne / Poids théorique total de toutes les lignes
|
||||
Poids réel de la ligne = Poids lignes de stock × Ratio
|
||||
```
|
||||
|
||||
**Exemple :** 5 lignes d'article A (ITM = 2 kg), 1 ligne d'article B
|
||||
(ITM = 40 kg). Poids théorique total = (5 × 2) + (1 × 40) = 50 kg.
|
||||
Poids mesuré au PIE = 60 kg (hors palette bois).
|
||||
|
||||
| Article | Poids théorique | Ratio | Poids réel calculé |
|
||||
|---------|-----------------|-------|---------------------|
|
||||
| A (× 5) | 2 kg (ITM) | 20 % | 2,4 kg par ligne |
|
||||
| B (× 1) | 40 kg (ITM) | 80 % | 48 kg |
|
||||
| **Total** | 50 kg | 100 % | **60 kg** |
|
||||
|
||||
### Étape 3 — Mise à jour du poids unitaire (CstAtt01)
|
||||
|
||||
Le **CstAtt01** de chaque ligne de stock est mis à jour avec le poids
|
||||
unitaire mesuré :
|
||||
|
||||
```
|
||||
Poids unitaire mesuré = Poids réel de la ligne / Quantité de la ligne
|
||||
```
|
||||
|
||||
| Donnée | Champ WMS |
|
||||
|--------|-----------|
|
||||
| Poids unitaire mesuré | **CstAtt01** de la ligne de stock |
|
||||
| Poids réel pesé (total) | Champ standard « poids balance » du support |
|
||||
| Poids réel de la ligne | Champ « Poids réel » de la ligne de stock |
|
||||
|
||||
> **Priorité CstAtt01** : si CstAtt01 a déjà une valeur (pesée
|
||||
> précédente), c'est ce poids unitaire qui est utilisé dans les calculs
|
||||
> de ratio à l'étape 2 — à la place du poids théorique ITM.
|
||||
|
||||
> **Mise à jour du stock : OUI** — le poids calculé est stocké dans
|
||||
> CstAtt01 de la ligne de stock.
|
||||
> **Mise à jour de l'ITM : NON** — le poids théorique de la fiche
|
||||
> article reste inchangé. Raison : le poids varie en fonction de la
|
||||
> production (début/fin de prod), chaque pesée est unique.
|
||||
|
||||
> Le poids est quand même appliqué et recalculé, même en cas de
|
||||
> blocage (verrou).
|
||||
|
||||
## Vérification de la tolérance et blocage
|
||||
|
||||
Ref. [LIM-66](https://easywmsfrance.atlassian.net/browse/LIM-66) — en
|
||||
revue de code.
|
||||
|
||||
### [CUSTOM] Palettes mono-référence
|
||||
|
||||
**Condition de blocage** : si l'écart de poids correspond à un écart
|
||||
d'une ligne de stock (article manquant ou en trop → écart ≥ poids
|
||||
unitaire de l'article) → blocage via verrou sur le **support** (pas sur
|
||||
le stock) + alerte SmartUI.
|
||||
|
||||
### [CUSTOM] Palettes multi-références — seuil d'alerte
|
||||
|
||||
Pour les palettes contenant plusieurs articles différents, le système
|
||||
utilise le **plus petit poids unitaire** comme seuil d'alerte. Si
|
||||
l'écart total ≥ poids du plus petit article → blocage + alerte.
|
||||
|
||||
### Verrous appliqués
|
||||
|
||||
Deux verrous possibles selon le flux :
|
||||
|
||||
| Verrou | Flux | Comportement post-PIE |
|
||||
|--------|------|----------------------|
|
||||
| **HORS TOLERANCE** | Tous sauf retour client | La palette **entre quand même dans l'ASRS** malgré le verrou |
|
||||
| **ECART RETOUR** | Retour client uniquement | La palette est **refusée et envoyée en rejet** (destination gérée par EasyS) |
|
||||
|
||||
### Notification
|
||||
|
||||
- Création d'une **notification SmartUI** via le circuit classique de
|
||||
notifications basé sur un event (pas d'event custom)
|
||||
- Le verrou est posé sur le **support** (pas sur le stock)
|
||||
- Notification dédiée au rejet générée dans le cas ECART RETOUR
|
||||
|
||||
### Comportement selon le flux (détail)
|
||||
|
||||
| Processus | Verrou appliqué | Action |
|
||||
|-----------|-----------------|--------|
|
||||
| Réception production | HORS TOLERANCE | Stockage ASRS avec verrou |
|
||||
| Réception extérieure/intersite | HORS TOLERANCE | Stockage ASRS avec verrou |
|
||||
| Retour client (InboundType=1) | ECART RETOUR | Rejet (pas de stockage ASRS) |
|
||||
| Picking | HORS TOLERANCE | Stockage avec verrou, recomptage sur poste |
|
||||
| Regroupement | HORS TOLERANCE | Stockage avec verrou, recomptage sur poste |
|
||||
| Échantillonnage | HORS TOLERANCE | Stockage avec verrou, recomptage sur poste |
|
||||
|
||||
Dans tous les cas, le poids est quand même appliqué et recalculé.
|
||||
|
||||
### [CUSTOM] Type ZSIZ — Ajustement automatique
|
||||
|
||||
Si le type d'article est **ZSIZ** (semi-fini calibré / big-bag), un
|
||||
message d'ajustement de stock est envoyé vers SAP via **WSC** contenant
|
||||
le poids réel de la HU, **indépendamment de la tolérance**.
|
||||
|
||||
**Gestion du timing avec le REF :**
|
||||
|
||||
- **Problématique** : au moment du PIE, l'ERP ne connaît peut-être
|
||||
pas encore la palette (REF pas encore envoyé)
|
||||
- **Solution** : chaque palette présente dans un REF est flaguée dans
|
||||
le WMS. Si palette connue de l'ERP → transaction d'écart de poids
|
||||
immédiate. Si palette inconnue → flag de l'écart, puis à l'envoi du
|
||||
REF, un event déclenche la transaction
|
||||
- Le flag d'écart de poids est inclus dans le fichier **LOC** envoyé
|
||||
à SAP
|
||||
|
||||
## Gestion des verrous
|
||||
|
||||
### Consultation
|
||||
|
||||
Vue « Entrepôt → Verrous conteneur » :
|
||||
|
||||
- Verrou appliqué par conteneur
|
||||
- Date d'application
|
||||
- Possibilité de débloquer (lever le verrou)
|
||||
|
||||
### Impact sur l'expédition
|
||||
|
||||
Un verrou empêchant l'expédition bloque l'assignation du stock à un ordre
|
||||
de sortie. Le verrou « Réception » déclenche un **recomptage obligatoire**
|
||||
avant tout processus suivant (picking, regroupement, échantillonnage).
|
||||
|
||||
### [CUSTOM] Dérogation poids
|
||||
|
||||
Pour les processus de **regroupement** et **échantillonnage**, si la palette
|
||||
a un excédent de poids non corrigeable, l'opérateur peut depuis son poste
|
||||
de travail **autoriser** la palette à passer le PIE même si hors tolérance.
|
||||
|
||||
## Post-traitements
|
||||
|
||||
- Réception production : **ASO et ASK désactivés**
|
||||
- Les messages post-PIE ne sont pas générés pour le flux production
|
||||
|
||||
## Points d'attention
|
||||
|
||||
⚠️ Le contrôle poids s'applique à **chaque** passage PIE — une palette
|
||||
peut passer le PIE plusieurs fois (réception → picking → restockage).
|
||||
|
||||
⚠️ Le poids est porté par le **stock** (CstAtt01 de la ligne), pas par
|
||||
la fiche article ITM — chaque pesée est unique.
|
||||
|
||||
⚠️ Les palettes avec verrou « Réception » sont prioritaires dans
|
||||
l'assignation de stock pour l'échantillonnage (permet de combiner
|
||||
recomptage + échantillonnage).
|
||||
|
||||
⚠️ Verrou posé sur le **support** (pas sur le stock) — différent du
|
||||
comportement standard.
|
||||
|
||||
⚠️ Pour les palettes multi-références, le seuil d'alerte est le plus
|
||||
petit poids unitaire parmi toutes les lignes de stock.
|
||||
|
||||
## Questions ouvertes
|
||||
|
||||
- [ ] Valeurs exactes des tolérances par type article (@Justine)
|
||||
- [ ] Valeur du poids palette bois fixe (PALETTE_US) (@Théo)
|
||||
- [ ] Poids variable — vérifier si le standard gère la capture de
|
||||
poids avec poids moyen activé (@Nicolas)
|
||||
|
||||
## Historique des modifications
|
||||
|
||||
| Date | Auteur | Modification |
|
||||
|------|--------|--------------|
|
||||
| 2026-05-05 | Arthur | Création initiale depuis AF V1.5 |
|
||||
| 2026-05-05 | Arthur | Enrichissement : prorata, multi-ref, verrou support, ZSIZ timing |
|
||||
| 2026-05-12 | Arthur | LIM-66 : verrous HORS TOLERANCE / ECART RETOUR, CstAtt01 poids unitaire, comportement post-PIE |
|
||||
|
||||
## 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-66](https://easywmsfrance.atlassian.net/browse/LIM-66) | Ticket Jira | 2026 |
|
||||
@@ -0,0 +1,128 @@
|
||||
---
|
||||
title: "Étiquette support RFID — Format mono-référence"
|
||||
tags: [inbound, outbound, RFID, étiquette, ZPL, GS1, support]
|
||||
status: draft
|
||||
standard_ref: concepts/reception.md
|
||||
jira_refs: [LIM-68]
|
||||
confluence_refs: []
|
||||
sources: [LIM-68_Etiquette_RFID.md]
|
||||
last_updated: 2026-05-12
|
||||
author: Arthur
|
||||
---
|
||||
|
||||
# Étiquette support RFID — Format mono-référence
|
||||
|
||||
> **Résumé** : étiquette A5 imprimée lors de la réception
|
||||
> fournisseur/intersite, contenant les informations du support (code,
|
||||
> article, lot, GTIN) avec un QR Code GS1 et un encodage RFID via ZPL.
|
||||
|
||||
> **Standard EasyWMS** : → voir [Reception](../../concepts/reception.md)
|
||||
> Ce qui suit documente les **spécificités Limagrain** par rapport au
|
||||
> standard.
|
||||
|
||||
## Contexte projet
|
||||
|
||||
Le client Limagrain souhaite un rapport d'étiquette personnalisé pour
|
||||
ses HU (supports) dans le flux de réception fournisseur/intersite.
|
||||
L'étiquette est imprimée automatiquement à la confirmation de création
|
||||
du conteneur sur le poste de travail (voir
|
||||
[Réception fournisseur](reception-fournisseur.md) — étape 5a). Elle
|
||||
peut aussi être réimprimée depuis le menu principal du poste (action
|
||||
« Imprimer étiquette »).
|
||||
|
||||
Ref. [LIM-68](https://easywmsfrance.atlassian.net/browse/LIM-68) —
|
||||
attente déploiement pour test.
|
||||
|
||||
## Format A5 — Contenu de l'étiquette
|
||||
|
||||
| N | Champ | Source WMS | Remarque |
|
||||
|---|-------|-----------|----------|
|
||||
| — | Quantité | Quantité + UdM | En haut de l'étiquette |
|
||||
| 1 | Code support (court) | 6 derniers chiffres du code support | **En gras** |
|
||||
| 2 | Code-barres | Code 128 du code support au format GS1 | |
|
||||
| 3 | Code support (complet) | Code support avec préfixe `(00)` | |
|
||||
| 4 | Espèce (Specie) | `ITM.CstAtt01` | |
|
||||
| 5 | Traitement commercial | `ITM.Family.Description` | |
|
||||
| 6 | Variety print on bag | Tel quel | |
|
||||
| 7 | — | `ITM.CstAtt03` | |
|
||||
| 8 | Lot officiel (Official Batch) | Premier Alias de l'article | |
|
||||
| 9 | Lot interne (Internal Batch) | `ITM.Code` | = Lot SAP |
|
||||
| 10 | Code GTIN | `ITM.CstAtt05` | |
|
||||
| 11 | Date | — | Vide (date non connue de l'ERP) |
|
||||
| 12 | QR Code GS1 | Voir section ci-dessous | |
|
||||
|
||||
## QR Code GS1
|
||||
|
||||
Le QR Code GS1 encode les identifiants suivants :
|
||||
|
||||
| AI (Application Identifier) | Contenu | Source |
|
||||
|------------------------------|---------|--------|
|
||||
| `00` | Numéro HU (code support) | Code support WMS |
|
||||
| `01` | Code GTIN | `ITM.CstAtt05` |
|
||||
| `10` | Lot officiel | Premier Alias de l'article |
|
||||
| `21` | Lot SAP | `ITM.Code` |
|
||||
| `37` | Quantité | Quantité déclarée |
|
||||
|
||||
> La date de production (AI `11`) a été **supprimée** du QR Code.
|
||||
|
||||
## Encodage RFID (ZPL)
|
||||
|
||||
L'impression de l'étiquette combine l'impression physique (texte,
|
||||
codes-barres) et l'encodage de la puce RFID intégrée, le tout via
|
||||
des commandes **ZPL** (Zebra Programming Language).
|
||||
|
||||
### Structure de base
|
||||
|
||||
```zpl
|
||||
^XA
|
||||
; --- Encodage RFID ---
|
||||
^RFW,H^FD<données>^FS
|
||||
|
||||
; --- Contenu imprimé ---
|
||||
^FO50,50^ADN,36,20^FD<texte affiché>^FS
|
||||
^XZ
|
||||
```
|
||||
|
||||
### Commandes ZPL utilisées
|
||||
|
||||
| Commande | Rôle |
|
||||
|----------|------|
|
||||
| `^XA` / `^XZ` | Début et fin du bloc ZPL |
|
||||
| `^MMT` | Active le mode RFID sur l'imprimante |
|
||||
| `^RS8,,,1` | Timeout RFID = 8, 1 retry en cas d'échec d'encodage |
|
||||
| `^RFW,A,0,5,3` | Écriture RFID en ASCII, depuis le bloc 0, sur 5 blocs (20 octets), en banque User (3) |
|
||||
| `^FD…^FS` | Donnée à encoder (18 caractères max) |
|
||||
|
||||
### Exemple concret
|
||||
|
||||
```zpl
|
||||
^XA
|
||||
^MMT
|
||||
^RS8,,,1
|
||||
^RFW,A,0,5,3^FDSupport123456789012^FS
|
||||
^FO30,20^A0N,30,25^FDRapport de support^FS
|
||||
^XZ
|
||||
```
|
||||
|
||||
## Points d'attention
|
||||
|
||||
- L'imprimante doit être **compatible ZPL** avec encodage RFID
|
||||
(contrainte fournisseur à valider — voir question ouverte dans
|
||||
[Réception fournisseur](reception-fournisseur.md))
|
||||
- Le code support encodé en RFID fait **18 caractères** (5 blocs de
|
||||
4 octets = 20 octets en banque User 3)
|
||||
- L'étiquette est au format **A5 paysage**
|
||||
- La date (champ 11) est volontairement vide car non connue de l'ERP
|
||||
au moment de la réception
|
||||
|
||||
## Historique des modifications
|
||||
|
||||
| Date | Auteur | Modification |
|
||||
|------|--------|--------------|
|
||||
| 2026-05-12 | Arthur | Création initiale depuis LIM-68 |
|
||||
|
||||
## Références
|
||||
|
||||
| Source | Type | Date |
|
||||
|--------|------|------|
|
||||
| [LIM-68](https://easywmsfrance.atlassian.net/browse/LIM-68) | Ticket Jira | 2026 |
|
||||
@@ -0,0 +1,195 @@
|
||||
---
|
||||
title: "Flux ERP inbound — Messages réception"
|
||||
tags: [inbound, ERP, ASN, ROR, ROF, REF, ITM, interface]
|
||||
status: draft
|
||||
standard_ref: architecture/erp-integration.md
|
||||
jira_refs: []
|
||||
confluence_refs: []
|
||||
sources: [FR-SW-04-07_LIMAGRAIN_Functional_Analysis_V1.5.docx, "CR CONSOLIDES REU ERP LIMAGRAIN V1 - CR.md"]
|
||||
last_updated: 2026-05-06
|
||||
author: Arthur
|
||||
---
|
||||
|
||||
# Flux ERP inbound — Messages réception
|
||||
|
||||
> **Résumé** : catalogue des messages ERP liés aux processus de réception
|
||||
> chez Limagrain, avec direction, déclencheur et contenu principal.
|
||||
|
||||
> **Standard EasyWMS** : → voir [ERP Integration](../../architecture/erp-integration.md)
|
||||
> Ce qui suit documente les **spécificités Limagrain** par rapport au standard.
|
||||
|
||||
## Contexte projet
|
||||
|
||||
La communication ERP se fait via **XML + Webservice** entre SAP EWM et
|
||||
EasyWMS (service GNA). Tous les messages de réception sont documentés ici.
|
||||
Pour les messages d'expédition, voir
|
||||
[Flux ERP outbound](../04-outbound/flux-erp-outbound.md).
|
||||
|
||||
## Messages entrants (SAP → EasyWMS)
|
||||
|
||||
### ITM — Item Master
|
||||
|
||||
| Champ | Description |
|
||||
|-------|-------------|
|
||||
| Direction | ERP → WMS |
|
||||
| Déclencheur | Création/modification article dans SAP |
|
||||
| Contenu | Code lot SAP, description, propriétaire, UdM, poids brut, conversions, profils, type conteneur, quantité complète, type article (FERT/ZSIZ) |
|
||||
| [CUSTOM] | Espèce, génération, marque, variété, traitement commercial, packing unit, code GTIN, semences essais, size, field production area |
|
||||
|
||||
> ⚠️ Chez Limagrain, les **lots SAP** sont gérés comme des articles (descendus
|
||||
> via ITM). L'article Limagrain est un attribut du lot SAP.
|
||||
|
||||
### ASN — Advanced Shipping Notice
|
||||
|
||||
| Champ | Description |
|
||||
|-------|-------------|
|
||||
| Direction | ERP → WMS |
|
||||
| Déclencheur | Création HU avec code SSCC en production |
|
||||
| Architecture | **1 ASN = 1 palette de production** (pas d'agrégation — permet suppression individuelle en cas d'annulation) |
|
||||
| Contenu | Numéro HU, article, lot SAP, [CUSTOM] propriétaire Limagrain, statut de stock, quantité (unités de vente) |
|
||||
| Timing | Envoyé dès création de la HU avec code SSCC |
|
||||
|
||||
**Attributs logistiques dans les lignes ASN** :
|
||||
|
||||
| Attribut logistique | Champ SAP | Usage |
|
||||
|---------------------|-----------|-------|
|
||||
| LotCode | Code produit SAP | Différencie produits pour même lot SAP |
|
||||
| Color | Propriétaire réel SAP | ≠ "MECALUX" technique |
|
||||
| Source | Description produit | Désignation courte SAP |
|
||||
| Size | Destination (Pays) | Peut changer |
|
||||
|
||||
**Statuts de stock** : gérés dès l'ASN. Si stock OK : ne PAS envoyer de
|
||||
statut (champ vide ou absent du JSON).
|
||||
|
||||
**Champs NON utilisés** : DivisionType, ReceiptOrderCode, IsSlave,
|
||||
Height/Volume (recalculé au pesage PIE), dates fabrication/expiration,
|
||||
numéro de série.
|
||||
|
||||
### ROR — Reception Order Request
|
||||
|
||||
| Champ | Description |
|
||||
|-------|-------------|
|
||||
| Direction | ERP → WMS |
|
||||
| Déclencheur | Planification réception dans SAP (extérieures, intersites, retours) |
|
||||
| Contenu | Numéro de réception, articles, lots SAP, quantités (unités de vente) |
|
||||
| Structure | 1 ROR = 1 livraison SAP (un camion peut contenir plusieurs livraisons) |
|
||||
|
||||
**Types de réception (InboundType)** :
|
||||
|
||||
| InboundType | Usage | AccountCode/SupplierCode | Tolérance |
|
||||
|-------------|-------|--------------------------|-----------|
|
||||
| 0 (Fournisseur) | Livraisons DESADV | SupplierCode = "FOURNISSEUR" | Précisée par SAP (override profil) |
|
||||
| 1 (Retour) | Retours clients ORDRSP | AccountCode = "CLIENT" | Illimitée (ReceiveLessAllowed=true) |
|
||||
| 3 (Transfert) | Transferts inter-sites | — | 0% (palettes identifiées) |
|
||||
|
||||
**Paramètres clés** : SingleReceipt = true (pas de reliquat WMS),
|
||||
FreeQuantity non nécessaire. Pas de SSCC dans le ROR (récupéré au scan
|
||||
RFID en réception).
|
||||
|
||||
### [CUSTOM] API Lot SAP (retours clients uniquement)
|
||||
|
||||
| Champ | Description |
|
||||
|-------|-------------|
|
||||
| Direction | WMS → ERP (requête) puis ERP → WMS (réponse) |
|
||||
| Déclencheur | Scan lot officiel inconnu sur poste de travail |
|
||||
| Requête | Lot officiel |
|
||||
| Réponse OK | Lot SAP, articles possibles, descriptions, destinations + déclenchement ITM |
|
||||
| Réponse NOK | Message erreur ("lot n'existe pas" ou "lot non vendu") |
|
||||
|
||||
## Messages sortants (EasyWMS → SAP)
|
||||
|
||||
### REF — Reception Fulfilled
|
||||
|
||||
| Champ | Description |
|
||||
|-------|-------------|
|
||||
| Direction | WMS → ERP |
|
||||
| Déclencheur | **Clôture manuelle** de la réception (action opérateur) |
|
||||
| Contenu | Conteneurs réceptionnés, lignes de stock, [CUSTOM] zone de stockage pour chaque palette, 4 attributs logistiques + lot SAP |
|
||||
| Structure | Un seul REF par réception (pas de progressif, car SingleReceipt=true). Le ReceiptCode (en-tête) = code réception WMS. Le code de l'ordre d'entrée est au niveau de la **ligne** (`LneRecOrdersPotential`) |
|
||||
| Contrainte | L'emplacement de rangement n'est connu qu'après le stockage en ASRS → attendre que toutes les palettes soient stockées avant d'envoyer le REF |
|
||||
| Données | S'appuie sur les données **réelles** (pas théoriques) |
|
||||
|
||||
### ROF — Reception Order Fulfilled
|
||||
|
||||
| Champ | Description |
|
||||
|-------|-------------|
|
||||
| Direction | WMS → ERP |
|
||||
| Déclencheur | Validation/clôture de l'ordre d'entrée |
|
||||
| Rôle | Récapitulatif de l'ensemble des stocks reçus. Signale à l'ERP que l'ordre est fermé (même partiellement). Sans ROF, l'ERP ne clôturerait jamais la commande d'achat |
|
||||
| Reliquats | Pas de gestion de reliquats par EasyWMS. Si réception incomplète, c'est SAP qui gère le reliquat |
|
||||
| Hors tolérance | ROF bloqué jusqu'à régularisation par le manager dans SAP (customisation requise) |
|
||||
|
||||
### [CUSTOM] LOC — Location
|
||||
|
||||
| Champ | Description |
|
||||
|-------|-------------|
|
||||
| Direction | WMS → ERP |
|
||||
| Déclencheur | Palette stockée dans l'ASRS (rangement effectif) |
|
||||
| Contenu | Numéro HU, station départ, station arrivée, workzone arrivée, emplacement arrivée |
|
||||
| Condition | Généré uniquement si stations départ et arrivée sont différentes |
|
||||
|
||||
## Diagramme de séquence — Réception production
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant SAP
|
||||
participant WMS as EasyWMS
|
||||
participant GAL as Galileo/PIE
|
||||
|
||||
SAP->>WMS: ITM (article/lot)
|
||||
Note over SAP,WMS: En amont
|
||||
SAP->>WMS: ASN (pré-notif HU)
|
||||
Note over SAP,WMS: À l'expédition source
|
||||
GAL->>WMS: Event PIE (RFID + poids)
|
||||
WMS->>WMS: Contrôle poids + rangement
|
||||
WMS->>GAL: Tâche stockage
|
||||
GAL->>WMS: End (palette stockée)
|
||||
WMS->>SAP: LOC (emplacement)
|
||||
```
|
||||
|
||||
## Diagramme de séquence — Réception extérieure
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant SAP
|
||||
participant WMS as EasyWMS
|
||||
participant PK as Poste travail
|
||||
participant GAL as Galileo/PIE
|
||||
|
||||
SAP->>WMS: ROR (ordre réception)
|
||||
WMS->>PK: Palette sur poste
|
||||
PK->>WMS: Déclaration contenu
|
||||
WMS->>GAL: Tâche évacuation → PIE
|
||||
GAL->>WMS: Event PIE
|
||||
WMS->>WMS: Contrôle + rangement
|
||||
GAL->>WMS: End (stockée)
|
||||
WMS->>SAP: LOC
|
||||
PK->>WMS: Clôture réception
|
||||
WMS->>SAP: REF (avec emplacements)
|
||||
WMS->>SAP: ROF
|
||||
```
|
||||
|
||||
## Points d'attention
|
||||
|
||||
⚠️ Le message REF est retardé jusqu'à validation PIE de tous les conteneurs
|
||||
(peut prendre du temps si file d'attente PIE longue).
|
||||
|
||||
⚠️ Le message LOC n'est pas standard — c'est un [CUSTOM] spécifique
|
||||
Limagrain pour traçabilité emplacement dans SAP.
|
||||
|
||||
⚠️ Les modifications dans les master data ne doivent **pas** être faites
|
||||
directement dans EasyWMS (risque d'écrasement par prochain ITM).
|
||||
|
||||
## Historique des modifications
|
||||
|
||||
| Date | Auteur | Modification |
|
||||
|------|--------|--------------|
|
||||
| 2026-05-05 | Arthur | Création initiale depuis AF V1.5 |
|
||||
| 2026-05-06 | Arthur | Enrichissement ASN (1 par palette, attributs logistiques, champs non utilisés), ROR (InboundType, tolérances, SingleReceipt), REF (clôture manuelle, zone stockage, contrainte rangement), ROF (rôle, reliquats, hors tolérance) — depuis CR consolidé ERP |
|
||||
|
||||
## Références
|
||||
|
||||
| Source | Type | Date |
|
||||
|--------|------|------|
|
||||
| FR-SW-04-07_LIMAGRAIN_Functional_Analysis_V1.5 | Analyse fonctionnelle | 28/11/2025 |
|
||||
| CR CONSOLIDES REU ERP LIMAGRAIN V1 | CR ateliers interfaçage | 23/02/2026 |
|
||||
@@ -0,0 +1,348 @@
|
||||
---
|
||||
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 |
|
||||
@@ -0,0 +1,601 @@
|
||||
---
|
||||
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-73]
|
||||
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, "LIM-73 - LOT1.3 [RECEPTION] Fermetures, REF et gestion retours.md"]
|
||||
last_updated: 2026-05-12
|
||||
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
|
||||
|
||||
```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
|
||||
|
||||
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
|
||||
|
||||
- Les numéros SSCC **ne sont pas envoyés** dans le ROR
|
||||
(`LineList>ContainerCode`)
|
||||
- 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
|
||||
|
||||
> 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.
|
||||
|
||||
### 5) [CUSTOM] Traitement au poste de travail
|
||||
|
||||
Ref. [LIM-67](https://easywmsfrance.atlassian.net/browse/LIM-67) — en
|
||||
attente CDP.
|
||||
|
||||
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"`.
|
||||
|
||||
#### a) Confirmation de création support (Big Bag)
|
||||
|
||||
Si le conteneur scanné est un **conteneur virtuel** de réception, un
|
||||
écran de confirmation crée le nouveau support « réel ». Sur cet écran :
|
||||
|
||||
- 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 5 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 |
|
||||
| **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 » |
|
||||
| CstAtt08 | Code de réception | Déclaration image de quai |
|
||||
| CstAtt10 | Flag support traité (`true`) | Fin de traitement |
|
||||
|
||||
### 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)
|
||||
- `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.
|
||||
|
||||
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** (récupérée depuis le code emplacement
|
||||
du support) :
|
||||
- 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é.
|
||||
|
||||
### Réception excédentaire (> % autorisé)
|
||||
|
||||
Le WMS bloque. Solutions possibles :
|
||||
|
||||
| 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 ».
|
||||
|
||||
⚠️ 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 — uniquement si PIE OK.
|
||||
|
||||
## Questions ouvertes
|
||||
|
||||
- [x] Programme de filmage — interface définie dans LIM-67 : paramètre
|
||||
FILMAGES avec format `code;libellé|…`, stocké dans CstAtt05
|
||||
- [ ] 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)
|
||||
|
||||
## 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 | LIM-67 : workflow complet poste de travail, Big Bag CstAtt02, anoxie CstAtt03, filmage CstAtt05/FILMAGES, fermeture réception |
|
||||
| 2026-05-12 | Arthur | LIM-73 : réécriture complète section clôture — AutoCloseReception=true, conditions CstAtt08/CstAtt10, Reception_Close_PR_V2 (tolérance par ligne, CstAtt01 OE hors tolérance), REF custom (zone stockage / "NON RANGEE"), clôture OE (tableau 3 cas, bouton restreint non-opérateur), impact LOC (LIM-76) |
|
||||
|
||||
## 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 | 2026 |
|
||||
| [LIM-73](https://easywmsfrance.atlassian.net/browse/LIM-73) | Ticket Jira (clôture REF/ROF) | 2026 |
|
||||
@@ -0,0 +1,400 @@
|
||||
---
|
||||
title: "Réception retour commandes clients"
|
||||
tags: [inbound, réception, retour, client, API, lot]
|
||||
status: draft
|
||||
standard_ref: concepts/reception.md
|
||||
jira_refs: [LIM-72, LIM-67, LIM-68, LIM-66, LIM-64, LIM-70, LIM-73]
|
||||
confluence_refs: []
|
||||
sources: [FR-SW-04-07_LIMAGRAIN_Functional_Analysis_V1.5.docx, "Réception - LIMAGRAIN - DEV - Confluence.md", "LIM-72 LOT1.3 [RETOUR] Flux complet PK.md", "LIM-73 - LOT1.3 [RECEPTION] Fermetures, REF et gestion retours.md"]
|
||||
last_updated: 2026-05-12
|
||||
author: Arthur
|
||||
---
|
||||
|
||||
# Réception retour commandes clients
|
||||
|
||||
> **Résumé** : processus spécifique de réception des retours client, avec
|
||||
> interrogation API SAP pour validation lot, et déclaration enrichie sur
|
||||
> poste de travail.
|
||||
|
||||
> **Standard EasyWMS** : → voir [Reception](../../concepts/reception.md)
|
||||
> Ce qui suit documente les **spécificités Limagrain** par rapport au standard.
|
||||
|
||||
## Contexte projet
|
||||
|
||||
Les retours client suivent un flux similaire aux réceptions extérieures
|
||||
(passage poste de travail obligatoire) mais avec des particularités :
|
||||
|
||||
- `InboundType = 1` (Return) — vs 0 (Standard) pour les autres flux
|
||||
- Création de lignes autorisée (article non attendu possible)
|
||||
- Tolérance illimitée : profil de réception par défaut configuré en
|
||||
« illimité » sur tous les articles
|
||||
- `ReceiveLessAllowed = true` — réception partielle toujours autorisée
|
||||
- Interrogation API SAP pour valider le lot officiel
|
||||
- `AccountCode` = code client SAP (le client doit exister dans EasyWMS)
|
||||
|
||||
## Process complet de réception retour client
|
||||
|
||||
| Étape | Description | Ticket |
|
||||
|-------|-------------|--------|
|
||||
| 1 | Déclaration sur l'image de quai | [LIM-64](https://easywmsfrance.atlassian.net/browse/LIM-64) |
|
||||
| 2 | Déplacement AGV → poste de travail | [LIM-70](https://easywmsfrance.atlassian.net/browse/LIM-70) |
|
||||
| 3 | **Traitement au poste de travail** | [LIM-72](https://easywmsfrance.atlassian.net/browse/LIM-72) |
|
||||
| 4 | Déplacement AGV → table d'entrée (+ filmage si demandé) | — |
|
||||
| 5 | Passage PIE | [LIM-66](https://easywmsfrance.atlassian.net/browse/LIM-66) |
|
||||
| 6 | Stockage ou rejet | — |
|
||||
| 7 | Clôture de la réception | — |
|
||||
| 8 | Libération quai / image de quai | — |
|
||||
|
||||
Voir [Réception fournisseur](reception-fournisseur.md) pour le détail
|
||||
du déchargement camion et des déclarations initiales
|
||||
([LIM-67](https://easywmsfrance.atlassian.net/browse/LIM-67) pour le
|
||||
flux fournisseur au PK).
|
||||
|
||||
## Notification ROR
|
||||
|
||||
Message ROR de SAP (type ORDRSP) avec :
|
||||
|
||||
- Numéro de réception
|
||||
- Articles / Lots / Quantités attendues
|
||||
- Codes articles **génériques** (codes uniques avec nomenclature
|
||||
précise, pas réutilisables — assure la traçabilité)
|
||||
|
||||
**Différence clé** : cette réception **autorise la création de lignes**.
|
||||
Limagrain peut recevoir un article non présent dans le ROR initial.
|
||||
Un article inconnu de la base EasyWMS = ROR refusé. Un article connu
|
||||
mais non prévu dans le retour = accepté (tolérance illimitée).
|
||||
|
||||
## [CUSTOM] Identification lot — Interrogation API SAP
|
||||
|
||||
Lors du scan du lot officiel sur le poste de travail, le WMS vérifie
|
||||
d'abord si le lot est connu localement. Si oui, pas d'appel API. Sinon :
|
||||
|
||||
### Rappel : structure des articles chez Limagrain
|
||||
|
||||
Chez Limagrain, le **code article WMS = lot SAP** (cf.
|
||||
[Données principales](../06-erp-interface/donnees-principales.md)).
|
||||
Chaque lot SAP est descendu via le fichier **ITM** (fiche article
|
||||
complète), et le code produit est un attribut stocké en CstAtt du stock.
|
||||
Le **lot officiel** est l'alias de l'article dans le WMS.
|
||||
|
||||
Quand le lot est "inconnu du WMS", cela signifie qu'**aucun article
|
||||
(ITM) n'existe avec ce lot officiel comme alias**. Il faut demander à
|
||||
SAP d'envoyer la fiche article complète.
|
||||
|
||||
### Logique de vérification
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A[Scan / saisie lot officiel] --> B{Lot officiel connu du WMS ?<br/>= alias article existant ?}
|
||||
B -- Oui --> C{Vendu par Limagrain ?}
|
||||
B -- Non --> D[Appel API SAP]
|
||||
D --> E[Écran attente<br/>refresh 5s / timeout 1 min]
|
||||
E --> F{ITM reçu via API WMS ?}
|
||||
F -- Oui --> C
|
||||
F -- Non / Timeout --> G{Tentative < 5 ?}
|
||||
G -- Oui --> H[Bouton Réessayer]
|
||||
H --> D
|
||||
G -- Non --> I[Erreur finale :<br/>contacter responsable]
|
||||
C -- Oui --> J{Plusieurs articles ?}
|
||||
C -- Non --> K[Erreur : lot non vendu<br/>par Limagrain]
|
||||
J -- Non --> L[Sélection automatique<br/>→ déclaration contenu]
|
||||
J -- Oui --> M[Dialogue choix article<br/>par pays d'origine]
|
||||
M --> L
|
||||
```
|
||||
|
||||
### Appel API SAP — Vérification du lot officiel
|
||||
|
||||
L'appel API REST est fait **directement depuis le workflow** (pas via
|
||||
GNA). Il sert à notifier SAP que le WMS a besoin de la fiche article.
|
||||
|
||||
**Séquence d'échange :**
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant WF as WMS (workflow)
|
||||
participant SAP
|
||||
WF->>SAP: POST /api/v1/lot/verify
|
||||
Note over WF,SAP: Payload : IV_LGNUM, IV_BATCH_OFF,<br/>IV_RETURN
|
||||
SAP-->>WF: Réponse JSON (EV_RETURN, ET_BATCH)
|
||||
alt EV_RETURN = "X" (OK)
|
||||
SAP->>WF: POST ApplicationService/ITM
|
||||
Note over SAP,WF: Fiche article complète :<br/>lot SAP = code article,<br/>lot officiel = alias
|
||||
WF->>WF: Vérif : product code existe en base ?
|
||||
alt OK
|
||||
WF->>WF: Continuer
|
||||
else Absent
|
||||
WF->>WF: Proposer réessayer
|
||||
end
|
||||
else EV_RETURN ≠ "X" (NOK)
|
||||
WF->>WF: Erreur immédiate
|
||||
end
|
||||
```
|
||||
|
||||
**Payload de requête :**
|
||||
|
||||
```json
|
||||
POST /api/v1/lot/verify
|
||||
{
|
||||
"IV_LGNUM": "WF02",
|
||||
"IV_MATNR": "",
|
||||
"IV_CHARG": "",
|
||||
"IV_BATCH_OFF": "<lot officiel à vérifier>",
|
||||
"IV_RETURN": "<code du retour client (OE)>"
|
||||
}
|
||||
```
|
||||
|
||||
- `IV_LGNUM` : toujours "WF02"
|
||||
- `IV_BATCH_OFF` : numéro de lot officiel scanné
|
||||
- `IV_RETURN` : code du retour client (ordre d'entrée)
|
||||
- Les autres champs restent vides
|
||||
|
||||
**Payload de réponse (champs clés) :**
|
||||
|
||||
| Champ | Description |
|
||||
|-------|-------------|
|
||||
| `EV_RETURN` | "X" = lot valide, sinon invalide |
|
||||
| `ET_RETURN[]` | Tableau de messages (TYPE, MESSAGE, etc.) |
|
||||
| `ET_BATCH[]` | Lots autorisés : `MATNR` (code article SAP), `CHARG` (lot SAP), `BATCH_OFF` (lot officiel), `EV_DEPLOY` ("X" = autorisé) |
|
||||
|
||||
Si `EV_RETURN = "X"`, on récupère dans `ET_BATCH` tous les
|
||||
`BATCH_OFF` dont `EV_DEPLOY = "X"` — ce sont les lots autorisés
|
||||
pour l'opérateur.
|
||||
|
||||
### Écran d'attente pendant la réception de l'ITM
|
||||
|
||||
Après l'appel API, SAP appelle directement l'API du WMS pour pousser
|
||||
l'ITM. Pendant cette attente :
|
||||
|
||||
- **Message** : "Vérification du lot en cours..."
|
||||
- **Refresh automatique** toutes les 5 secondes : le WMS vérifie si
|
||||
un **alias correspondant au lot officiel** existe en base
|
||||
- **Bouton "Réessayer"** visible (relance un nouvel appel API)
|
||||
- **Timeout** : 1 minute maximum par tentative
|
||||
- **Nombre maximum de tentatives** : 5
|
||||
|
||||
| Tentative | Comportement en cas de timeout |
|
||||
|-----------|-------------------------------|
|
||||
| 1 à 4 | Message "Erreur de communication avec SAP. Réessayer ?" + bouton Réessayer |
|
||||
| 5 | Message final "Impossible de contacter SAP après 5 tentatives. Veuillez contacter votre responsable." + bouton Annuler → retour au scan lot |
|
||||
|
||||
### Choix du code lot (multi-résultat)
|
||||
|
||||
Si l'API a renvoyé **plusieurs résultats** dans `ET_BATCH` (plusieurs
|
||||
`BATCH_OFF` avec `EV_DEPLOY = "X"`), un dialogue de sélection est
|
||||
affiché avec la liste des codes lots disponibles. L'opérateur en choisit
|
||||
un (filtrage par pays d'origine).
|
||||
|
||||
Si un **seul résultat** → sélection automatique, pas de dialogue.
|
||||
|
||||
**Pourquoi le choix article ?** Un lot SAP peut être associé à plusieurs
|
||||
articles (dépend du pays d'origine). L'opérateur doit choisir l'article
|
||||
physiquement présent sur la palette.
|
||||
|
||||
**Gestion dans le REF :** le code générique envoyé dans le ROR est
|
||||
remplacé par le vrai code lot dans le REF (custom).
|
||||
|
||||
## Déclaration au poste de travail (LIM-72)
|
||||
|
||||
Le traitement au PK reprend les mêmes étapes que le flux fournisseur
|
||||
([LIM-67](https://easywmsfrance.atlassian.net/browse/LIM-67)) avec des
|
||||
adaptations. Le tableau ci-dessous récapitule chaque étape et ses
|
||||
différences :
|
||||
|
||||
| # | Étape | Différence vs fournisseur (LIM-67) |
|
||||
|---|-------|------------------------------------|
|
||||
| 1 | Sélection de la réception | Affichage "**Client: CODE - NOM**" (au lieu de "Fournisseur") sur tous les écrans |
|
||||
| 2 | Big bag (CstAtt02) | Identique — toggle ON/OFF |
|
||||
| 3 | Scan lot officiel + vérification | **+ Vérification API SAP** (voir section ci-dessus) |
|
||||
| 4 | Déclaration quantité | Identique — affichage qté attendue + UdM, prompt non pré-rempli |
|
||||
| 4bis | Flag big-bag (bouton custom) | Identique (CstAtt02) |
|
||||
| 5 | Statut de stock | **Modifiable** — boutons visibles (masqués dans LIM-67) |
|
||||
| 6 | Flag "À anoxier" | Identique (CstAtt03 = true) |
|
||||
| 7 | Programme de filmage | Identique (paramètre FILMAGES → CstAtt05) |
|
||||
| 8 | Impression étiquette RFID | Identique ([LIM-68](https://easywmsfrance.atlassian.net/browse/LIM-68)) |
|
||||
| 9 | Validation → évacuation AGV | Identique |
|
||||
|
||||
### Statut de stock — Modifiable
|
||||
|
||||
Contrairement au flux fournisseur (LIM-67) où le statut de stock est
|
||||
verrouillé (boutons masqués), dans le flux retour client :
|
||||
|
||||
- Les **boutons de changement de statut sont visibles** et fonctionnels
|
||||
- L'opérateur peut modifier le statut (ex : Conforme, Sac sale,
|
||||
Non conforme, etc.)
|
||||
- Les écrans de **date de fin de statut** et **commentaire** suivent
|
||||
le comportement standard (non skippés contrairement au fournisseur)
|
||||
- [CUSTOM] Statuts spécifiques retour : **F9** (sacs sales), **B6**
|
||||
(non conforme) — assignables uniquement dans ce processus
|
||||
|
||||
### Tolérance illimitée
|
||||
|
||||
- **Article non prévu** dans le retour → accepté (création de ligne
|
||||
autorisée)
|
||||
- **Quantité supérieure** au prévu → acceptée
|
||||
- **Quantité inférieure** au prévu → acceptée (réception fermée
|
||||
manuellement)
|
||||
|
||||
> Le prompt type de poste (3 ou 6 TP) prévu initialement est
|
||||
> **abandonné** — remplacé par un message d'avertissement si le poste
|
||||
> adjacent est déjà ouvert (voir
|
||||
> [Stations picking](../03-picking/stations-picking.md)).
|
||||
|
||||
## Constitution palettes mono référence
|
||||
|
||||
Obligation de constituer des palettes **mono référence** avant stockage.
|
||||
Si la palette retour est multi-ref :
|
||||
|
||||
- Opérateur appelle une palette vide sur une TP disponible
|
||||
- Tri de marchandise
|
||||
|
||||
## Calcul poids et passage PIE
|
||||
|
||||
Identique aux réceptions extérieures (mêmes formules de répartition
|
||||
prorata, mêmes contrôles). Voir
|
||||
[Contrôle qualité réception](controle-qualite-reception.md).
|
||||
|
||||
**Différences pour les retours client :**
|
||||
|
||||
- Verrou si écart poids : **« Écart inventaire »** (vs « Réception »
|
||||
pour les autres flux) — verrou posé sur le **support** (pas sur
|
||||
le stock)
|
||||
- Action requise en cas d'écart : **recomptage du nombre de sacs**
|
||||
- Rejet PIE : dirigé vers **poumon au sol** + notification SmartUI
|
||||
(ancienne approche de renvoi au PK abandonnée)
|
||||
|
||||
## Clôture — Spécificités retour client (LIM-73)
|
||||
|
||||
Le mécanisme général de clôture (déclenchement auto-close, tolérance par
|
||||
ligne, CstAtt01 OE hors tolérance, clôture OE) est documenté dans
|
||||
[Réception fournisseur — Clôture](reception-fournisseur.md). Cette
|
||||
section décrit le **delta retour client** : le REF est conditionné au
|
||||
rangement ASRS complet.
|
||||
|
||||
### Contexte métier
|
||||
|
||||
Pour les retours clients, le REF influe sur la **facturation SAP**. Il
|
||||
ne doit être envoyé que lorsque **tous les supports** de la réception
|
||||
sont rangés dans l'ASRS (et ont passé l'ensemble des contrôles,
|
||||
notamment PIE).
|
||||
|
||||
Pour les autres types de réception (fournisseur / intersite), le REF est
|
||||
émis à la clôture de la réception, quelle que soit la position des
|
||||
supports.
|
||||
|
||||
### CstAtt11 — Marqueur de rangement ASRS
|
||||
|
||||
À chaque fin de tâche de rangement dans l'ASRS :
|
||||
|
||||
- Vérifier si le support provient d'une réception de type **retour**
|
||||
- Si oui → `CstAtt11 = true` sur le support
|
||||
- Sinon → aucune action
|
||||
|
||||
Le CstAtt11 est posé une fois et n'est **jamais remis à false**, même si
|
||||
le support ressort ensuite de l'ASRS (picking). Cela garantit que la
|
||||
condition de clôture reste satisfaisable même si une palette a déjà été
|
||||
expédiée entre-temps.
|
||||
|
||||
### Statut « Clôture en cours »
|
||||
|
||||
Dans la vue des réceptions, le statut visuel est piloté par le
|
||||
`CstAtt01 de la réception` (posé par Reception_Close_PR_V2) :
|
||||
|
||||
| CstAtt01 réception | État | Affichage |
|
||||
|---------------------|------|-----------|
|
||||
| null / vide | En attente | Standard |
|
||||
| true | Clôture en attente de rangement ASRS complet | **« Clôture en cours »**, ligne en **jaune** |
|
||||
|
||||
Pour les réceptions non-retour, CstAtt01 de la réception n'est pas
|
||||
utilisé (affichage standard).
|
||||
|
||||
### Adaptation Reception_Close_PR_V2 — Partie A (retours)
|
||||
|
||||
- **Si non-retour** → clôture immédiate, génération REF (standard)
|
||||
- **Si retour** :
|
||||
- Vérifier que **tous les supports** ont `CstAtt11 = true`
|
||||
- **Oui** → `CstAtt01 réception = false`, fermer la réception,
|
||||
générer REF
|
||||
- **Non** → ne pas fermer, `CstAtt01 réception = true` (statut
|
||||
« Clôture en cours »). Le WF est rejoué à chaque event
|
||||
_task finished_ sur un support de la réception
|
||||
|
||||
> Si une palette est refusée au PIE puis retirée du retour (ROR), le
|
||||
> client doit la **supprimer du WMS**, sinon la clôture ne sera jamais
|
||||
> effectuée.
|
||||
|
||||
### Zone de stockage dans le REF
|
||||
|
||||
Pour les retours, le REF n'est émis qu'une fois tous les supports rangés
|
||||
en ASRS → la valeur sera toujours une zone réelle (jamais "NON RANGEE").
|
||||
|
||||
### Récapitulatif CstAtt clôture retour
|
||||
|
||||
| CstAtt | Entité | Rôle |
|
||||
|--------|--------|------|
|
||||
| CstAtt08 | Palette fictive | Code réception — détecte l'absence de palettes fictives restantes (§ auto-close) |
|
||||
| CstAtt10 | Palette réelle au PK | `true` pendant traitement PK — détecte qu'aucune palette n'est en cours |
|
||||
| CstAtt11 | Support (palette réelle) | `true` quand le support retour a fini son rangement ASRS — **introduit par LIM-73** |
|
||||
| CstAtt01 | Réception (retour uniquement) | `true` = clôture en attente de rangement complet — **introduit par LIM-73** |
|
||||
| CstAtt01 | OE (ordre d'entrée) | `true` = hors tolérance, bloque auto-close et ROF — **introduit par LIM-73** |
|
||||
|
||||
## Points d'attention
|
||||
|
||||
⚠️ Le changement de statut de stock (F9, B6) n'est autorisé sur poste de
|
||||
travail **que** dans le processus retour client.
|
||||
|
||||
⚠️ Un commentaire est associé au statut et remonté dans le message
|
||||
d'interface ERP.
|
||||
|
||||
⚠️ Les palettes retour reçoivent automatiquement le flag « A anoxier »
|
||||
(risque contamination).
|
||||
|
||||
⚠️ L'API lot SAP est une interrogation synchrone — timeout 1 min,
|
||||
refresh 5s, 5 essais max avant erreur finale.
|
||||
|
||||
⚠️ Les codes articles génériques du ROR doivent être **uniques** (pas
|
||||
réutilisables) pour assurer la traçabilité.
|
||||
|
||||
## Paramètres spécifiques retour client
|
||||
|
||||
Les paramètres existants de LIM-67 sont réutilisés (FILMAGES, etc.).
|
||||
Paramètres additionnels pour l'API SAP :
|
||||
|
||||
| Paramètre | Description | Valeur par défaut |
|
||||
|-----------|-------------|-------------------|
|
||||
| SAP_LOT_VERIFY_URL | URL de l'endpoint API SAP pour la vérification des lots | _(à définir)_ |
|
||||
| SAP_LOT_VERIFY_TIMEOUT | Timeout d'un appel API SAP (en secondes) | 60 |
|
||||
| SAP_LOT_VERIFY_MAX_RETRIES | Nombre maximum de tentatives | 5 |
|
||||
| SAP_LOT_VERIFY_REFRESH | Intervalle de refresh écran d'attente (en secondes) | 5 |
|
||||
|
||||
## Questions ouvertes
|
||||
|
||||
- [x] ~~Format exact du message API lot SAP (requête/réponse)~~ — documenté
|
||||
via LIM-72 (payload POST /api/v1/lot/verify + réponse ET_BATCH)
|
||||
- [ ] URL exacte de l'endpoint SAP (SAP_LOT_VERIFY_URL) à définir
|
||||
(@Fabien)
|
||||
- [ ] Vérification "vendu par Limagrain" : est-ce le champ EV_DEPLOY
|
||||
dans ET_BATCH ou un autre champ de la réponse ? (@Fabien)
|
||||
- [ ] Gestion du token SAP : récupération avant chaque appel ou clé
|
||||
privée ? Mécanisme à préciser (@Fabien)
|
||||
- [ ] Cas du product code manquant en base après réponse OK :
|
||||
combien de temps attendre avant de proposer Réessayer ? (@Fabien)
|
||||
|
||||
## 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 | Flux complet PK retour (LIM-72) : process 8 étapes, API SAP détaillée (payload, séquence, écran attente, retry), statut stock modifiable, tolérance illimitée, paramètres SAP_LOT_VERIFY_*, choix article multi-résultat |
|
||||
| 2026-05-12 | Arthur | LIM-73 : clôture retour client — REF conditionné au rangement ASRS complet (CstAtt11), statut « Clôture en cours » (CstAtt01 réception, jaune), Reception_Close_PR_V2 partie A (event replay), CstAtt01 OE hors tolérance, récap CstAtt clôture |
|
||||
|
||||
## 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-72](https://easywmsfrance.atlassian.net/browse/LIM-72) | Ticket Jira | 2026 |
|
||||
| [LIM-67](https://easywmsfrance.atlassian.net/browse/LIM-67) | Ticket Jira (flux fournisseur PK) | 2026 |
|
||||
| [LIM-68](https://easywmsfrance.atlassian.net/browse/LIM-68) | Ticket Jira (étiquette RFID) | 2026 |
|
||||
| [LIM-73](https://easywmsfrance.atlassian.net/browse/LIM-73) | Ticket Jira (clôture REF/ROF retours) | 2026 |
|
||||
@@ -0,0 +1,60 @@
|
||||
---
|
||||
title: "Inbound — Vue d'ensemble"
|
||||
tags: [inbound, index]
|
||||
status: draft
|
||||
last_updated: 2026-05-12
|
||||
---
|
||||
|
||||
# Inbound — Vue d'ensemble
|
||||
|
||||
> **Périmètre** : réception fournisseur, retours, contrôle qualité à réception,
|
||||
> messages ERP inbound.
|
||||
|
||||
> **Standard EasyWMS** : voir [Reception](../../concepts/reception.md),
|
||||
> [Order Inbound](../../concepts/order-inbound.md)
|
||||
|
||||
## Pages de cette section
|
||||
|
||||
- [Gestion des camions](gestion-camions.md) — arrivée, quais, déclaration image de quai
|
||||
- [Réception fournisseur](reception-fournisseur.md)
|
||||
- [Réception retour](reception-retour.md)
|
||||
- [Contrôle qualité réception](controle-qualite-reception.md)
|
||||
- [Étiquette RFID](etiquette-rfid.md) — format A5, QR GS1, encodage ZPL
|
||||
- [Flux ERP inbound](flux-erp-inbound.md)
|
||||
|
||||
## Vue synthétique du flux inbound Limagrain
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
CAM[Camion arrive] --> PARK[Quai Parking]
|
||||
PARK --> QUAI[Assignation quai + image]
|
||||
QUAI --> DECH[Déchargement sur poumon]
|
||||
DECH --> DECL{Déclaration type}
|
||||
|
||||
DECL -->|Production| PROD[AGV → Entrée quais PIE_01]
|
||||
DECL -->|Extérieure/Retour| EXT[AGV → Poste de travail]
|
||||
DECL -->|Palettes vides| VIDE[AGV → Entrée quais PIE_01]
|
||||
|
||||
PROD --> PIE1[PIE_01 contrôle]
|
||||
VIDE --> PIE1
|
||||
|
||||
EXT --> PK[Traitement sur poste PK]
|
||||
PK --> AGV2[AGV → Entrée postes PIE_02/03]
|
||||
AGV2 --> PIE2[PIE_02/03 contrôle]
|
||||
|
||||
PIE1 -->|OK| ASRS[Stockage ASRS]
|
||||
PIE1 -->|NOK| REJ1[Rejet / Reconditionnement]
|
||||
PIE2 -->|OK| ASRS
|
||||
PIE2 -->|NOK| REJ2[Rejet → Poste d'origine]
|
||||
|
||||
ASRS --> LOC[Message LOC → SAP]
|
||||
PK --> REF[Clôture → REF + ROF → SAP]
|
||||
```
|
||||
|
||||
## 3 types de réception
|
||||
|
||||
| Type | Message ERP | Passage poste | Entrée PIE |
|
||||
|------|-------------|---------------|------------|
|
||||
| Production | ASN | Non | PIE_01 (côté quais) |
|
||||
| Extérieure / Intersite | ROR | Oui | PIE_02/03 (côté postes) |
|
||||
| Retour client | ROR + API lot | Oui | PIE_02/03 (côté postes) |
|
||||
@@ -0,0 +1,60 @@
|
||||
---
|
||||
title: "Inbound — Vue d'ensemble"
|
||||
tags: [inbound, index]
|
||||
status: draft
|
||||
last_updated: 2026-05-12
|
||||
---
|
||||
|
||||
# Inbound — Vue d'ensemble
|
||||
|
||||
> **Périmètre** : réception fournisseur, retours, contrôle qualité à réception,
|
||||
> messages ERP inbound.
|
||||
|
||||
> **Standard EasyWMS** : voir [Reception](../../concepts/reception.md),
|
||||
> [Order Inbound](../../concepts/order-inbound.md)
|
||||
|
||||
## Pages de cette section
|
||||
|
||||
- [Gestion des camions](gestion-camions.md) — arrivée, quais, déclaration image de quai
|
||||
- [Réception fournisseur](reception-fournisseur.md)
|
||||
- [Réception retour](reception-retour.md)
|
||||
- [Contrôle qualité réception](controle-qualite-reception.md)
|
||||
- [Étiquette RFID](etiquette-rfid.md) — format A5, QR GS1, encodage ZPL
|
||||
- [Flux ERP inbound](flux-erp-inbound.md)
|
||||
|
||||
## Vue synthétique du flux inbound Limagrain
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
CAM[Camion arrive] --> PARK[Quai Parking]
|
||||
PARK --> QUAI[Assignation quai + image]
|
||||
QUAI --> DECH[Déchargement sur poumon]
|
||||
DECH --> DECL{Déclaration type}
|
||||
|
||||
DECL -->|Production| PROD[AGV → Entrée quais PIE_01]
|
||||
DECL -->|Extérieure/Retour| EXT[AGV → Poste de travail]
|
||||
DECL -->|Palettes vides| VIDE[AGV → Entrée quais PIE_01]
|
||||
|
||||
PROD --> PIE1[PIE_01 contrôle]
|
||||
VIDE --> PIE1
|
||||
|
||||
EXT --> PK[Traitement sur poste PK]
|
||||
PK --> AGV2[AGV → Entrée postes PIE_02/03]
|
||||
AGV2 --> PIE2[PIE_02/03 contrôle]
|
||||
|
||||
PIE1 -->|OK| ASRS[Stockage ASRS]
|
||||
PIE1 -->|NOK| REJ1[Rejet / Reconditionnement]
|
||||
PIE2 -->|OK| ASRS
|
||||
PIE2 -->|NOK| REJ2[Rejet → Poste d'origine]
|
||||
|
||||
ASRS --> LOC[Message LOC → SAP]
|
||||
PK --> REF[Clôture → REF + ROF → SAP]
|
||||
```
|
||||
|
||||
## 3 types de réception
|
||||
|
||||
| Type | Message ERP | Passage poste | Entrée PIE |
|
||||
|------|-------------|---------------|------------|
|
||||
| Production | ASN | Non | PIE_01 (côté quais) |
|
||||
| Extérieure / Intersite | ROR | Oui | PIE_02/03 (côté postes) |
|
||||
| Retour client | ROR + API lot | Oui | PIE_02/03 (côté postes) |
|
||||
@@ -0,0 +1,268 @@
|
||||
---
|
||||
title: "Contrôle qualité réception — Vérification poids PIE"
|
||||
tags: [inbound, PIE, poids, verrou, inventaire, qualité]
|
||||
status: draft
|
||||
standard_ref: architecture/galileo-integration.md
|
||||
jira_refs: [LIM-66]
|
||||
confluence_refs: []
|
||||
sources: [FR-SW-04-07_LIMAGRAIN_Functional_Analysis_V1.5.docx, "Réception - LIMAGRAIN - DEV - Confluence.md", LIM-66_Passage_PIE.md, wiki-update-poids-PIE-tolerance.md]
|
||||
last_updated: 2026-05-13
|
||||
author: Arthur
|
||||
---
|
||||
|
||||
# Contrôle qualité réception — Vérification poids PIE
|
||||
|
||||
> **Résumé** : mécanisme [CUSTOM] de contrôle de poids au passage PIE avec
|
||||
> calcul de tolérance par type article, application automatique de verrous
|
||||
> et mise à jour du poids unitaire.
|
||||
|
||||
> **Standard EasyWMS** : → voir [GALILEO Integration](../../architecture/galileo-integration.md)
|
||||
> Ce qui suit documente les **spécificités Limagrain** par rapport au standard.
|
||||
|
||||
## Contexte projet
|
||||
|
||||
Chez Limagrain, chaque passage au PIE déclenche une vérification de poids
|
||||
qui sert d'**inventaire permanent** par pesée. Ce mécanisme s'applique à
|
||||
**tous les processus** (réception production, extérieure, retour, picking,
|
||||
regroupement, échantillonnage).
|
||||
|
||||
## Contrôles au PIE
|
||||
|
||||
Le PIE effectue les contrôles suivants :
|
||||
|
||||
| Contrôle | Critère de validation |
|
||||
|----------|----------------------|
|
||||
| Étiquette RFID | Connue (détectable) |
|
||||
| Hauteur | ≤ 1900 mm |
|
||||
| Largeur | ≤ 1100 mm |
|
||||
| Longueur | ≤ 1300 mm |
|
||||
| Poids | ≤ 1250 kg |
|
||||
| État palette bois | Correct (lames TK ne doivent pas toucher le bois, pas de ski manquant) |
|
||||
|
||||
> Les erreurs sont configurables par type dans easyS — possibilité
|
||||
> d'envoyer vers différentes destinations selon le type d'erreur
|
||||
> (station error type). Exemple : scotch qui dépasse → station de
|
||||
> reconditionnement, palette vraiment non conforme → rejet complet.
|
||||
|
||||
## Formule de calcul du poids
|
||||
|
||||
### Étape 1 — Poids des lignes de stock
|
||||
|
||||
```
|
||||
Poids lignes de stock = Poids total mesuré − Poids théorique support (PALETTE_US)
|
||||
```
|
||||
|
||||
### Étape 2 — Répartition au prorata entre lignes de stock
|
||||
|
||||
Le poids mesuré est réparti au prorata entre les différentes lignes
|
||||
de stock.
|
||||
|
||||
**Source du poids théorique (par ordre de priorité)** : ancienne pesée
|
||||
(champ « Poids » de la ligne de stock), puis poids conversion ITM
|
||||
(champ « Poids théorique » de la ligne de stock).
|
||||
|
||||
**Formules :**
|
||||
|
||||
```
|
||||
Ratio = Poids théorique de la ligne / Poids théorique total de toutes les lignes
|
||||
Poids réel de la ligne = Poids lignes de stock × Ratio
|
||||
```
|
||||
|
||||
**Exemple :** 5 lignes d'article A (ITM = 2 kg), 1 ligne d'article B
|
||||
(ITM = 40 kg). Poids théorique total = (5 × 2) + (1 × 40) = 50 kg.
|
||||
Poids mesuré au PIE = 60 kg (hors palette bois).
|
||||
|
||||
| Article | Poids théorique | Ratio | Poids réel calculé |
|
||||
|---------|-----------------|-------|---------------------|
|
||||
| A (× 5) | 2 kg (ITM) | 20 % | 2,4 kg par ligne |
|
||||
| B (× 1) | 40 kg (ITM) | 80 % | 48 kg |
|
||||
| **Total** | 50 kg | 100 % | **60 kg** |
|
||||
|
||||
### Étape 3 — Mise à jour du poids unitaire (CstAtt01)
|
||||
|
||||
Le **CstAtt01** de chaque ligne de stock est mis à jour avec le poids
|
||||
unitaire mesuré :
|
||||
|
||||
```
|
||||
Poids unitaire mesuré = Poids réel de la ligne / Quantité de la ligne
|
||||
```
|
||||
|
||||
| Donnée | Champ WMS |
|
||||
|--------|-----------|
|
||||
| Poids unitaire mesuré | **CstAtt01** de la ligne de stock |
|
||||
| Poids réel pesé (total) | Champ standard « poids balance » du support |
|
||||
| Poids réel de la ligne | Champ « Poids réel » de la ligne de stock |
|
||||
|
||||
> **Priorité CstAtt01** : si CstAtt01 a déjà une valeur (pesée
|
||||
> précédente), c'est ce poids unitaire qui est utilisé comme référence
|
||||
> pour **tous les calculs du passage PIE** — ratio (étape 2) **et**
|
||||
> seuil de tolérance (vérification ci-dessous) — à la place du poids
|
||||
> théorique ITM.
|
||||
|
||||
> **Mise à jour du stock : OUI** — le poids calculé est stocké dans
|
||||
> CstAtt01 de la ligne de stock.
|
||||
> **Mise à jour de l'ITM : NON** — le poids théorique de la fiche
|
||||
> article reste inchangé. Raison : le poids varie en fonction de la
|
||||
> production (début/fin de prod), chaque pesée est unique.
|
||||
|
||||
> Le poids est quand même appliqué et recalculé, même en cas de
|
||||
> blocage (verrou).
|
||||
|
||||
## Vérification de la tolérance et blocage
|
||||
|
||||
Ref. [LIM-66](https://easywmsfrance.atlassian.net/browse/LIM-66) — en
|
||||
revue de code.
|
||||
|
||||
### Poids de référence pour le seuil de tolérance
|
||||
|
||||
Le "poids unitaire de l'article" utilisé comme seuil de tolérance suit
|
||||
la même règle de priorité que le ratio :
|
||||
|
||||
| Situation | Poids de référence utilisé |
|
||||
|-----------|---------------------------|
|
||||
| CstAtt01 renseigné (pesée précédente) | **CstAtt01** (poids unitaire mesuré) |
|
||||
| CstAtt01 vide (premier passage PIE) | **Poids ITM** (conversion article) |
|
||||
|
||||
**Conséquence sur les passages successifs** : après un premier passage
|
||||
PIE qui recalibre le poids unitaire (ex. ITM = 10 kg, mesuré = 30 kg),
|
||||
le seuil de tolérance au passage suivant sera basé sur 30 kg (CstAtt01).
|
||||
Un écart de 20 kg (2 unités au poids ITM d'origine) ne déclenchera pas
|
||||
de blocage car il reste inférieur à 1 unité au poids recalibré (30 kg).
|
||||
|
||||
> Validé par le client (échange Justine BEUTIN / Olivier, mai 2026).
|
||||
|
||||
### [CUSTOM] Palettes mono-référence
|
||||
|
||||
**Condition de blocage** : si l'écart de poids correspond à un écart
|
||||
d'une ligne de stock (article manquant ou en trop → écart ≥ poids
|
||||
unitaire de référence, cf. tableau ci-dessus) → blocage via verrou sur
|
||||
le **support** (pas sur le stock) + alerte SmartUI.
|
||||
|
||||
### [CUSTOM] Palettes multi-références — seuil d'alerte
|
||||
|
||||
Pour les palettes contenant plusieurs articles différents, le système
|
||||
utilise le **plus petit poids unitaire de référence** (CstAtt01 si
|
||||
renseigné, sinon ITM, par ligne) comme seuil d'alerte. Si l'écart
|
||||
total ≥ ce plus petit poids → blocage + alerte.
|
||||
|
||||
### Verrous appliqués
|
||||
|
||||
Deux verrous possibles selon le flux :
|
||||
|
||||
| Verrou | Flux | Comportement post-PIE |
|
||||
|--------|------|----------------------|
|
||||
| **HORS TOLERANCE** | Tous sauf retour client | La palette **entre quand même dans l'ASRS** malgré le verrou |
|
||||
| **ECART RETOUR** | Retour client uniquement | La palette est **refusée et envoyée en rejet** (destination gérée par EasyS) |
|
||||
|
||||
### Notification
|
||||
|
||||
- Création d'une **notification SmartUI** via le circuit classique de
|
||||
notifications basé sur un event (pas d'event custom)
|
||||
- Le verrou est posé sur le **support** (pas sur le stock)
|
||||
- Notification dédiée au rejet générée dans le cas ECART RETOUR
|
||||
|
||||
### Comportement selon le flux (détail)
|
||||
|
||||
| Processus | Verrou appliqué | Action |
|
||||
|-----------|-----------------|--------|
|
||||
| Réception production | HORS TOLERANCE | Stockage ASRS avec verrou |
|
||||
| Réception extérieure/intersite | HORS TOLERANCE | Stockage ASRS avec verrou |
|
||||
| Retour client (InboundType=1) | ECART RETOUR | Rejet (pas de stockage ASRS) |
|
||||
| Picking | HORS TOLERANCE | Stockage avec verrou, recomptage sur poste |
|
||||
| Regroupement | HORS TOLERANCE | Stockage avec verrou, recomptage sur poste |
|
||||
| Échantillonnage | HORS TOLERANCE | Stockage avec verrou, recomptage sur poste |
|
||||
|
||||
Dans tous les cas, le poids est quand même appliqué et recalculé.
|
||||
|
||||
### [CUSTOM] Type ZSIZ — Ajustement automatique
|
||||
|
||||
Si le type d'article est **ZSIZ** (semi-fini calibré / big-bag), un
|
||||
message d'ajustement de stock est envoyé vers SAP via **WSC** contenant
|
||||
le poids réel de la HU, **indépendamment de la tolérance**.
|
||||
|
||||
**Gestion du timing avec le REF :**
|
||||
|
||||
- **Problématique** : au moment du PIE, l'ERP ne connaît peut-être
|
||||
pas encore la palette (REF pas encore envoyé)
|
||||
- **Solution** : chaque palette présente dans un REF est flaguée dans
|
||||
le WMS. Si palette connue de l'ERP → transaction d'écart de poids
|
||||
immédiate. Si palette inconnue → flag de l'écart, puis à l'envoi du
|
||||
REF, un event déclenche la transaction
|
||||
- Le flag d'écart de poids est inclus dans le fichier **LOC** envoyé
|
||||
à SAP
|
||||
|
||||
## Gestion des verrous
|
||||
|
||||
### Consultation
|
||||
|
||||
Vue « Entrepôt → Verrous conteneur » :
|
||||
|
||||
- Verrou appliqué par conteneur
|
||||
- Date d'application
|
||||
- Possibilité de débloquer (lever le verrou)
|
||||
|
||||
### Impact sur l'expédition
|
||||
|
||||
Un verrou empêchant l'expédition bloque l'assignation du stock à un ordre
|
||||
de sortie. Le verrou « Réception » déclenche un **recomptage obligatoire**
|
||||
avant tout processus suivant (picking, regroupement, échantillonnage).
|
||||
|
||||
### [CUSTOM] Dérogation poids
|
||||
|
||||
Pour les processus de **regroupement** et **échantillonnage**, si la palette
|
||||
a un excédent de poids non corrigeable, l'opérateur peut depuis son poste
|
||||
de travail **autoriser** la palette à passer le PIE même si hors tolérance.
|
||||
|
||||
## Post-traitements
|
||||
|
||||
- Réception production : **ASO et ASK désactivés**
|
||||
- Les messages post-PIE ne sont pas générés pour le flux production
|
||||
|
||||
## Points d'attention
|
||||
|
||||
⚠️ Le contrôle poids s'applique à **chaque** passage PIE — une palette
|
||||
peut passer le PIE plusieurs fois (réception → picking → restockage).
|
||||
|
||||
⚠️ Le poids est porté par le **stock** (CstAtt01 de la ligne), pas par
|
||||
la fiche article ITM — chaque pesée est unique.
|
||||
|
||||
⚠️ Les palettes avec verrou « Réception » sont prioritaires dans
|
||||
l'assignation de stock pour l'échantillonnage (permet de combiner
|
||||
recomptage + échantillonnage).
|
||||
|
||||
⚠️ Verrou posé sur le **support** (pas sur le stock) — différent du
|
||||
comportement standard.
|
||||
|
||||
⚠️ Pour les palettes multi-références, le seuil d'alerte est le plus
|
||||
petit poids unitaire parmi toutes les lignes de stock.
|
||||
|
||||
⚠️ Après un passage PIE qui recalibre fortement le poids (ex. ITM
|
||||
10 kg → CstAtt01 30 kg), le seuil de tolérance au passage suivant
|
||||
est proportionnellement plus large. C'est le comportement attendu :
|
||||
chaque pesée fait foi pour la suivante.
|
||||
|
||||
## Questions ouvertes
|
||||
|
||||
- [x] Tolérances : le seuil est dynamique (CstAtt01 > ITM), validé par
|
||||
le client (mai 2026). Pas de valeur fixe par type article.
|
||||
- [ ] Valeur du poids palette bois fixe (PALETTE_US) (@Théo)
|
||||
- [ ] Poids variable — vérifier si le standard gère la capture de
|
||||
poids avec poids moyen activé (@Nicolas)
|
||||
|
||||
## Historique des modifications
|
||||
|
||||
| Date | Auteur | Modification |
|
||||
|------|--------|--------------|
|
||||
| 2026-05-05 | Arthur | Création initiale depuis AF V1.5 |
|
||||
| 2026-05-05 | Arthur | Enrichissement : prorata, multi-ref, verrou support, ZSIZ timing |
|
||||
| 2026-05-12 | Arthur | LIM-66 : verrous HORS TOLERANCE / ECART RETOUR, CstAtt01 poids unitaire, comportement post-PIE |
|
||||
| 2026-05-13 | Arthur | Clarification tolérance CstAtt01 > ITM pour passages PIE successifs (validation client) |
|
||||
|
||||
## 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-66](https://easywmsfrance.atlassian.net/browse/LIM-66) | Ticket Jira | 2026 |
|
||||
| Échange Justine BEUTIN / Olivier (Limagrain) | Validation client | mai 2026 |
|
||||
@@ -0,0 +1,128 @@
|
||||
---
|
||||
title: "Étiquette support RFID — Format mono-référence"
|
||||
tags: [inbound, outbound, RFID, étiquette, ZPL, GS1, support]
|
||||
status: draft
|
||||
standard_ref: concepts/reception.md
|
||||
jira_refs: [LIM-68]
|
||||
confluence_refs: []
|
||||
sources: [LIM-68_Etiquette_RFID.md]
|
||||
last_updated: 2026-05-12
|
||||
author: Arthur
|
||||
---
|
||||
|
||||
# Étiquette support RFID — Format mono-référence
|
||||
|
||||
> **Résumé** : étiquette A5 imprimée lors de la réception
|
||||
> fournisseur/intersite, contenant les informations du support (code,
|
||||
> article, lot, GTIN) avec un QR Code GS1 et un encodage RFID via ZPL.
|
||||
|
||||
> **Standard EasyWMS** : → voir [Reception](../../concepts/reception.md)
|
||||
> Ce qui suit documente les **spécificités Limagrain** par rapport au
|
||||
> standard.
|
||||
|
||||
## Contexte projet
|
||||
|
||||
Le client Limagrain souhaite un rapport d'étiquette personnalisé pour
|
||||
ses HU (supports) dans le flux de réception fournisseur/intersite.
|
||||
L'étiquette est imprimée automatiquement à la confirmation de création
|
||||
du conteneur sur le poste de travail (voir
|
||||
[Réception fournisseur](reception-fournisseur.md) — étape 5a). Elle
|
||||
peut aussi être réimprimée depuis le menu principal du poste (action
|
||||
« Imprimer étiquette »).
|
||||
|
||||
Ref. [LIM-68](https://easywmsfrance.atlassian.net/browse/LIM-68) —
|
||||
attente déploiement pour test.
|
||||
|
||||
## Format A5 — Contenu de l'étiquette
|
||||
|
||||
| N | Champ | Source WMS | Remarque |
|
||||
|---|-------|-----------|----------|
|
||||
| — | Quantité | Quantité + UdM | En haut de l'étiquette |
|
||||
| 1 | Code support (court) | 6 derniers chiffres du code support | **En gras** |
|
||||
| 2 | Code-barres | Code 128 du code support au format GS1 | |
|
||||
| 3 | Code support (complet) | Code support avec préfixe `(00)` | |
|
||||
| 4 | Espèce (Specie) | `ITM.CstAtt01` | |
|
||||
| 5 | Traitement commercial | `ITM.Family.Description` | |
|
||||
| 6 | Variety print on bag | Tel quel | |
|
||||
| 7 | — | `ITM.CstAtt03` | |
|
||||
| 8 | Lot officiel (Official Batch) | Premier Alias de l'article | |
|
||||
| 9 | Lot interne (Internal Batch) | `ITM.Code` | = Lot SAP |
|
||||
| 10 | Code GTIN | `ITM.CstAtt05` | |
|
||||
| 11 | Date | — | Vide (date non connue de l'ERP) |
|
||||
| 12 | QR Code GS1 | Voir section ci-dessous | |
|
||||
|
||||
## QR Code GS1
|
||||
|
||||
Le QR Code GS1 encode les identifiants suivants :
|
||||
|
||||
| AI (Application Identifier) | Contenu | Source |
|
||||
|------------------------------|---------|--------|
|
||||
| `00` | Numéro HU (code support) | Code support WMS |
|
||||
| `01` | Code GTIN | `ITM.CstAtt05` |
|
||||
| `10` | Lot officiel | Premier Alias de l'article |
|
||||
| `21` | Lot SAP | `ITM.Code` |
|
||||
| `37` | Quantité | Quantité déclarée |
|
||||
|
||||
> La date de production (AI `11`) a été **supprimée** du QR Code.
|
||||
|
||||
## Encodage RFID (ZPL)
|
||||
|
||||
L'impression de l'étiquette combine l'impression physique (texte,
|
||||
codes-barres) et l'encodage de la puce RFID intégrée, le tout via
|
||||
des commandes **ZPL** (Zebra Programming Language).
|
||||
|
||||
### Structure de base
|
||||
|
||||
```zpl
|
||||
^XA
|
||||
; --- Encodage RFID ---
|
||||
^RFW,H^FD<données>^FS
|
||||
|
||||
; --- Contenu imprimé ---
|
||||
^FO50,50^ADN,36,20^FD<texte affiché>^FS
|
||||
^XZ
|
||||
```
|
||||
|
||||
### Commandes ZPL utilisées
|
||||
|
||||
| Commande | Rôle |
|
||||
|----------|------|
|
||||
| `^XA` / `^XZ` | Début et fin du bloc ZPL |
|
||||
| `^MMT` | Active le mode RFID sur l'imprimante |
|
||||
| `^RS8,,,1` | Timeout RFID = 8, 1 retry en cas d'échec d'encodage |
|
||||
| `^RFW,A,0,5,3` | Écriture RFID en ASCII, depuis le bloc 0, sur 5 blocs (20 octets), en banque User (3) |
|
||||
| `^FD…^FS` | Donnée à encoder (18 caractères max) |
|
||||
|
||||
### Exemple concret
|
||||
|
||||
```zpl
|
||||
^XA
|
||||
^MMT
|
||||
^RS8,,,1
|
||||
^RFW,A,0,5,3^FDSupport123456789012^FS
|
||||
^FO30,20^A0N,30,25^FDRapport de support^FS
|
||||
^XZ
|
||||
```
|
||||
|
||||
## Points d'attention
|
||||
|
||||
- L'imprimante doit être **compatible ZPL** avec encodage RFID
|
||||
(contrainte fournisseur à valider — voir question ouverte dans
|
||||
[Réception fournisseur](reception-fournisseur.md))
|
||||
- Le code support encodé en RFID fait **18 caractères** (5 blocs de
|
||||
4 octets = 20 octets en banque User 3)
|
||||
- L'étiquette est au format **A5 paysage**
|
||||
- La date (champ 11) est volontairement vide car non connue de l'ERP
|
||||
au moment de la réception
|
||||
|
||||
## Historique des modifications
|
||||
|
||||
| Date | Auteur | Modification |
|
||||
|------|--------|--------------|
|
||||
| 2026-05-12 | Arthur | Création initiale depuis LIM-68 |
|
||||
|
||||
## Références
|
||||
|
||||
| Source | Type | Date |
|
||||
|--------|------|------|
|
||||
| [LIM-68](https://easywmsfrance.atlassian.net/browse/LIM-68) | Ticket Jira | 2026 |
|
||||
@@ -0,0 +1,195 @@
|
||||
---
|
||||
title: "Flux ERP inbound — Messages réception"
|
||||
tags: [inbound, ERP, ASN, ROR, ROF, REF, ITM, interface]
|
||||
status: draft
|
||||
standard_ref: architecture/erp-integration.md
|
||||
jira_refs: []
|
||||
confluence_refs: []
|
||||
sources: [FR-SW-04-07_LIMAGRAIN_Functional_Analysis_V1.5.docx, "CR CONSOLIDES REU ERP LIMAGRAIN V1 - CR.md"]
|
||||
last_updated: 2026-05-06
|
||||
author: Arthur
|
||||
---
|
||||
|
||||
# Flux ERP inbound — Messages réception
|
||||
|
||||
> **Résumé** : catalogue des messages ERP liés aux processus de réception
|
||||
> chez Limagrain, avec direction, déclencheur et contenu principal.
|
||||
|
||||
> **Standard EasyWMS** : → voir [ERP Integration](../../concepts/erp-interface.md)
|
||||
> Ce qui suit documente les **spécificités Limagrain** par rapport au standard.
|
||||
|
||||
## Contexte projet
|
||||
|
||||
La communication ERP se fait via **XML + Webservice** entre SAP EWM et
|
||||
EasyWMS (service GNA). Tous les messages de réception sont documentés ici.
|
||||
Pour les messages d'expédition, voir
|
||||
[Flux ERP outbound](../04-outbound/flux-erp-outbound.md).
|
||||
|
||||
## Messages entrants (SAP → EasyWMS)
|
||||
|
||||
### ITM — Item Master
|
||||
|
||||
| Champ | Description |
|
||||
|-------|-------------|
|
||||
| Direction | ERP → WMS |
|
||||
| Déclencheur | Création/modification article dans SAP |
|
||||
| Contenu | Code lot SAP, description, propriétaire, UdM, poids brut, conversions, profils, type conteneur, quantité complète, type article (FERT/ZSIZ) |
|
||||
| [CUSTOM] | Espèce, génération, marque, variété, traitement commercial, packing unit, code GTIN, semences essais, size, field production area |
|
||||
|
||||
> ⚠️ Chez Limagrain, les **lots SAP** sont gérés comme des articles (descendus
|
||||
> via ITM). L'article Limagrain est un attribut du lot SAP.
|
||||
|
||||
### ASN — Advanced Shipping Notice
|
||||
|
||||
| Champ | Description |
|
||||
|-------|-------------|
|
||||
| Direction | ERP → WMS |
|
||||
| Déclencheur | Création HU avec code SSCC en production |
|
||||
| Architecture | **1 ASN = 1 palette de production** (pas d'agrégation — permet suppression individuelle en cas d'annulation) |
|
||||
| Contenu | Numéro HU, article, lot SAP, [CUSTOM] propriétaire Limagrain, statut de stock, quantité (unités de vente) |
|
||||
| Timing | Envoyé dès création de la HU avec code SSCC |
|
||||
|
||||
**Attributs logistiques dans les lignes ASN** :
|
||||
|
||||
| Attribut logistique | Champ SAP | Usage |
|
||||
|---------------------|-----------|-------|
|
||||
| LotCode | Code produit SAP | Différencie produits pour même lot SAP |
|
||||
| Color | Propriétaire réel SAP | ≠ "MECALUX" technique |
|
||||
| Source | Description produit | Désignation courte SAP |
|
||||
| Size | Destination (Pays) | Peut changer |
|
||||
|
||||
**Statuts de stock** : gérés dès l'ASN. Si stock OK : ne PAS envoyer de
|
||||
statut (champ vide ou absent du JSON).
|
||||
|
||||
**Champs NON utilisés** : DivisionType, ReceiptOrderCode, IsSlave,
|
||||
Height/Volume (recalculé au pesage PIE), dates fabrication/expiration,
|
||||
numéro de série.
|
||||
|
||||
### ROR — Reception Order Request
|
||||
|
||||
| Champ | Description |
|
||||
|-------|-------------|
|
||||
| Direction | ERP → WMS |
|
||||
| Déclencheur | Planification réception dans SAP (extérieures, intersites, retours) |
|
||||
| Contenu | Numéro de réception, articles, lots SAP, quantités (unités de vente) |
|
||||
| Structure | 1 ROR = 1 livraison SAP (un camion peut contenir plusieurs livraisons) |
|
||||
|
||||
**Types de réception (InboundType)** :
|
||||
|
||||
| InboundType | Usage | AccountCode/SupplierCode | Tolérance |
|
||||
|-------------|-------|--------------------------|-----------|
|
||||
| 0 (Fournisseur) | Livraisons DESADV | SupplierCode = "FOURNISSEUR" | Précisée par SAP (override profil) |
|
||||
| 1 (Retour) | Retours clients ORDRSP | AccountCode = "CLIENT" | Illimitée (ReceiveLessAllowed=true) |
|
||||
| 3 (Transfert) | Transferts inter-sites | — | 0% (palettes identifiées) |
|
||||
|
||||
**Paramètres clés** : SingleReceipt = true (pas de reliquat WMS),
|
||||
FreeQuantity non nécessaire. Pas de SSCC dans le ROR (récupéré au scan
|
||||
RFID en réception).
|
||||
|
||||
### [CUSTOM] API Lot SAP (retours clients uniquement)
|
||||
|
||||
| Champ | Description |
|
||||
|-------|-------------|
|
||||
| Direction | WMS → ERP (requête) puis ERP → WMS (réponse) |
|
||||
| Déclencheur | Scan lot officiel inconnu sur poste de travail |
|
||||
| Requête | Lot officiel |
|
||||
| Réponse OK | Lot SAP, articles possibles, descriptions, destinations + déclenchement ITM |
|
||||
| Réponse NOK | Message erreur ("lot n'existe pas" ou "lot non vendu") |
|
||||
|
||||
## Messages sortants (EasyWMS → SAP)
|
||||
|
||||
### REF — Reception Fulfilled
|
||||
|
||||
| Champ | Description |
|
||||
|-------|-------------|
|
||||
| Direction | WMS → ERP |
|
||||
| Déclencheur | **Clôture manuelle** de la réception (action opérateur) |
|
||||
| Contenu | Conteneurs réceptionnés, lignes de stock, [CUSTOM] zone de stockage pour chaque palette, 4 attributs logistiques + lot SAP |
|
||||
| Structure | Un seul REF par réception (pas de progressif, car SingleReceipt=true). Le ReceiptCode (en-tête) = code réception WMS. Le code de l'ordre d'entrée est au niveau de la **ligne** (`LneRecOrdersPotential`) |
|
||||
| Contrainte | L'emplacement de rangement n'est connu qu'après le stockage en ASRS → attendre que toutes les palettes soient stockées avant d'envoyer le REF |
|
||||
| Données | S'appuie sur les données **réelles** (pas théoriques) |
|
||||
|
||||
### ROF — Reception Order Fulfilled
|
||||
|
||||
| Champ | Description |
|
||||
|-------|-------------|
|
||||
| Direction | WMS → ERP |
|
||||
| Déclencheur | Validation/clôture de l'ordre d'entrée |
|
||||
| Rôle | Récapitulatif de l'ensemble des stocks reçus. Signale à l'ERP que l'ordre est fermé (même partiellement). Sans ROF, l'ERP ne clôturerait jamais la commande d'achat |
|
||||
| Reliquats | Pas de gestion de reliquats par EasyWMS. Si réception incomplète, c'est SAP qui gère le reliquat |
|
||||
| Hors tolérance | ROF bloqué jusqu'à régularisation par le manager dans SAP (customisation requise) |
|
||||
|
||||
### [CUSTOM] LOC — Location
|
||||
|
||||
| Champ | Description |
|
||||
|-------|-------------|
|
||||
| Direction | WMS → ERP |
|
||||
| Déclencheur | Palette stockée dans l'ASRS (rangement effectif) |
|
||||
| Contenu | Numéro HU, station départ, station arrivée, workzone arrivée, emplacement arrivée |
|
||||
| Condition | Généré uniquement si stations départ et arrivée sont différentes |
|
||||
|
||||
## Diagramme de séquence — Réception production
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant SAP
|
||||
participant WMS as EasyWMS
|
||||
participant GAL as Galileo/PIE
|
||||
|
||||
SAP->>WMS: ITM (article/lot)
|
||||
Note over SAP,WMS: En amont
|
||||
SAP->>WMS: ASN (pré-notif HU)
|
||||
Note over SAP,WMS: À l'expédition source
|
||||
GAL->>WMS: Event PIE (RFID + poids)
|
||||
WMS->>WMS: Contrôle poids + rangement
|
||||
WMS->>GAL: Tâche stockage
|
||||
GAL->>WMS: End (palette stockée)
|
||||
WMS->>SAP: LOC (emplacement)
|
||||
```
|
||||
|
||||
## Diagramme de séquence — Réception extérieure
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant SAP
|
||||
participant WMS as EasyWMS
|
||||
participant PK as Poste travail
|
||||
participant GAL as Galileo/PIE
|
||||
|
||||
SAP->>WMS: ROR (ordre réception)
|
||||
WMS->>PK: Palette sur poste
|
||||
PK->>WMS: Déclaration contenu
|
||||
WMS->>GAL: Tâche évacuation → PIE
|
||||
GAL->>WMS: Event PIE
|
||||
WMS->>WMS: Contrôle + rangement
|
||||
GAL->>WMS: End (stockée)
|
||||
WMS->>SAP: LOC
|
||||
PK->>WMS: Clôture réception
|
||||
WMS->>SAP: REF (avec emplacements)
|
||||
WMS->>SAP: ROF
|
||||
```
|
||||
|
||||
## Points d'attention
|
||||
|
||||
⚠️ Le message REF est retardé jusqu'à validation PIE de tous les conteneurs
|
||||
(peut prendre du temps si file d'attente PIE longue).
|
||||
|
||||
⚠️ Le message LOC n'est pas standard — c'est un [CUSTOM] spécifique
|
||||
Limagrain pour traçabilité emplacement dans SAP.
|
||||
|
||||
⚠️ Les modifications dans les master data ne doivent **pas** être faites
|
||||
directement dans EasyWMS (risque d'écrasement par prochain ITM).
|
||||
|
||||
## Historique des modifications
|
||||
|
||||
| Date | Auteur | Modification |
|
||||
|------|--------|--------------|
|
||||
| 2026-05-05 | Arthur | Création initiale depuis AF V1.5 |
|
||||
| 2026-05-06 | Arthur | Enrichissement ASN (1 par palette, attributs logistiques, champs non utilisés), ROR (InboundType, tolérances, SingleReceipt), REF (clôture manuelle, zone stockage, contrainte rangement), ROF (rôle, reliquats, hors tolérance) — depuis CR consolidé ERP |
|
||||
|
||||
## Références
|
||||
|
||||
| Source | Type | Date |
|
||||
|--------|------|------|
|
||||
| FR-SW-04-07_LIMAGRAIN_Functional_Analysis_V1.5 | Analyse fonctionnelle | 28/11/2025 |
|
||||
| CR CONSOLIDES REU ERP LIMAGRAIN V1 | CR ateliers interfaçage | 23/02/2026 |
|
||||
@@ -0,0 +1,348 @@
|
||||
---
|
||||
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 |
|
||||
@@ -0,0 +1,614 @@
|
||||
---
|
||||
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-73]
|
||||
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, "LIM-73 - LOT1.3 [RECEPTION] Fermetures, REF et gestion retours.md"]
|
||||
last_updated: 2026-05-12
|
||||
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
|
||||
|
||||
- Les numéros SSCC **ne sont pas envoyés** dans le ROR
|
||||
(`LineList>ContainerCode`)
|
||||
- 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
|
||||
|
||||
> 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.
|
||||
|
||||
### 5) [CUSTOM] Traitement au poste de travail
|
||||
|
||||
Ref. [LIM-67](https://easywmsfrance.atlassian.net/browse/LIM-67) — en
|
||||
attente CDP.
|
||||
|
||||
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"`.
|
||||
|
||||
#### a) Confirmation de création support (Big Bag)
|
||||
|
||||
Si le conteneur scanné est un **conteneur virtuel** de réception, un
|
||||
écran de confirmation crée le nouveau support « réel ». Sur cet écran :
|
||||
|
||||
- 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 5 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 |
|
||||
| **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 » |
|
||||
| CstAtt08 | Code de réception | Déclaration image de quai |
|
||||
| CstAtt10 | Flag support traité (`true`) | Fin de traitement |
|
||||
|
||||
### 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)
|
||||
- `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.
|
||||
|
||||
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** (récupérée depuis le code emplacement
|
||||
du support) :
|
||||
- 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é.
|
||||
|
||||
### Réception excédentaire (> % autorisé)
|
||||
|
||||
Le WMS bloque. Solutions possibles :
|
||||
|
||||
| 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)
|
||||
- [ ] WF clôture OE : faut-il modifier le WF existant ou en créer
|
||||
un nouveau pour la condition CstAtt01 ? (@Fabien) (LIM-73)
|
||||
|
||||
## 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) |
|
||||
|
||||
## 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) | 2026 |
|
||||
| [LIM-73](https://easywmsfrance.atlassian.net/browse/LIM-73) | Ticket Jira (clôture/REF) | 2026 |
|
||||
@@ -0,0 +1,466 @@
|
||||
---
|
||||
title: "Réception retour commandes clients"
|
||||
tags: [inbound, réception, retour, client, API, lot]
|
||||
status: draft
|
||||
standard_ref: concepts/reception.md
|
||||
jira_refs: [LIM-72, LIM-67, LIM-68, LIM-66, LIM-64, LIM-70, LIM-73]
|
||||
confluence_refs: []
|
||||
sources: [FR-SW-04-07_LIMAGRAIN_Functional_Analysis_V1.5.docx, "Réception - LIMAGRAIN - DEV - Confluence.md", "LIM-72 LOT1.3 [RETOUR] Flux complet PK.md", "LIM-73 - LOT1.3 [RECEPTION] Fermetures, REF et gestion retours.md", "recap_session_LIM-72_13-05-2026.md"]
|
||||
last_updated: 2026-05-13
|
||||
author: Arthur
|
||||
---
|
||||
|
||||
# Réception retour commandes clients
|
||||
|
||||
> **Résumé** : processus spécifique de réception des retours client, avec
|
||||
> interrogation API SAP pour validation lot, et déclaration enrichie sur
|
||||
> poste de travail.
|
||||
|
||||
> **Standard EasyWMS** : → voir [Reception](../../concepts/reception.md)
|
||||
> Ce qui suit documente les **spécificités Limagrain** par rapport au standard.
|
||||
|
||||
## Contexte projet
|
||||
|
||||
Les retours client suivent un flux similaire aux réceptions extérieures
|
||||
(passage poste de travail obligatoire) mais avec des particularités :
|
||||
|
||||
- `InboundType = 1` (Return) — vs 0 (Standard) pour les autres flux
|
||||
- Création de lignes autorisée (article non attendu possible)
|
||||
- Tolérance illimitée : profil de réception par défaut configuré en
|
||||
« illimité » sur tous les articles
|
||||
- `ReceiveLessAllowed = true` — réception partielle toujours autorisée
|
||||
- Interrogation API SAP pour valider le lot officiel
|
||||
- `AccountCode` = code client SAP (le client doit exister dans EasyWMS)
|
||||
|
||||
## Process complet de réception retour client
|
||||
|
||||
| Étape | Description | Ticket |
|
||||
|-------|-------------|--------|
|
||||
| 1 | Déclaration sur l'image de quai | [LIM-64](https://easywmsfrance.atlassian.net/browse/LIM-64) |
|
||||
| 2 | Déplacement AGV → poste de travail | [LIM-70](https://easywmsfrance.atlassian.net/browse/LIM-70) |
|
||||
| 3 | **Traitement au poste de travail** | [LIM-72](https://easywmsfrance.atlassian.net/browse/LIM-72) |
|
||||
| 4 | Déplacement AGV → table d'entrée (+ filmage si demandé) | — |
|
||||
| 5 | Passage PIE | [LIM-66](https://easywmsfrance.atlassian.net/browse/LIM-66) |
|
||||
| 6 | Stockage ou rejet | — |
|
||||
| 7 | Clôture de la réception | — |
|
||||
| 8 | Libération quai / image de quai | — |
|
||||
|
||||
Voir [Réception fournisseur](reception-fournisseur.md) pour le détail
|
||||
du déchargement camion et des déclarations initiales
|
||||
([LIM-67](https://easywmsfrance.atlassian.net/browse/LIM-67) pour le
|
||||
flux fournisseur au PK).
|
||||
|
||||
## Notification ROR
|
||||
|
||||
Message ROR de SAP (type ORDRSP) avec :
|
||||
|
||||
- Numéro de réception
|
||||
- Articles / Lots / Quantités attendues
|
||||
- Codes articles **génériques** (codes uniques avec nomenclature
|
||||
précise, pas réutilisables — assure la traçabilité)
|
||||
|
||||
**Différence clé** : cette réception **autorise la création de lignes**.
|
||||
Limagrain peut recevoir un article non présent dans le ROR initial.
|
||||
Un article inconnu de la base EasyWMS = ROR refusé. Un article connu
|
||||
mais non prévu dans le retour = accepté (tolérance illimitée).
|
||||
|
||||
## [CUSTOM] Identification lot — Interrogation API SAP
|
||||
|
||||
Lors du scan du lot officiel sur le poste de travail, le WMS vérifie
|
||||
d'abord si le lot est connu localement. Si oui, pas d'appel API. Sinon :
|
||||
|
||||
### Rappel : structure des articles chez Limagrain
|
||||
|
||||
Chez Limagrain, le **code article WMS = lot SAP** (cf.
|
||||
[Données principales](../06-erp-interface/donnees-principales.md)).
|
||||
Chaque lot SAP est descendu via le fichier **ITM** (fiche article
|
||||
complète), et le code produit est un attribut stocké en CstAtt du stock.
|
||||
Le **lot officiel** est l'alias de l'article dans le WMS.
|
||||
|
||||
Quand le lot est "inconnu du WMS", cela signifie qu'**aucun article
|
||||
(ITM) n'existe avec ce lot officiel comme alias**. Il faut demander à
|
||||
SAP d'envoyer la fiche article complète.
|
||||
|
||||
### Logique de vérification
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A[Scan / saisie lot officiel] --> B{Lot officiel connu du WMS ?<br/>= alias article existant ?}
|
||||
B -- Oui --> C{Vendu par Limagrain ?}
|
||||
B -- Non --> D[Appel API SAP]
|
||||
D --> E[Écran attente<br/>refresh 5s / timeout 1 min]
|
||||
E --> F{ITM reçu via API WMS ?}
|
||||
F -- Oui --> C
|
||||
F -- Non / Timeout --> G{Tentative < 5 ?}
|
||||
G -- Oui --> H[Bouton Réessayer]
|
||||
H --> D
|
||||
G -- Non --> I[Erreur finale :<br/>contacter responsable]
|
||||
C -- Oui --> J{Plusieurs articles ?}
|
||||
C -- Non --> K[Erreur : lot non vendu<br/>par Limagrain]
|
||||
J -- Non --> L[Sélection automatique<br/>→ déclaration contenu]
|
||||
J -- Oui --> M[Dialogue choix article<br/>par pays d'origine]
|
||||
M --> L
|
||||
```
|
||||
|
||||
### Appel API SAP — Vérification du lot officiel (ATH214)
|
||||
|
||||
L'appel API REST est fait **directement depuis le workflow** (pas via
|
||||
GNA). Il sert à notifier SAP que le WMS a besoin de la fiche article.
|
||||
|
||||
> **Architecture CPI** : tous les flux WMS → SAP passent par un
|
||||
> **endpoint unique** SAP CPI, différencié par le champ `MessageType`
|
||||
> dans l'enveloppe JSON. Le flux retour utilise `MessageType = "ATH214"`.
|
||||
> Voir [Intégration GNA → SAP-CPI](../06-erp-interface/gna-sap-cpi.md)
|
||||
> pour le détail de l'architecture et de l'authentification OAuth 2.0.
|
||||
|
||||
**Séquence d'échange :**
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant WF as WMS (workflow)
|
||||
participant CPI as SAP CPI
|
||||
participant SAP as SAP ECC
|
||||
|
||||
WF->>CPI: GET /http/ATHInboundMessage<br/>MessageType: ATH214
|
||||
Note over WF,CPI: Auth: OAuth 2.0 Bearer token<br/>Body: { MessageType, data }
|
||||
CPI->>SAP: Z_IATH214 (check batch)
|
||||
SAP-->>CPI: Réponse (EV_RETURN, ET_BATCH)
|
||||
CPI-->>WF: Réponse JSON
|
||||
alt EV_RETURN = "X" (OK)
|
||||
SAP->>CPI: ATH002 (push ITM automatique)
|
||||
CPI->>WF: POST ApplicationService/ITM
|
||||
Note over CPI,WF: Fiche article complète :<br/>lot SAP = code article,<br/>lot officiel = alias
|
||||
WF->>WF: Poll alias en base (5s)
|
||||
alt Alias trouvé
|
||||
WF->>WF: Continuer
|
||||
else Timeout 1 min
|
||||
WF->>WF: Proposer réessayer
|
||||
end
|
||||
else EV_RETURN ≠ "X" (NOK)
|
||||
WF->>WF: Erreur immédiate
|
||||
end
|
||||
```
|
||||
|
||||
**Authentification OAuth 2.0 :**
|
||||
|
||||
- Grant type : `client_credentials`
|
||||
- Token endpoint TEST :
|
||||
`https://vilm-cpi-test-73ltxp48.authentication.eu30.hana.ondemand.com/oauth/token`
|
||||
- Token endpoint PROD : à définir
|
||||
- Body : `x-www-form-urlencoded` avec `grant_type`, `client_id`,
|
||||
`client_secret`
|
||||
- Le token est envoyé en header `Authorization: Bearer <token>`
|
||||
- Expiration gérée côté WMS (cache + renouvellement)
|
||||
|
||||
**Payload de requête :**
|
||||
|
||||
```json
|
||||
GET /http/ATHInboundMessage
|
||||
{
|
||||
"MessageType": "ATH214",
|
||||
"data": {
|
||||
"IV_LGNUM": "WF02",
|
||||
"IV_MATNR": "",
|
||||
"IV_CHARG": "",
|
||||
"IV_BATCH_OFF": "<lot officiel scanné>",
|
||||
"IV_RETURN": "<code OE retour>"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
| Champ | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| `IV_LGNUM` | CHAR 4 | Toujours `"WF02"` |
|
||||
| `IV_MATNR` | CHAR 40 | OPTIONNEL - code lot WMS (= product code SAP) |
|
||||
| `IV_CHARG` | CHAR 10 | OPTIONNEL - code article WMS (= lot SAP) |
|
||||
| `IV_BATCH_OFF` | CHAR 30 | Lot officiel scanné sur le sac |
|
||||
| `IV_RETURN` | CHAR 10 | Numéro du document de retour (code OE) |
|
||||
|
||||
> ⚠️ **Méthode HTTP** : `GET` avec body JSON — spécifique SAP CPI.
|
||||
> Header `Connection: keep-alive` requis.
|
||||
|
||||
**Payload de réponse :**
|
||||
|
||||
```json
|
||||
{
|
||||
"EV_RETURN": "X",
|
||||
"ET_RETURN": [ { "TYPE": "...", "MESSAGE": "..." } ],
|
||||
"ET_BATCH": [
|
||||
{
|
||||
"MATNR": "000000000000020955",
|
||||
"CHARG": "2023293649",
|
||||
"BATCH_OFF": "F0964D002488",
|
||||
"EV_DEPLOY": "X"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
| Champ | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| `EV_RETURN` | CHAR 1 | `"X"` = aucune erreur, vide = erreur |
|
||||
| `ET_RETURN[]` | Table | Messages d'erreur ou de succès SAP |
|
||||
| `ET_BATCH[].MATNR` | CHAR 40 | Code lot WMS = product code SAP |
|
||||
| `ET_BATCH[].CHARG` | CHAR 10 | Code article WMS = lot SAP |
|
||||
| `ET_BATCH[].BATCH_OFF` | CHAR 30 | Lot officiel |
|
||||
| `ET_BATCH[].EV_DEPLOY` | CHAR 1 | `"X"` = déployé/vendu, `""` = non |
|
||||
|
||||
> ⚠️ **Mapping inversé CHARG / MATNR** : contrairement à la
|
||||
> nomenclature SAP standard, `MATNR` (Material Number) porte ici le
|
||||
> **product code** (= code lot WMS), et `CHARG` (Charge/Batch) porte le
|
||||
> **code article WMS** (= lot SAP). Ce mapping est confirmé par Michael
|
||||
> Chaudier et Vincent Goyet (avril 2026).
|
||||
|
||||
> ⚠️ **À confirmer** : le nom du champ de déploiement est ambigu dans
|
||||
> les échanges — `EV_DEPLOY` ou `ZDEPLOY` ? En attente de clarification
|
||||
> (question A2 dans
|
||||
> [Questions ouvertes](../08-transverse/questions-ouvertes.md)).
|
||||
|
||||
Si `EV_RETURN = "X"`, on récupère dans `ET_BATCH` tous les
|
||||
`BATCH_OFF` dont `EV_DEPLOY = "X"` — ce sont les lots autorisés
|
||||
pour l'opérateur.
|
||||
|
||||
### Écran d'attente pendant la réception de l'ITM
|
||||
|
||||
Après l'appel API, SAP appelle directement l'API du WMS pour pousser
|
||||
l'ITM. Pendant cette attente :
|
||||
|
||||
- **Message** : "Vérification du lot en cours..."
|
||||
- **Refresh automatique** toutes les 5 secondes : le WMS vérifie si
|
||||
un **alias correspondant au lot officiel** existe en base
|
||||
- **Bouton "Réessayer"** visible (relance un nouvel appel API)
|
||||
- **Timeout** : 1 minute maximum par tentative
|
||||
- **Nombre maximum de tentatives** : 5
|
||||
|
||||
| Tentative | Comportement en cas de timeout |
|
||||
|-----------|-------------------------------|
|
||||
| 1 à 4 | Message "Erreur de communication avec SAP. Réessayer ?" + bouton Réessayer |
|
||||
| 5 | Message final "Impossible de contacter SAP après 5 tentatives. Veuillez contacter votre responsable." + bouton Annuler → retour au scan lot |
|
||||
|
||||
### Choix du code lot (multi-résultat)
|
||||
|
||||
Si l'API a renvoyé **plusieurs résultats** dans `ET_BATCH` (plusieurs
|
||||
`BATCH_OFF` avec `EV_DEPLOY = "X"`), un dialogue de sélection est
|
||||
affiché avec la liste des codes lots disponibles. L'opérateur en choisit
|
||||
un (filtrage par pays d'origine).
|
||||
|
||||
Si un **seul résultat** → sélection automatique, pas de dialogue.
|
||||
|
||||
**Pourquoi le choix article ?** Un lot SAP peut être associé à plusieurs
|
||||
articles (dépend du pays d'origine). L'opérateur doit choisir l'article
|
||||
physiquement présent sur la palette.
|
||||
|
||||
**Gestion dans le REF :** le code générique envoyé dans le ROR est
|
||||
remplacé par le vrai code lot dans le REF (custom).
|
||||
|
||||
## Déclaration au poste de travail (LIM-72)
|
||||
|
||||
Le traitement au PK reprend les mêmes étapes que le flux fournisseur
|
||||
([LIM-67](https://easywmsfrance.atlassian.net/browse/LIM-67)) avec des
|
||||
adaptations. Le tableau ci-dessous récapitule chaque étape et ses
|
||||
différences :
|
||||
|
||||
| # | Étape | Différence vs fournisseur (LIM-67) |
|
||||
|---|-------|------------------------------------|
|
||||
| 1 | Sélection de la réception | Affichage "**Client: CODE - NOM**" (au lieu de "Fournisseur") sur tous les écrans |
|
||||
| 2 | Big bag (CstAtt02) | Identique — toggle ON/OFF |
|
||||
| 3 | Scan lot officiel + vérification | **+ Vérification API SAP** (voir section ci-dessus) |
|
||||
| 4 | Déclaration quantité | Identique — affichage qté attendue + UdM, prompt non pré-rempli |
|
||||
| 4bis | Flag big-bag (bouton custom) | Identique (CstAtt02) |
|
||||
| 5 | Statut de stock | **Modifiable** — boutons visibles (masqués dans LIM-67) |
|
||||
| 6 | Flag "À anoxier" | Identique (CstAtt03 = true) |
|
||||
| 7 | Programme de filmage | Identique (paramètre FILMAGES → CstAtt05) |
|
||||
| 8 | Impression étiquette RFID | Identique ([LIM-68](https://easywmsfrance.atlassian.net/browse/LIM-68)) |
|
||||
| 9 | Validation → évacuation AGV | Identique |
|
||||
|
||||
### Statut de stock — Modifiable
|
||||
|
||||
Contrairement au flux fournisseur (LIM-67) où le statut de stock est
|
||||
verrouillé (boutons masqués), dans le flux retour client :
|
||||
|
||||
- Les **boutons de changement de statut sont visibles** et fonctionnels
|
||||
- L'opérateur peut modifier le statut (ex : Conforme, Sac sale,
|
||||
Non conforme, etc.)
|
||||
- Les écrans de **date de fin de statut** et **commentaire** suivent
|
||||
le comportement standard (non skippés contrairement au fournisseur)
|
||||
- [CUSTOM] Statuts spécifiques retour : **F9** (sacs sales), **B6**
|
||||
(non conforme) — assignables uniquement dans ce processus
|
||||
|
||||
### Tolérance illimitée
|
||||
|
||||
- **Article non prévu** dans le retour → accepté (création de ligne
|
||||
autorisée)
|
||||
- **Quantité supérieure** au prévu → acceptée
|
||||
- **Quantité inférieure** au prévu → acceptée (réception fermée
|
||||
manuellement)
|
||||
|
||||
> Le prompt type de poste (3 ou 6 TP) prévu initialement est
|
||||
> **abandonné** — remplacé par un message d'avertissement si le poste
|
||||
> adjacent est déjà ouvert (voir
|
||||
> [Stations picking](../03-picking/stations-picking.md)).
|
||||
|
||||
## Constitution palettes mono référence
|
||||
|
||||
Obligation de constituer des palettes **mono référence** avant stockage.
|
||||
Si la palette retour est multi-ref :
|
||||
|
||||
- Opérateur appelle une palette vide sur une TP disponible
|
||||
- Tri de marchandise
|
||||
|
||||
## Calcul poids et passage PIE
|
||||
|
||||
Identique aux réceptions extérieures (mêmes formules de répartition
|
||||
prorata, mêmes contrôles). Voir
|
||||
[Contrôle qualité réception](controle-qualite-reception.md).
|
||||
|
||||
**Différences pour les retours client :**
|
||||
|
||||
- Verrou si écart poids : **« Écart inventaire »** (vs « Réception »
|
||||
pour les autres flux) — verrou posé sur le **support** (pas sur
|
||||
le stock)
|
||||
- Action requise en cas d'écart : **recomptage du nombre de sacs**
|
||||
- Rejet PIE : dirigé vers **poumon au sol** + notification SmartUI
|
||||
(ancienne approche de renvoi au PK abandonnée)
|
||||
|
||||
## Clôture — Spécificités retour client (LIM-73)
|
||||
|
||||
Le mécanisme général de clôture (déclenchement auto-close, tolérance par
|
||||
ligne, CstAtt01 OE hors tolérance, clôture OE) est documenté dans
|
||||
[Réception fournisseur — Clôture](reception-fournisseur.md). Cette
|
||||
section décrit le **delta retour client** : le REF est conditionné au
|
||||
rangement ASRS complet.
|
||||
|
||||
### Contexte métier
|
||||
|
||||
Pour les retours clients, le REF influe sur la **facturation SAP**. Il
|
||||
ne doit être envoyé que lorsque **tous les supports** de la réception
|
||||
sont rangés dans l'ASRS (et ont passé l'ensemble des contrôles,
|
||||
notamment PIE).
|
||||
|
||||
Pour les autres types de réception (fournisseur / intersite), le REF est
|
||||
émis à la clôture de la réception, quelle que soit la position des
|
||||
supports.
|
||||
|
||||
### CstAtt11 — Marqueur de rangement ASRS
|
||||
|
||||
À chaque fin de tâche de rangement dans l'ASRS :
|
||||
|
||||
- Vérifier si le support provient d'une réception de type **retour**
|
||||
- Si oui → `CstAtt11 = true` sur le support
|
||||
- Sinon → aucune action
|
||||
|
||||
Le CstAtt11 est posé une fois et n'est **jamais remis à false**, même si
|
||||
le support ressort ensuite de l'ASRS (picking). Cela garantit que la
|
||||
condition de clôture reste satisfaisable même si une palette a déjà été
|
||||
expédiée entre-temps.
|
||||
|
||||
### Statut « Clôture en cours »
|
||||
|
||||
Dans la vue des réceptions, le statut visuel est piloté par le
|
||||
`CstAtt01 de la réception` (posé par Reception_Close_PR_V2) :
|
||||
|
||||
| CstAtt01 réception | État | Affichage |
|
||||
|---------------------|------|-----------|
|
||||
| null / vide | En attente | Standard |
|
||||
| true | Clôture en attente de rangement ASRS complet | **« Clôture en cours »**, ligne en **jaune** |
|
||||
|
||||
Pour les réceptions non-retour, CstAtt01 de la réception n'est pas
|
||||
utilisé (affichage standard).
|
||||
|
||||
### Adaptation Reception_Close_PR_V2 — Partie A (retours)
|
||||
|
||||
- **Si non-retour** → clôture immédiate, génération REF (standard)
|
||||
- **Si retour** :
|
||||
- Vérifier que **tous les supports** ont `CstAtt11 = true`
|
||||
- **Oui** → `CstAtt01 réception = false`, fermer la réception,
|
||||
générer REF
|
||||
- **Non** → ne pas fermer, `CstAtt01 réception = true` (statut
|
||||
« Clôture en cours »). Le WF est rejoué à chaque event
|
||||
_task finished_ sur un support de la réception
|
||||
|
||||
> Si une palette est refusée au PIE puis retirée du retour (ROR), le
|
||||
> client doit la **supprimer du WMS**, sinon la clôture ne sera jamais
|
||||
> effectuée.
|
||||
|
||||
### Zone de stockage dans le REF
|
||||
|
||||
Pour les retours, le REF n'est émis qu'une fois tous les supports rangés
|
||||
en ASRS → la valeur sera toujours une zone réelle (jamais "NON RANGEE").
|
||||
|
||||
### Récapitulatif CstAtt clôture retour
|
||||
|
||||
| CstAtt | Entité | Rôle |
|
||||
|--------|--------|------|
|
||||
| CstAtt08 | Palette fictive | Code réception — détecte l'absence de palettes fictives restantes (§ auto-close) |
|
||||
| CstAtt10 | Palette réelle au PK | `true` pendant traitement PK — détecte qu'aucune palette n'est en cours de traitement |
|
||||
| CstAtt11 | Palette réelle | `true` quand rangée en ASRS — condition de clôture retour |
|
||||
| CstAtt01 | Réception | `true` = clôture en attente de rangement ASRS (affichage jaune) |
|
||||
|
||||
## État du développement LIM-72
|
||||
|
||||
### Implémenté (commit 8401f5456d, 28/04/2026)
|
||||
|
||||
- Entité `CST_StockStatus` : CstAtt 1 applicable en retour, CstAtt 2 =
|
||||
ZLOG, CstAtt 3 = ZINCO
|
||||
- Query `CST_StockStatus_AllowedForReturn` : filtre statuts autorisés
|
||||
- Workflow `CST_Return_Stock_GetStatus_UI` : sélection statut simplifié
|
||||
- Workflow `Reception_FilterLinesByProductAndContainer_UI_V1` : retrait
|
||||
filtre quantité (tolérance illimitée)
|
||||
- Dialog `CST_GetProductQuantity_Prompt` : option SelectStatus ajoutée
|
||||
|
||||
### Reste à développer
|
||||
|
||||
- Appel API SAP ATH214 + gestion token OAuth 2.0
|
||||
- Écran d'attente ITM (polling alias 5s, timeout 1 min, 5 tentatives)
|
||||
- Dialogue choix multi-lot (quand ET_BATCH contient plusieurs articles)
|
||||
- Impression étiquette stock retour client (rapport custom à créer)
|
||||
- Configuration flux de rejet PIE retours (verrou ECART RETOUR,
|
||||
destination, notification)
|
||||
|
||||
## Points d'attention
|
||||
|
||||
⚠️ Le paramètre `SAP_LOT_VERIFY_URL` doit pointer vers l'endpoint CPI
|
||||
unique `/http/ATHInboundMessage`, pas vers `/api/v1/lot/verify`.
|
||||
|
||||
⚠️ Le `MessageType` doit être `"ATH214"` dans l'enveloppe JSON.
|
||||
|
||||
⚠️ Pour les lots **déjà connus** en base WMS, le flag "déployé" n'est
|
||||
pas vérifié dans le design actuel — trou fonctionnel identifié (question
|
||||
A4 dans [Questions ouvertes](../08-transverse/questions-ouvertes.md)).
|
||||
|
||||
## Questions ouvertes
|
||||
|
||||
- [ ] Champs manquants ET_BATCH : description article, pays destination,
|
||||
propriétaire (@Vincent Goyet) — A1
|
||||
- [ ] Nom final champ déploiement : EV_DEPLOY ou ZDEPLOY ?
|
||||
(@Vincent Goyet) — A2
|
||||
- [ ] Délai ATH214 → push ITM dimensionnement polling
|
||||
(@Vincent Goyet) — A3
|
||||
- [ ] Vérification "déployé" pour lots déjà connus sans ATH214
|
||||
(@Vincent Goyet) — A4
|
||||
- [ ] Étiquette stock retour : format, champs, imprimante
|
||||
(@Leila / @Antoine) — B1
|
||||
- [ ] Flux rejet PIE retour : destination, notification, actions
|
||||
(@Leila / @Antoine) — B2
|
||||
|
||||
## 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 réception |
|
||||
| 2026-05-12 | Arthur | Intégration LIM-72 (process complet 8 étapes, API SAP, CstAtt) |
|
||||
| 2026-05-12 | Arthur | Intégration LIM-73 (clôture retour, CstAtt11, REF conditionné) |
|
||||
| 2026-05-13 | Arthur | Correction API : endpoint CPI unique + ATH214, auth OAuth 2.0, mapping CHARG/MATNR, état dev, questions ouvertes |
|
||||
|
||||
## Références
|
||||
|
||||
| Source | Type | Date |
|
||||
|--------|------|------|
|
||||
| Jira LIM-72 | Ticket | 2025 |
|
||||
| Jira LIM-73 | Ticket | 2025 |
|
||||
| Jira LIM-14 | Ticket (CstAtt) | 2025 |
|
||||
| Athenzat SAP-CPI Webservices Documentation v1.0 | PDF | 2026-04-24 |
|
||||
| Mail Michael Chaudier ↔ Vincent Goyet | Échange | 2026-04-07/10 |
|
||||
| Mail Justine ↔ Leila ↔ Vincent Goyet ↔ Maxime Tourrette | Échange | 2026-04-24/29 |
|
||||
| recap_session_LIM-72_13-05-2026.md | Récap session | 2026-05-13 |
|
||||
Reference in New Issue
Block a user