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.
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
Questo entry point permette, in congiunzione con l'entry point MTOLINK_PRP, di attivare dei vincoli supplementari (regole) nell'algoritmo del calcolo delle assegnazioni.
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)
#----------------------------------------------------------------------------------
$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
Questo entry point permette di assumere il controllo prima della creazione di un nuovo record di assegnazione nella tabella MTOLINK.
C'è una transazione in corso.
Per annullare la transazione se c'è un problema, bisogna posizionare la variabile GOK a 0.
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 |
E | Entrata di una risorsa |
Nel riquadro sottostante, il flag contenuto significativo indica che il contenuto è allineato al contesto (...).
Tabella | Abbreviazione | Contenuto significativo | Descrizione Tabella |
MTOLINK | MLK1 | Sì | Assegnazioni |
ORDERS | ORDB | No | In-corso |
PARMTO | PTO | Sì se [M:MLIK]MAJCOD="P" o "E" | Regole di assegnazione |
Questo entry point permette di assumere il controllo prima della modifica di un record di assegnazione nella tabella MTOLINK.
C'è una transazione in corso.
Per annullare la transazione se c'è un problema, bisogna posizionare la variabile GOK a 0.
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 |
E | Entrata di una risorsa |
Nel riquadro sottostante, il flag contenuto significativo indica che il contenuto è allineato al contesto (...).
Tabella | Abbreviazione | Contenuto significativo | Descrizione Tabella |
MTOLINK | MLK1 | Sì | Assegnazioni |
ORDERS | ORDB | No | In-corso |
PARMTO | PTO | Sì se [M:MLIK]MAJCOD="P" o "E" | Regole di assegnazione |
Questo entry point permette di assumere il controllo prima della cancellazione di un record di assegnazione nella tabella MTOLINK.
C'è una transazione in corso.
Per annullare la transazione se c'è un problema, bisogna posizionare la variabile GOK a 0.
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 |
E | Entrata di una risorsa |
Nel riquadro sottostante, il flag contenuto significativo indica che il contenuto è allineato al contesto (...).
Tabella | Abbreviazione | Contenuto significativo | Descrizione Tabella |
MTOLINK | MLK1 | Sì | Assegnazioni |
ORDERS | ORDB | No | In-corso |
PARMTO | PTO | Sì se [M:MLIK]MAJCOD="P" o "E" | Regole di assegnazione |
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.
C'è una transazione in corso.
Per annullare la transazione se c'è un problema, bisogna posizionare la variabile GOK a 0.
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
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
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 | Sì | Articoli - Siti |
PARMTO | PTO | Sì | Regole di assegnazione |