MP_CLIJSON

📌 Documentação do Ponto de Entrada MP_CLIJSON

🧩 Identificação

  • Nome do Ponto de Entrada: MP_CLIJSON
  • Objetivo: Ponto de entrada para manipulação de cliente, 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]: Filial da conta "MERCOS".
  • PARAMIXB[4]: Código da conta "MERCOS".
  • PARAMIXB[5]: Array do cliente com a estrurua aArrayCli
  • PARAMIXB[4]: Json Padrao para envio Mercos

Estrutura do Array de Cliente (aArrayCli)

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

  1. A1_NOME (Cliente - Nome)
  2. A1_NREDUZ (Nome reduzido)
  3. A1_PESSOA (F/J)
  4. A1_CGC (CNPJ/CPF)
  5. A1_INSCR (IE/RG)
  6. A1_SUFRAMA
  7. A1_END (Endereço)
  8. A1_COMPLEM (Complemento)
  9. A1_BAIRRO
  10. A1_CEP
  11. A1_MUN (Município)
  12. A1_EST (UF; com regra: se EX, retorna vazio)
  13. cObersv (Observação)
  14. A1_EMAIL (sanitizado removendo TAB e espaços)
  15. A1_DDD + " " + A1_TEL
  16. A1_DDD + " " + A1_TELEX
  17. Flag de bloqueio/Exclusão: "true" se TMP->del não vazio ou A1_MSBLQL == '1', senão "false"
  18. A1_COD (Código do cliente) → usado como cCliLoja no fonte
  19. A1_VEND (Vendedor)
  20. REC (Regra/recebimento – campo do ambiente)
  21. A1_GRPTRIB (Grupo Tributário)
  22. A1_MSBLQL (Marcador de Bloqueio)
  23. A1_TABELA (Tabela de Preço) → limpa para "" nesta rotina
  24. A1_COND (Condição de Pagamento) → limpa para "" nesta rotina
  25. A1_CODSEG (Código Segmento)
  26. A1_GRPVEN (Grupo de Vendas)
  27. A1_FAX
  28. Bloqueio "true"/"false" baseado em A1_MSBLQL (regra redundante à posição 17)
  29. A1_LC (Limite de Crédito)
  30. A1_SALDUP (Saldo em Duplicatas)
  31. A1_SALPEDL (Saldo Pedido Liberado)

🔁 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/clientes

Exemplo:

User Function MP_CLIJSON
    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 cJson       := PARAMIXB[6]  // cJson

    cIdSegm  := U_GetIdEnt(cFilMp,cCtaMp,"SEGMENTOS",aItem[25])
    cIdRedes := U_GetIdEnt(cFilMp,cCtaMp,"REDES",aItem[26])
    cNFantas := iif( aContas[nz,32] = 'S' , aItem[18]+"-","")  + aItem[2]
       
    cJson := '{'
    cJson += '    "razao_social": "'+aItem[1]+'",'
    cJson += '    "nome_fantasia": "'+cNFantas+'",'
    cJson += '    "tipo": "'+aItem[3]+'",'
    cJson += '    "cnpj": "'+aItem[4]+'",'
    cJson += '    "inscricao_estadual": "'+aItem[5]+'",'
    cJson += '    "suframa": "'+aItem[6]+'",'
    cJson += '    "rua": "'+aItem[7]+'",'
    cJson += '    "complemento": "'+aItem[8]+'",'
    cJson += '    "bairro": "'+aItem[9]+'",'
    cJson += '    "cep": "'+iif(len(aItem[10])<> 8 , "99999999",strtran(aItem[10],"-","0"))+'",'
    cJson += '    "cidade": "'+aItem[11]+'",'
    cJson += '    "estado": "'+aItem[12]+'",'
    cJson += '    "segmento_id": '+iif( empty( cIdSegm),'null',cIdSegm) +','
    cJson += '    "rede_id": ' +iif( empty( cIdRedes),'null',cIdRedes) + ','
    cJson += '    "observacao": "'+aItem[13]+'",'
   
   
    //AJUSTA ENVIO DE EMAIL
    if aItem[14]=='@'  .or. at("@",aItem[14]) == 0
        aEmails :=  {'email@email.com'}
    else
        aEmails := StrTokArr( alltrim(aItem[14]) , ";" )
    endif      

    cJson += '    "emails": [ '
    for em:=1 to len(aEmails)
        cJson += '        { '
        cJson += '            "email": "'+alltrim(aEmails[em])+'" '
        cJson += '        },'
    next
    cJson := substr(cJson,1,len(cJson)-1)
    cJson += '    ],'

    //VERIFICA SE INTEGRA CONTATOS DE CLIENTES PADRAO PROTHEUS
    if aContas[nz,41] == "S"
        cJson += u_MpBuscContat(aItem[18])
    endif

    cJson += '    "telefones": ['
    cJson += '        { '
    cJson += '            "numero": "'+iif(empty(aItem[15]),"99999999",aItem[15])+'"'
    cJson += '        },'
    cJson += '       { '
    cJson += '           "numero": "'+iif(empty(aItem[16]),"99999999",aItem[16])+'"  '
    cJson += '        }'
    cJson += '    ],'
    cJson += '    "nome_excecao_fiscal": '+ iif(Empty(aItem[21]),"null,",'"'+aItem[21]+'",')    
    cJson += '    "excluido":  '+aItem[17]
    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 ...