Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Controle adicional no limite de dimensões #20

Open
wants to merge 14 commits into
base: master
Choose a base branch
from
Open

Controle adicional no limite de dimensões #20

wants to merge 14 commits into from

Conversation

aramisf
Copy link

@aramisf aramisf commented Aug 8, 2016

Este pull request sugere um refinamento no tratamento das dimensões de um pacote com mais de um item

1. Itens com dimensões maiores que o permitido pelos Correios:

Um item criado com parâmetros como:

item = Correios::Frete::PacoteItem.new( :altura => 110, :largura => 20, :comprimento => 20, :peso => 0.1 )

é recusado por exceder o limite de altura aceito pelos Correios (o limite atual é de 105 cm).

Ao adicionar dois ou mais desses itens em um pacote, o cálculo do volume total afeta o valor
das dimensões, inclusive da altura. Fazendo com que o pacote seja aceito pelos Correios 😱

Este caso só se torna um problema quando os itens de um pacote não podem ser dobrados ou compactados de forma a ter suas dimensões reduzidas.

Este pull request sugere uma alternativa (mas desconsidera itens dobráveis).

2. Um pacote contendo itens em que ao menos uma dimensão é zero:

Ao adicionar um item com ao menos uma dimensão igual a zero:

item = Correios::Frete::PacoteItem.new( :altura => 110, :largura => 0, :comprimento => 0, :peso => 0.1 )

O pacote fica com altura 2.0, pois ao menos uma de suas duas outras dimensões é 0. O problema aqui é que novamente a altura será alterada para um valor menor que o real, e para os casos de objetos que não podem ser compactados, dobrados, etc., isso pode ser um inconveniente.

Este pull request sugere manter os valores mais altos quando os mesmos ultrapassarem os limites máximos aceitos pelos Correios.

TODO:

Ainda resta um problema a ser resolvido, que é o caso de um item como este:

item = Correios::Frete::PacoteItem.new( :altura => 100, :largura => 100, :comprimento => 1, :peso => 0.1 )

ao adicionar um item, os Correios anunciam que não é permitido que a soma das dimensões ultrapasse 200 cm. Ao adicionar dois itens, as dimensões caem novamente no cálculo do volume total, baixando para um valor aceito pelos Correios.

Os commits foram todos feitos em inglês porque esse é o padrão aqui na firma. Mas procurei manter os padrões de código, nomenclatura de variáveis, etc.

aramisf and others added 9 commits August 8, 2016 12:24
There was a calculation error while telling Correios webservices about a package
dimensions. Calculated volume is not always appropriate.

This commit adds maximum dimension limits, so correios can error out when items
that are too large are packed.
Also added some information to changelog.
So one can be sure that they are not pointing to the same place.
When any of the dimensions are set to zero, the non-zero dimension must not be
set to minimum accepted by Correios
@prodis
Copy link
Owner

prodis commented Aug 12, 2016

@aramisf In review ASAP.

@prodis
Copy link
Owner

prodis commented Aug 15, 2016

@aramisf
Você poderia mostrar exemplos da sua implementação, com valores e resultados de cada situação que você citou?
Algo semelhante aos exemplos de uso de pacotes na documentação: https://github.com/prodis/correios-frete#usando-pacotes

Pelos testes que você adicionou não consegui identificar todas as situações e resultados.

Obrigado.

@aramisf
Copy link
Author

aramisf commented Aug 21, 2016

@prodis Cara, desculpa a demora, só vim ver hoje os seus comentários.

Posso fazer isso sim. Vou aproveitar a oportunidade e fazer mais uma alteração, algo que eu gostaria de ter feito na lib, mas que ficou em espera por causa da correria.

Vou pegar esses commits e pullar no fork do meu repositório pessoal, e fazer isso nas minhas horas vagas. Dae comito em português também.

@aramisf
Copy link
Author

aramisf commented Aug 23, 2016

@prodis dá uma olhada no README.

@@ -1,4 +1,7 @@
== Versão 1.9.3
== Versão 1.9.5
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Atualização de versão é feita somente no branch master.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Certo, me ficou uma dúvida: posso arrancar o texto numa boa? Você se encarrega de escrever outro texto para a mensagem de changelog?

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sim.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants