Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Marcos Barbosa

[Resolvido] Erro no cálculo dentro do foreach()

Recommended Posts

A rotina que coloco a seguir está funcionando quando coloco um botão para ser calcular todos os itens que estão selecionados, agora preciso que ela funcione dentro de um laço de repetição para calcular o valor de frete de cada item a medida que a condição for verdadeira, assim ela dá erro na função getFrete().

 

 

<?php
session_start();

require_once("RsCorreios.php");
$frete = new RsCorreios();

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<?php
setlocale(LC_MONETARY, 'pt_BR');
require_once('pagueseguro/PagSeguroLibrary.php');

// Instanciando a class PagSeguroPaymentRequest
$vendaPagueSeguro = new PagSeguroPaymentRequest();

$vendaPagueSeguro->setShippingType(1);	

?>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.js"></script>

</head>
<body>

<?php
 foreach($_SESSION as $id => $quantidade){
 	if($quantidade > 0){
	$id = substr($id, 9);

	$sql   = $conecta->executa_query("SELECT * FROM lj_produtos WHERE id_produto = $id");
	$lista = mysql_fetch_array($sql);

	$identificacao = $lista['id_produto'];
	$descricao     = $lista['nome_produto'];
	$valor_unit    = $lista['vlr_pf'];

	$nVlPeso       = $lista['peso'];
               $nVlAltura     = $lista['altura']; 
               $nVlLargura    = $lista['largura']; 
        $nVlComprimento= $lista['comprimento'];
        $diametro      = $lista['diametro']; 


	$sCepDestino    = $rs['cep'];

               $sCepOrigem = "40000000";
               $nCdServico  ="41106"; 

	$frete->setValue(nVlPeso, $nVlPeso);
	$frete->setValue(nVlAltura, $nVlAltura);
	$frete->setValue(nVlLargura, $nVlLargura);
	$frete->setValue(nVlComprimento, $nVlComprimento);
	$frete->setValue(sCepDestino, $sCepDestino);
	$frete->setValue(sCepOrigem, $sCepOrigem);
	$frete->setValue(nCdServico, $nCdServico);


	$frete->getDiametro();

	$result = $frete->getFrete();


	if ($result['erro'] != 0) {
			$resultadoFrete = $result['msg_erro'];
	}
	else {
		$valorFrete      = $result['valor'];
		$prazoEntrega = $result['prazo_entrega'];	
	}

	$vendaPagueSeguro->addItem($identificacao, $descricao, $quantidade, $valor_unit, $peso, $valorFrete);
}

 }
 ?>

</body>
</html>  

 

A função getFrete é essa:

 public function getFrete()
   {
       $response = $this->_getSite(self::_getURL());
       $xml = simplexml_load_string ($response);
       $frete = array ("servico_codigo" => $xml->cServico->Codigo,
          "valor" => $xml->cServico->Valor,
           "prazo_entrega" => $xml->cServico->PrazoEntrega,
           "mao_propria" => $xml->cServico->ValorMaoPropria,
           "aviso_recebimento" => $xml->cServico->ValorAvisoRecebimento,
           "valor_declarado" => $xml->cServico->ValorValorDeclarado,
           "en_domiciliar" => $xml->cServico->EntregaDomiciliar,
           "en_sabado" => $xml->cServico->EntregaSabado,
           "erro" => $xml->cServico->Erro,
           "msg_erro" => $xml->cServico->MsgErro);
       return $frete;
   }

Compartilhar este post


Link para o post
Compartilhar em outros sites

deixa eu entender o que esta acontecendo, você esta utilizando uma biblioteca do pagseguro.

 

se isso for o retorno dos dados não vai funcionar por que o pagseguro trata tudo como um único item, mesmo se for a compra com quantidade 10 ou 10 compras ao mesmo tempo, ele vai separar e fazer uma requisição pra cada.

 

se não for o caso, possivelmente não esta encontrando os dados que você seta como $xml

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, eu estou usando uma biblioteca do pagseguro (para integrar) o problema é que o cálculo de frete do pagseguro não bate com o valor calculado pela biblioteca do site dos correios.

Então pensei em fazer um teste, passar o valor de frete de cada item calculado pelos correios para o pagseguro e ver como ficaria o resultado do cálculo feito por eles.

 

O erro q dá é esse

Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 1: parser error : Entity 'aacute' not defined in /home/izabelle/public_html/marcos/lojanossa/nav/RsCorreios.php on line 200

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.