Árvore de páginas

PApPosAp - Manipular informações para execução do apontamento pelo APP Minha Produção

Linha de Produto:

Protheus

Segmento:

Manufatura

Módulo:

SIGAPCP - Planejamento e Controle da Produção

Parâmetro(s):

NomeTipoDescriçãoDefaultObrigatórioReferência
PARAMIXB[1]Caracter

Tipo do apontamento. Pode possuir os conteúdos abaixo:

  • 1 - Apontamento simples (MATA250);
  • 3 - Apontamento modelo 2 (MATA681);
  • 4 - Apontamento chão de fábrica (SFCA314).



PARAMIXB[2]ArrayArray com as informações que serão enviadas para criação do apontamento pelas rotinas MATA250 e MATA681. Quando o tipo do apontamento for "4 - Apontamento chão de fábrica (SFCA314)." este parâmetro possuirá o conteúdo "Nil".


PARAMIXB[3]ObjectObjeto do modelo de dados do apontamento do chão de fábrica, com as informações padrões do apontamento já carregadas. Quando o tipo do apontamento for diferente de "4 - Apontamento chão de fábrica (SFCA314)." este parâmetro possuirá o conteúdo "Nil".


PARAMIXB[4]Caracter

Tipo de operação do apontamento do chão de fábrica. Pode possuir os conteúdos abaixo:

  • 1 - Apontamento de produção;
  • 2 - Início de apontamento;
  • 3 - Abandono de apontamento.

Quando o tipo do apontamento for diferente de "4 - Apontamento chão de fábrica (SFCA314)." este parâmetro possuirá o conteúdo "Nil".




PARAMIXB[5]Caracter

Código do formulário acessado no APP Minha Produção para realizar a chamada do Ponto de Entrada. Este formulário deve ser previamente cadastrado através do Formulário do Apontamento de Produção - PCPA125.

Através deste parâmetro, podem ser realizadas diferentes implementações no Ponto de Entrada, de acordo com cada formulário que esteja sendo utilizado no momento.




Idiomas:

Todos

País(es):

Todos

Banco(s) de Dados:

Todos

Sistema(s) Operacional(is):

Todos

Ponto de Entrada

Descrição:
O ponto de entrada PApPosAP é executado nas requisições de criação do apontamento da API ProductionAppointment. Com este ponto de entrada, é possível modificar as informações que serão enviadas para as rotinas automáticas de apontamento durante a utilização do APP Minha Produção.
Localização:

API ProductionAppointment, métodos POST mata250, POST mata681 e POST  sfca314 - Responsáveis por criar os apontamentos de produção durante a utilização do APP Minha Produção.

Eventos:

Não se aplica.

Programa Fonte:ProductionAppointment.PRW

Sintaxe:

PApPosAP( ) --> aDados

Retorno:
NomeTipoDescriçãoObrigatório
aDadosArray

Array com as informações que serão enviadas para execução da rotina automática dos programas MATA250 ou MATA681. Mesmo que no ponto de entrada não seja alterada nenhuma informação do apontamento, deve ser retornada a informação com base no parâmetro PARAMIXB[2] para utilização das informações pela rotina padrão.

Quando o tipo do apontamento for diferente de "4 - Apontamento chão de fábrica (SFCA314)." o retorno desta informação será desconsiderada, já que para o apontamento de chão de fábrica as informações são manipuladas diretamente no modelo de dados.

Sim
Observações:

Não é permitida a utilização de qualquer componente de interface gráfica nesse ponto de entrada, visto que a função será executada durante uma requisição REST.

Exemplo
#INCLUDE "TOTVS.CH"

User Function PApPosAp()
	Local cTipoApon := PARAMIXB[1] //Tipo do apontamento em execução
	Local aDados    := PARAMIXB[2] //Array de dados que será utilizado pelo MATA250 ou MATA681
	Local oModel    := PARAMIXB[3] //Modelo de dados da rotina de apontamento do chão de fábrica
	Local cTipoSFC  := PARAMIXB[4] //Tipo de operação no chão de fábrica
	Local cFormCode := PARAMIXB[5] //Código do Formulário de Apontamento utilizado para chamar o PE

	Do Case
		Case cTipoApon == "1" // Apontamento MATA250
			If cFormCode = "USINAGEM"
				cust250USI(@aDados)
			Else
 				custom250(@aDados)
 	 		EndIf
		Case cTipoApon == "3" // Apontamento MATA681
			custom681(@aDados)
		Case cTipoApon == "4" // Apontamento SFCA314
			customSFC(@oModel, cTipoSFC)
	EndCase
	
Return aDados
 
Static Function cust250USI(aDados)
	Local nPos   := 0

	nPos := aScan(aDados, {|x| x[1] == "D3_TM"})
	If nPos > 0
		aDados[nPos][2] := "001" //Altera o tipo de movimento utilizado para o formulário "USINAGEM"
	EndIf

	//Adiciona nova informação no array
	aAdd(aDados, {"D3_OBSERVA", "USINAGEM001", Nil})

Return Nil

Static Function custom250(aDados)
	Local nPos   := 0

	nPos := aScan(aDados, {|x| x[1] == "D3_TM"})
	If nPos > 0
		aDados[nPos][2] := "011" //Altera o tipo de movimento utilizado
	EndIf

	//Adiciona nova informação no array
	aAdd(aDados, {"D3_OBSERVA", "TESTE", Nil})

Return Nil

Static Function custom681(aDados)
	Local cNumOp := ""
	Local nPos   := 0

	//Busca número da OP
	nPos := aScan(aDados, {|x| x[1] == "H6_OP"})
	If nPos > 0
		cNumOp := aDados[nPos][2]
	EndIf

	//Atualiza informação no array para inclusão do apontamento.
	nPos := aScan(aDados, {|x| x[1] == "H6_OBSERVA"})
	If nPos > 0
		aDados[nPos][2] := "OBS:" + cNumOp
	Else
		//Adiciona nova informação no array
		aAdd(aDados, {"H6_OBSERVA", "OBS:" + cNumOp, Nil})
	EndIf

Return Nil

Static Function customSFC(oModel, cTipo)
	Local aErro   := {}
	Local lRet    := .T.
	Local nQtd    := 0
	Local oMdlCYV := oModel:GetModel("CYVMASTER")

	If cTipo == "1" // Apontamento de produção.
		
		//Recupera quantidade reportada do apontamento
		nQtd := oMdlCYV:GetValue("CYV_QTATRP")

		//Soma +1 na quantidade reportada do apontamento
		lRet := oMdlCYV:SetValue("CYV_QTATRP", nQtd + 1)
		If !lRet
			aErro := oModel:GetErrorMessage()
			VarInfo("aErro:", aErro)
		EndIf
	ElseIf cTipo == "2" // Início de apontamento
		//Adiciona uma informação na coluna CYV_CDRE
		lRet := oMdlCYV:SetValue("CYV_CDRE", "RF_TESTE")
		If !lRet
			aErro := oModel:GetErrorMessage()
			VarInfo("aErro:", aErro)
		EndIf
	ElseIf cTipo == "3" // Abandono de apontamento
		//Adiciona uma informação na coluna CYV_CDRE
		lRet := oMdlCYV:SetValue("CYV_CDRE", "RF_TESTE3")
		If !lRet
			aErro := oModel:GetErrorMessage()
			VarInfo("aErro:", aErro)
		EndIf
	EndIf

Return Nil