BlackTDN Search

quarta-feira, 12 de outubro de 2011

Protheus :: Advpl :: Google maps :: Localizando o endereço mais próximo

Tempos atrás alguém me pediu uma ajuda para resolver um problema da Kasinski: Enviar, a seus clientes, carta informando sobre o “Recall” de suas motos contendo, no máximo, o endereço de três concessionárias próximas à sua localidade (CEP).

Bastou entender a regra de formação do CEP e o problema foi facilmente resolvido. Ia usar a carta como exemplo, mas, como perdi o contato com a pessoa, reescrevi o código, agora usando o Google maps.

A idéia básica é a seguinte: Informe o CEP de sua localidade e encontre o(s) endereço(s) mais próximo(s). Para o “Recall” da Kasinski havia usado o Código de Endereçamento Postal das Concessionárias. No exemplo que segue, e, considerando que se trata de ADVPL, vou usar alguns endereços da TOTVS (obtidos a partir do link canais).

Vamos imaginar o seguinte. Estou na Rua São João, no Centro de Niterói (CEP 24020-040) , e quero achar a TOTVS mais próxima. Informo o meu CEP e…

image

image

Se encontrei correspondente(s)…

image

Apresento(-os). O mais próximo na Cidade do Rio de Janeiro e no Mesmo Estado

image

e, como segunda opção… Vitória, no Espírito Santo.

image

Os Códigos de Endereçamentos Postais de referência, estão, no exemplo, armazenados em um arquivo CSV delimitado por “|” (pipe), mas poderiam ser uma Tabela do sistema, um arquivo XML ou qualquer outra forma de armazenamento.

No exemplo anterior, considerando que estava em Niterói, uma cidade do Rio de Janeiro, o endereço mais próximo era a TOTVS/Microsiga Rio. Imaginando, agora, que a minha localidade é em algum lugar de São José do Rio Preto (SP) cujo CEP seja 15015-000, qual a TOTVS mais próxima? Vamos procurar.

image

image

Vou encontrar  três endereços. O mais próximo em São José do Rio Preto

image

o segundo, pela ordem de proximidade e considerando a regra de formação do CEP em Campinas

image

e finalmente, e, bem distante, em São José dos Campos.

image

O Algoritmo para a localização do CEP, baseado nas regras dos Correios, é bem simples:

image

Para obter o código completo, clique aqui

As dependências para o funcionamento do exemplo poderão ser obtidas em:

Protheus :: Herança de Classe em Advpl ( Derivando fTdb à partir da classe fT ) : para a Classe fTdb e;

Protheus :: ADVPL : Class TFINI Manipulando valores de um arquivo de configuração (*.INI): para a Classe TFINI.

[]s

иαldσ dj

3 comentários:

  1. Não consegui baixar, parece que googleDocs mudou algo!!

    ResponderExcluir
  2. O link estava "quebrado". Corrigi o mapeamento do arquivo para "Download" e aproveitei a deixa para incrementar a função de busca de CEP uma vez que a primeira versão que apresentei era, digamos, "Tendenciosa".

    []s

    иαldσ dj

    ResponderExcluir
  3. Agora sim,
    mostra a cobra e mata o pau!

    ResponderExcluir