Á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.




PARAMIXB[4]CaracterCódigo do Split (SFC). Quando o tipo do apontamento for diferente de "4 - Apontamento chão de fábrica (SFCA314)" ou a validação estiver sendo realizada nos dados da Ordem de Produção, este parâmetro possuirá o conteúdo "Nil".


PARAMIXB[5]Caracter

Código da Operação. Quando o tipo do apontamento for igual a "1 - Apontamento simples (MATA250)" ou a validação estiver sendo realizada nos dados da Ordem de Produção, este parâmetro possuirá o conteúdo "Nil".




PARAMIXB[6]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.

Quando a consulta estiver sendo realizada a partir do menu lateral do APP (Consulta de O.P.), este parâmetro estará em branco ("").




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 será executado em 2 momentos:
  1. Ao realizar a leitura de cada uma das Ordens de Produção selecionadas conforme filtro de pesquisa na consulta de OP da API ProductionOrderSearch;
  2. Ao realizar a leitura de cada uma das Operações (ou Splits, no caso do tipo de apontamento "4 - Apontamento chão de fábrica (SFCA314)") de cada uma das Ordens de Produção selecionadas no passo 1, quando o tipo do apontamento for diferente de "1 - Apontamento simples (MATA250)".
     
é 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 indicar se a OP selecionada (ou determinada Operação/Split) será exibida na Consulta de OP pelo 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 ProductionOrderSearch, método GET ProductionOrderMaster - Responsável por retornar 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:

PApPosAPPOSFilOp( ) --> aDadoslRetOp

Retorno:
NomeTipoDescriçãoObrigatório
aDadoslRetOpArrayLógico

Variável do tipo lógico que indica se a ordem de produção (ou operação/split) será exibida na Consulta de OP pelo APP Minha Produção. Pode possuir os conteúdos abaixo:

.T. - A Ordem de Produção (ou Operação/Split) será exibida na Consulta de OP;

.F. - A Ordem de Produção (ou Operação/Split) não será exibida na Consulta de OP. 

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  Local cTipoApon := PARAMIXB[21] //ArrayTipo dedo dadosapontamento que| será utilizado pelo MATA250 ou MATA681
	Local cTipoApon := PARAMIXB[1] //Tipo do apontamento em execução
	Local cTipoSFC1-Simples MATA250; 3-MOD 2 MATA681; 4-SFC
    Local cOp       := PARAMIXB[42] //TipoOrdem de operaçãoProdução
 no chão de fábrica
	Local oModel  cStatusOp  := PARAMIXB[3] //ModeloStatus da Ordem 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


Produção | 1-Prevista; 2-Em aberto; 3-Iniciada; 5-Encerrada Parcialmente; 6-Encerrada Totalmente
    Local cSplit    := PARAMIXB[4] //Código do Split (SFC) - Nil quando não for do SFC
    Local cOperacao := PARAMIXB[5] //Código da Operação - Nil quando for validação da Ordem de Produção
    Local cFormCode := PARAMIXB[6] //Código do Formulário de Apontamento utilizado para chamar a PE
    Local lRetOp    := .T.

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

    If cFormCode == 'USINAGEM'
        If !Empty(cOperacao) .And. cOperacao <> '10'
            lRetOp := .F. //Não irá apresentar Operações diferente de '10' para o formulário 'USINAGEM'
        EndIf
    elseIf cFormCode == ''
        If cStatusOp == '4'
            lRetOp := .F. //Não irá apresentar OP Ociosa na Consulta de O.P. pelo menu lateral do APP Minha Produção.
        EndIf
    EndIf
 Return lRetOp