Histórico da Página
MATI681EXC - PE executado antes de processar as mensagens de apontamento de produção e apontamento de parada.
Características do Requisito
Linha de Produto: | Protheus |
Segmento: | Manufatura |
Módulo: | SIGAPCP - Planejamento e Controle da Produção |
Parâmetro(s): | PARAMIXB (Array) -> Informações da tabela SH6 |
País(es): | Todos |
Banco(s) de Dados: | Todos |
Sistema(s) Operacional(is): | Todos |
Versões/Release: | 11.80.14 |
Ponto de Entrada
Descrição: | É utilizado para verificar se a mensagem de apontamento de produção/parada deverá ou não ser processada. É executada antes da chamada do ExecAuto das rotinas MATA681 e MATA682. Quando existir, no array PARAMIXB a informação IDESTORNO, identifica que a mensagem recebida é referente à um estorno de apontamento. Para recuperar os valores da SH6 no array PARAMIXB, utilizar a lógica existente no exemplo, para realizar o aScan retornando a posição onde o campo está no PARAMIXB. Este PE é executado nas rotinas de apontamento de parada e apontamento de produção. Para identificar qual é o tipo da mensagem, pode-se utilizar o campo H6_TIPO. Quando for igual a P, significa que é um apontamento de produção. Quando for igual a “I”, significa que é um apontamento de parada. | ||||||||
Localização: | Function MATI681 -> Adapter de apontamento da produção modelo 2. | Function MATI682 -> Adapter de apontamento de parada. | ||||||||
Programa Fonte: | MATI681 e MATI682 | ||||||||
Retorno: |
|
Exemplo:
#Include 'Protheus.ch'
User Function MATI681EXC()
Local lRet := .T.
Local cMsg := ""
Local nEstorno := aScan(PARAMIXB,{|aX| AllTrim(aX[1]) == "IDESTORNO"})
Local nPosTipo := aScan(PARAMIXB,{|aX| AllTrim(aX[1]) == "H6_TIPO"})
Local nPosQtd := aScan(PARAMIXB,{|aX| AllTrim(aX[1]) == "H6_QTDPROD"})
Local nPosMot := aScan(PARAMIXB,{|aX| AllTrim(aX[1]) == "H6_MOTIVO"})
If nPosTipo > 0
If PARAMIXB[nPosTipo,2] == "P"
//Apontamento de produção
If nEstorno > 0
//EXEMPLO: não processa estorno.
lRet := .F.
cMsg := "Não permitida a execução de estorno."
Else
//EXEMPLO: não processa apontamento de quantidade.
If nPosQtd > 0 .And. PARAMIXB[nPosQtd,2] > 0
lRet := .F.
cMsg := "Não permitida a execução de apontamentos de quantidade."
EndIf
EndIf
Else
//Apontamento de parada
If nEstorno > 0
//EXEMPLO: não processa estorno.
lRet := .F.
cMsg := "Não permitida a execução de estorno."
Else
//EXEMPLO: não processa as paradas do motivo 'FE'
If nPosMot > 0 .And. PARAMIXB[nPosMot,2] == 'FE'
lRet := .F.
cMsg := "Motivo de parada 'FE' não permitido."
EndIf
EndIf
EndIf
EndIf
Return lRet