# Contexte
Il faut mettre en place un job global qui sera le chef d’orchestre des tâches de mouvement à destination des postes de travail (PK).
Ces tâches peuvent avoir différentes origines. IL faut donc créer un JOB avec une “entête” qui analyse l’ensemble des supports concernés et qui, selon leur emplacement d’origine et d’autres caractéristiques, va choisir la destination.
Il faut donc plusieurs sous-worklow à cey unique job selon les cas.
L’idée de faire un seul et unique job et d'éviter d’avoir plusieurs “mini-jobs” qui se font concurrence.
# Développement
A reprendre par @Michael Chaudier , l’entête doit checker tous les PK qui sont en attente de tâche, vérifier leurs modes autorisés et la séquence de priorité de chaque mode pour rentrer dans le sous-WF nécessaire.
Le rôle du job est de définir quels sont les postes de picking éligibles, c’est-à-dire les postes qui n’ont rien d’assigné (réception, commande, inventaire, consolidation…)
Pour qu’un poste soit éligible à être assigné à une nouvelle action, il doit remplir les conditions suivantes :
- Aucun ordre de sortie n’est assigné au PK
- Aucune tâche existe en direction de ce poste
- Aucune palette ne se trouve sur un des sous-emplacements PK
- Le poste est ouvert
Les postes de picking autorisent ou non la présence de big-bags, définit dans le paramètre PK_BIGBAG. Les ordres contenant des supports avec big-bags sont interdits sur les poste qui ne les autorisent pas, et prioritaires (en respectant le séquençage des process en première priorité) sur les postes qui les autorisent.
Si le PK rempli ces conditions, alors le WMS pourra essayer de lui envoyer des palettes. Pour chaque poste éligible, le WMS récupérera le paramètre MODES_PKX (X étant le numéro du poste) pour savoir ce qu’il a le droit de faire et la priorité de chaque process.
Une fois l’information récupérée, le WMS exécutera chaque sous Workflow énoncé ci-dessous en respectant l’ordre indiqué dans le paramètre. Chaque sous workflow devra retourné une information au WF principal pour lui indiquer s’il a assigné quelque chose au PK ou non. Si c’est le cas, le job passe au PK suivant, si ce n’est pas le cas alors le job passe au process suivant indiqué dans le paramètre.
- [https://easywmsfrance.atlassian.net/browse/LIM-74](https://easywmsfrance.atlassian.net/browse/LIM-74)
- [https://easywmsfrance.atlassian.net/browse/LIM-75](https://easywmsfrance.atlassian.net/browse/LIM-75)
| | | | | | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- | -------------- |
| Description | Préconditions | Actions | Résultat attendu | Validation Dév. | Validation CDP |
| Le poste de picking est fermé | | | Le job ignore ce poste pour assigner un process | | |
| Le poste de picking a un ordre de sortie assigné (Voir écran Menu > Contrôle > Affectation des postes de prélèvements) | | | Le job ignore ce poste pour assigner un process | | |
| Le poste de picking est ouvert et n’a pas d’ordre de sortie assigné. Une tâche de mouvement a pour destination le PK | | | Le job ignore ce poste pour assigner un process | | |
| Le poste de picking PK01 rempli toutes les conditions d'éligibilité, le paramètre MODES_PK01 n’existe pas | | | Le job ignore ce poste pour assigner un process | | |
| Le poste de picking PK01 rempli toutes les conditions, le paramètre MODES_PK01 existe et est vide | | | Le job ignore ce poste pour assigner un process | | |
| Le poste de picking PK01 rempli toutes les conditions d'éligibilité, le paramètre MODES_PK01 contient la valeur "RECEPTION;1\|PICKING;2\|CONSOLIDATION;3" | Il y a 4 palettes de réception ([https://easywmsfrance.atlassian.net/browse/LIM-64](https://easywmsfrance.atlassian.net/browse/LIM-64)) sur une zone de réception sans tâche. Toutes les palettes appartiennent à la même réception | | Le subWF [https://easywmsfrance.atlassian.net/browse/LIM-75](https://easywmsfrance.atlassian.net/browse/LIM-75) génère une tâche de mouvement pour les 4 palettes et renvoie l’information indiquant que des tâches ont été générées.
Le job n’essaye pas d’assigner un autre process. | Tâches non générés car hors scope ici, mais le process est bien suivi | |
| Le poste de picking PK01 rempli toutes les conditions d'éligibilité, le paramètre MODES_PK01 contient la valeur "RECEPTION;1\|PICKING;2\|CONSOLIDATION;3" | Il y a 2 palettes en réception et une commande en attente d’assignation d’un poste de picking | | La réception étant prioritaire le WMS génère les tâches pour les 2 palettes en réception. | Tâches non générés car hors scope ici, mais le process est bien suivi | |
| Les 2 palettes ont été réceptionnées sur le poste de picking et envoyées vers l’ASRS. | | | Le WMS assigne l’ordre de sortie au poste PK01 | Hors scope | |