--- 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 |