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

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:

Nome

Tipo

Descrição

Obrigatório

lRet

Lógico

Identifica se a mensagem deverá ser processada ou não. Caso a mensagem deva ser processada, o retorno deve ser .T.

Caso a mensagem não deva ser processada, o retorno deverá ser .F.

Sim

 

Exemplo:

#Include 'Protheus.ch'

User Function MATI681EXC()
   Local lRet := .T.
   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.
         Else
            //EXEMPLO: não processa apontamento de quantidade.
            If nPosQtd > 0 .And. PARAMIXB[nPosQtd,2] > 0
               lRet := .F.
            EndIf
         EndIf
      Else
         //Apontamento de parada
         If nEstorno > 0
            //EXEMPLO: não processa estorno.
            lRet := .F.
         Else
            //EXEMPLO: não processa as paradas do motivo 'FE'
            If nPosMot > 0 .And. PARAMIXB[nPosMot,2] == 'FE'
               lRet := .F.
            EndIf
         EndIf
      EndIf
   EndIf
Return lRet