Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

POSFilOp - Filtrar informações

para execução

da Consulta de OP 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]CaracterOrdem de Produção que será retornada no JSON de retorno.


PARAMIXB[3]Caracter

Status da OP. Pode possuir os conteúdos abaixo:

1-Prevista;

2-Em aberto;

3-Iniciada;

5-Encerrada Parcialmente;

6-Encerrada Totalmente.




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 POSFilOp é 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 ProductionOrderSearch, método GET ProductionOrderMaster - Responsáveis por criar os apontamentos de produção retorna uma lista de ordens de produção durante a utilização do APP Minha Produção - Consulta de OP.

Eventos:

Não se aplica.

Programa Fonte:ProductionAppointmentProductionOrderSearch.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.

Bloco de código
languagec#
firstline1
titleExemplo
linenumberstrue
#INCLUDE "TOTVS.CH"

User Function PApPosAp()
	Local aDados    := PARAMIXB[2] //Array de dados que será utilizado pelo MATA250 ou MATA681
	Local cTipoApon := PARAMIXB[1] //Tipo do apontamento em execução
	Local cTipoSFC  := PARAMIXB[4] //Tipo de operação no chão de fábrica
	Local oModel    := PARAMIXB[3] //Modelo de dados da rotina de apontamento do chão de fábrica
	
	Do Case
		Case cTipoApon == "1" // Apontamento MATA250
			custom250(@aDados)
		Case cTipoApon == "3" // Apontamento MATA681
			custom681(@aDados)
		Case cTipoApon == "4" // Apontamento SFCA314
			customSFC(@oModel, cTipoSFC)
	EndCase
	
	
Return aDados

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