<commit_before>h1. Plugin Grails - Correios-BR

h2. Proposito

Este plugin oferece por enquanto a funcionalidade de se conectar no servico de calculo de frete dos correios.
O servico de calculo de frete e gratuito no site dos correios, porem nao existe garantia de disponibilidade do mesmo.

h2. Tipos de envio suportados

O plugin oferece suporte aos seguintes tipos de envio:

* PAC (*postagem.PAC*)
* SEDEX (*postagem.SEDEX*)
* SEDEX 10 (*postagem.SEDEX_10*)
* SEDEX Hoje (*postagem.SEDEX_HOJE*)
* SEDEX a cobrar (*postagem.SEDEX_A_COBRAR*)

A referencia a *postagem* bem do import static acima descrito.

h2. Download e dependencias

O plugin foi construido com a versao 1.2.2 do Grails mas deve rodar com qualquer versao a partir da 1.1, pois nao possui outras maiores dependencias. 
O unico motivo para usar o 1.2.2 foi para poder usar o release-plugin apenas do ZIP e manter os fontes aqui no github.

Para instalar em sua app, basta baixar o zip daqui do github (area de downloads do projeto) ou com o classico

<pre><code>grails install-plugin correios-br</code></pre> 

h2. Como usar

O plugin possui um _Controller_ TesteController para que voce possa testar o calculo, neste controller e respectivas _views_ um codigo totalmente funcional esta a disposicao para consulta.

E necessario importar as seguintes classes

<pre><code>import br.com.lucastex.grails.plugins.correios.CalculoFrete
import static br.com.lucastex.grails.plugins.correios.CalculoFrete.*</code></pre>

Apos isso, injete o servico dos correios em seu _Controller_

<pre><code>def correiosService</code></pre>

E chame o metodo *calculoFrete* passando os argumentos necessarios para o calculo. Abaixo uma lista dos argumentos:

| Nome | Descricao | Obrigatorio | Valores possiveis |
| servico | Tipo do servico para calcular | Sim | Uma das opcoes descritas acima (*postagem.SEDEX* ou *postagem.SEDEX_A_COBRAR*, etc) |
| cepOrigem | CEP de origem do envio | Sim | CEP 'xxxxx-xxx' |
| cepDestino | CEP de destino do envio | Sim | CEP 'xxxxx-xxx' |
| peso | Peso da encomenda (em kg) | Sim | 0.35 (para 350 gramas) |
| valorDeclarado | Valor declarado da encomenda (para seguro) | Nao | 230.45 (para R$ 240,45) |
| avisoRecebimento | Para calcular encomendas com AR (Aviso de recebimento) | Nao | true / false |
| maoPropria | Para calcular encomendas entregues em mao (requer assinatura) | Nao | true / false |

Toda chamada ira retornar um objeto do tipo CalculoFrete (pacote br.com.lucastex.grails.plugins.correio). Esta classe possui os seguintes atributos:

| Atributo | Tipo | Descricao |
| versao | String | Versao da resposta retornada pelos correios |
| tipoPostagem | String | Tipo da postagem (SEDEX, SEDEX A COBRAR, etc) |
| codigoTipoPostagem | String | Codigo do tipo da postagem |
| peso | Double | Peso da encomenda |
| maoPropria | boolean | Se a encomenda sera entregue em maos |
| tarifaMaoPropria | Double | Custo adicional para ser entregue em maos |
| avisoRecebimento | boolean | Se a encomenda ira gerar o aviso de recebimento |
| tarifaAvisoRecebimento | Double | Custo adicional do aviso de recebimento |
| valorDeclarado | Double | Valor declarado pela encomenda |
| tarifaValorDeclarado | Double | Tarifa de seguro para o valor declarado |
| *valorFrete* | *Double* | *Valor total para envio da encomenda* |
| origem | Map | Map com as seguintes chaves ('uf' => UF de origem, 'cep' => CEP de origem, 'local' => Se e interior do estado ou capital) |
| destino | Map | Map com as seguintes chaves ('uf' => UF de destino, 'cep' => CEP de destino, 'local' => Se e interior do estado ou capital) |

h2. Exemplos

h3. Encomenda de 850 gramas, do cep 85851-150 para o cep 01331-001 com AR por SEDEX:

