Árvore de páginas

Versões comparadas

Chave

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

POSFilOp - Filtrar informações 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 ProductionAppointmentapós selecionar as ordens de produção conforme filtro de pesquisa na consulta de OP da API ProductionOrderSearch. Com este ponto de entrada, é possível modificar as informações que serão enviadas para as rotinas automáticas de apontamento indicar se a OP selecionada será incluída ou não na lista de ordens de produção durante a utilização do APP Minha Produção - Consulta de OP.
Localização:

API ProductionOrderSearch, método GET ProductionOrderMaster - Responsáveis Responsável por retorna etornar 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:ProductionOrderSearch.PRW

Sintaxe:

PApPosAPPOSFilOp( ) --> aDadoslRetOp

Retorno:
NomeTipoDescriçãoObrigatório
aDadoslRetOpArrayLógico

Variável do tipo lógico que indica se a ordem de produção deve fazer parte da lista de ordens de produção. Pode possuir os conteúdos abaixo:

.T. - Fará parte da lista de ordem de produção;

.F. - Não fará parte da lista de ordem de produção. 

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 PApPosApPOSFilOp()
	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 | 1-Simples MATA250; 3-MOD 2 MATA681; 4-SFC
	Local cOp       := PARAMIXB[2] //Ordem de Produção
	Local cStatusOp := PARAMIXB[3] //Status da Ordem de Produção | 1-Prevista; 2-Em aberto; 3-Iniciada; 5-Encerrada Parcialmente; 6-Encerrada Totalmente
	Local lRetOp    := .T.
	Local nQtd    := 0
	Local oMdlCYV := oModel:GetModel("CYVMASTER")

	If cTipocStatusOp == "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


'6'
		lRetOp := .F. //Não irá apresentar OP Encerrada Totalmente na Consulta de OP pelo APP Minha Produção.
	EndIf
	
Return lRetOp