Olá pessoal
Com os correios vire e mexe dando problemas eu criei uma rotina que preenche a tabela de taxas de envio () com todos os preços para todos os lugares via sedex, o que imaginei se o webservice do correios tiver fora o sistema busca nesta tabela, que podemos atualizar ela a cada X tempo só que eu não conheço muito de php fiz essa rotina graças a ajuda de amigos e ao google, e ela passa por todos os ceps e pesos mas tem hora que o ws dos correios não retorna dados ai a tabela fica incompleta será que alguem pode dar uma força ? Abaixo segue a rotina e vou por em anexo a tabela de cep e de pesos.
<?php
set_time_limit(300);
function calcula_frete_sedex($cep_org,$cep_dst,$peso,$mao,$valor,$aviso)
{
// Calcula frete sedex
$url="http://www.correios.com.br/encomendas/precos/calculo.cfm?resposta=paginaCorreios&servico=40010&cepOrigem={$cep_org}&cepDestino={$cep_dst}&peso={$peso}&MaoPropria={$mao}&valorDeclarado={$valor}&avisoRecebimento={$aviso}";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$html = curl_exec ($ch);
curl_close ($ch);
$html = explode('<td align="center" colspan="2">', $html);
$html = $html[5];
$html = explode("<b>",$html);
$html = $html[1];
$html = explode("</b>",$html);
return str_replace(',', '.', substr($html[0], 3));
}
//array de CEPS
$conexao = mysql_connect('mysql.servidor.com.br' , 'user', 'password' );
$db = mysql_select_db("bancodedados");
//Busco todos os ceps
$sql = "SELECT CEPINI, CEPFIM FROM CEPs ";
$resultado = mysql_query($sql) or die (mysql_error());
//Busco todos os ceps
$sql2 = "SELECT PESOINICIAL, PESOFINAL FROM Pesos";
$resultado2 = mysql_query($sql2) or die (mysql_error());
//Aqui já gravo na mémoria todos os resultados
$iPesos = 0;
while ($linha2 = mysql_fetch_array($resultado2))
{
$arrPesos[$iPesos]["PESOINICIAL"] = $linha2["PESOINICIAL"];
$arrPesos[$iPesos]["PESOFINAL"] = $linha2["PESOFINAL"];
$iPesos++;
}
$num =0;
//Para todos os ceps
while ($linha=mysql_fetch_array($resultado))
{
//para cada peso
for ($j=0;$j<$iPesos;$j++)
{
$vlFrete = calcula_frete_sedex("05046001",$linha["CEPINI"],$arrPesos[$j]["PESOFINAL"],"N","0","N");
if ($vlFrete !="")
{
$sql3 = "INSERT INTO jos_vm_shipping_rate ( ";
$sql3 = $sql3 . "shipping_rate_name, ";
$sql3 = $sql3 . "shipping_rate_carrier_id, ";
$sql3 = $sql3 . "shipping_rate_country, ";
$sql3 = $sql3 . "shipping_rate_zip_start, ";
$sql3 = $sql3 . "shipping_rate_zip_end, ";
$sql3 = $sql3 . "shipping_rate_weight_start, ";
$sql3 = $sql3 . "shipping_rate_weight_end, ";
$sql3 = $sql3 . "shipping_rate_value, ";
$sql3 = $sql3 . "shipping_rate_package_fee, ";
$sql3 = $sql3 . "shipping_rate_currency_id, ";
$sql3 = $sql3 . "shipping_rate_vat_id, ";
$sql3 = $sql3 . "shipping_rate_list_order) VALUES ( ";
$sql3 = $sql3 . "'SEDEX',";
$sql3 = $sql3 . "4,'BRA;',";
$sql3 = $sql3 . "'" . $linha["CEPINI"] . "',";
$sql3 = $sql3 . "'" . $linha["CEPFIM"] . "',";
$sql3 = $sql3 . "'" . $arrPesos[$j]["PESOINICIAL"] . "',";
$sql3 = $sql3 . "'" . $arrPesos[$j]["PESOFINAL"] . "',";
$sql3 = $sql3 . $vlFrete . ",0,20,0,1)";
echo $sql3;
echo "<br/>";
$resultado3 = mysql_query($sql3) or die (mysql_error());
echo $resultado3;
}
else
{
echo "valor inválido: ";
echo $linha["CEPINI"];
echo " - ";
echo $arrPesos[$j]["PESOFINAL"];
echo " || ";
echo "<br/>";
}
ob_flush();
flush();
}
}
mysql_close( $conexao);
?>
[]`S
Arquivo Anexo:
Nome do Arquivo:
pesoeceps.txtTamanho do Arquivo: 1984