Files
mcp-wms-wiki/wiki/limagrain/01-inbound/controle-qualite-reception.md
arthur 7496aafe64 lint(limagrain): corrections completes Phase 1+2
- Bloquants: mermaid 03-picking/_index reconstitue (archive 11-05), 13 liens vers pages squelette retires, 2 liens recibles (anoxie, application-dictionary)
- Conventions: 910 em dashes -> tirets simples, 145 checklists -> puces question, 13 questions resolues barrees
- Liens: 9 ancres reparees (slugs GitHub)
- Delta: 12 standard_ref remappes, blocs Standard EasyWMS + sections References ajoutes, front matter complete
- Glossaire: 15 termes standard deplaces en section rappel avec renvoi
- Rapport: limagrain/_lint_report.md (Phase 1 + Phase 2 + re-scan final)
- Inclut les pages des sessions precedentes non commitees + CLAUDE.md et consume.log en l'etat
2026-07-20 12:56:42 +02:00

324 lines
15 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: "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, LIM-108, LIM-114]
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, "Jira LIM-108 (lecture directe 2026-07-20)"]
last_updated: 2026-07-20
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 (répartition uniquement)** : si CstAtt01 a déjà une
> valeur (pesée précédente), c'est ce poids unitaire qui est utilisé pour
> la **répartition au prorata** (étape 2), à la place du poids ITM.
>
> ⚠️ **Mise à jour 19/06/2026** : cette priorité **ne s'applique plus au
> seuil de tolérance**. La détection d'écart utilise désormais **toujours
> le poids ITM théorique** (voir section suivante). L'idée d'utiliser
> CstAtt01 comme seuil (validée client en mai 2026) a été **abandonnée** :
> une pesée très erronée fixerait un CstAtt01 aberrant qui fausserait le
> seuil des passages suivants.
> **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
cours de test client (pré-production)**.
### Poids de référence pour le seuil de tolérance
> ⚠️ **Décision finale (19/06/2026)** : le seuil de tolérance utilise
> **toujours le poids unitaire ITM théorique** (conversion article), quel
> que soit l'état de CstAtt01.
| Situation | Poids de référence pour le seuil |
|-----------|----------------------------------|
| Premier passage PIE **et** passages suivants | **Poids ITM** (conversion article) |
**Historique de la décision** : une première approche (mai 2026, validée
client) prévoyait un seuil **dynamique** basé sur CstAtt01 (dernier poids
mesuré) si renseigné, sinon ITM. Elle a été **abandonnée le 19/06/2026** :
si une pesée très erronée fixe un CstAtt01 aberrant, comparer les pesées
suivantes à ce seuil fausserait la détection. Le seuil est donc revenu au
poids **théorique ITM**, stable et fiable.
> **Note** : CstAtt01 reste calculé et mis à jour à chaque pesée (étape 3)
> et sert à la **répartition au prorata**, mais **plus** au seuil de
> tolérance.
### [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 **ITM** de l'article) → blocage via verrou sur le **support**
(pas sur le stock).
### [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 ITM** parmi toutes les lignes de
stock comme seuil d'alerte. Si l'écart total ≥ ce plus petit poids →
blocage.
### 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) |
### Gestion de l'erreur
- La notification SmartUI custom envisagée initialement a été
**abandonnée** (barrée dans la spec). Le custom
`PIE_EventHandler_CheckToleranceWeight_PR` **redirige vers l'erreur de
poids standard** EasyWMS en cas de dépassement de tolérance.
- Le verrou est posé sur le **support** (pas sur le stock)
- Le **flux de rejet PIE** (toutes causes : dimension, poids, étiquette,
palette bois), avec renvoi au **poste de travail d'origine**, est documenté
dans [Flux de rejet PIE](../02-stockage/rejet-pie.md) (LIM-114). Il remplace
l'approche « poumon au sol + notification SmartUI ».
### 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
## [SIMULATION] Poids théorique en l'absence de poids Galileo (LIM-108)
> **Statut (LIM-108)** : en cours de test client (pré-production). Mode de
> fonctionnement **temporaire** pour la simulation.
Lors du passage au PIE, le poids **n'est pas toujours descendu** dans l'event
Galileo si la palette n'est **pas créée au PIE** (simple passage par la
station). Dans ce cas, un mode simulation permet de récupérer le **poids
théorique du conteneur** et de l'utiliser à la place du poids de l'event
Galileo.
Ce mode est gouverné par le toggle `CST_SimulatePIEScale` (voir
[Paramètres projet - Toggles](../07-admin/parametres-projet.md#toggles)) :
quand il est actif, le WMS vérifie si l'event PIE porte un poids ; sinon il
substitue le poids théorique du conteneur. Sans poids récupéré, les règles
de poids ([formule](#formule-de-calcul-du-poids), tolérance) s'appliquent
ensuite normalement.
## Implémentation technique (AD customs)
| Élément AD | Type | Rôle |
|-----------|------|------|
| `CST_PIE_ApplyWeightRules_PR` | Workflow | Applique les contrôles et opérations liés au poids au passage PIE. Corrigé (LIM-108, Maxime 18/06/2026) suite à un changement de version. |
| `PIE_EventHandler_CheckInvalidWeightWithScale_PR` | Workflow | [SIMULATION, LIM-108] Si `CST_SimulatePIEScale` actif : vérifie si l'event porte un poids ; sinon récupère le poids théorique du conteneur et l'utilise. |
| `PIE_EventHandler_CheckToleranceWeight_PR` | Workflow | Contrôle de tolérance ; redirige vers l'erreur de poids standard en cas de dépassement |
| `CST_SimulatePIEScale` | Toggle | [SIMULATION, LIM-108] Active la simulation du poids d'event PIE. |
| `CST_StockView` | Entité | Affiche le CstAtt01 avec le bon type décimal |
| `CST_Stocks_ForView` | Query | Query de l'entité `CST_StockView` |
| `StockVList` | View | Affichage du CstAtt01 (poids unitaire mesuré) |
## 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 **ITM** parmi toutes les lignes de stock.
⚠️ Le seuil de tolérance est basé sur le poids **ITM théorique** (fixe),
pas sur CstAtt01 (décision 19/06/2026). CstAtt01 sert uniquement à la
répartition au prorata et à l'inventaire par pesée, et n'influence plus
la détection d'écart.
⚠️ [SIMULATION, LIM-108] Le repli sur le poids théorique du conteneur
(toggle `CST_SimulatePIEScale`) est un mode **temporaire** de simulation :
il ne doit pas rester actif quand les palettes sont réellement créées et
pesées au PIE.
## Questions ouvertes
- **Résolu (19/06/2026)** - Tolérances : le seuil est finalement basé sur
le poids **ITM théorique** (fixe). L'approche dynamique CstAtt01 > ITM
(validée client mai 2026) a été abandonnée.
- **Ouvert** - Envoi d'un **STV** ou non lors de l'ajustement de stock pour
mettre à jour le poids (@Vincent)
- **Ouvert** - Valeur du poids palette bois fixe (PALETTE_US) (@Théo)
- **Ouvert** - 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) |
| 2026-07-16 | Arthur | LIM-66 : **abandon** du seuil CstAtt01 → retour au poids ITM théorique (décision 19/06) ; notification SmartUI abandonnée (redirection erreur standard) ; ajout éléments AD ; statut pré-production ; point ouvert STV ; rejet ECART RETOUR → LIM-114 |
| 2026-07-20 | Arthur | LIM-108 (lecture directe, pré-production) : section [SIMULATION] repli sur poids théorique du conteneur quand l'event Galileo PIE ne porte pas de poids (palette non créée au PIE), toggle `CST_SimulatePIEScale`, WF `PIE_EventHandler_CheckInvalidWeightWithScale_PR` ; note correction `CST_PIE_ApplyWeightRules_PR` (changement de version) ; point d'attention mode temporaire ; front matter jira_refs/sources/last_updated |
## 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 (PIE poids/verrous - pré-production) | 2026 |
| [LIM-108](https://easywmsfrance.atlassian.net/browse/LIM-108) | Ticket Jira (simulation poids PIE - pré-production) | 2026 |
| [LIM-114](https://easywmsfrance.atlassian.net/browse/LIM-114) | Ticket Jira (flux de rejet PIE) | 2026 |
| Échange Justine BEUTIN / Olivier (Limagrain) | Validation client (approche mai 2026, révisée 19/06) | mai 2026 |