Entry Points > Modulo Stock > Script standard MTOLINKLIB 

MTOLINK_PRP: Aggiunta di una regola

Questo entry point permette di ignorare alcune richieste o risorse per il calcolo delle assegnazioni, o di considerare dei criteri di assegnazioni specifiche insieme all'entry point MTOLINK_RULES.

Contesto e modalità di funzionamento

Al caricamento dei riquadri (memoria) delle richieste e delle risorse, è possibile ignorare l'ordine in corso (nella classe [F:ORDB]) posizionando GPE a 1, oppure valorizzare fino a 3 campi utente (stringa di 50 max) testando MTOLINK_PE_MODE :

- MTOLINK_PE_MODE = "D" per le richieste:

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

- MTOLINK_PE_MODE = "R" per le risorse:

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

Sono caricati in memoria tutti gli ordini interessati dal calcolo e per ragioni di performance è meglio memorizzare qui gli elementi da prendere in considerazione.
A tal merito, si consiglia di aggiungere i campi utente direttamente nella tabella ORDERS per delle performance migliori.

Nell'esempio del codice più avanti, il campo utente XUSRFLD viene copiato nella variabile memoria

MTOLINK_RULES: Aggiunta di una regola

Questo entry point permette, in congiunzione con l'entry point MTOLINK_PRP, di attivare dei vincoli supplementari (regole) nell'algoritmo del calcolo delle assegnazioni.

Contesto e modalità di funzionamento

All'inizio del calcolo delle assegnazioni, le regole di scelta delle priorità delle risorse (vedere regole di assegnazione) vengono caricate in memoria con WUSRFLT(I_RULE)=1.

Appena prima, viene effettuata una chiamata all'entry point MTOLINK_RULES in modalità "attivazione" con MTOLINK_PE_MODE = 'ACT'. Permette di indicare al calcolo:

- 1 o 3 regole specifiche supplementari e prioritarie da considerare, alimentando WUSRFLT(WNBRULE)=2 ed incrementandone il contatore di regola (WNBRULE)

- oppure di gestire delle condizioni specifiche aggiunte alla parametrizzazione delle regole standard.

Viene in seguito effettuata una seconda chiamata all'entry point MTOLINK_RULES in modalità "applicazione" con:

- MTOLINK_PE_MODE = 'APP' per una regola specifica (se WUSRFLT(I_RULE)=2)

- MTOLINK_PE_MODE = 'BPP' per qualunque regola specifica o standard (indipendentemente da WUSRFLT(I_RULE))

Posizionare allora GPE a 1 per indicare l'incompatibilità tra la richiesta in corso (variabili TDEM_...(I)) e la risorsa in corso (variabili TRESS_...(K)) per la regola in corso (W...(I_RULE)).

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

Esempio di utilizzo

#----------------------------------------------------------------------------------
$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: Prima della creazione di un'assegnazione nella tabella MTOLINK

Questo entry point permette di assumere il controllo prima della creazione di un nuovo record di assegnazione nella tabella MTOLINK.

Contesto e modalità di funzionamento

Transazione

C'è una transazione in corso.

Per annullare la transazione se c'è un problema, bisogna posizionare la variabile GOK a 0.

Classi file e videate disponibili

Il buffer [F:MLK1] è caricato al momento della chiamata dell'entry point.

La classe videata [M:MLIK] viene caricata con i parametri di chiamata al programma MTOLINKLIB:

- [M:MLIK]STOFCY e [M:MLIK]ITMREF indicano l'articolo-sito interessato

- [M:MLIK]DEMTYP, DEMNUM, DEMLIN, DEMSEQ, DWIPTYP indicano l'incorso di richiesta interessato

- [M:MLIK]RESSTYP, RESSNUM, RESSLIN, RESSSEQ, RWIPTYP indicano l'incorso di risorsa interessato

- [M:MLIK]MAJCOD indica il tipo di elaborazione

C

Creazione di una nuova assegnazione

