Points d'entrée > Module Stocks > Script standard MTOLINKLIB 

MTOLINK_PRP : Sélection des ordres ou Ajout de critères

Ce point d’entrée permet d'ignorer certaines demandes ou ressources pour le calcul des affectations, ou de considérer des critères d'affectations spécifiques en conjonction avec le point d'entrée MTOLINK_RULES.

Contexte et mode de fonctionnement

Au chargement des tableaux (mémoire) des demandes et des ressources, il est possible d'ignorer l'ordre en cours (dans la classe [F:ORDB]) en positionnant GPE à 1, ou de valoriser jusqu'à 3 champs utilisateurs (chaines de 50 max) en testant MTOLINK_PE_MODE :

- MTOLINK_PE_MODE = "D" pour les demandes :

TDEM_USRFLD1(NDEM)
TDEM_USRFLD2(NDEM)
TDEM_USRFLD3(NDEM)

- MTOLINK_PE_MODE = "R" pour les ressources :

TRESS_USRFLD2(NRESS)
TRESS_USRFLD2(NRESS)
TRESS_USRFLD3(NRESS)

L'ensemble des ordres concernés par le calcul est chargé en mémoire et pour des raisons de performance il est judicieux de stocker ici tout élément à prendre en compte.
A ce propos, il est conseiller d'ajouter les champs utilisateurs directement dans la table ORDERS pour de meilleures performances.

Dans l'exemple de code donné plus bas, le champ utilisateur XUSRFLD est copié dans la variable mémoire

MTOLINK_RULES : Ajout d'une règle

Ce point d’entrée permet, en conjonction avec le point d'entrée MTOLINK_PRP, d'activer des contraintes supplémentaires (règles) dans l'algorithme de calcul des affectations.

Contexte et mode de fonctionnement

Au début du calcul des affectations, les règles de priorisation des ressources (cf règles d’affectation) sont chargées en mémoire avec WUSRFLT(I_RULE)=1.

Juste avant, un premier appel au point d'entrée MTOLINK_RULES est effectué en mode "activation" avec MTOLINK_PE_MODE = 'ACT'. Il permet d'indiquer au calcul :

- 1 ou 3 règles spécifiques supplémentaires et prioritaires à considérer, en affectant WUSRFLT(WNBRULE)=2 et en incrémentant le compteur de règle (WNBRULE)

- ou de gérer des conditions spécifiques ajoutées au paramétrage des règles standards.

Un second appel au point d'entrée MTOLINK_RULES est ensuite effectué en mode "application" avec :

- MTOLINK_PE_MODE = 'APP' pour une règle spécifique (si WUSRFLT(I_RULE)=2)

- MTOLINK_PE_MODE = 'BPP' pour toute règle spécifique ou standard (quelque soit WUSRFLT(I_RULE))

Positionner alors GPE à 1 pour indiquer l'incompatibilité entre la demande en cours (variables TDEM_...(I)) et la ressource en cours (variables TRESS_...(K)) pour la règle en cours (W...(I_RULE)).

Remarque : R_USRFLD1..3 = TDEM_USRFLD1..3 (I)

Exemple d'utilisation

#----------------------------------------------------------------------------------
$ACTION

When "MTOLINK_PRP" : Gosub MTOLINK_PRP
When "MTOLINK_RULES" : Gosub MTOLINK_RULES
Endcase
Return

#----------------------------------------------------------------------------------
# Entry point triggered when loading demand(s) and resource(s) lists
# Can be use either to store user data (for later use when applying rules)
# Or to skip an order (return GPE = 1)
$MTOLINK_PRP
# in this example, we store XUSRFLD in user fields
GPE = 0
Case MTOLINK_PE_MODE
When "D": TDEM_USRFLD1(NDEM) = [F:ORDB]XUSRFLD
When "R": TRESS_USRFLD1(NRESS) = [F:ORDB]XUSRFLD
Endcase
Return


#----------------------------------------------------------------------------------
# Here we use the user fields stored using MTOLINK_PRP entry point
# Assignments will only be generated for compatible user fields

$MTOLINK_RULES
Case MTOLINK_PE_MODE
When "ACT": # rule activation
WUSRFLT(WNBRULE) = 2
WNBRULE += 1
When "APP": # rule application
# matching user fields
GPE = 0
If TRESS_USRFLD1(K) <> TDEM_USRFLD1(I) : GPE = 1 : Endif
Endcase
Return