<pre><code>def calculo = correiosService.calculoFrete(servico: postagem.SEDEX, cepOrigem: "85851-150", cepDestino: "01331-001", peso: 0.850, avisoRecebimento: true)</code></pre>

h3. Encomenda de 1.2 kg, do cep 86051-060 para o cep 01337-000 entregue em maos por SEDEX a cobrar:

<pre><code>def calculo = correiosService.calculoFrete(servico: postagem.SEDEX_A_COBRAR, cepOrigem: "86051-060", cepDestino: "01337-000", peso: 1.2, mapPropria: true)</code></pre>

h3. Encomenda de 500 gramas, do cep 60245-965 para o cep 29018-973 com seguro para o valor de R$ 1500,00 por SEDEX_10:

<pre><code>def calculo = correiosService.calculoFrete(servico: postagem.SEDEX_10, cepOrigem: "60245-965", cepDestino: "29018-973", peso: 0.5, valorDeclarado: 1500)</code></pre>

h2. Tratamento de erros

Em caso de um erro retornado pelo Correios, uma exception ira ser lancada com a mensagem de erro que o Correios retornar, por exemplo: "CEP de origem invalido", ou "Tipo de encomenda nao disponivel para este destino", etc.

h2. Como contribuir

Tire a bunda desta cadeira, faca um fork do projeto, altere o que achar necessario e envio um pull request. Este plugin e da comunidade e e responsabilidade de todos fazer ele crescer.

h2. Implementacoes futuras

* Servicos relacionados a CEP

h2. Sobre

Plugin desenvolvido por _<NAME>_.
Caso precise, entre em contato atraves do e-mail _lucastex arroba gmail ponto com_ ou do twitter *@lucastex*<commit_msg>Yourkit support disclaimer<commit_after>h1. Plugin Grails - Correios-BR

h2. Proposito

Este plugin oferece por enquanto a funcionalidade de se conectar no servico de calculo de frete dos correios.
O servico de calculo de frete e gratuito no site dos correios, porem nao existe garantia de disponibilidade do mesmo.

h2. Tipos de envio suportados

O plugin oferece suporte aos seguintes tipos de envio:

* PAC (*postagem.PAC*)
* SEDEX (*postagem.SEDEX*)
* SEDEX 10 (*postagem.SEDEX_10*)
* SEDEX Hoje (*postagem.SEDEX_HOJE*)
* SEDEX a cobrar (*postagem.SEDEX_A_COBRAR*)

A referencia a *postagem* bem do import static acima descrito.

h2. Download e dependencias

O plugin foi construido com a versao 1.2.2 do Grails mas deve rodar com qualquer versao a partir da 1.1, pois nao possui outras maiores dependencias. 
O unico motivo para usar o 1.2.2 foi para poder usar o release-plugin apenas do ZIP e manter os fontes aqui no github.

Para instalar em sua app, basta baixar o zip daqui do github (area de downloads do projeto) ou com o classico

<pre><code>grails install-plugin correios-br</code></pre> 

h2. Como usar

O plugin possui um _Controller_ TesteController para que voce possa testar o calculo, neste controller e respectivas _views_ um codigo totalmente funcional esta a disposicao para consulta.

E necessario importar as seguintes classes

<pre><code>import br.com.lucastex.grails.plugins.correios.CalculoFrete
import static br.com.lucastex.grails.plugins.correios.CalculoFrete.*</code></pre>

Apos isso, injete o servico dos correios em seu _Controller_

<pre><code>def correiosService</code></pre>

E chame o metodo *calculoFrete* passando os argumentos necessarios para o calculo. Abaixo uma lista dos argumentos:

| Nome | Descricao | Obrigatorio | Valores possiveis |
| servico | Tipo do servico para calcular | Sim | Uma das opcoes descritas acima (*postagem.SEDEX* ou *postagem.SEDEX_A_COBRAR*, etc) |
| cepOrigem | CEP de origem do envio | Sim | CEP 'xxxxx-xxx' |
| cepDestino | CEP de destino do envio | Sim | CEP 'xxxxx-xxx' |
| peso | Peso da encomenda (em kg) | Sim | 0.35 (para 350 gramas) |
| valorDeclarado | Valor declarado da encomenda (para seguro) | Nao | 230.45 (para R$ 240,45) |
| avisoRecebimento | Para calcular encomendas com AR (Aviso de recebimento) | Nao | true / false |
| maoPropria | Para calcular encomendas entregues em mao (requer assinatura) | Nao | true / false |

