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
This commit is contained in:
2026-07-20 12:56:42 +02:00
parent 23eb3f3c84
commit 7496aafe64
59 changed files with 6457 additions and 2023 deletions
@@ -1,16 +1,16 @@
---
title: "Contrôle qualité réception Vérification poids PIE"
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]
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]
last_updated: 2026-05-13
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
# 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
@@ -39,20 +39,20 @@ Le PIE effectue les contrôles suivants :
| 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é
> 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
### É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
### É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.
@@ -78,7 +78,7 @@ Poids mesuré au PIE = 60 kg (hors palette bois).
| B (× 1) | 40 kg (ITM) | 80 % | 48 kg |
| **Total** | 50 kg | 100 % | **60 kg** |
### Étape 3 Mise à jour du poids unitaire (CstAtt01)
### Étape 3 - Mise à jour du poids unitaire (CstAtt01)
Le **CstAtt01** de chaque ligne de stock est mis à jour avec le poids
unitaire mesuré :
@@ -93,15 +93,20 @@ Poids unitaire mesuré = Poids réel de la ligne / Quantité de la ligne
| 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.
> **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
> **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
> **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.
@@ -110,40 +115,43 @@ Poids unitaire mesuré = Poids réel de la ligne / Quantité de la ligne
## Vérification de la tolérance et blocage
Ref. [LIM-66](https://easywmsfrance.atlassian.net/browse/LIM-66) en
revue de code.
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
Le "poids unitaire de l'article" utilisé comme seuil de tolérance suit
la même règle de priorité que le ratio :
> ⚠️ **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 utilisé |
|-----------|---------------------------|
| CstAtt01 renseigné (pesée précédente) | **CstAtt01** (poids unitaire mesuré) |
| CstAtt01 vide (premier passage PIE) | **Poids ITM** (conversion article) |
| Situation | Poids de référence pour le seuil |
|-----------|----------------------------------|
| Premier passage PIE **et** passages suivants | **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).
**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.
> Validé par le client (échange Justine BEUTIN / Olivier, mai 2026).
> **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 de référence, cf. tableau ci-dessus) → blocage via verrou sur
le **support** (pas sur le stock) + alerte SmartUI.
unitaire **ITM** de l'article) → blocage via verrou sur le **support**
(pas sur le stock).
### [CUSTOM] Palettes multi-références seuil d'alerte
### [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.
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
@@ -154,12 +162,17 @@ Deux verrous possibles selon le flux :
| **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
### Gestion de l'erreur
- Création d'une **notification SmartUI** via le circuit classique de
notifications basé sur un event (pas d'event custom)
- 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)
- Notification dédiée au rejet générée dans le cas ECART RETOUR
- 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)
@@ -174,7 +187,7 @@ Deux verrous possibles selon le flux :
Dans tous les cas, le poids est quand même appliqué et recalculé.
### [CUSTOM] Type ZSIZ Ajustement automatique
### [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
@@ -191,6 +204,36 @@ le poids réel de la HU, **indépendamment de la tolérance**.
- 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
@@ -220,33 +263,41 @@ de travail **autoriser** la palette à passer le PIE même si hors tolérance.
## Points d'attention
⚠️ Le contrôle poids s'applique à **chaque** passage PIE une palette
⚠️ 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.
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
⚠️ 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.
petit poids unitaire **ITM** 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.
⚠️ 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
- [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
- **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
@@ -257,6 +308,8 @@ chaque pesée fait foi pour la suivante.
| 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
@@ -264,5 +317,7 @@ chaque pesée fait foi pour la suivante.
|--------|------|------|
| 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 |
| [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 |