BEFMLKCRE : Avant création d'une affectation dans la table MTOLINK

Ce point d’entrée permet de prendre la main avant la création d'un nouvel enregistrement d'affectation dans la table MTOLINK.

Contexte et mode de fonctionnement

Transaction

Il y a une transaction en cours.

Pour annuler la transaction s’il y a un problème, il faut positionner la variable GOK à 0.

Classes fichiers et écrans disponibles

Le buffer [F:MLK1] est chargé au moment de l’appel du point d’entrée.

La classe écran [M:MLIK] est chargée avec les paramètres d'appel au traitement MTOLINKLIB :

- [M:MLIK]STOFCY et [M:MLIK]ITMREF indique l'article-site concerné

- [M:MLIK]DEMTYP, DEMNUM, DEMLIN, DEMSEQ, DWIPTYP indique l'encours de demande concerné

- [M:MLIK]RESSTYP, RESSNUM, RESSLIN, RESSSEQ, RWIPTYP indique l'encours de ressource concerné

- [M:MLIK]MAJCOD indique le type de traitement

C

Création d'une nouvelle affectation

M

Modification d'une affectation

A

Suppression d'une affectation

P

Proposition de nouvelles affectations générées selon la règle d'affectation de l'article-site

Z

Raz des affectations associées à une ressource ou une demande

E

Entrée d'une ressource

Tables ouvertes

Dans le tableau ci-dessous, le flag contenu significatif signifie que le contenu est en phase avec le contexte (…).

Table

Abréviation

Contenu significatif

Intitulé Table

MTOLINK

MLK1

Oui

Affectations

ORDERS

ORDB

Non

Encours

PARMTO

PTO

Oui ssi [M:MLIK]MAJCOD="P" ou "E"

Règles d'affectation

BEFMLKUPD : Avant modification d'une affectation dans la table MTOLINK

Ce point d’entrée permet de prendre la main avant la modification d'un enregistrement d'affectation dans la table MTOLINK.

Contexte et mode de fonctionnement

Transaction

Il y a une transaction en cours.

Pour annuler la transaction s’il y a un problème, il faut positionner la variable GOK à 0.

Classes fichiers et écrans disponibles

Le buffer [F:MLK1] est chargé au moment de l’appel du point d’entrée. L'appel est fait au sein d'une boucle For [MLK1].

La classe écran [M:MLIK] est chargée avec les paramètres d'appel au traitement MTOLINKLIB :

- [M:MLIK]STOFCY et [M:MLIK]ITMREF indique l'article-site concerné

- [M:MLIK]DEMTYP, DEMNUM, DEMLIN, DEMSEQ, DWIPTYP indique l'encours de demande concerné

- [M:MLIK]RESSTYP, RESSNUM, RESSLIN, RESSSEQ, RWIPTYP indique l'encours de ressource concerné

- [M:MLIK]MAJCOD indique le type de traitement

C

Création d'une nouvelle affectation

M

Modification d'une affectation

A

Suppression d'une affectation

P

Proposition de nouvelles affectations générées selon la règle d'affectation de l'article-site

Z

Raz des affectations associées à une ressource ou une demande

E

Entrée d'une ressource

Tables ouvertes

Dans le tableau ci-dessous, le flag contenu significatif signifie que le contenu est en phase avec le contexte (…).

Table

Abréviation

Contenu significatif

Intitulé Table

MTOLINK

MLK1

Oui

Affectations

ORDERS

ORDB

Non

Encours

PARMTO

PTO

Oui ssi [M:MLIK]MAJCOD="P" ou "E"

Règles d'affectation

BEFMLKDEL : Avant suppresion d'une affectation de la table MTOLINK

Ce point d’entrée permet de prendre la main avant la suppression d'un enregistrement d'affectation de la table MTOLINK.

Contexte et mode de fonctionnement

Transaction

Il y a une transaction en cours.

Pour annuler la transaction s’il y a un problème, il faut positionner la variable GOK à 0.

Classes fichiers et écrans disponibles

Le buffer [F:MLK1] est chargé au moment de l’appel du point d’entrée. L'appel est fait au sein d'une boucle For [MLK1].

La classe écran [M:MLIK] est chargée avec les paramètres d'appel au traitement MTOLINKLIB :

- [M:MLIK]STOFCY et [M:MLIK]ITMREF indique l'article-site concerné

- [M:MLIK]DEMTYP, DEMNUM, DEMLIN, DEMSEQ, DWIPTYP indique l'encours de demande concerné

