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:
B1_COD- Codigo Produto Tratado para envioB1_DESC- Descrição Produto Tratado para envioDA1_PRCVEN- Preço de TabelaB1_UM- Unidade de MedidaB1_GRUPO- ID Mercos Grupo ProdutoB1_POSIPI- NCMB1_XQTMULT- Multiplos de vendaB1_IPI- IPIB1_COD- Codigo ProdutoD_E_L_E_T_- Deletado ( True , False )RECNO- Recno SB1RECNO- Recno DA1B1_MSBLQL- BloqueadoB1_PESBRU- Peso BrutoB5_COMPRLC- ComprimentoB5_LARGLC- LarguraB5_ALTURLC- AlturaRECNO- Recno SB5B1_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)
|