Árvore de páginas

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

Json em formato String com as informações padrões da ordem de produção que será retornado pela API. Para manipular as informações do Json, é sugerido que seja realizada a conversão da String para um JsonObject, e após manipular os dados converta o objeto de formato JsonObject para string novamente. O exemplo deste ponto de entrada já possui este processo.

De acordo com o tipo do apontamento, o Json conterá as seguintes informações:

  • 1 - Apontamento simples:
    'ProductionOrderNumber' - Ordem de produção
    'ItemCode' - Produto
    'ItemDescription' - Descrição do produto
    'ApprovedQuantity' - Quantidade
    'WarehouseCode' - Armazém
    'UnitOfMeasureCode' - Unidade de medida
    'DocumentCode' - Documento
    'StartReportDateTime' - Data de emissão
    'Part_Total' - Parcial/Total
    'LotPotency' - Potencia lote
    'CostCenter' - Centro de custo
    'LedgerAcct' - Conta contábil
    'UnitOfMeasureCode2' - Segunda unidade de medida
    'UnitOfMeasureCode2Quantity' - Quantidade na segunda unidade de medida
    'LotCode' - Lote
    'LotDueDate' - Validade do lote
    'MovimentType' - Tipo do movimento
    'ScrapQuantity' - Perda

  • 3 - Apontamento modelo 2:
    'ProductionOrderNumber' - Ordem de produção
    'ItemCode' - Produto
    'ItemDescription' - Descrição do produto
    'WarehouseCode' - Armazém
    'ActivityCode' - Operação
    'OperationDescription' - Descrição da operação
    'MachineCode' - Recurso
    'StartReportDateTime' - Data inicial
    'EndReportDateTime' - Data final
    'ReportDateTime' - Data do apontamento
    'LotCode' - Lote
    'LotDueDate' - Validade do lote
    'LotPotency' - Potencia lote
    'ApprovedQuantity' - Quantidade
    'UnitOfMeasureCode2Quantity' - Quantidade na segunda unidade de medida
    'Part_Total' - Parcial/Total
    'Apportionment' - Percentual de Rateio
    'ToolCode' - Ferramenta
    'StartReportTime' - Hora inicial
    'EndReportTime' - Hora inicial
    'ScrapQuantity' - Perda
    'Split' - Desdobramento
    'RealTime' - Tempo
    'SubLotCode' - Sub-Lote
    'Comments' - Observação
    'OperatorCode' - Operador
    'AlternativeSequence' - Sequencia do Roteiro Alternativo

  • 4 - Apontamento chão de fábrica:
    'MachineCode' - Máquina
    'ProductionOrderNumber' - Ordem de produção
    'Split' - Split
    'ActivityID' - ID da operação
    'ActivityCode' - Operação
    'ItemCode' - Item
    'StartSetupDateTime' - Data inicio preparação
    'StartSetupTime' - Hora início preparação
    'EndSetupDateTime' - Data fim preparação
    'EndSetupTime' - Hora fim preparação
    'SetupCode' - Código preparação
    'ToolCode' - Ferramenta
    'ApprovedQuantity' - Quantidade aprovada
    'ScrapQuantity' - Quantidade refugada
    'StartReportDateTime' - Data início
    'StartReportTime' - Hora início
    'EndReportDateTime' - Data fim
    'EndReportTime' - Hora fim
    'ProductionShiftCode' - Modelo turno
    'DocumentCode' - Documento
    'DocumentSeries' - Série documento
    'WarehouseCode' - Depósito
    'LotCode' - Lote/Serie
    'LotDueDate' - Data validade lote
    'OperatorName' - Operador
    'ProductionTeamCode' - Equipe



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




PARAMIXB[4]Caracter

Código que identifica a origem da execução do ponto de entrada. São esperados os seguintes códigos:

AV - Execução do botão 'Avançar' na tela de seleção da ordem de produção.

PA - Execução do botão 'Pause'.

ST - Execução do botão 'Stop'.

PL - Execução do botão 'Play' na tela de seleção da ordem de produção.

FO - Seleção do split no formulário de apontamento.

QU - Execução do botão 'Apontar' na pesquisa da ordem de produção.

Obs.:

Os códigos PA,ST e PL são exclusivos de formulário de Apontamento Modelo 2 com o uso de timer.

O código FO é exclusivo do formulário de Apontamento Chão de Fábrica.

