Árvore de páginas

Versões comparadas

Chave

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

POPostMnt - Manipular informações para criação da ordem de produção 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

Json em formato String com os campos da ordem de produção que foram informados no formulário.




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 POPostMnt é executado nas requisições de criação da ordem de produção da API ProdOrderApp. Com este ponto de entrada, é possível modificar as informações que serão enviadas para a classe que gravará a ordem de produção durante a utilização do APP Minha Produção.
Localização:

API ProdOrderApp, método POST prodOrders - Responsável por enviar os dados à classe de gravação da ordem de produção.

Eventos:

Não se aplica.

Programa Fonte:ProductionOrderAppAPI.PRW

Sintaxe:

POPostMnt( ) --> oJson

Retorno:
NomeTipoDescriçãoObrigatório
cJsonCaracter

Json que será retornado para envio à classe de gravação da ordem de produção. Neste json é possível manipular os campos que foram recebidos do formulário de criação da ordem de produção, além de adicionar outros campos da tabela SC2.
Mesmo que o conteúdo do Json não seja alterado, o mesmo deve retornar em formato string, para que possa gravar a ordem de produção corretamente.

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 PApPosApPOPostMnt()
	Local cTipoApon := PARAMIXB[1] //Tipo do apontamentoLocal em execução
	Local aDadoscJson     := 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



1]
    Local oJson     := JsonObject():New()

    //Converte a string JSON para objeto JSON, para que seja possível manipular os dados.
    oJson:FromJson(cJson)

    If oJson["FORMCODE"] == "OPFORM"
        oJson["C2_PRIOR"]   := "500"
        oJson["C2_CHRCSTM"] := "AJUSTE CAMPO CUSTOMIZADO"
    EndIf

    //Converte o objeto Json com as informações manipuladas em uma String Json.
    cJson := oJson:ToJson()

    Conout("cJson: " + cJson)

    FREEOBJ( oJson )


Return cJson