Closed fernandoweb91 closed 5 years ago
Olá pessoal!
Realizando novos testes percebi que se eu uso o módulo na versão 4.4 o valor do frete fica mais próximos dos correios.
Segundo a minha cliente tem um produto que o frete deveria ficar dessa forma:
PAC 19.01 - SEDEX 28.10
Mas usando a versão 4.9 o frete ficou:
PAC 18.23 - SEDEX 40.65
Então usei a versão 4.4 e o frete ficou:
PAC 19.60 - SEDEX 36.03
Abaixou mas cliente precisa que ele fique mais barato ainda.
Será que tem como?
Abraços!
Olá @fernandoplanejar91 Cadastrou as dimensões do produto? Quais são elas? Monitora o arquivo system.log durante uma cotação, e coloca aq o resultado, pra gente analisar.
Meu também acontece mesmo tipo de erro. Meu log: 2018-03-20T15:23:49+00:00 DEBUG (7): pedroteixeira_correios [cache]: mode=0 status=write key=04510x04014_02_30_85905040
@carlosvolp esse é só o debug, não caracteriza erro. Apenas mostra oq está ocorrendo. Nesse caso foi realizada uma cotação direto com os Correios (mode=0), e o resultado foi armazenado em cache, para consulta futura (status=write).
Olá @fernandoplanejar91 tudo bem? Já tentou realizar a limpeza do cache do módulo? (Sistema > Gerenciar Cache)
*Marque apenas o item relacionado ao módulo
Espero ter ajudado ;)
Olá pessoal,
Obrigado pelo retorno!
Segue os logs (system.log) dos meus testes:
2018-03-21T20:30:32+00:00 DEBUG (7): pedroteixeira_correios [cache]: mode=0 status=write key=40096x41068_03_16_05427000 2018-03-21T20:30:46+00:00 DEBUG (7): pedroteixeira_correios [cache]: mode=0 status=write key=40096x41068_03_16_20260300 2018-03-21T20:30:57+00:00 DEBUG (7): pedroteixeira_correios [cache]: mode=0 status=write key=40096x41068_03_16_23970000
Caso essa informação seja util segue mais um detalhe:
Notei que nos logs aparece 150 linhas com o seguinte erro:
2018-03-21T20:30:57+00:00 ERR (3): Deprecated functionality: iconv_set_encoding(): Use of iconv.internal_encoding is deprecated in /home/host1657/public_html/40_emb/lib/Zend/Locale/Format.php on line 313 2018-03-21T20:30:57+00:00 ERR (3): Deprecated functionality: iconv_set_encoding(): Use of iconv.internal_encoding is deprecated in /home/host1657/public_html/40_emb/lib/Zend/Locale/Format.php on line 474 2018-03-21T20:30:57+00:00 ERR (3): Deprecated functionality: iconv_set_encoding(): Use of iconv.internal_encoding is deprecated in /home/host1657/public_html/40_emb/lib/Zend/Validate/Hostname.php on line 553 2018-03-21T20:30:57+00:00 ERR (3): Deprecated functionality: iconv_set_encoding(): Use of iconv.internal_encoding is deprecated in /home/host1657/public_html/40_emb/lib/Zend/Validate/Hostname.php on line 649
Eu já limpei o cache da magento na opção "Gerencia Cache"
Abraços!
@fernandoplanejar91 analisando o primeiro log q vc enviou...
Primeira cotação: mode=0 status=write key=40096x41068_03_16_05427000
mode=0
A cotação foi realizada junto ao web service dos Correios.status=write
O resultado da cotação foi armazenado na cache do Magento.key=40096x41068_03_16_05427000
:
40096
Antigo código de entrega expressa41068
Antigo código de entrega convencional03
Peso total 0,3kg (arredondado com 1 díg. decimal)16
Lado médio 16cm (valor mínimo e ignorado / não gera cubagem)05427000
CEP de destino (precisão 8 díg.)Sugestões:
0.0006
na primeira mensagem não corresponde a 6 gramas. Precisa corrigir no produto, colocar 0.006
(ignore isto, caso tenha sido apenas um erro de digitação).@rafaelpatro Estou achando que minha loja ou o módulo dos correios está armazenando por muito tempo o cache das alterações porque alterei o config.xml para 3 e abaixou o valor do frete, ai fui alterar para 2, 40, e até mesmo apagar e deixar como 1 como estava antes e não mudou nada no valor.
Mas fiz um comparativo das mudanças após editar esse arquivo:
Módulo 4.4
Frete para SP | 20 peças | Sedex: R$ 1,00 mais barato | Pac: Ficou disponivel, sendo que não deveria segundo a tabela da cliente
Frete para RJ | 20 peças | Sedex: R$ 4,00 mais caro | Pac: R$ 1,00 mais caro
Frete para MG | 20 peças | Sedex: R$ 4,00 mais barato | Pac: R$ 1,00 mais barato
Frete para SP | 100 ou 1000 peças | Sedex: R$ 1,00 mais barato | Pac: Ficou disponivel, sendo que não deveria segundo a tabela da cliente
Frete para RJ | 100 ou 1000 peças | Sedex: R$ 40,00 mais barato | Pac: R$ 10,00 mais barato
Frete para MG | 100 ou 1000 peças | Sedex: R$ 40,00 mais barato | Pac: R$ 10,00 mais barato
Esse módulo usa o código antigo 40096 e 41068
Módulo 4.9
Frete para SP | 20 peças | Sedex: Valor correto | Pac: Valor correto
Frete para RJ | 20 peças | Sedex: Valor correto | Pac: Valor correto
Frete para MG | 20 peças | Sedex: Valor correto | Pac: Valor correto
Frete para SP | 100 ou 1000 peças | Sedex: R$ 50,00 mais caro | Pac: R$ 100,00 mais caro
Frete para RJ | 100 ou 1000 peças | Sedex: R$ 200,00 mais caro | Pac: R$ 500,00 mais caro
Frete para MG | 100 ou 1000 peças | Sedex: R$ 200,00 mais caro | Pac: R$ 500,00 mais caro
Esse módulo usa o código novo 04162 e 04669
Conclusão o calculo do módulo antigo está errado também mas pelo menos não erra muito.
Em relação ao peso informado eu tinha escrito dessa forma porque quando digita 0.006 a loja muda para 0.0060, mas nos meus testes não teve diferença essa quantidade de zero.
OBS:
Nessa loja o produto do tipo pacote está cadastrado como peso dinâmico, e ele está associado a 2 produtos simples, um produto pesa 0.0060 e o outro 0.0012
Quais as dimensões cadastradas pra esse produto? Altura, largura e comprimento.
Provavelmente são elas q estão influenciando a cotação de qdes maiores.
@rafaelpatro
Durante os meus testes estavam no padrão minimo dos correios, ou seja, altura = 2cm / comprimento = 16cm / largura = 11cm
Mas você me deu ideia colocar o tamanho da embalagem na dimensão do produto, que seria:
altura = 2cm / comprimento = 8cm / largura = 3cm
Mas não mudou nada no valor, deixei até tudo como 1cm e não fez diferença.
Só quando deixa algo acima de 15cm ou 20cm começa a fazer diferença no valor, fica mais caro.
Mas o foco aqui é abaixar o valor :)
OBS:
1- Estou achando que o sistema está deixando como padrão: altura = 2cm / comprimento = 16cm / largura = 11cm mesmo se eu informar um tamanho menor 2- Já deixei o tamanho da dimensão direto no Painel > Sistemas > Formas de Entrega > Correios 3- Acho que a solução é abrir o arquivo que determina o minimo e já deixar fixo nele altura = 2cm / comprimento = 8cm / largura = 3cm
Abraços!
Funciona assim... Os Correios defiriram o padrão mínimo como sendo alt 2cm, larg 11cm, comp 16cm. O webservice não aceita valores menores q esses. Retorna erro.
Para lidar com isso, sempre q o produto era pequeno demais, o módulo enviava os valores mínimos, ignorando a dimensão do produto.
Mas depois percebemos q o Correios é indiferente a pequenas diferenças. Pacotes de 2x11x16 ou 20x25x30 tem o mesmo frete, se tiverem o mesmo peso.
Oq ocorre é q a mensuração da cubagem, segundo os Correios, precisa ser superior a 5kg cubados. Isso significa q a dimensão média precisa ser superior a 31cm.
Ao realizar diversas cotações, e aumentar as quantidades,.vc percebe o preço subindo, conforme o peso. Qdo a dimensão do pacote atinje uma média de 32cm de lado, o Correios provavelmente passa a ignorar o peso real.
Ou seja comparar os preços de frete baseando-se apenas no peso, só é válido até certo ponto. Qdo seu pacote supera o limite da cubagem, a conta muda.
Estou passando pelo mesmo problema em ambas as versões, como o produto é muito leve (0.0033) e é vendido a partir mil unidades o frete dos correios via PAC fica em R$ 21,50 enquanto o do site está ficando em R$ 218,60.
Tentei aumentar a precisão do cache para 3 continuando com o mesmo valor.
Colocar as dimensões para o produto individualmente não funciona, extrapola e muito o tamanho da caixa que acomoda todos os itens já que o Correios limita o valor mínimo das dimensões.
@TenSoja, quais as dimensões cadastradas do seu produto?
@rafaelpatro estou usando as medidas mínimas (altura = 2cm, comprimento = 16cm, largura = 11cm) pois não tem como colocar menos.
@rafaelpatro estou com um problema parecido, no meu caso os produtos possuem tamanhos diferentes porém os clientes compram num mesmo pedido. Nesse caso o módulo deveria considerar a medida do maior produto para poder calcular o frete corretamente, porém parece que ele soma as medidas de todos os produtos, aí o frete fica um valor absurdo. Você sabe como podemos resolver este problema? Mesmo colocando a opção de diferença de encaixe ele não calcula corretamente.
Olá, mesma coisa aqui. Estou achando que o módulo arredonda o peso dos produtos individuais antes de fazer a soma do peso total. Por exemplo, o frete para 12 produtos de 0.35kg cada, custa R$ 95,50 (5kg aproximadamente). O módulo informa R$ 165,30, que é exatamente o valor para 12kg.
Acho que ele arredonda o valor fracionário para cima antes de fazer a soma, quando deveria fazê-lo no último passo.
@tambourine-man quais são as medidas cadastradas do seu produto?
A 9cm, L 25cm, C 25cm.
Mas usei outras medidas também e não altera o valor final. Por exemplo, 2cm, L 11cm, C 16cm.
Cálculo da cubagem dos Correios: 9 x 25 x 25 ÷ 6000 = 0.935 kg
No caso de 12 itens: 12 x 0.935 = 11.22kg
Ou seja considerando as dimensões do seu item, e sua cotação, o módulo está funcionando perfeitamente. O valor de 165 reais é o correto.
Masss como vc disse ter alterado as medidas sem causar efeito, sugiro alterar as medidas novamente, reindexar, limpar a cache, e cotar novamente. O valor deve realmente ser menor.
Oi Rafael, o problema é essa simulação no site dos correios dá um valor muito abaixo, como informei anteriormente.
Me parece que esse cálculo que vocês estão fazendo não é o mesmo do correio. Inclusive, alterando o tamanho da embalagem no site deles para esses valores que informei acima não altera o valor.
Esse teste simples com curl, com as dimensões e peso informados, retorna o resultado correto
<?php
$data['nCdEmpresa'] = '';
$data['sDsSenha'] = '';
$data['sCepOrigem'] = '22231901';
$data['sCepDestino'] = '38406197';
$data['nVlPeso'] = '5';
$data['nCdFormato'] = '1';
$data['nVlComprimento'] = '16';
$data['nVlAltura'] = '2';
$data['nVlLargura'] = '11';
$data['nVlDiametro'] = '0';
$data['sCdMaoPropria'] = 'n';
$data['nVlValorDeclarado'] = '0';
$data['sCdAvisoRecebimento'] = 'n';
$data['StrRetorno'] = 'xml';
$data['nCdServico'] = '40010';
// $data['nCdServico'] = '41106';
$data = http_build_query($data);
$url = 'http://ws.correios.com.br/calculador/CalcPrecoPrazo.aspx';
$curl = curl_init($url . '?' . $data);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($curl);
$result = simplexml_load_string($result);
foreach($result -> cServico as $row) {
//Os dados de cada serviço estará aqui
if($row -> Erro == 0) {
echo $row -> Codigo . '<br>';
echo $row -> Valor . '<br>';
echo $row -> PrazoEntrega . '<br>';
echo $row -> ValorMaoPropria . '<br>';
echo $row -> ValorAvisoRecebimento . '<br>';
echo $row -> ValorValorDeclarado . '<br>';
echo $row -> EntregaDomiciliar . '<br>';
echo $row -> EntregaSabado;
} else {
echo $row -> MsgErro;
}
echo '<hr>';
}
Ok. Podemos testar isso no seu código. Consegue fazer um teste enviando as medidas corretas?
41cm x 41cm x 41cm (altura x largura x comp) 4,2kg (peso)
Esse é o tamanho mínimo da caixa com 12 unidades do seu produto.
Com essas dimensões o valor fica igual no site dos correios, no código que postei (desde que arredonde para 5kg) e no módulo.
Só não entendo porque você diz que o tamanho mínimo da caixa com 12 unidades seria 41x41x41.
Conforme descreveu, as medidas cadastradas do seu produto são 9 x 25 x 25. E o peso é 0.35kg. No exemplo estamos considerando 12 unidades do produto no carrinho de compras. Nesse caso vc precisa multiplicar o peso e as medidas.
O peso é simples: 0.35 x 12 = 4.2kg
As medidas é um pouco mais complexo: Vamos considerar que 9cm é a altura, ok?! Então agora vamos empilhar os 12 itens.
Ok, agora temos uma pacote com 108 x 25 x 25. Essa é a medida correta para vc testar.
Dificilmente o logista irá empilhar os itens dessa forma. A forma como vc vai acomodar seu produto na caixa é provavelmente a mínima possível. Vc não quer espaços vazios, pois vai pagar por cada centímetro desperdiçado. Além disso os Correios possuem limites máximos de comprimento. Então o módulo calcula uma média das dimensões.
Basta multiplicar as 3 dimensões, e em seguida extrair a raiz cúbica. Ex.: 108 x 25 x 25 = 67500 67500 ^ (1/3) = 40.71
Ou seja 108 x 25 x 25 é equivalente a 41 x 41 x 41.
Entendi, muito obrigado pela explicação Rafael. Acho que o cliente precisa ser mais conservador no tamanho da caixa individual então.
De nada! Qualquer sugestão ou melhoria será muito bem vinda.
Olá pessoal!
Quando é adicionado no carrinho muitos produtos por exemplo 1000 o frete está ficando muito alto em relação aos correios.
Percebi que o erro ocorre porque a Magento ou o módulo dos correios não está calculando o peso corretamente quando o produto é do tipo pacote (bundle)
O produto da minha cliente é pequeno e leve pesa 6 gramas, se o cliente comprar 2000 peças, ou seja, um pacote com 1000 produtos A, e 1000 produtos B, o frete fica R$ 144,78, mas se calcular 12kg no site dos correios o frete fica R$ 60,10.
Na magento estou informando o peso dessa forma: 0.0006
Abraço!