Erro no calculo de Frete quando tem vários produtos no carrinho

Issue #13 new
Oliver Sergeant created an issue

Funcione bem para mim quando só tem um produto no carrinho. Quando tem mais que um produto no carrinho ele não calcula mais o frete e o cliente não pode completar a compra. Quando vai diminuir o numero de produtos &té só ter um produto, o calculo funcione de novo.

Como resolver? para ter o calculo funcionando correto? Obrigado!

Comments (15)

  1. Willian Cordeiro de Souza repo owner

    Olá Oliver, o que pode estar ocorrendo é que a soma dos pesos de todos os produtos ultrapassa o limite de 30kg dos correios.

    É exebida alguma mensagem no frontend?

  2. Oliver Sergeant reporter

    Oi Will,

    Não, dez que tem 2 produtos de 0,300 kg ele já não calcula mais. Ele não mostra mensagem de erro, não mostra nada, simplesmente não da quote e as pessoas não podem fechar a compra.

    Implementei outra solução de frete fixo quando a pessoa tem mais que 2 produtos para um preço fixo de 15R$. Olha aqui, www.malusanffer.com/loja

  3. Marcus Monteiro

    Isso também acontece no meu caso. Provavelmente Oliver está usando o módulo OSC ou algum semelhante.

    Não está exibindo as opções de frete por conta do "erro" com as dimensões acima dos limites prepostos pelos correios.

    Willian, caso você esteja trabalhando na correção/melhoria dessa questão referente as dimensões, peço que compartilhe comigo ou com a comunidade para que eu possa contribuir pois tenho urgência em sanar esse problema para um cliente.

  4. Willian Cordeiro de Souza repo owner

    Olá Marcus, o limite de dimensões das embalagens para os Correios são de 105cm para altura, comprimento e largura. As somas das 3 não podem ultrapassar 200cm. Este limite é imposto pelo webservice dos correios.

    Você pode me informar quais são as dimensões dos produtos que você tem no carrinho?

  5. Marcus Monteiro

    Olá William, a loja possui produtos de muitas dimensoes diferentes. mas a maioria fica em torno de 55x55x10 - tenho percebido que a soma das dimensoes de varios destes produtos, algo que é muito comum de acontecer, acaba ultrapassando esse volume máximo dos cooreios.

    Se tenho por exemplo 5 produtos diferentes de 50cm de comprimento, independente da largura e altura, já da erro.

    Fiz um fork e estou estudando seu módulo (que é muito bom) para conseguir o que a maioria está pedindo: sempre que passar dos limites, calcular 2 ou mais fretes diferentes. ;)

  6. Willian Cordeiro de Souza

    Exatamente! Fazendo dois ou mais cotações de frete seria o ideal e o sistema nunca acusaria que um produto excedeu o limite de dimensões/peso. Pra isso teremos que mudar um pouco a mecânica do cálculo e adicionar algumas verificações no módulo que hoje são feitas pelo webservice.

    Não sei exatamente ainda como montar um algoritmo para dividir os pacotes e caixas separadas para que o cálculo seja preciso.

    Acredito que simplesmente dividindo os valores das dimensões dos produtos no carrinho o webservice irá retornar valores acima do esperado...

    Mas podemos resolver esse problema juntos, certo? Tens alguma idéia de como pode ser feito o algoritmo?

  7. Marcus Monteiro

    Bom, tenho sim algumas ideias de como fazer esses calculos. Mas não sei se vai dar certo. Vou testar aqui e havendo progresso já comito hoje mesmo. :)

  8. Marcus Monteiro

    Will, tenho uma ideia:

    Antes de enviar os dados para o webservice, teriamos a seguinte rotina >>

    • verificar se o maior comprimento, largura, altura, e diametros estão dentro dos limites
    • Verificar então se a soma de todas as alturas fica dentro do permitido Em caso positivo, manda esses dados para o calculo (maior comprimento, maior largura, e soma das alturas) Em caso negativo, separar grupos de produtos onde as alturas fiquem dentro do permitido

    Mas para isso preciso saber em qual ponto (parte do código) essas medidas estão sendo somadas pois é aí que está nosso calcanhar de aquiles.

  9. Willian Cordeiro de Souza repo owner

    A parte do código que faz a soma de todas das dimensões fica no arquivo app\code\community\Storm\Correios\Model\Carrier\Package\Dimension.php. Você vai ver que ele faz um foreach nos itens para realizar a soma.

  10. Marcus Monteiro

    Olá Willian, consegui dar os primeiros passos com sucesso. Alterei este bloco de forma que faça o calculo usando maior largura, maior comprimento, e a soma das alturas dos produtos. No ponto que cheguei já evita muitos dos problemas relacionados com vários produtos, mas ainda não está perfeito pois, como já deve ter percebido, em alguns casos chega-se a uma altura acima do permitido...

    Para que eu consiga chegar no ponto que desejo, preciso então saber como posso fazer duas ou mais requisições no webservice, e entregar para o usuário a soma desses valores.

    Então minha pergunta é justamente essa: sabe me dizer como eu poderia fazer duas ou mais requisições, e somar os resultados, para depois enviar essa soma para o sistema?

  11. Marcus Monteiro

    Olá, depois de várias tentativas de modificação, acabei criando meu proprio modulo seguindo alguns tutoriais da internet. Neste momento tenho um módulo extremamente simples, mas que faz os calculos certihos. Gostaria de conversar contigo diretamente para poder sanar algumas dúvidas. Quem sabe você adota meu módulo... :D

  12. Willian Cordeiro de Souza repo owner

    Olá Marcus, podemos sim conversar. Atualmente só estou disponível no período noturno. Meu e-mail é williancordeirodesouza@gmail.com.

    Estamos migrando para o github, esta página será desativada em breve. Segue o novo link: https://github.com/willstorm/correios

  13. luizcarloslucena

    Olá,

    Vocês conseguiram resolver este bug do módulo? Pois eu estava pensando em dar uma olhada no mesmo mas se já estiver resolvido me economizaria um tempo.

  14. Marcus Monteiro

    Opa, o projeto foi pro gtihub, e eu particularmente acabei me afastando por conta da falta de tempo...

    Eu cheguei a fazer meu proprio modulo, bem dasico, aproveitando o nucleo do modulo do pedro teixeira (que tambem tem o mesmo problema).

  15. Log in to comment