📌 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 aArrayCliPARAMIXB[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:
A1_NOME(Cliente - Nome)A1_NREDUZ(Nome reduzido)A1_PESSOA(F/J)A1_CGC(CNPJ/CPF)A1_INSCR(IE/RG)A1_SUFRAMAA1_END(Endereço)A1_COMPLEM(Complemento)A1_BAIRROA1_CEPA1_MUN(Município)A1_EST(UF; com regra: seEX, retorna vazio)cObersv(Observação)A1_EMAIL(sanitizado removendo TAB e espaços)A1_DDD + " " + A1_TELA1_DDD + " " + A1_TELEX- Flag de bloqueio/Exclusão:
"true"seTMP->delnão vazio ouA1_MSBLQL == '1', senão"false" A1_COD(Código do cliente) → usado como cCliLoja no fonteA1_VEND(Vendedor)REC(Regra/recebimento – campo do ambiente)A1_GRPTRIB(Grupo Tributário)A1_MSBLQL(Marcador de Bloqueio)A1_TABELA(Tabela de Preço) → limpa para""nesta rotinaA1_COND(Condição de Pagamento) → limpa para""nesta rotinaA1_CODSEG(Código Segmento)A1_GRPVEN(Grupo de Vendas)A1_FAX- Bloqueio
"true"/"false"baseado emA1_MSBLQL(regra redundante à posição 17) A1_LC(Limite de Crédito)A1_SALDUP(Saldo em Duplicatas)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)
|