Skip to content

Instantly share code, notes, and snippets.

@deivisonarthur
Last active December 11, 2015 05:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save deivisonarthur/4552091 to your computer and use it in GitHub Desktop.
Save deivisonarthur/4552091 to your computer and use it in GitHub Desktop.
Utilizando os scripts do Frederico Leao + modulo dos correios do Pedro Teixeira
Bem essa solução é trank, o Frederico Leao e o Pedro realmente fizeram um ótimo trab. Mas como temos que ter uma saida para o webservice dos correios offline fiz uma mistura fina rs
O Funcionamento
O módulo usado é o do Pedro Teixeira mesmo, mas add um bt na adm do modulo dele que ativa a utilização do webservice alternativo, assim o módulo para de pegar dados diretamente nos correios e passa a pegar num webservice proprio nosso, que acesso consequetemente uma base local.
No exemplo abaixo que fiz utilizo apenas um cep de origem e os métodos Sedex e PAC, que somam +/- 3600 registros no banco de dados. Se tem a opção de conf outros meios dos correios como Carta Registrada e E-Sedex, só iria aumentar um pouco mais o número de registros.
Bem o script do Frederico Leao possui uma adm(que precisa fechar o acesso a mesma para segurança) que se tem a possibilidade de cadastrar outros meios como falei acima e add outros ceps de origem. Se tem também a fantastica opção de atualização dos preços dos fretes diretamente baixando do site dos correios.
Bem no script do Frederico eu só removi um bloqueio que se tinha na atualização que ele dava exit(); a cada erro de faixa de ceps não encontrada. E tb add a opção de exibir qual é a faixa de cep com problema. Outra coisa que fiz é que como meu php.ini se tem um tempo maior de execussão tb aumentei na tabela atualizacoes_config esse tempo de execussão.
Num if do arquivo atualizacoes.php add assim apra exibir o erro e não parar a execussao do mesmo:
else {
echo "<script type='text/javascript'>
alert('".$servico->MsgErro." - ".$row->cep_destino_ini." - ".$row->cep_destino_fim." - ".$row->cep_dest_ref."');
document.location.href='./index.php';
</script>
";
//exit;
}
Para usar no módulo do Pedro Teixeira troque a linha do arquivo: app/code/community/PedroTeixeira/Correios/etc/config.xml
Procure por:
<url_ws_correios>http://ws.correios.com.br/calculador/CalcPrecoPrazo.aspx</url_ws_correios>
E troque por:
<url_ws_correios>http://deivison.com.br/correiosOffline/index.php</url_ws_correios>
Na verdade fiz mais que isso, eu add no módulo do pedro a opção de escolha do meu webservice alternativo:
Em correiosMetods.php
//para teste pode remover essa linha echo "<script>alert('".Mage::getStoreConfig('carriers/pedroteixeira_correios/deivison', $this->getStore())."')</script>";
if(Mage::getStoreConfig('carriers/pedroteixeira_correios/deivison', $this->getStore()) == 1){
$filename = $this->getConfigData('url_ws_correiosOffline');
}else{
$filename = $this->getConfigData('url_ws_correios');
}
No config.xml add
<url_ws_correios>http://ws.correios.com.br/calculador/CalcPrecoPrazo.aspx</url_ws_correios>
<url_ws_correiosOffline>http://deivison.com.br/correiosOffline/index.php</url_ws_correiosOffline>
OBS: Meu webservice só funcionara para o cep de origem 22793080
Bem acho que foi só, a parte abaixo são alguns prints e exemplo que fiz antes de escrever essa parte de cima rs.
Espero que ajude!
----------------------------------------------------------------------------------
(Obs eu add mais 2 zeros nesses calculos do RJ no banco para ver se estaria ok, por isso ta 902 reais, no dos correios seria 9 + 2 taxa de entrega)
consulta feita pelo modulo do pedro com os correios http://i.imgur.com/fOr0o.png
consulta feita pelo modulo do pedro com o meu webservice http://i.imgur.com/fOr0o.png
Tela de adm e atualização dos preços do Sedex e PAC via webservice dos correios http://i.imgur.com/56MAB.png
Tela do módulo do Pedro Teixei com a opção de ligar o webservice alternativo http://i.imgur.com/nXe4Q.png
retorno do webservice é assim:
<Servicos>
<cServico>
<Codigo>41106</Codigo>
<Valor>2.7</Valor>
<ValorMin>900.00</ValorMin>
<AcrescimoDimensao/>
<AcrescimoPeso/>
<PrazoEntrega/>
<ValorMaoPropria>0</ValorMaoPropria>
<ValorAvisoRecebimento>2.70</ValorAvisoRecebimento>
<ValorValorDeclarado>0</ValorValorDeclarado>
<EntregaDomiciliar>Sim</EntregaDomiciliar>
<EntregaSabado>Sim</EntregaSabado>
<Erro>0</Erro>
<MsgErro/>
</cServico>
</Servicos>
Simulação --------
PAC Capital RJ
http://deivison.com.br/correiosOffline/index.php?nVlAltura=30&nVlLargura=30&nVlComprimento=30&nVlPeso=0.3000&sCepOrigem=22793080&sCepDestino=21061570&nVlValorDeclarado=0&nVlsCdAvisoRecebimento=N&sCdMaoPropria=N&nCdServico=41106
PAC Interior RJ
http://deivison.com.br/correiosOffline/index.php?nVlAltura=30&nVlLargura=30&nVlComprimento=30&nVlPeso=0.3000&sCepOrigem=22793080&sCepDestino=25220140&nVlValorDeclarado=0&nVlsCdAvisoRecebimento=N&sCdMaoPropria=N&nCdServico=41106
Sedex RJ capital
http://deivison.com.br/correiosOffline/index.php?nVlAltura=30&nVlLargura=30&nVlComprimento=30&nVlPeso=0.3000&sCepOrigem=22793080&sCepDestino=21061570&nVlValorDeclarado=0&nVlsCdAvisoRecebimento=N&sCdMaoPropria=N&nCdServico=40010
Sedex RJ Interior
http://deivison.com.br/correiosOffline/index.php?nVlAltura=30&nVlLargura=30&nVlComprimento=30&nVlPeso=0.3000&sCepOrigem=22793080&sCepDestino=25220140&nVlValorDeclarado=0&nVlsCdAvisoRecebimento=N&sCdMaoPropria=N&nCdServico=40010
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment