Open filhocodes opened 8 years ago
Olá,
Talvez o meu projeto acabe caindo nessa situação, pois terá vendas de camisetas, portanto não pesará tanto e também a cubagem poderá ser maior que 66.
Aproveitando, gostaria de saber como chegou no número 66, para definir se a postagem precisará ser agrupada ou individual?
No momento, estou tentando entender e arrumar essa condição que está faltando. O que pude compreender é que caso o $pesoTotal <= 30 && $medida > 66
, terei que ir separando em "caixas" e sempre verificando se a $medida < 66
.
Alguém já encontrou alguma solução pra esse bug?
No aguardo, valeu!
cc/ @gabsprates
Primeiramente, agradeço ao @mtsalcova pelo interesse e a vontade de ajudar. Obrigado mesmo!! :+1:
No método calcular()
, após achar o peso e volume total do que seria o pacote dos produtos, eu tirei uma medida ($_medida
) padrão, porque ali eu começo a tratar o pacote como um cubo, uma vez que em termos de volume, não importa quais são as dimensões, mas qual o valor delas.
Relembrando a regra dos Correios para pacotes e caixas:
Especificações | Mínimo | Máximo |
---|---|---|
Comprimento (C) | 16 cm | 105 cm |
Largura (L) | 11 cm | 105 cm |
Altura (A) | 2 cm | 105 cm |
Soma (C+L+A) | 29 cm | 200 |
A soma resultante do comprimento + largura + altura não deve superar 200 cm.
A soma resultante do comprimento + o dobro do diâmetro não pode ser menor que 28 cm.
O maior "valor mínimo" é o de comprimento, que são 16cm (lembre-se que aqui já estamos trabalhando com um cubo, as 3 medidas são iguais), por isso, $medida
deve receber pelo menos o valor 16.
Como o máximo das somas das medidas é 200, 200 / 3 = 66.6666...
, e é daqui que vem o 66.
O meu raciocínio aqui foi que quando essa medida passar de 66cm, deveria haver algo como um transbordo de caixas (ou pacotes).
Conseguiu entender?
Qualquer outra dúvida pode perguntar.
@gabsprates imagina cara, obrigado vcs por terem compartilhado o código e obrigado pela ótima explicação, consegui entender agora.
Então caso a medida caia na condição $pesoTotal <= 30 && $medida > 66
, terei que separar em caixas, igual os métodos transbordoDePeso()
e transbordoDePesoEMedida()
fazem né?
@mtsalcova exato!
Se a medida dos lados (raiz cúbica do volume total) for maior que 66, mas o peso não, não existe condição que trata esse caso ("Medida excede, Peso não").
https://github.com/gigapix/freteCorreios/blob/4e6c9d8e12ba540bb681b9fb037613433ca8b04c/Frete.php#L87