M

Modifica di un'assegnazione

A

Cancellazione di un'assegnazione

P

Proposta di nuove assegnazioni generate secondo la regola di assegnazione dell'articolo-sito

Z

Reset delle assegnazioni associate ad una risorsa o ad una richiesta

Entrata di una risorsa

Tabelle aperte 

Nel riquadro sottostante, il flag contenuto significativo indica che il contenuto è allineato al contesto (...).

Tabella

Abbreviazione

Contenuto significativo

Descrizione Tabella

MTOLINK

MLK1

Assegnazioni

ORDERS

ORDB

No

In-corso

PARMTO

PTO

Sì se [M:MLIK]MAJCOD="P" o "E"

Regole di assegnazione

BEFMLKUPD: Prima della modifica di un'assegnazione nella tabella MTOLINK

Questo entry point permette di assumere il controllo prima della modifica di un record di assegnazione nella tabella MTOLINK.

Contesto e modalità di funzionamento

Transazione

C'è una transazione in corso.

Per annullare la transazione se c'è un problema, bisogna posizionare la variabile GOK a 0.

Classi file e videate disponibili

Il buffer [F:MLK1] è caricato al momento della chiamata dell'entry point. La chiamata avviene all'interno di un ciclo For [MLK1].

La classe videata [M:MLIK] viene caricata con i parametri di chiamata al programma MTOLINKLIB:

- [M:MLIK]STOFCY e [M:MLIK]ITMREF indicano l'articolo-sito interessato

- [M:MLIK]DEMTYP, DEMNUM, DEMLIN, DEMSEQ, DWIPTYP indicano l'incorso di richiesta interessato

- [M:MLIK]RESSTYP, RESSNUM, RESSLIN, RESSSEQ, RWIPTYP indicano l'incorso di risorsa interessato

- [M:MLIK]MAJCOD indica il tipo di elaborazione

C

Creazione di una nuova assegnazione

M

Modifica di un'assegnazione

A

Cancellazione di un'assegnazione

P

Proposta di nuove assegnazioni generate secondo la regola di assegnazione dell'articolo-sito

Z

Reset delle assegnazioni associate ad una risorsa o ad una richiesta

Entrata di una risorsa

Tabelle aperte 

Nel riquadro sottostante, il flag contenuto significativo indica che il contenuto è allineato al contesto (...).

Tabella

Abbreviazione

Contenuto significativo

Descrizione Tabella

MTOLINK

MLK1

Assegnazioni

ORDERS

ORDB

No

In-corso

PARMTO

PTO

Sì se [M:MLIK]MAJCOD="P" o "E"

Regole di assegnazione

BEFMLKDEL: Prima della cancellazione di un'assegnazione della tabella MTOLINK

Questo entry point permette di assumere il controllo prima della cancellazione di un record di assegnazione nella tabella MTOLINK.

Contesto e modalità di funzionamento

Transazione

C'è una transazione in corso.

Per annullare la transazione se c'è un problema, bisogna posizionare la variabile GOK a 0.

Classi file e videate disponibili

Il buffer [F:MLK1] è caricato al momento della chiamata dell'entry point. La chiamata avviene all'interno di un ciclo For [MLK1].

La classe videata [M:MLIK] viene caricata con i parametri di chiamata al programma MTOLINKLIB:

- [M:MLIK]STOFCY e [M:MLIK]ITMREF indicano l'articolo-sito interessato

- [M:MLIK]DEMTYP, DEMNUM, DEMLIN, DEMSEQ, DWIPTYP indicano l'incorso di richiesta interessato

- [M:MLIK]RESSTYP, RESSNUM, RESSLIN, RESSSEQ, RWIPTYP indicano l'incorso di risorsa interessato

- [M:MLIK]MAJCOD indica il tipo di elaborazione

C

Creazione di una nuova assegnazione

M

Modifica di un'assegnazione

A

Cancellazione di un'assegnazione

P

Proposta di nuove assegnazioni generate secondo la regola di assegnazione dell'articolo-sito

Z

Reset delle assegnazioni associate ad una risorsa o ad una richiesta

Entrata di una risorsa

Tabelle aperte 

Nel riquadro sottostante, il flag contenuto significativo indica che il contenuto è allineato al contesto (...).

Tabella

Abbreviazione

Contenuto significativo

Descrizione Tabella

MTOLINK

MLK1

Assegnazioni

ORDERS

ORDB

No

In-corso

PARMTO

PTO

Sì se [M:MLIK]MAJCOD="P" o "E"

Regole di assegnazione

MTOLINK_ENT2: Allocazione delle richieste assegnate ad una risorsa

Questo entry point permette di assumere il controllo all'entrata di una risorsa (ricevimento o dichiarazione di produzone) per gestire in modo specifico l'allocazione delle richieste assegnate alla risorsa.

Contesto e modalità di funzionamento

Transazione

C'è una transazione in corso.

Per annullare la transazione se c'è un problema, bisogna posizionare la variabile GOK a 0.

Classi file e videate disponibili

La classe videata [M:MLIK] è alimentata con i parametri di chiamata del programma MTOLINKLIB:

- [M:MLIK]STOFCY e [M:MLIK]ITMREF indica l'articolo-sito interessato

- [M:MLIK]RESSTYP, RESSNUM, RESSLIN, RESSSEQ, RWIPTYP indicano l'incorso risorsa interessato

- [M:MLIK]LIKQTY indica in unità di magazzino la quantità di risorsa entrata

- [M:MLIK]MAJCOD indica il tipo di elaborazione e vale "E" per Entrata risorsa

- [M:MLIK]TRTNAM vale "MTKMTOLIB" per una dichiarazione di produzione, "PURMTOLIB" per un ricevimento

Utilizzo

Un riquadro delle NDEM richieste (TDEM_OFF, TDEM_TYP, TDEM_NUM, TDEM_MTO, TDEM_DAT) assegnate alla risorsa entrata viene costituito ed ordinato secondo TDEM_OFF:

TDEM_TYP,TDEM_NUM,TDEM_DAT: tipo n° e data fine incorso della richiesta

TDEM_MTO: quantità assegnata tra la richiesta e la risorsa

TDEM_OFF: ordinamento per la richiesta, calcolato secondo i parametri di priorità delle richieste della regola di assegnazione

In standard, il processo è il seguente:

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

For I=0 to NDEM-1

Lettura dell'incorso della richiesta(I)

Gosub FILL_LINKD : # Alimentazione di [M:MLIK]DEMTYP, DEMNUM, DEMLIN, DEMSEQ, DWIPSTA, DWIPTYP a seconda dell'incorso

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

Gosub MAJ_MTO_ALLOCATION From =[M:MLIK]TRTNAM : # Allocazione basata sull'assegnazione

WCOVQTY += [M:MLIK]LIKQTY

Aggiornamento incorso della richiesta(I) con quantità assegnata -= [M:MLIK]LIKQTY

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

Gosub MTOLINK_DEL : # Cancellazione dell'assegnazione tra la risorsa e la richiesta(I)

Else

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

Gosub MTOLINK_MOD : # Modifica dell'assegnazione tra la risorsa e la richiesta(I)

Endif

If WCOVQTY >= WREQQTY : break : Endif

Next I

Aggiornamento incorso della risorsa con quantità assegnata -= WREQQTY

Posizionare la variabile globale GPE al valore 1 per inibire questa elaborazione standard

Tabelle aperte 

Nel riquadro sottostante, il flag contenuto significativo indica che il contenuto è allineato al contesto (...).

Tabella

Abbreviazione

Contenuto significativo

Descrizione Tabella

MTOLINK

MLK1

No

Assegnazioni

ORDERS

ORDB

No

In-corso

ITMFACILIT

ITF

Articoli - Siti

PARMTO

PTO

Regole di assegnazione