- [M:MLIK]RESSTYP, RESSNUM, RESSLIN, RESSSEQ, RWIPTYP indique l'encours de ressource concerné

- [M:MLIK]MAJCOD indique le type de traitement

C

Création d'une nouvelle affectation

M

Modification d'une affectation

A

Suppression d'une affectation

P

Proposition de nouvelles affectations générées selon la règle d'affectation de l'article-site

Z

Raz des affectations associées à une ressource ou une demande

E

Entrée d'une ressource

Tables ouvertes

Dans le tableau ci-dessous, le flag contenu significatif signifie que le contenu est en phase avec le contexte (…).

Table

Abréviation

Contenu significatif

Intitulé Table

MTOLINK

MLK1

Oui

Affectations

ORDERS

ORDB

Non

Encours

PARMTO

PTO

Oui ssi [M:MLIK]MAJCOD="P" ou "E"

Règles d'affectation

MTOLINK_ENT2 : Allocation des demandes affectées à une ressource

Ce point d’entrée permet de prendre la main à l'entrée d'une ressource (réception ou déclaration de production) pour gérer de façon spécifique l'allocation des demandes affectées à la ressource.

Contexte et mode de fonctionnement

Transaction

Il y a une transaction en cours.

Pour annuler la transaction s’il y a un problème, il faut positionner la variable GOK à 0.

Classes fichiers et écrans disponibles

La classe écran [M:MLIK] est chargée avec les paramètres d'appel du traitement MTOLINKLIB :

- [M:MLIK]STOFCY et [M:MLIK]ITMREF indique l'article-site concerné

- [M:MLIK]RESSTYP, RESSNUM, RESSLIN, RESSSEQ, RWIPTYP indique l'encours de ressource concerné

- [M:MLIK]LIKQTY indique en unité de stock la quantité de ressource entrée

- [M:MLIK]MAJCOD indique le type de traitement et vaut "E" pour Entrée de ressource

- [M:MLIK]TRTNAM vaut "MTKMTOLIB" pour une décalration de production, "PURMTOLIB" pour un réception

Utilisation

Un tableau des NDEM demandes (TDEM_OFF, TDEM_TYP, TDEM_NUM, TDEM_MTO, TDEM_DAT) affectées à la ressource entrée est constitué et trié selon TDEM_OFF :

TDEM_TYP,TDEM_NUM,TDEM_DAT : type no et date de fin de l'encours de la demande

TDEM_MTO : qté affectée entre la demande et la ressource

TDEM_OFF : ordre de tri pour la demande, calculé selon les paramètres de priorisation des demandes de la règle d'affectation

En standard, le traitement est le suivant :

WREQQTY = [M:MLIK]LIKQTY : WCOVQTY = 0

For I=0 to NDEM-1

Lecture de l'encours de la demande(I)

Gosub FILL_LINKD : # Affectation de [M:MLIK]DEMTYP, DEMNUM, DEMLIN, DEMSEQ, DWIPSTA, DWIPTYP selon l'encours

[M:MLIK]LIKQTY = min(TDEM_MTO(I), WREQQTY-WCOVQTY)

Gosub MAJ_MTO_ALLOCATION From =[M:MLIK]TRTNAM : # Allocation basée sur l'affectation

WCOVQTY += [M:MLIK]LIKQTY

Maj de l'encours de la demande(I) avec qté affectée -= [M:MLIK]LIKQTY

If [M:MLIK]LIKQTY = TDEM_MTO(I)

Gosub MTOLINK_DEL : # Suppression de l'affectation entre la ressource et la demande(I)

Else

[M:MLIK]LIKQTY = TDEM_MTO(I) - [M:MLIK]LIKQTY

Gosub MTOLINK_MOD : # Modification de l'affectation entre la ressource et la demande(I)

Endif

If WCOVQTY >= WREQQTY : break : Endif

Next I

Maj de l'encours de la ressource avec qté affectée -= WREQQTY

Positionner la variable globale GPE à la valeur 1 pour inihiber ce traitement standard

Tables ouvertes

Dans le tableau ci-dessous, le flag contenu significatif signifie que le contenu est en phase avec le contexte (…).

Table

Abréviation

Contenu significatif

Intitulé Table

MTOLINK

MLK1

Non

Affectations

ORDERS

ORDB

Non

Encours

ITMFACILIT

ITF

Oui

Articles-Sites

PARMTO

PTO

Oui

Règles d'affectation