marcoisa Postado Julho 10, 2012 Denunciar Share Postado Julho 10, 2012 Boa noite no meu site esta dando a seguinte mensagem quando vai calcular o frete:Notice: A non well formed numeric value encountered in /home2/alternat/public_html/catalog/model/shipping/pac.php on line 49o frete calcula direitinho, mas a mensagem é uma coisa chata. alguém sabe me dizer o que é isso e como retirar? segue o codigo da pagina:<?phpclass ModelShippingpac extends Model { function getQuote($address) { $this->load->language('shipping/pac'); if ($this->config->get('pac_status')) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "zone_to_geo_zone WHERE geo_zone_id = '" . (int)$this->config->get('pac_geo_zone_id') . "' AND country_id = '" . (int)$address['country_id'] . "' AND (zone_id = '" . (int)$address['zone_id'] . "' OR zone_id = '0')"); if (!$this->config->get('pac_geo_zone_id')) { $status = TRUE; } elseif ($query->num_rows) { $status = TRUE; } else { $status = FALSE; } } else { $status = FALSE; } $method_data = array(); if ($status) { function arredonda_peso_pac($peso){ $tipo = gettype($peso); $peso = str_replace(",",".",$peso); settype($peso,"float"); if (floor($peso)<$peso) { $peso = ceil($peso); } settype($peso,$tipo); return $peso; } function calcula_pac_pag($cepOrigem,$cepDestino,$peso,$valoor){require_once('frete.php');$frete = new PgsFrete;$valorFrete = $frete->gerar($cepOrigem, $peso, $valoor, $cepDestino);if($valorFrete==erro1'){$erro_postall='-3';return $dadosfrete = array("valor" => "0.0", "errofrete" => $erro_postall);}else {return $dadosfrete = array("valor" => number_format($valorFrete['PAC], 2, '.', ''), "errofrete" => 0);}} function calcula_pac($cepOrigem,$cepDestino,$peso,$valoor){ $urlCorreios = "http://www.correios.com.br/encomendas/precos/calculo.cfm?resposta=xml&servico=41106&cepOrigem=%s&cepDestino=%s&peso=%s&valorDeclarado=%s"; $urlCorreios = sprintf($urlCorreios, $cepOrigem, $cepDestino, $peso, $valoor); //carregando url dos correios... // inicio modificacao bruno trazzini $ch = curl_init(); curl_setopt ($ch, CURLOPT_URL, $urlCorreios); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 0); $file_contents = curl_exec($ch); curl_close($ch); $carrega = explode("\n", $file_contents); $conteudo = trim(str_replace(array("\n", chr(13)), "", implode($carrega, ""))); // fim modificacao bruno trazzini if(strlen($conteudo) <1) return false; //informações de origem tratadas com RegExp... if(preg_match_all("/<preco_postal>(.*)<\/preco_postal>/", $conteudo, $preco_postal)){ $preco_da_postagem = $preco_postal[1][0]; preg_match_all("/<tarifa_valor_declarado>(.*)<\/tarifa_valor_declarado>/", $conteudo, $preco_tarifa); $preco_da_tarifa = $preco_tarifa[1][0]; $preco_da_postagel = ($preco_da_postagem + $preco_da_tarifa); }else { $preco_da_postagel=0; } if($preco_da_postagel){ $valooor= floatval($preco_da_postagel); return $dadosfrete = array("valor" => number_format($valooor, 2, '.', ''), "errofrete" => 0); }else { if(!preg_match_all("/<codigo>(.*)<\/codigo>/", $conteudo, $erro_postal)){ $erro_postall= 666; }else { $erro_postall=$erro_postal[1][0]; } return $dadosfrete = array("valor" => "0.0", "errofrete" => $erro_postall); }} // Função getpac retirada do blog Lucas Ferreira //http://blog.lucasferreira.com/2008/02/11/correios-pac-e-o-tão-famigerado-calculo-de-frete/ $cepOrigem = $this->config->get('pac_postcode'); $cepDestino = $address['postcode']; $peso = $this->cart->getWeight(); $total_compra = $this->tax->calculate($this->cart->getSubTotal(), $this->config->get('zone_tax_class_id'), $this->config->get('config_tax')); $total_compra = preg_replace("/[^0-9]/", "", $total_compra); $total_compra = number_format($total_compra,'2','.',''); if($peso==0){ $peso = 0.300; } $peso = arredonda_peso_pac($peso); if($peso>30) { $var_quant = ceil($peso / 30); $pesoparcial = ceil($peso / $var_quant); $valorparcial = ceil($total_compra / $var_quant); $resultado = 0; for($i=1;$i<=$var_quant;$i++) { if($this->config->get('pac_modofrete')==1){ $valorparcial = number_format($valorparcial,'2',',',''); $shipping = calcula_pac_pag($cepOrigem,$cepDestino,$pesoparcial,$valorparcial); //pagseguro }else{ $shipping = calcula_pac($cepOrigem,$cepDestino,$pesoparcial,$valorparcial); //correios } $resultado = $resultado + $shipping['valor']; } } else { if($this->config->get('pac_modofrete')==1){ $total_compra = number_format($total_compra,'2',',',''); $shipping = calcula_pac_pag($cepOrigem,$cepDestino,$peso,$total_compra); }else{ $shipping = calcula_pac($cepOrigem,$cepDestino,$peso,$total_compra); } $resultado = $shipping['valor']; }if($shipping['errofrete']){ $titulo_pac = $this->language->get('text_pac_title_erro_correios');$descricao_pac = $this->language->get('text_pac_erro_busca_valor'); if($shipping['errofrete']==31){ $descricao_pac.=$this->language->get('text_pac_erro_cod_31'); }else if($shipping['errofrete']==-4") { $descricao_pac.=$this->language->get('text_pac_erro_cod_-4'); }else if($shipping['errofrete]=="-2") { $descricao_pac.=$this->language->get('text_pac_erro_cod_-2'); }else if($shipping['errofrete']==-3") { $descricao_pac.=$this->language->get('text_pac_erro_cod_-3'); } else if($shipping['errofrete]=="666") { $descricao_pac.=$this->language->get('text_pac_erro_cod_666'); } }else {$titulo_pac = $this->language->get('text_pac_title');$descricao_pac = $this->language->get('text_pac_description'); } $quote_data = array(); $quote_data['pac'] = array( 'id' => 'pac.pac', 'title' => $descricao_pac, 'cost' => $resultado, 'tax_class_id' => $this->config->get('pac_tax_class_id'), 'text' => $this->currency->format($this->tax->calculate($resultado, $this->config->get('pac_tax_class_id'), $this->config->get('config_tax'))) ); $method_data = array( 'id' => 'pac', 'title' => $titulo_pac, 'quote' => $quote_data, 'sort_order' => $this->config->get('pac_sort_order'), 'error' => FALSE ); } return $method_data; }}?> Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
marcoisa
Boa noite no meu site esta dando a seguinte mensagem quando vai calcular o frete:
Notice: A non well formed numeric value encountered in /home2/alternat/public_html/catalog/model/shipping/pac.php on line 49
o frete calcula direitinho, mas a mensagem é uma coisa chata. alguém sabe me dizer o que é isso e como retirar?
segue o codigo da pagina:
<?php
class ModelShippingpac extends Model {
function getQuote($address) {
$this->load->language('shipping/pac');
if ($this->config->get('pac_status')) {
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "zone_to_geo_zone WHERE geo_zone_id = '" . (int)$this->config->get('pac_geo_zone_id') . "' AND country_id = '" . (int)$address['country_id'] . "' AND (zone_id = '" . (int)$address['zone_id'] . "' OR zone_id = '0')");
if (!$this->config->get('pac_geo_zone_id')) {
$status = TRUE;
} elseif ($query->num_rows) {
$status = TRUE;
} else {
$status = FALSE;
}
} else {
$status = FALSE;
}
$method_data = array();
if ($status) {
function arredonda_peso_pac($peso){
$tipo = gettype($peso);
$peso = str_replace(",",".",$peso);
settype($peso,"float");
if (floor($peso)<$peso) {
$peso = ceil($peso);
}
settype($peso,$tipo);
return $peso;
}
function calcula_pac_pag($cepOrigem,$cepDestino,$peso,$valoor){
require_once('frete.php');
$frete = new PgsFrete;
$valorFrete = $frete->gerar($cepOrigem, $peso, $valoor, $cepDestino);
if($valorFrete==erro1'){
$erro_postall='-3';
return $dadosfrete = array("valor" => "0.0", "errofrete" => $erro_postall);
}
else {
return $dadosfrete = array("valor" => number_format($valorFrete['PAC], 2, '.', ''), "errofrete" => 0);
}
}
function calcula_pac($cepOrigem,$cepDestino,$peso,$valoor){
$urlCorreios = "http://www.correios.com.br/encomendas/precos/calculo.cfm?resposta=xml&servico=41106&cepOrigem=%s&cepDestino=%s&peso=%s&valorDeclarado=%s";
$urlCorreios = sprintf($urlCorreios, $cepOrigem, $cepDestino, $peso, $valoor);
//carregando url dos correios...
// inicio modificacao bruno trazzini
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $urlCorreios);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 0);
$file_contents = curl_exec($ch);
curl_close($ch);
$carrega = explode("\n", $file_contents);
$conteudo = trim(str_replace(array("\n", chr(13)), "", implode($carrega, "")));
// fim modificacao bruno trazzini
if(strlen($conteudo) <1) return false;
//informações de origem tratadas com RegExp...
if(preg_match_all("/<preco_postal>(.*)<\/preco_postal>/", $conteudo, $preco_postal)){
$preco_da_postagem = $preco_postal[1][0];
preg_match_all("/<tarifa_valor_declarado>(.*)<\/tarifa_valor_declarado>/", $conteudo, $preco_tarifa);
$preco_da_tarifa = $preco_tarifa[1][0];
$preco_da_postagel = ($preco_da_postagem + $preco_da_tarifa);
}else {
$preco_da_postagel=0;
}
if($preco_da_postagel){
$valooor= floatval($preco_da_postagel);
return $dadosfrete = array("valor" => number_format($valooor, 2, '.', ''), "errofrete" => 0);
}else {
if(!preg_match_all("/<codigo>(.*)<\/codigo>/", $conteudo, $erro_postal)){
$erro_postall= 666;
}else {
$erro_postall=$erro_postal[1][0];
}
return $dadosfrete = array("valor" => "0.0", "errofrete" => $erro_postall);
}
}
// Função getpac retirada do blog Lucas Ferreira
//http://blog.lucasferreira.com/2008/02/11/correios-pac-e-o-tão-famigerado-calculo-de-frete/
$cepOrigem = $this->config->get('pac_postcode');
$cepDestino = $address['postcode'];
$peso = $this->cart->getWeight();
$total_compra = $this->tax->calculate($this->cart->getSubTotal(), $this->config->get('zone_tax_class_id'), $this->config->get('config_tax'));
$total_compra = preg_replace("/[^0-9]/", "", $total_compra);
$total_compra = number_format($total_compra,'2','.','');
if($peso==0){
$peso = 0.300;
}
$peso = arredonda_peso_pac($peso);
if($peso>30) {
$var_quant = ceil($peso / 30);
$pesoparcial = ceil($peso / $var_quant);
$valorparcial = ceil($total_compra / $var_quant);
$resultado = 0;
for($i=1;$i<=$var_quant;$i++) {
if($this->config->get('pac_modofrete')==1){
$valorparcial = number_format($valorparcial,'2',',','');
$shipping = calcula_pac_pag($cepOrigem,$cepDestino,$pesoparcial,$valorparcial); //pagseguro
}else{
$shipping = calcula_pac($cepOrigem,$cepDestino,$pesoparcial,$valorparcial); //correios
}
$resultado = $resultado + $shipping['valor'];
}
}
else {
if($this->config->get('pac_modofrete')==1){
$total_compra = number_format($total_compra,'2',',','');
$shipping = calcula_pac_pag($cepOrigem,$cepDestino,$peso,$total_compra);
}else{
$shipping = calcula_pac($cepOrigem,$cepDestino,$peso,$total_compra);
}
$resultado = $shipping['valor'];
}
if($shipping['errofrete']){
$titulo_pac = $this->language->get('text_pac_title_erro_correios');
$descricao_pac = $this->language->get('text_pac_erro_busca_valor');
if($shipping['errofrete']==31){
$descricao_pac.=$this->language->get('text_pac_erro_cod_31');
}else if($shipping['errofrete']==-4") {
$descricao_pac.=$this->language->get('text_pac_erro_cod_-4');
}else if($shipping['errofrete]=="-2") {
$descricao_pac.=$this->language->get('text_pac_erro_cod_-2');
}else if($shipping['errofrete']==-3") {
$descricao_pac.=$this->language->get('text_pac_erro_cod_-3');
}
else if($shipping['errofrete]=="666") {
$descricao_pac.=$this->language->get('text_pac_erro_cod_666');
}
}else {
$titulo_pac = $this->language->get('text_pac_title');
$descricao_pac = $this->language->get('text_pac_description');
}
$quote_data = array();
$quote_data['pac'] = array(
'id' => 'pac.pac',
'title' => $descricao_pac,
'cost' => $resultado,
'tax_class_id' => $this->config->get('pac_tax_class_id'),
'text' => $this->currency->format($this->tax->calculate($resultado, $this->config->get('pac_tax_class_id'), $this->config->get('config_tax')))
);
$method_data = array(
'id' => 'pac',
'title' => $titulo_pac,
'quote' => $quote_data,
'sort_order' => $this->config->get('pac_sort_order'),
'error' => FALSE
);
}
return $method_data;
}
}
?>
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.