Files
mcp-wms-wiki/wiki_old_13-05-2026/sources/archives/LIM-73 - LOT1.3 [RECEPTION] Fermetures, REF et gestion retours.md
2026-05-20 09:41:27 +02:00

324 lines
26 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.
**Note sur les CstAtt** : deux CstAtt01 coexistent dans cette tâche mais sur des entités différentes — CstAtt01 de l'OE (hors tolérance) et CstAtt01 de la réception (réception retour entièrement rangée). Ils sont toujours qualifiés explicitement pour éviter toute confusion.
---
# Contexte
Une fois les palettes traitées au poste de travail ([LIM-67](https://easywmsfrance.atlassian.net/browse/LIM-67) / [LIM-72](https://easywmsfrance.atlassian.net/browse/LIM-72)), il faut :
- **Clôturer la réception** et informer l'ERP via un message **REF**
- **Clôturer les OE (ordres d'entrée) associés** et envoyer le message **ROF** correspondant
- Afficher dans la vue des OE les OE en écart pour permettre aux gestionnaires de les clôturer manuellement
**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, l'OE ne sera pas complété par une future réception — SAP gère le reliquat via une nouvelle livraison.
Cette tâche concerne les flux **fournisseur/intersite** et **retour client**. La réception production (ASN) n'est pas concernée (pas de clôture manuelle).
Résumé du process complet :
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-67](https://easywmsfrance.atlassian.net/browse/LIM-67) / [LIM-72](https://easywmsfrance.atlassian.net/browse/LIM-72)
4. **Clôture de la réception** (auto si toutes les palettes sont arrivées et validées, manuelle sinon) ← _cette tâche_
- Pour les réceptions **retour**, l'émission du REF est différée jusqu'au rangement ASRS complet (§1.2).
5. **Clôture des OE associés** (auto si dans la tolérance, manuelle sinon) ← _cette tâche_
6. Déplacement AGV → Table d'entrée (+ filmage)
7. Passage PIE : [LIM-66](https://easywmsfrance.atlassian.net/browse/LIM-66)
8. Stockage ASRS ou rejet
9. **Émission du REF / ROF**_cette tâche_
- Fournisseur / intersite : REF émis à la clôture de la réception (étape 4), ROF émis à la clôture de chaque OE (étape 5).
- Retour client : REF (et donc clôture effective de la réception) émis une fois tous les supports rangés en ASRS (après étape 8).
> **Réglage** : IsSingleReceipt = true — le WMS ne gère pas de reliquats automatiques. Si réception incomplète, c'est SAP qui crée une nouvelle livraison (donc nouvel OE) si nécessaire.
> **Réglage** : AutoCloseReception = true — le WMS clôture automatiquement la réception quand toutes les palettes sont arrivées et validées (condition custom en §1.1). Pour les retours, l'émission du REF reste conditionnée au rangement ASRS complet (§1.2).
> **Réglage** : AutoCloseInboundOrder = true — à la clôture de la réception, chaque OE complété à 100% ou dans la tolérance est automatiquement clôturé (ROF envoyé) et auto-archivé (donc absent de la vue des OE). Les OE en écart (hors tolérance) restent ouverts et visibles dans la vue (§2) Ils ne doivent pas se fermer automatiquement (voir ci-dessous).
---
# Développement
## 1. Clôture de la réception
### 1.1 Déclenchement
**Principe** : la réception est complètement « livrée » au WMS quand toutes les palettes fictives issues de l'image de quai ont été traitées au PK (devenant des palettes réelles), et qu'aucune palette n'est plus en cours de traitement au PK.
**Rappel sur les deux CstAtt utilisés pour ce check** :
| | | | |
|---|---|---|---|
|CstAtt|Entité|Pose / dépose|Scope (tâche)|
|CstAtt08|Palette fictive (issue de l'image de quai)|Set avec la valeur du code de réception à la création de la palette fictive. Supprimé avec la palette fictive quand elle est traitée au PK.|Géré en amont — posé par [LIM-64](https://easywmsfrance.atlassian.net/browse/LIM-64), consommé par [LIM-67](https://easywmsfrance.atlassian.net/browse/LIM-67) / [LIM-72](https://easywmsfrance.atlassian.net/browse/LIM-72).|
|CstAtt10|Palette réelle au PK|Set à true pendant le process de réception sur la palette en cours de traitement. Mis à vide à l’évacuation de la palette.|Géré en amont par [LIM-67](https://easywmsfrance.atlassian.net/browse/LIM-67) / [LIM-72](https://easywmsfrance.atlassian.net/browse/LIM-72). **Consommé ici** pour le déclenchement de l'auto-close.|
**Condition de déclenchement de l'auto-close** (et de visibilité du bouton « Fermer réception ») :
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 :
- **Aucune palette fictive** ayant CstAtt08 = <code de la réception en cours> n'est présente _(plus de palettes à venir de l'image de quai)_,
- **ET**
- **Si Workstation : une seule palette (<=1) réelle au PK** a CstAtt10 = true _(plus dautres palettes en cours de traitement)_.
- **Si Vue Réception** : **aucune palette réelle au PK** n'a CstAtt10 = true _(plus de palette en cours de traitement)_.
Ces deux conditions garantissent que toutes les palettes sont arrivées et entièrement validées avant que la réception puisse se clôturer.
Si au moins une ligne est hors tolérance, afficher un message d'avertissement à l'opérateur au moment de la fermeture : _« 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 »_.
### 1.2 Cas spécifique des retours clients — REF conditionné au rangement complet
**Contexte métier** : pour les retours clients, le REF influe sur la facturation SAP. Il ne doit donc être envoyé que lorsque **tous les supports de la réception sont rangés dans l'ASRS** (et ont donc passé l'ensemble des contrôles, notamment PIE).
Pour les autres types de réception (fournisseur / intersite), le REF est émis de façon standard à la clôture de la réception, quelle que soit la position des supports (voir §1.4 pour la gestion du champ _Zone de stockage_ dans ce cas).
#### 1.2.1 Pose du CstAtt11 sur les supports (WMS)
À 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 du support à true.
- 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 (cf. §1.2.3).
#### 1.2.2 Affichage — statut « Clôture en cours »
Dans la vue des réceptions, le statut visuel d'une réception retour est piloté par CstAtt01 de la réception (posé par Reception_Close_PR_V2, cf. §1.3) :
| | | |
|---|---|---|
|CstAtt01 de la réception|État|Affichage|
|null / vide|Retour 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é : le flag reste vide et l'affichage suit le comportement standard.
#### 1.2.3 Cas rare — palette déjà sortie de l'ASRS avant clôture du REF
_Exemple_ : réception retour de 15 palettes. Au moment où la 13e entre dans l'ASRS, la 1ère (entrée plus tôt) en est déjà ressortie (picking).
Le CstAtt11 du support n'est jamais remis à false après la pose initiale. Le flag persiste donc même si le support ressort de l'ASRS. Quand la 15e palette sera rangée, tous les supports de la réception auront CstAtt11 = true et la clôture se fera normalement.
Par ailleurs, si la palette est expédiée (fermeture de l'ordre de sortie), elle ne sera plus dans le pool évalué par Reception_Close_PR_V2 — la condition reste satisfaisable.
### 1.3 Adaptation de Reception_Close_PR_V2 (WMS)
Le workflow standard de clôture de réception est modifié pour couvrir deux comportements custom : la condition spécifique aux retours (A) et la gestion des écarts par ligne article (B). Ces deux comportements s'exécutent à la clôture de la réception et concernent l'ensemble des flux (hors précisions sur A, propres aux retours).
#### 1.3.1 Partie A — Condition de clôture pour les retours
- **Si la réception n'est pas de type retour** → comportement standard (clôture immédiate, génération de la transaction REF).
- **Si la réception est de type retour** :
- Vérifier que **tous les supports** de la réception ont CstAtt11 = true.
- **Oui** → set CstAtt01 de la réception = false, fermer la réception, générer la transaction REF.
- **Non** → ne pas fermer, set CstAtt01 de la réception = true, la réception reste dans l'état « Clôture en cours » (§1.2.2). Le WF sera rejoué à chaque event _task finished_ sur un support de la réception, jusqu'à satisfaction de la condition.
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.
#### 1.3.2 Partie B — Pose du CstAtt01 de l'OE pour les lignes hors tolérance
Rappel des notions :
- **Quantité reçue** (réelle, déclarée au PK)
- **Quantité attendue** (théorique, issue du ROR)
- **Tolérance** (% de dépassement autorisé, par ligne, issue du ROR. Si non indiquée dans le ROR, indiquée via le profil de réception de l'article)
Dans le standard la tolérance n'est utilisée que pour l'excès ; dans notre cas elle sera aussi utilisée pour vérifier une quantité reçue inférieure à celle attendue.
**Algorithme** — à la clôture effective de la réception (après validation de la condition A si applicable), pour chaque **ligne article hors tolérance** (en plus ou en moins) :
1. Chercher le **premier OE** (FirstOrDefault) parmi les OE associés à la réception qui contient ce combo code article/lot.
- Le client a validé qu'en pratique un combo code article/lot n'est jamais partagé entre plusieurs OE d'une même réception — le FirstOrDefault est donc déterministe dans les faits.
2. Poser CstAtt01 = true sur cet OE.
Les OE ainsi flaggés ne se clôturent pas automatiquement (leur ROF est bloqué, **il faut modifier le WF de clôture des OE pour ce cas**) et s'affichent en rouge (§2). Les OE en écart **dans la tolérance** ne sont pas flaggés.
**REF** : le REF est envoyé normalement avec les quantités réelles reçues (ce qui inclut les excès sur les lignes déjà attendues). Le cas d'un code article totalement inattendu (ligne supplémentaire dans le REF) n'est autorisé que pour les retours et est géré par le standard — hors scope de cette tâche.
> **Note** : l'autorisation de la réception physique d'une marchandise en excès par rapport à la tolérance est traitée côté PK — cf. [LIM-67](https://easywmsfrance.atlassian.net/browse/LIM-67) / [LIM-72](https://easywmsfrance.atlassian.net/browse/LIM-72).
### 1.4 Contenu du REF (custom)
Il faut mettre en place les customisations suivantes :
| | |
|---|---|
|Élément custom à rajouter (nom balise à ta guise)|Détail|
|Zone de stockage|Info récupérée depuis le code emplacement du support|
Un seul REF est envoyé par réception (pas de REF progressif, car IsSingleReceipt = true).
**Valeur de la zone de stockage** :
- Réceptions **fournisseur / intersite** : si un support se trouve hors de l'ASRS au moment de l'envoi du REF, on envoie "NON RANGEE".
- Réceptions **retour client** : ce cas ne peut pas se produire puisque le REF n'est émis qu'une fois tous les supports rangés (cf. §1.2). La valeur sera toujours une zone réelle (même si hors ASRS).
---
## 2. Clôture des ordres d'entrée (OE)
### 2.1 Principe général
À la clôture de la réception, le WMS impute les quantités reçues sur les OE associés (un OE étant servi par une seule réception). Le flag CstAtt01 de l'OE a déjà été posé par Reception_Close_PR_V2 pour les OE concernés par une ligne hors tolérance (cf. §1.3.2). Le comportement dépend ensuite du résultat pour chaque OE :
| | | | |
|---|---|---|---|
|Situation de l'OE|Clôture OE|ROF|Affichage dans la vue des OE|
|Reçu = attendu (pas d'écart)|Auto-close (AutoCloseInboundOrder = true)|Envoi (auto)|Auto-archivé → **absent de la vue**|
|Écart dans la tolérance (incomplet ou excès léger)|**Custom :** auto-close|Envoi (auto)|Auto-archivé → **absent de la vue**|
|Écart hors tolérance (CstAtt01 de l'OE = true)|Manuelle par un profil non-opérateur|Envoyé manuellement|**Rouge** — bouton « Clôturer l'OE » visible uniquement aux non-opérateurs|
> **Règle d'affichage résumée** : un OE présent dans la vue est forcément « non terminé » — soit sa réception n'est pas encore arrivée / en cours, soit sa réception est terminée avec écart. On distingue les trois cas à l'œil par la couleur.
### 2.2 Diagramme décisionnel
`Clôture de la réception │ ▼ Pour chaque OE associé : écart détecté ? │ ┌────┴─────────┐ ▼ ▼ NON OUI │ │ │ │ ▼ │ Écart dans la tolérance ? │ │ │ ┌─────┴─────┐ │ ▼ ▼ │ OUI NON (hors tolérance) │ │ │ │ │ ▼ │ │ CstAtt01 de l'OE = true │ │ (posé par Reception_Close_PR_V2, §1.3.2) │ │ REF envoyé (avec quantités réelles) │ │ ROF BLOQUÉ │ │ OE affiché en ROUGE │ │ Bouton "Clôturer l'OE" visible │ │ uniquement aux non-opérateurs │ │ (admin, manager, chef d'équipe) │ │ │ │ │ ▼ │ │ Manager régularise dans SAP │ │ (envoi éventuel d'un nouveau ROR) │ │ puis clôture manuellement l'OE │ │ │ │ │ │ │ │ │ │ │ │ │ │ ▼ ▼ ▼ Clôture Auto ROF envoyé à SAP ROF envoyé auto-archivé`
### 2.3 Visibilité et accessibilité du bouton « Clôturer l'OE »
| | | |
|---|---|---|
|État OE|Affichage OE|Bouton « Clôturer l'OE »|
|Sans écart (auto-clôturé)|Standard - Auto-archivé, absent de la vue|**Standard** : accessible à tous les profils (opérateurs inclus)|
|Écart dans la tolérance|Standard - Auto-archivé, absent de la vue|**Standard** : accessible à tous les profils (opérateurs inclus)|
|Écart hors tolérance (CstAtt01 de l'OE = true)|Rouge|**Visible uniquement pour les profils non-opérateurs** (admin, manager, chef d'équipe). Masqué pour les opérateurs standards.|
---
## 3. LOC — Impact sur le message de localisation (développement hors scope)
> **Note** : Le développement du LOC custom est une tâche dédiée : [LIM-76](https://easywmsfrance.atlassian.net/browse/LIM-76). Cette section décrit le besoin pour information et cohérence.
Le LOC est un message envoyé à SAP **toutes les 5 minutes** sur delta (palettes créées/déplacées/supprimées). Il contient les quantités et la localisation de chaque support.
**Custom nécessaire (tâche dédiée)** : le LOC ne doit pas prendre en compte les palettes liées à une réception non fermée. Cela est standard dans la génération du WSC (qu'on va forker pour faire le LOC).
Cela garantit que le WMS ne communique à SAP que les supports qu'il connaît déjà (via un REF préalable). Ainsi :
- Si un article est géré en KG et qu'un écart de poids est constaté au PIE ([LIM-66](https://easywmsfrance.atlassian.net/browse/LIM-66)), la quantité réelle est mise à jour dans le stock WMS.
- Le LOC suivant (après l'envoi du REF) transmettra naturellement la bonne quantité à SAP, sans besoin de STV spécifique.
- SAP constatera l'écart en comparant les quantités du LOC avec celles du REF.
> **Note** : les notifications d'écart de poids au PIE et de rejet sont déjà gérées par [LIM-66](https://easywmsfrance.atlassian.net/browse/LIM-66). La présente tâche (LIM-73) ne génère plus de notifications.
---
## 4. Récapitulatif des CstAtt utilisés par cette tâche
À reporter / mettre à jour dans [LIM-14](https://easywmsfrance.atlassian.net/browse/LIM-14) (Custom Attributes, Séquences, Jobs et Paramètres WMS).
| | | | | |
|---|---|---|---|---|
|CstAtt|Entité|Type|Portée|Rôle|
|CstAtt08|Palette fictive|String|Posé par [LIM-64](https://easywmsfrance.atlassian.net/browse/LIM-64), consommé ici|Code de la réception liée à la palette fictive — utilisé pour détecter l'absence de palettes fictives restantes avant auto-close (§1.1)|
|CstAtt10|Palette réelle au PK|Booléen|Posé/déposé par [LIM-67](https://easywmsfrance.atlassian.net/browse/LIM-67) / [LIM-72](https://easywmsfrance.atlassian.net/browse/LIM-72), consommé ici|true pendant le traitement d'une palette au PK — utilisé pour détecter qu'aucune palette n'est en cours avant auto-close (§1.1)|
|CstAtt11|Support (palette réelle)|Booléen|**Introduit par cette tâche**|true quand le support issu d'une réception retour a fini son rangement en ASRS — utilisé par Reception_Close_PR_V2 pour conditionner la clôture de la réception et l'émission du REF (§1.2, §1.3.1)|
|CstAtt01|Réception (type retour uniquement)|Booléen|**Introduit par cette tâche**|Réception retour entièrement rangée en ASRS — posé à true par Reception_Close_PR_V2 au moment de la tentative de clôture non effective. Pilote l'affichage « Clôture en cours » tant qu'il est à true (§1.2.2, §1.3.1)|
|CstAtt01|OE (ordre d'entrée)|Booléen|**Introduit par cette tâche**|OE en écart hors tolérance — posé par Reception_Close_PR_V2 à la clôture de la réception (§1.3.2). Bloque la clôture auto de l'OE et pilote l'affichage rouge + la visibilité restreinte du bouton « Clôturer l'OE » (§2)|
---
# Cas de tests
# Cas de tests — LIM-73
_À compléter au fil des tests. Colonnes Dév / CDP laissées vides pour mise en couleur après exécution._
---
## 1. Clôture de la réception — Déclenchement (fournisseur / intersite)
| | | | | | | |
|---|---|---|---|---|---|---|
|ID|Description|Préconditions|Actions|Résultat attendu|Dév|CDP|
|1|Auto-close — toutes les palettes arrivées et validées (vue Réception)|Réception fournisseur. Plus aucune palette fictive avec CstAtt08 = <code>. Aucune palette au PK avec CstAtt10 = true|Déclenchement auto-close depuis la vue Réception|Réception clôturée, REF envoyé immédiatement|||
|2|Auto-close depuis Workstation — dernière palette en cours de validation|Réception fournisseur. Plus aucune palette fictive avec CstAtt08 = <code>. Exactement 1 palette au PK avec CstAtt10 = true (la dernière en cours)|Déclenchement auto-close depuis la Workstation|Réception clôturée, REF envoyé (condition Workstation : CstAtt10 ≤ 1)|||
|3|Pas d'auto-close depuis vue Réception — palette encore en cours au PK|Réception fournisseur. 1 palette au PK avec CstAtt10 = true|Tentative d'auto-close depuis la vue Réception|Auto-close non déclenché. Bouton « Fermer réception » masqué|||
|4|Pas d'auto-close — palettes fictives restantes (les deux points d'entrée)|Réception fournisseur. 2 palettes fictives avec CstAtt08 = <code> encore présentes|Tentative d'auto-close (vue Réception et Workstation)|Auto-close non déclenché dans les deux cas. Bouton « Fermer réception » masqué|||
|5|Pas d'auto-close depuis Workstation — plus d'une palette en cours|Réception fournisseur. 2 palettes au PK avec CstAtt10 = true|Tentative d'auto-close depuis la Workstation|Auto-close non déclenché. Bouton masqué (condition Workstation : CstAtt10 ≤ 1 non respectée)|||
|6|Avertissement opérateur à la fermeture si ligne hors tolérance|Réception prête à clôturer, 1 ligne article hors tolérance|Clôture de la réception|Message d'avertissement affiché à l'opérateur : « 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 »|||
## 2. Clôture de la réception — Contenu du REF
| | | | | | | |
|---|---|---|---|---|---|---|
|ID|Description|Préconditions|Actions|Résultat attendu|Dév|CDP|
|7|Zone de stockage présente pour chaque support|Réception fournisseur, 3 palettes stockées en TK1, TK2, TK3|Clôture et envoi du REF|Le REF contient pour chaque support sa zone de stockage (récupérée depuis le code emplacement)|||
|8|Zone de stockage = "NON RANGEE" pour palettes hors ASRS (non-retour)|Réception fournisseur, 3/5 palettes rangées en ASRS, 2 encore en transit au moment de la clôture|Auto-close et envoi du REF|REF envoyé immédiatement. Pour les 2 palettes non rangées : zone de stockage = "NON RANGEE"|||
|9|REF unique par réception (pas de REF progressif)|Réception avec plusieurs palettes rangées à des moments différents|Clôture de la réception|Un seul REF émis, contenant l'ensemble des supports|||
## 3. Clôture de la réception — Cas retour client (REF conditionné au rangement)
| | | | | | | |
|---|---|---|---|---|---|---|
|ID|Description|Préconditions|Actions|Résultat attendu|Dév|CDP|
|10|Retour, tous supports rangés ASRS|Réception retour, CstAtt11 = true sur tous les supports, conditions §1.1 OK|Auto-close|Réception fermée, REF envoyé. CstAtt01 de la réception set à false à la clôture effective (quel que soit le chemin)|||
|11|Retour, supports pas tous rangés — passage en « Clôture en cours »|Réception retour, conditions §1.1 OK, mais 3/5 supports seulement rangés en ASRS|Tentative de clôture (auto ou manuelle)|Réception non fermée. CstAtt01 de la réception = true. Statut affiché « Clôture en cours », ligne en jaune. Pas de REF|||
|12|Affichage standard avant tentative de clôture|Réception retour en cours de traitement, aucune tentative de clôture encore déclenchée|Ouvrir la vue des réceptions|CstAtt01 de la réception vide. Affichage standard (pas de jaune)|||
|13|Déblocage auto dès que le dernier support est rangé|Suite du test 11. Dernier support entre en ASRS → CstAtt11 = true|Event _task finished_|Reception_Close_PR_V2 rejoué, condition satisfaite. Réception fermée, REF envoyé. CstAtt01 de la réception remis à false (plus de jaune dans la vue)|||
|14|Cas rare — palette sortie avant clôture du REF|Retour 15 palettes, la 1ère déjà ressortie (picking) quand la 15e est rangée|Dernière palette rangée|CstAtt11 resté à true sur la palette sortie. Condition §1.3.1 satisfaite. Clôture et REF OK|||
|15|Palette refusée au PIE non supprimée — clôture impossible|Retour 5 palettes, 4 rangées en ASRS (CstAtt11 = true), 1 refusée au PIE mais non retirée du WMS|Tentative de clôture|Clôture ne se fait jamais tant que la palette refusée est présente. Réception reste « Clôture en cours »|||
|16|Palette refusée au PIE supprimée — clôture débloquée|Suite du test 15, le client supprime la palette refusée du WMS|Event _task finished_ ou rejeu du WF|Tous les supports restants ont CstAtt11 = true. Clôture et REF OK|||
## 4. Clôture des OE — Sans écart et écart dans la tolérance
| | | | | | | |
|---|---|---|---|---|---|---|
|ID|Description|Préconditions|Actions|Résultat attendu|Dév|CDP|
|17|Auto-close OE — réception parfaite|Réception avec plusieurs OE, toutes quantités reçues = attendues|Clôture de la réception|Tous les OE auto-clôturés (AutoCloseInboundOrder), ROF envoyé pour chacun, OE auto-archivés (absents de la vue)|||
|18|Auto-close OE — écart dans la tolérance (en moins)|OE avec article A : attendu 100, reçu 95, tolérance 10%|Clôture de la réception|CstAtt01 de l'OE reste vide. OE auto-clôturé (custom : auto-close dans la tolérance). ROF envoyé. OE auto-archivé|||
|19|Auto-close OE — écart dans la tolérance (en plus)|OE avec article A : attendu 100, reçu 108, tolérance 10%|Clôture de la réception|CstAtt01 de l'OE reste vide. OE auto-clôturé. ROF envoyé avec quantité réelle (108). OE auto-archivé|||
|20|Plusieurs OE sur une même réception — comportement mixte|Réception avec 3 OE : OE1 parfait, OE2 dans la tolérance, OE3 hors tolérance|Clôture de la réception|OE1 et OE2 auto-clôturés et archivés. OE3 : CstAtt01 = true, reste visible en rouge (cf. §5)|||
## 5. Clôture des OE — Écart hors tolérance (rouge)
| | | | | | | |
|---|---|---|---|---|---|---|
|ID|Description|Préconditions|Actions|Résultat attendu|Dév|CDP|
|21|OE hors tolérance — CstAtt01 de l'OE = true, affichage rouge|OE avec article A : attendu 100, reçu 150, tolérance 10%|Clôture réception|CstAtt01 de l'OE = true (posé par Reception_Close_PR_V2). REF envoyé avec quantité réelle (150). ROF bloqué (WF de clôture OE modifié). OE affiché en rouge dans la vue|||
|22|OE hors tolérance — WF clôture OE bloque bien l'auto-close|OE avec CstAtt01 de l'OE = true suite à une réception clôturée|Passage du job d'auto-close OE|L'OE n'est pas auto-clôturé. Reste ouvert et visible|||
|23|Sélection de l'OE à flagger via combo article/lot _(cas théorique)_|Réception avec 2 OE contenant un même combo article A + lot L1 (cas non prévu en production)|Clôture réception, ligne (article A, lot L1) hors tolérance|CstAtt01 de l'OE = true posé sur le **premier OE** trouvé (FirstOrDefault) ayant ce combo|||
|24|Recherche par combo article/lot — distinction sur le lot|Réception avec 2 OE : OE1 contient (article A, lot L1), OE2 contient (article A, lot L2). Seul le lot L1 est hors tolérance|Clôture réception|CstAtt01 de l'OE = true posé sur OE1 uniquement. OE2 non impacté|||
|25|Bouton « Clôturer l'OE » visible pour non-opérateur|CstAtt01 de l'OE = true, user = chef d'équipe / manager / admin|Ouverture vue des OE|Bouton « Clôturer l'OE » visible|||
|26|Bouton « Clôturer l'OE » masqué pour opérateur standard|CstAtt01 de l'OE = true, user = opérateur standard|Ouverture vue des OE|Bouton « Clôturer l'OE » masqué|||
|27|Manager clôture manuellement OE hors tolérance|CstAtt01 de l'OE = true, manager connecté. Régularisation SAP effectuée en amont|Clic sur « Clôturer l'OE »|OE clôturé, ROF envoyé|||