Preencher informações do endereço conforme gatilho do campo CEP | Ti Responde 0207

No vídeo de hoje, vamos demonstrar em como preencher informações do endereço conforme o CEP informado (através da API REST da ViaCEP).

A dúvida de hoje, nos perguntaram, se seria possível criar alguma parametrização num cadastro do Protheus, onde ao digitar o CEP já consumisse a API da ViaCEP e preenchesse as informações de Endereço, Cidade, Estado, entre outras.

 

Pensando nisso, montamos um exemplo, onde vamos mostrar em como fazer isso, usando como base a tabela SA4 de Fornecedores, e a função zViaCEP disponível no seguinte link: https://terminaldeinformacao.com/2020/08/06/exemplo-de-integracao-com-viacep-usando-fwrest/.

 

Segue abaixo o vídeo exemplificando:

 

E abaixo o código fonte desenvolvido:

//Bibliotecas
#Include "TOTVS.ch"

/*/{Protheus.doc} User Function zVid0207
Função acionada na validação do campo de CEP na tela de Transportadoras
@type  Function
@author Atilio
@since 29/08/2024
@example u_zVid0207()
@obs Deve ser colocado no X3_VLDUSER (Validação de Usuário) da seguinte forma:
    Iif(ExistBlock("zVid0207"), u_zVid0207(), .T.)

    Como pré-requisito, deve ser feito o download da função zViaCEP adaptada pelo Súlivan Simões, disponível nesse link:
    

/*/

User Function zVid0207()
    Local aArea     := GetArea()
    Local lContinua := .T.
    Private jJson

    //Busca o CEP conforme o campo informado
    jJson := u_zViaCep(M->A4_CEP)
      
    //Se não veio erro
    If Type("jJson[erro]") == "U"
        //Atualiza os campos com o retorno da função
        M->A4_END     := AvKey(jJson['logradouro'], "A4_END    ")
        M->A4_BAIRRO  := AvKey(jJson['bairro'],     "A4_BAIRRO ")
        M->A4_MUN     := AvKey(jJson['localidade'], "A4_MUN    ")
        M->A4_EST     := AvKey(jJson['uf'],         "A4_EST    ")
        M->A4_COD_MUN := AvKey(jJson['ibge'],       "A4_COD_MUN")
        M->A4_DDD     := AvKey(jJson['ddd'],        "A4_DDD    ")

        //Atualiza a tela
        GetDRefresh()
    EndIf

    RestArea(aArea)
Return lContinua

Bom pessoal, por hoje é só.

 

Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

Deixe uma resposta

Terminal de Informação