MP_PRDJSON

MP_PRDJSON

📌 Documentação do Ponto de Entrada MP_PRDJSON

🧩 Identificação

  • Nome do Ponto de Entrada: MP_PRDJSON
  • Objetivo: Ponto de entrada para manipulação de produto, retornando um Json para envio mercos.
  • Programa: U_JobMped1 ( sincronização de Entidades de Saida )
  • Localização: Apos a montagem do Json para envio mercos.

📥 Parâmetros Recebidos (PARAMIXB)

  • PARAMIXB[1]: Array contas "MERCOS"
  • PARAMIXB[2]: Filial da conta "MERCOS".
  • PARAMIXB[3]: Codigo da conta "MERCOS".
  • PARAMIXB[4]: Posição do array aContas.
  • PARAMIXB[5]: Array do Produto com a estrurua aItens

Estrutura do Array de Produtos (aItens)

Conforme o comentário do próprio fonte, o array é composto pelos seguintes campos, por índice:

  1. B1_COD - Codigo Produto Tratado para envio
  2. B1_DESC - Descrição Produto Tratado para envio
  3. DA1_PRCVEN - Preço de Tabela 
  4. B1_UM - Unidade de Medida
  5. B1_GRUPO - ID Mercos Grupo Produto
  6. B1_POSIPI - NCM
  7. B1_XQTMULT - Multiplos de venda
  8. B1_IPI - IPI
  9. B1_COD - Codigo Produto
  10. D_E_L_E_T_ - Deletado ( True , False )
  11. RECNO - Recno SB1
  12. RECNO - Recno DA1
  13. B1_MSBLQL - Bloqueado
  14. B1_PESBRU - Peso Bruto
  15. B5_COMPRLC - Comprimento
  16. B5_LARGLC - Largura
  17. B5_ALTURLC - Altura
  18. RECNO - Recno SB5
  19. B1_XMPPUNI - Peso Unitario

🔁 Retorno

  • A função deve retornar o Json em string de acordo com estrutura Api Mercos conforme link abaixo. https://mercos.docs.apiary.io/#reference/0/Produtos

Exemplo:

User Function MP_PRDJSON
local aContas   := PARAMIXB[1]  // ARRY COM CONTAS
local cFilMp    := PARAMIXB[2]  // FILIAL ATIVA
local cCtaMp    := PARAMIXB[3]  // CODIGO DA CONTA
local nz        := PARAMIXB[4]  // POSIÇÃO DO ACONTAS
local aItem     := PARAMIXB[5]  // Item
local cFilComp  := FWModeAccess("SB1",3)
local cFilEnt   := iif(cFilComp=='E',cFilMp,XFILIAL("SB1"))
local cObserv   := ""
local cNcm      := ""    

local cJson

    if SB1->(DBSETORDER(1),DBSEEK(cFilEnt+aItem[9]))
        //cNcm      := SB1->B1_GRTRIB            
        cObserv     := "Codigo Barras: "+alltrim(SB1->B1_CODBAR)
    endif
   
   
        cJson := '{'
        cJson += '    "codigo": "'+aItem[1]+'",'
        cJson += '    "nome": "'+aItem[2]+'",'
        cJson += '    "comissao": null,'
        cJson += '    "preco_tabela": '+cvaltochar(aItem[3])+','
        cJson += '    "preco_minimo": '+cvaltochar(aItem[3])+','
        cJson += '    "ipi": '+IIF(!EMPTY(aItem[8]),cvaltochar(aItem[8]),"null")+','
        cJson += '    "tipo_ipi": "P",'
        cJson += '    "st": null,'
        cJson += '    "grade_tamanhos": null,'
        cJson += '    "moeda": "0",'
        cJson += '    "unidade": "'+aItem[4]+'",'
        cJson += '    "observacoes": "'+cObserv+'", '
        cJson += '    "codigo_ncm": "' +aItem[6]+'",'
        cJson += '    "excluido": '+aItem[10]+','
        cJson += '    "ativo": '+aItem[13]+','
        cJson += '    "peso_bruto": '+cvaltochar(aItem[14])+','
        cJson += '    "comprimento": '+cvaltochar(aItem[15])+','
        cJson += '    "largura": '+cvaltochar(aItem[16])+','
        cJson += '    "altura": '+cvaltochar(aItem[17])+','
        cJson += '    "peso_dimensoes_unitario": '+IIF(aItem[19]=='S','true','false')+', '
       
        if aContas[nz,24] $ 'SC'
            cJson += '    "categoria_id":'+aItem[5]+','
        ENDIF

        DBSELECTAREA("SB1")
        If FieldPos("B1_XMPMOBS")>0      
            SB1->(DBGOTO(aItem[11]))
            cJson += '    "observacoes": "'+ ALLTRIM(SB1->B1_XMPMOBS)+'",'
        endif
       
        cJson += '    "multiplo":'+ cvaltochar(aItem[7])
        cJson += '}'      
   
 
   

Return(cJson)

Você achou esse artigo útil?

  • PE: MP_CABECPV

    📌 Documentação do Ponto de Entrada MP_CABECPV 🧩 Identificação ...
  • PE: MP_ITEMPV

    📌 Documentação do Ponto de Entrada MP_ITEMPV 🧩 Identificação N...
  • PE: MP_AITEMS

    📌 Documentação do Ponto de Entrada MP_AITEMS 🧩 Identificação N...
  • PE: MP_CATPGRV

    📌 Documentação do Ponto de Entrada MP_CATPGRV 🧩 Identificação ...
  • PE: MP_CATPSQL

    📌 Documentação do Ponto de Entrada MP_CATPSQL 🧩 Identificação ...