Ir para conteúdo

Arquivado

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

formigoni

[Resolvido] Cálculo de Frete

Recommended Posts

Olá pessoal,

Esse script é um apanhado que consegui pela internet e fui adaptando a minha necessidade, infelismente não tinha os créditos por isso não os coloquei no mesmo, mas acho que pode ajudar muita gente por ai.

 

Bom vamos ao script.

 

calculoFrete.html

 

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Cálculo do Frete</title>

	<!-- Simples css para formatar o resultado !-->
	<style type="text/css">
	<!--
	.texto {font-family: Tahoma}
	-->
	</style>

<link href="texto" rel="stylesheet" type="text/css">
</head>
	
	<!-- Arquivos JS que fazem parte do script !-->
	<script language="javascript" src="js/ajax.js"></script>
	<script language="javascript" src="js/calculoFrete.js"></script>


<body>
<form method="get" action="">
<table width="988" border="0" cellspacing="0" cellpadding="0">
  <tr>
	<td width="408">
	  CEP Destino: 
	  <input name="cepDestino" type="text" id="cepDestino">
	  <input name="postok" type="button" id="postok" value="Calcular" onClick="calculoFrete();">
	  <input name="cepOrigem" type="hidden" id="cepOrigem" value="86975-000">
	  <input name="peso" type="hidden" id="peso" value="10"></td>
	<td width="580"><div class="texto" id="result"></div></td>
  </tr>
</table>
</form> 
</body>
</html>

ajax.js

 

function ajax()
{
	try {
		return new ActiveXObject("Microsoft.XMLHTTP");
	} catch(e) {
		try {
			return new ActiveXObject("Msxml2.XMLHTTP");
		} catch(ex) {
			try {
				return new XMLHttpRequest();
			} catch(exc) {
				alert("Esse browser não tem recursos para uso do AJAX");
				return false;
			}
		}
	}
}

calculoFrete.js

 

// Script para a realização da Busca Instantanêa com Ajax
// Função para iniciar o Ajax no browser do cliente

function openAjax() {

	var ajax;
	
	try{
	   // XMLHttpRequest para browsers decentes, como: Firefox, Safari, dentre outros.
	   ajax = new XMLHttpRequest(); 
	}catch(ee){
		try{
			// Para o IE da MS
			ajax = new ActiveXObject("Msxml2.XMLHTTP"); 
		}catch(e){
			try{
				// Para o IE da MS
				ajax = new ActiveXObject("Microsoft.XMLHTTP"); 
			}catch(E){
				ajax = false;
			}
		}
	}
	return ajax;
}

// Função que realiza a busca instantânea e posiciona em uma div na página principal
function calculoFrete() {
	if( document.getElementById ) { // Para os browsers complacentes com o DOM W3C.
		
		
	var cepOrigem = document.getElementById('cepOrigem').value;
	var cepDestino = document.getElementById('cepDestino').value;
	var peso = document.getElementById('peso').value;
	// div que exibirá o resultado da busca.
	var exibeResultado = document.getElementById('result'); 

		// Verifica se o campo não está vazio, ou se foi digitado no mínimo nove caracteres.
		if(cepOrigem !== "" && cepOrigem !== null && cepOrigem.length >= 9) { 
			
			// Inicia o Ajax.
			var ajax = openAjax(); 
			
			var URL = "calcularFrete.php?cepOrigem="+cepOrigem+"&cepDestino="+cepDestino+"&peso="+peso;
			ajax.open("GET", URL, true);
			
			ajax.onreadystatechange = function() {
				// Quando estiver carregando, exibe: carregando...
				if(ajax.readyState == 1) { 
					exibeResultado.innerHTML = "<span class='texto'>Calculando Frete...</span>";
				}
				// Quando estiver tudo pronto.
				if(ajax.readyState == 4) { 
					if(ajax.status == 200) {
						var resultado = ajax.responseText; 
						// Coloca o resultado (da busca) retornado pelo Ajax nessa variável (var resultado).
						// Resolve o problema dos acentos (saiba mais aqui: http://www.plugsites.net/leandro/?p=4)
						resultado = resultado.replace(/\+/g," "); 
						// Resolve o problema dos acentos
						resultado = unescape(resultado); 
						exibeResultado.innerHTML = resultado;
					} else {
						exibeResultado.innerHTML = "<span class='text'>Erro realizando busca instantânea</span> ";
					}
				}
			}
			// submete
			ajax.send(null); 
		} 
	}
}

calcularFrete.php

 

<?php

		// resgato as variáveis do formulário que aciona o frete
		$srv = 40010;
		$cepOrigem = $_GET["cepOrigem"];
		$cepDestino = $_GET["cepDestino"];
		$peso = $_GET["peso"];
		
		// execução da URL dos correios
		$url = "http://www.correios.com.br/encomendas/precos/calculo.cfm?servico=".$srv."&cepOrigem=".$cepOrigem."&cepDestino=".$cepDestino."&peso=".$peso."&MaoPropria=N&avisoRecebimento=N&resposta=xml";
			
		// inicio a abertura da opção para o php
		ini_set("allow_url_fopen", 1);
		// captura as linhas da URL retornada
		$fonte = file($url);
		
		  // cálculo do frete
		  foreach($fonte as $www) {
			$bsc = "/\<preco_postal>(.*)\<\/preco_postal>/";
			if (preg_match($bsc, $www, $retorno)) {
			  echo "R$ ".number_format($retorno[1], 2, ',', '.');
			} // fim do if
		  } // fim do foreach


?>

Esquema bem simples para o cálculo.

No arquivo .html coloquei os .js em pastas para ficar melhor organizado.

 

Valeu moçada e fiquem na paz.

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.