Árvore de páginas

Versões comparadas

Chave

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

LAFrLvMnt - Manipular informações na listagem do primeiro nível da estrutura do produto da OP no 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 a lista dos componentes do primeiro nível da estrutura do produto da ordem de produção informada para o apontamento da perda.

Os atributos de cada item da lista são identificados pelos campos da tabela "Perda por OP (SBC)".




PARAMIXB[2]Caracter

Ordem de produção




PARAMIXB[3]Caracter

Operação




PARAMIXB[4]Numérico

Quantidade




PARAMIXB[5]Caracter

Motivo da perda




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 LaFrLvMnt é executado na requisição de busca dos componentes do primeiro nível da estrutura do produto da ordem de produção para o apontamento de perda da API ProductionAppointment.
Com este ponto de entrada, é possível modificar as informações que serão enviadas ao formulário de apontamento de perda quando o item for selecionado para apontamento
permitindo acesso a qualquer campo da tabela, mesmo aqueles não exibidos no formulário e/ou customizados. Além de manipular informações dos itens que vieram por parâmetro, é possível excluir e adicionar itens da lista, respeitando o formato de retorno esperado.


Dica
titleFormato dos Campos

Os campos devem respeitar seus respectivos formatos, conforme são utilizados no Protheus.

Ex.: Campos do tipo Numérico são referenciados sem as aspas (9999) e campos do tipo Lógico são atualizados no formato .T. ou .F.
      Para os campos do tipo Data, o formato esperado "AAAA-MM-DD".

Localização:

API ProductionAppointment, método GET StructureFirstLevel - Responsável por listar os componentes do primeiro nível da estrutura do produto da ordem de produção para apontamento da perda.


Não se aplica.

Programa Fonte:ProductionAppointment.PRW

Sintaxe:

LAFrLvMnt( ) --> oJson

Retorno:
NomeTipoDescriçãoObrigatório
cJsonCaracter

Json que será retornado para envio ao programa MATA685 que persistirá o apontamento da perda. Neste json é possível manipular os campos que foram recebidos do formulário de apontamento da perda, além de adicionar outros campos da tabela SBC.
Mesmo que o conteúdo do Json não seja alterado, o mesmo deve retornar em formato string, para que possa retornar corretamente ao aplicativo.

Além das informações padrões da tabela SBC, é 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.

Bloco de código
languagec#
firstline1
titleExemplo
linenumberstrue
#INCLUDE "TOTVS.CH"
 
User Function LAFrLvMnt()
    Local cJson   := PARAMIXB[1]
    Local cOrdPrd := PARAMIXB[2]
    Local cOperac := PARAMIXB[3]
    Local nQuant  := PARAMIXB[4]
    Local cWstRsn := PARAMIXB[5]
    Local nPos    := 0 
    Local oJson   := JsonObject():New()
 
    //Converte a string JSON para objeto JSON, para que seja possível manipular os dados.
    oJson:FromJson(cJson)    
    If cOperac == "10"
        oJson["items"] := {} //Não retornará itens ao apontar a operação 10.
    Else
        nPos := Len(oJson["items"]) + 1
        aAdd(oJson["items"], JsonObject():New())
        oJson["items"][nPos]["BC_OP"]      := cOrdPrd
        oJson["items"][nPos]["BC_PRODUTO"] := "PRODUTOA"
        oJson["items"][nPos]["BC_PRODESC"] := Posicione("SB1",1,xFilial("SB1")+"PRODUTOA", "B1_DESC")
        oJson["items"][nPos]["BC_OPERAC"]  := cOperac
        oJson["items"][nPos]["BC_RECURSO"] := ""
        oJson["items"][nPos]["BC_LOCORIG"] := "01"
        oJson["items"][nPos]["BC_QUANT"]   := nQuant
        oJson["items"][nPos]["BC_QTDDEST"] := 0
        oJson["items"][nPos]["BC_LOTECTL"] := ""
        oJson["items"][nPos]["BC_NUMLOTE"] := ""
        oJson["items"][nPos]["BC_DTVALID"] := ""
        oJson["items"][nPos]["BC_LOCALIZ"] := ""
        oJson["items"][nPos]["BC_NUMSERI"] := ""
        oJson["items"][nPos]["BC_DATA"]    := formatData(dDataBase)
        oJson["items"][nPos]["BC_MOTIVO"]  := cWstRsn
    EndIf
    //Converte o objeto Json com as informações manipuladas em uma String Json.
    cJson := oJson:ToJson()
    Conout("cJson: " + cJson)
    //Limpa da memória o objeto Json utilizado.
    FREEOBJ(oJson)
Return cJson

Static function formatData(cData)
	Local cDataFrmt := dToS(cData) 

Return SUBSTR(cDataFrmt, 0, 4) + "-" + SUBSTR(cDataFrmt, 5, 2) + "-" + SUBSTR(cDataFrmt, 7, 2)