Toda chamada ira retornar um objeto do tipo CalculoFrete (pacote br.com.lucastex.grails.plugins.correio). Esta classe possui os seguintes atributos:

| Atributo | Tipo | Descricao |
| versao | String | Versao da resposta retornada pelos correios |
| tipoPostagem | String | Tipo da postagem (SEDEX, SEDEX A COBRAR, etc) |
| codigoTipoPostagem | String | Codigo do tipo da postagem |
| peso | Double | Peso da encomenda |
| maoPropria | boolean | Se a encomenda sera entregue em maos |
| tarifaMaoPropria | Double | Custo adicional para ser entregue em maos |
| avisoRecebimento | boolean | Se a encomenda ira gerar o aviso de recebimento |
| tarifaAvisoRecebimento | Double | Custo adicional do aviso de recebimento |
| valorDeclarado | Double | Valor declarado pela encomenda |
| tarifaValorDeclarado | Double | Tarifa de seguro para o valor declarado |
| *valorFrete* | *Double* | *Valor total para envio da encomenda* |
| origem | Map | Map com as seguintes chaves ('uf' => UF de origem, 'cep' => CEP de origem, 'local' => Se e interior do estado ou capital) |
| destino | Map | Map com as seguintes chaves ('uf' => UF de destino, 'cep' => CEP de destino, 'local' => Se e interior do estado ou capital) |

h2. Exemplos

h3. Encomenda de 850 gramas, do cep 85851-150 para o cep 01331-001 com AR por SEDEX:

<pre><code>def calculo = correiosService.calculoFrete(servico: postagem.SEDEX, cepOrigem: "85851-150", cepDestino: "01331-001", peso: 0.850, avisoRecebimento: true)</code></pre>

h3. Encomenda de 1.2 kg, do cep 86051-060 para o cep 01337-000 entregue em maos por SEDEX a cobrar:

<pre><code>def calculo = correiosService.calculoFrete(servico: postagem.SEDEX_A_COBRAR, cepOrigem: "86051-060", cepDestino: "01337-000", peso: 1.2, mapPropria: true)</code></pre>

h3. Encomenda de 500 gramas, do cep 60245-965 para o cep 29018-973 com seguro para o valor de R$ 1500,00 por SEDEX_10:

<pre><code>def calculo = correiosService.calculoFrete(servico: postagem.SEDEX_10, cepOrigem: "60245-965", cepDestino: "29018-973", peso: 0.5, valorDeclarado: 1500)</code></pre>

h2. Tratamento de erros

Em caso de um erro retornado pelo Correios, uma exception ira ser lancada com a mensagem de erro que o Correios retornar, por exemplo: "CEP de origem invalido", ou "Tipo de encomenda nao disponivel para este destino", etc.

h2. Como contribuir

Tire a bunda desta cadeira, faca um fork do projeto, altere o que achar necessario e envio um pull request. Este plugin e da comunidade e e responsabilidade de todos fazer ele crescer.

h2. Implementacoes futuras

* Servicos relacionados a CEP

h2. Sobre

Plugin desenvolvido por _<NAME>_.
Caso precise, entre em contato atraves do e-mail _lucastex arroba gmail ponto com_ ou do twitter *@lucastex*

---------
YourKit is kindly supporting open source projects with its full-featured Java Profiler.
YourKit, LLC is the creator of innovative and intelligent tools for profiling
Java and .NET applications. Take a look at YourKit's leading software products:
YourKit Java Profiler (http://www.yourkit.com/java/profiler/index.jsp) and
YourKit .NET Profiler (http://www.yourkit.com/.net/profiler/index.jsp).
{'fraction_non_alphanumeric': 0.08446356748667103, 'fraction_numerical': 0.03124123094191376, 'mean_word_length': 4.53416149068323, 'pattern_counts': {'":': 0, '<': 53, '<?xml version=': 0, '>': 65, 'https://': 0, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 4, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3252374', 'n_tokens_mistral': 4054, 'n_tokens_neox': 3817, 'n_words': 1394}