Árvore de páginas

PEBCodeAct - Manipular conteúdo lido no código de barras/QR Code do 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
PARAMIXBJson Object

O Objeto Json recebido como parâmetro possui como atributos todos os campos do formulário com seus respectivos valores, além do atributo "formSource", que ajudará a identificar a origem da requisição, contendo os seguintes atributos:

  • formCode: Código do formulário
  • fieldCode: Nome do campo referente ao código de barras acionado, conforme informado na coluna "Campo" do PCPA125
  • appointmentType: Tipo do formulário (1=Produção Simples, 3=Produção Pcp Mod2, 4=Produção Chão de Fabrica, 6=Ordem de Produção, 7=Perda)
  • barcodeData: Conteúdo lido através do código de barras ou QR Code



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 PEBCodeAct é executado assim que a leitura do código de barras/QR Code é registrada, permitindo manipular o conteúdo lido e distribui-lo nos campos do formulário.
Este conteúdo pode ser desde uma string contendo um único código (ex.: 00001), uma concatenação de várias informações (ex.: 1852850100130, onde "18528501001" é o número da OP e "30" é a Operação) ou no formato JSON (ex.: {"local_origem":"01","local_destino":"02"}).


Importante - Impacto da utilização do Ponto de Entrada PEBCodeAct

Caso seja utilizado este ponto de entrada PEBCodeAct para personalizar o comportamento da leitura do código de barras/QR Code de algum campo, todos os outros campos que utilizarem esta leitura sem customização devem retornar o mesmo conteúdo enviado no atributo "formSource"."barcodeData".

Ex.: oBody[oBody["formSource"]["fieldCode"]] := oBody["formSource"]["barcodeData"]


Localização:

API FormRegistration, método POST BarcodeAction - Responsável por editar e retornar informações dos formulários do APP Minha Produção.

Eventos:

Não se aplica.

Programa Fonte:FormRegistration.PRW

Sintaxe:

PEBCodeAct( ) --> oJsonRet

Retorno:
NomeTipoDescriçãoObrigatório
cJsonRetCaracter

JSON que deverá ser retornado pela API. 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 que foi recebido pelo ponto de entrada.

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 PEBCodeAct()
    Local cAptType   := ""
    Local cBcodeData := ""
    Local cBody      := PARAMIXB
    Local cFldCode   := ""
    Local cFormCode  := ""
    Local oBody      := JsonObject():New()
    Local oJson      := JsonObject():New()

    oBody:FromJson(cBody)
    If oBody:HasProperty("formSource")
        cAptType   := oBody["formSource"]["appointmentType"]
        cBcodeData := oBody["formSource"]["barcodeData"]
        cFldCode   := oBody["formSource"]["fieldCode"]
        cFormCode  := oBody["formSource"]["formCode"]
        If cAptType == "1"
            //Formulário "SIMPLES01"
            If AllTrim(cFormCode) == "SIMPLES01"
               //Seleção da ordem de produção para apontamento
               If cFldCode == "productionOrder"
                   oBody["productionOrder"] := Substr(cBcodeData,1,11)
               Else
                   // Para todos os campos restantes, mover o conteúdo lido no Código de Barras sem alterações
                   oBody[cFldCode] := cBcodeData
               EndIf
            ElseIf AllTrim(cFormCode) == "SIMPLES02"
               //Seleção da ordem de produção para apontamento
               If cFldCode == "productionOrder"
                   oBody["productionOrder"] := Substr(cBcodeData,1,14)
               Else
                   // Para todos os campos restantes, mover o conteúdo lido no Código de Barras sem alterações
                   oBody[cFldCode] := cBcodeData
               EndIf
            EndIf
         ElseIf cAptType == "3"
            //Seleção da ordem de produção ou operação para apontamento
            If cFldCode == "productionOrder" .Or. cFldCode == "activityCode"
                //Buscar informações do código de barras por posição na string
                oBody["productionOrder"] := Substr(cBcodeData,1,11)
                oBody["activityCode"]    := Substr(cBcodeData,12,2)
            Else
                // Para todos os campos restantes, mover o conteúdo lido no Código de Barras sem alterações
                oBody[cFldCode] := cBcodeData
            EndIf
        ElseIf cAptType == "4"
            //Seleção da ordem de produção ou operação para apontamento
            If cFldCode == "productionOrder"
                //Buscar informações do código de barras por posição na string
                oBody["productionOrder"] := Substr(cBcodeData,1,11)
            Else
                // Para todos os campos restantes, mover o conteúdo lido no Código de Barras sem alterações
                oBody[cFldCode] := cBcodeData
            EndIf
        ElseIf cAptType == "6"
            //Seleção do produto para criar ordem de produção
            If cFldCode == "productCode"
                oBody["productCode"] := Substr(cBcodeData,10,15)
            Else
                // Para todos os campos restantes, mover o conteúdo lido no Código de Barras sem alterações
                oBody[cFldCode] := cBcodeData
            EndIf
        ElseIf cAptType == "7"
            //Campo do formulário de apontamento de perda
            If cFldCode == "BC_LOCORIG"
                //Converter string no formato json de um qrcode para objeto json
                oJson:FromJson(cBcodeData)
                oBody["BC_LOCORIG"] := oJson["local_origem"]
                oBody["BC_LOCAL"]   := oJson["local_destino"]
            EndIf
        EndIf
    EndIf
    cBody := oBody:ToJson()
    FreeObj(oBody)
    FreeObj(oJson)
Return cBody