As execuções com código de origem AV,PA,ST.QU são realizadas antes da navegação para o formulário de apontamento de produção.

A execução com código PL é realizada antes da navegação para a tela que mostra o resumo do timer.




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 PApGetOP é executado nas requisições de consulta de ordem de produção da API ProductionAppointment. Com este ponto de entrada, é possível modificar as informações que serão retornadas para o APP Minha Produção.
Localização:

API ProductionAppointment, método GET ProductionOrder - Responsável por buscar as informações de uma ordem de produção para utilização no APP Minha Produção.

Eventos:

Não se aplica.

Programa Fonte:ProductionAppointment.PRW

Sintaxe:

PApGetOP( ) --> oJsonRet

Retorno:
NomeTipoDescriçãoObrigatório
cJsonRetCaracter

JSON que deverá ser retornado pela API, com todas as informações da ordem de produção. Mesmo que não seja realizada a alteração de nenhuma informação no ponto de entrada, o JSON deverá ser retornado com base no parâmetro PARAMIXB[2] que foi recebido pelo ponto de entrada.
Além das informações inerentes a cada tipo de apontamento, é possível retornar conteúdo para os campos customizados (caso o cliente utilize algum destes campos no seu formulário), incluindo as seguintes chaves:

'CustomFieldCharacter01' - Campo customizável tipo texto 01
'CustomFieldCharacter02' - Campo customizável tipo texto 02
'CustomFieldCharacter03' - Campo customizável tipo texto 03
'CustomFieldCharacter04' - Campo customizável tipo texto 04
'CustomFieldCharacter05' - Campo customizável tipo texto 05
'CustomFieldDecimal01' - Campo customizável tipo numérico 01
'CustomFieldDecimal02' - Campo customizável tipo numérico 02
'CustomFieldDecimal03' - Campo customizável tipo numérico 03
'CustomFieldDecimal04' - Campo customizável tipo numérico 04
'CustomFieldDecimal05' - Campo customizável tipo numérico 05
'CustomFieldDate01' - Campo customizável tipo data 01
'CustomFieldDate02' - Campo customizável tipo data 02
'CustomFieldDate03' - Campo customizável tipo data 03
'CustomFieldDate04' - Campo customizável tipo data 04
'CustomFieldDate05' - Campo customizável tipo data 05
'CustomFieldLogical01' - Campo customizável tipo lógico 01
'CustomFieldLogical02' - Campo customizável tipo lógico 02
'CustomFieldLogical03' - Campo customizável tipo lógico 03
'CustomFieldLogical04' - Campo customizável tipo lógico 04
'CustomFieldLogical05' - Campo customizável tipo lógico 05

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 PApGetOP()
    Local cTipo      := PARAMIXB[1]
    Local cJsRet     := PARAMIXB[2]
    Local cFormCode  := PARAMIXB[3]
    Local cReqSource := PARAMIXB[4]
    Local oJsRet    := JsonObject():New()
     
    //Converte a string JSON para objeto JSON, para que seja possível manipular os dados.
    oJsRet:FromJson(cJsRet)
    Conout("PE antes alteracao. Tipo: " + cTipo + " JSON: " + cJsRet)
 
    Do Case
        Case cTipo == "1" // Apontamento MATA250
            oJsRet["CostCenter"] := "01"
            oJsRet["CustomFieldCharacter01"] := "Produto:" + oJsRet["ItemCode"]
        Case cTipo == "3" // Apontamento MATA681
            If cReqSource == "AV" .Or. cReqSource == "ST" .Or. cReqSource == "QU"
                If cFormCode = "USINAGEM"
                    oJsRet["MachineCode"] := "REC" // Máquina padrão para o formulário "USINAGEM"
                Else
                    oJsRet["MachineCode"] := "IMP" // Máquina padrão para o restante dos formulários
                EndIf
            EndIf
        Case cTipo == "4" // Apontamento SFCA314
            oJsRet["EndReportTime"] := Time()
    EndCase
    //Converte o objeto Json com as informações manipuladas em uma String Json.
    cJsRet := oJsRet:ToJson()
 
    //Limpa da memória o objeto Json utilizado.
    FreeObj(oJsRet)
 
    Conout("PE Apos alteracao. Tipo: " + cTipo + " JSON: " + cJsRet)
Return cJsRet