No carregamento dos quadros (memória) dos pedidos e dos recursos, é possível de igorar a ordem em curso (na classe [F:ORDB]) em posicionando GPE a 1, ou de valorizar até 3 campos utilizadores (cadeias de 50 máximo) em testando MTOLINK_PE_MODE :
- MTOLINK_PE_MODE = "D" para os pedidos :
TDEM_USRFLD1(NDEM)
TDEM_USRFLD2(NDEM)
TDEM_USRFLD3(NDEM)
- MTOLINK_PE_MODE = "R" para os recursos :
TRESS_USRFLD2(NRESS)
TRESS_USRFLD2(NRESS)
TRESS_USRFLD3(NRESS)
O conjunto das ordens afetadas para o cálculo são carregados em memória e por razões de performance é judicioso de guardar aqui todo elemento a tomar em conta.
A este propósito, é aconselhar os campos utilizadores diretamente na tabela ORDERS para melhores performances.
No exemplo de código dado mais abaixo, o campo utilizador XUSRFLD está copiado na variável memória
Este ponto de entrada permite, em conjunção com o ponto de entrada MTOLINK_PRP, ativar os constrangimentos suplementares (regras) no algoritmo de cálculo das afetações.
Ao início do cálculo das afectações, as regras de priorização dos recursos (cf regras de afetação) são carregadas em memória com WUSRFLT(I_RULE)=1.
Justo antes, uma primeira chamada ao ponto de entrada MTOLINK_RULES está efetuada em modo "activação" com MTOLINK_PE_MODE = 'ACT'. Permite indicar ao cálculo :
- 1 ou 3 regras específicas suplementares e prioridades a considerar, em afectando WUSRFLT(WNBRULE)=2 e em incrementando o contador de regra ((WNBRULE)
- ou de gerir as condições específicas acrescentadas à parametrização das regras standards.
Uma segunda chamada ao ponto de entrada MTOLINK_RULES está em seguida em modo "aplicação" com :
- MTOLINK_PE_MODE = 'APP' para uma regra específica (se WUSRFLT(I_RULE)=2)
- MTOLINK_PE_MODE = 'BPP' para toda a regra específica ou standard (qualquer que seja WUSRFLT(I_RULE))
Posicionar então GPE a 1 para indicar a incompatibilidade entre o pedido em curso (variáveis TDEM_...(I)) e o recurso em curso (variáveis TRESS_...(K)) para a regra em curso (W...(I_RULE)).
Observação : 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
Este ponto de entrada permite intervir antes a criação de um novo registo de afetaçaão na tabela MTOLINK
Existe uma transação em curso.
Para anular a transação se existe um problema, falta posicionar a variável GOK a 0.
O buffer [F:MLK1] está carregado ao momento de chamada do ponto de entrada.
A classe ecrã [M:MLIK] está carregada com os parâmetros de chamada ao tratamento MTOLINKLIB :
- [M:MLIK]STOFCY e [M:MLIK]ITMREF indica o artigo-estabelecimento respeitante
- [M:MLIK]DEMTYP, DEMNUM, DEMLIN, DEMSEQ, DWIPTYP indica o em curso de pedido afetado
- [M:MLIK]RESSTYP, RESSNUM, RESSLIN, RESSSEQ, RWIPTYP indica o em curso de recurso afetado
- [M:MLIK]MAJCOD indica o tipo de tratamento
C | Criação de uma nova afetação |
M | Modificação de uma afetação |
A | Supressão de uma afetação |
P | Proposição de novas afetações geradas segundo a regra afetação de artigo-estabelecimento |
Z | CAZ das afetações associadas a um recurso ou um pedido. |
E | Entrada de um recurso |
No quadro a seguir, a flag conteúdo significativo significa que o conteúdo está em fase com o contexto (...).
Tabela | Abreviação | Conteúdo significativo | Título Tabela |
MTOLINK | MLK1 | Sim | Afetações |
ORDERS | ORDB | Não | Em-curso |
PARMTO | PTO | Sim se e só se [M:MLIK]MAJCOD="P" ou "E" | Regra de afetação |
Este ponto de entrada permite intervir antes a modificação de um registo de afetação na tabela MTOLINK.
Existe uma transação em curso.
Para anular a transação se existe um problema, falta posicionar a variável GOK a 0.
O buffer [F:MLK1] está carregado ao momento de chamada do ponto de entrada. A chamada é feita no seio de um anel For [MLK1].
A classe ecrã [M:MLIK] está carregada com os parâmetros de chamada ao tratamento MTOLINKLIB :
- [M:MLIK]STOFCY e [M:MLIK]ITMREF indica o artigo-estabelecimento respeitante
- [M:MLIK]DEMTYP, DEMNUM, DEMLIN, DEMSEQ, DWIPTYP indica o em curso de pedido afetado
- [M:MLIK]RESSTYP, RESSNUM, RESSLIN, RESSSEQ, RWIPTYP indica o em curso de recurso afetado
- [M:MLIK]MAJCOD indica o tipo de tratamento
C | Criação de uma nova afetação |
M | Modificação de uma afetação |
A | Supressão de uma afetação |
P | Proposição de novas afetações geradas segundo a regra afetação de artigo-estabelecimento |
Z | CAZ das afetações associadas a um recurso ou um pedido. |
E | Entrada de um recurso |
No quadro a seguir, a flag conteúdo significativo significa que o conteúdo está em fase com o contexto (...).
Tabela | Abreviação | Conteúdo significativo | Título Tabela |
MTOLINK | MLK1 | Sim | Afetações |
ORDERS | ORDB | Não | Em-curso |
PARMTO | PTO | Sim se e só se [M:MLIK]MAJCOD="P" ou "E" | Regra de afetação |
Este ponto de entrada permite intervir antes a supressão de um registo de afetação na tabela MTOLINK.
Existe uma transação em curso.
Para anular a transação se existe um problema, falta posicionar a variável GOK a 0.
O buffer [F:MLK1] está carregado ao momento de chamada do ponto de entrada. A chamada é feita no seio de um anel For [MLK1].
A classe ecrã [M:MLIK] está carregada com os parâmetros de chamada ao tratamento MTOLINKLIB :
- [M:MLIK]STOFCY e [M:MLIK]ITMREF indica o artigo-estabelecimento respeitante
- [M:MLIK]DEMTYP, DEMNUM, DEMLIN, DEMSEQ, DWIPTYP indica o em curso de pedido afetado
- [M:MLIK]RESSTYP, RESSNUM, RESSLIN, RESSSEQ, RWIPTYP indica o em curso de recurso afetado
- [M:MLIK]MAJCOD indica o tipo de tratamento
C | Criação de uma nova afetação |
M | Modificação de uma afetação |
A | Supressão de uma afetação |
P | Proposição de novas afetações geradas segundo a regra afetação de artigo-estabelecimento |
Z | CAZ das afetações associadas a um recurso ou um pedido. |
E | Entrada de um recurso |
No quadro a seguir, a flag conteúdo significativo significa que o conteúdo está em fase com o contexto (...).
Tabela | Abreviação | Conteúdo significativo | Título Tabela |
MTOLINK | MLK1 | Sim | Afetações |
ORDERS | ORDB | Não | Em-curso |
PARMTO | PTO | Sim se e só se [M:MLIK]MAJCOD="P" ou "E" | Regra de afetação |
Este ponto de entrada permite intervir na entrada de um recurso (receção ou declaraçaão de produção) para gerar de maneira específica a alocação dos pedidos afetados ao recurso.
Existe uma transação em curso.
Para anular a transação se existe um problema, falta posicionar a variável GOK a 0.
A classe ecrã [M:MLIK] está carregada com os parâmetros de chamada ao tratamento MTOLINKLIB :
- [M:MLIK]STOFCY e [M:MLIK]ITMREF indica o artigo-estabelecimento respeitante
- [M:MLIK]RESSTYP, RESSNUM, RESSLIN, RESSSEQ, RWIPTYP indica o em curso de recurso afetado
- [M:MLIK]LIKQTY indica em unidade de stock a quantidade de recurso entrado
- [M:MLIK]MAJCOD indica o tipo de tratamento e vale "E" para Entrada de recurso.
- [M:MLIK]TRTNAM vale "MTKMTOLIB" para uma declaração de produção, "PURMTOLIB" para uma receção.
Um quadro dos NDEM pedidos (TDEM_OFF, TDEM_TYP, TDEM_NUM, TDEM_MTO, TDEM_DAT) afetados ao recurso entrado e constituido segundo TDEM_OFF :
TDEM_TYP,TDEM_NUM,TDEM_DAT : tipo nº e data de fim de em curso da encomenda
TDEM_MTO : qtd afetada entre o pedido e o recurso.
TDEM_OFF : ordem de ordenação para o pedido, calculado segundo os parãmetros de prioritização dos pedidos da regra de afetação
Em standard, o tratamento é o seguinte :
WREQQTY = [M:MLIK]LIKQTY : WCOVQTY = 0
For I=0 para NDEM-1
Leitura em curso do pedido (I)
Gosub FILL_LINKD : # Afetação de [M:MLIK]DEMTYP, DEMNUM, DEMLIN, DEMSEQ, DWIPSTA, DWIPTYP segundo o em-curso
[M:MLIK]LIKQTY = min(TDEM_MTO(I), WREQQTY-WCOVQTY)
Gosub MAJ_MTO_ALLOCATION From =[M:MLIK]TRTNAM : # Alocação baseada sobre afetação
WCOVQTY += [M:MLIK]LIKQTY
Maj do em curso do pedido (I) com qtd afetada -= [M:MLIK]LIKQTY
If [M:MLIK]LIKQTY = TDEM_MTO(I)
Gosub MTOLINK_DEL : # Supressão da afetação entre o recurso e o pedido (I)
Else
[M:MLIK]LIKQTY = TDEM_MTO(I) - [M:MLIK]LIKQTY
Gosub MTOLINK_MOD : # Modificação da afetação entre o recurso e o pedido (I)
Endif
If WCOVQTY >= WREQQTY : break : Endif
Next I
Maj do em curso do pedido com quantidade afetada -= WREQQTY
Posicionar a variável global GPE ao valor 1 para inibir este tratamento standard.
No quadro a seguir, a flag conteúdo significativo significa que o conteúdo está em fase com o contexto (...).
Tabela | Abreviação | Conteúdo significativo | Título Tabela |
MTOLINK | MLK1 | Não | Afetações |
ORDERS | ORDB | Não | Em-curso |
ITMFACILIT | ITF | Sim | Artigos - Estabelecimentos |
PARMTO | PTO | Sim | Regra de afetação |