Árvore de páginas

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:

Nome

Tipo

Descrição

Obrigatório

aRet

Array

Array contendo um identificador se a mensagem deverá ou não ser processada, e um texto que descreve o resultado do processamento.

Exemplo: aRet[1] := .T.

aRet[2] := "Deverá executar a importação."

OU: aRet[1] := .F.

aRet[2] := "Texto indicando que a importação não será processada."

Sim

 

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