Post by digaumsmile » Mon Mar 29, 2010 10:31 pm

Olá galera... bom dia!

Primeiramente Parabéns por mais essa iniciativa, realmente vai ajudar bastante gente que usa o OC aqui no Brasil...

Bom, não sei se é só comigo, mas o módulo PAC, tanto do Correios, como doi PagSeguro, não estão funcionando... do nada na semana passada está dando erro...

Visto isso, depois de várias googladas (nossa!) achei um código que utiliza uma outra URL do correio para cálculo do PAC e do tempo de entrega... o problema é implantar no OC, pois não manjo muito de PHP, muito menos de orientado a objetos e MVC (acho que o OC é MVC né?).

eu coloquei o código funcionando pra vcs darem uma olhada http://www.bazarnessa.com.br/frete1.php mas não sei implementar, como havia dito...

Acredito que será a solução definitiva para o problema de cálculo de fretes no OC... pois essa URL dificilmente fica off...

Segue abaixo o código, se puderem ajudar... tá grande pra caramba, pois tá com o css junto...

Code: Select all

<?php
if($_POST) {
function frete($cod_servico,$cep_origem,$cep_destino,$peso,$comprimento=0,$altura=0,$largura=0) {
$cep_destino = eregi_replace("([^0-9])","",$cep_destino);
$cep_origem = eregi_replace("([^0-9])","",$cep_origem);

// Crio um objeto para manipular o XML.
$doc = new DomDocument;

// Carrega o arquivo XML com um arquivo DOMDocument
$doc->Load("http://shopping.correios.com.br/wbm/shopping/script/CalcPrecoPrazo.aspx?StrRetorno=xml&nCdServico=" . $cod_servico . "&nVlPeso=" . $peso . "&sCepOrigem=" . $cep_origem . "&sCepDestino=" . $cep_destino . "&nCdFormato=1&nVlComprimento=" . $comprimento . "&nVlAltura=" . $altura . "&nVlLargura=" . $largura);

// Defino o nome do elemento pai (root).
$root = $doc->getElementsByTagName('cServico');

// Defino o nome dos elementos filhos no arquivo XML que eu desejo.
$children = array('Valor','PrazoEntrega');

// Faço um loop para pegar todos os elementos pai (root) encontrados.
$valor = array();
for ($i=0; $i < $root->length; $i++) {
// Pega o valor do atributo do elemento pai  (root).
$id =  $root->item($i)->getElementsByTagName('Codigo')->item(0)->nodeValue;

if($root->item($i)->getElementsByTagName('Erro')->item(0)->nodeValue > 0) {
echo $root->item($i)->getElementsByTagName('MsgErro')->item(0)->nodeValue;
die;
}

// Busca por elementos filhos (child) definidos no array
foreach ($children as $child) {
$valor[$id][$child] = $root->item($i)->getElementsByTagName($child)->item(0)->nodeValue;
}
}

return $valor;
}

// Código do Serviço que deseja calcular, veja tabela acima:
if ($_POST['cep-destino']) {
//$cod_servico = $_POST['servico'];
$cep_origem = '03633000';// CEP de Origem, em geral o CEP da Loja
$cep_destino = $_REQUEST['cep-destino'];// CEP de Destino, você pode passar esse CEP por GET ou POST vindo de um formulário
$peso = '0.300';// Peso total do pacote em Quilos, caso seja menos de 1Kg, ex.: 300g, coloque 0.300
// COMPRIMENTO: comprimento do volume em centímetros - somente número de 16 a 60
$comprimento = 16;
// LARGURA: largura do volume em centimetros - somente número de 5 a 60
$largura = 11;
// ALTURA: altura do volume em centímetros - somente número de 2 a 60
$altura = 2;
$fretes = frete('41106,40010',$cep_origem,$cep_destino,$peso,$comprimento,$altura,$largura);

foreach ($fretes as $servico => $campos ) {
$valor = str_replace(",", ".", $campos['Valor']);
$valor = $valor;
$valor = number_format($valor,2, ',', '');
if($servico == '41106') {
echo " Valor PAC = R$ " . $valor  . " prazo de entrega {$campos['PrazoEntrega']} dia(s).<br/>";
} elseif ($servico == '40010') {
echo " Valor SEDEX = R$ " . $valor  . " prazo de entrega {$campos['PrazoEntrega']} dia(s).<br/>";
}
}
}

} else {
?>
<!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>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<link href="<a href="http://demo.phaneronsoft.com/img/favicon.ico" rel="shortcut icon" type="image/x-icon" />
<title>Sistema para Calcular Frete SEDEX e PAC a partir de CEP informado. | Phaneronsoft</title>
<script src="http://ajax.googleapis.com/ajax/libs/prototype/1.6.0.3/prototype.js" type="text/javascript"></script>
<script type="text/javascript">
function submitForm() {
/*
usa método request() da classe Form da prototype, que serializa os campos
do formulário e submete (por POST como default) para a action especificada no form
*/
function mostrarLoading(){
$('loading').style.display = 'block';
$('value').innerHTML = ' ';
}

$('form-pesquisa-repasse').request({
onLoading:mostrarLoading,
onComplete: function(transport){
/*
se o retorno for diferente de -1, entende-se que não houve problemas, então apaga-se
os campos do formulário usando o método reset() da classe Form
*/
if(transport.responseText !=-1)  {
$('loading').style.display = 'none';
$('value').innerHTML = transport.responseText;
} else {
$('form-pesquisa-repasse').reset();
$('loading').style.display = 'none';
$('value').innerHTML = 'Erro ao consultar';
}
}

});
return false;
}
</script>
<style type="text/css">

* {
font-family:"Trebuchet MS","Lucida Grande",Verdana,Tahoma,Helvetica,Arial,sans-serif;
font-size:12px;
font-style:normal;
font-variant:normal;
font-weight:normal;
line-height:normal;
}

body {
background:#FFFFFF none repeat scroll 0 0;
height:100%;
margin:0;
margin-top:20px;
width:100%;
}

div#wrapper {
margin:auto;
position:relative;
width:450px;
z-index:0;
}

.select {
text-transform:uppercase;
width:99%;
border:1px solid #B6B6B6;
display:block;
}

.formSearch fieldset {
border:1px solid #CCCCCC;
margin:0;
padding:0 10px;
}

label {
display:block;
/*float:left;*/
margin-right:4px;
padding-bottom:5px !important;
}

legend {
color:#1E398D;
font-family:"Legacy Sans ITC TT Bold","Trebuchet MS","Lucida Grande",Verdana,Tahoma,Helvetica,Arial,sans-serif;
font-size:1.5em;
padding:10px 5px;
}

.button {
background:#F5EED3;
border:1px solid #CCCCCC;
color:#666666;
cursor:pointer;
font-size:12px;
font-weight:bold;
letter-spacing:1px;
margin:10px 0 0;
overflow:visible;
text-transform:uppercase;
width:150px;
}

.formMain .inline {
margin:15px 0 0 !important;
}

.text,  .select,  .textarea, .password {
border:1px solid #B6B6B6;
display:block;
text-transform:uppercase;
}

fieldset span.nameField {
color:#666666;
text-transform:uppercase;
}

h3 {
border-bottom:1px solid #F58220;
margin:0;
padding:0;
}

h3 span {
-x-system-font:none;
color:#1E398D;
font-family:"Legacy Sans ITC TT Bold","Trebuchet MS","Lucida Grande",Verdana,Tahoma,Helvetica,Arial,sans-serif;
font-size:1.5em;
font-style:normal;
font-variant:normal;
font-weight:bold;
line-height:normal;
}

#value {
-x-system-font:none;
color:#9B0000;
font-family:"Legacy Sans ITC TT Bold","Trebuchet MS","Lucida Grande",Verdana,Tahoma,Helvetica,Arial,sans-serif;
font-size:1.5em;
font-style:normal;
font-variant:normal;
font-weight:bold;
line-height:normal;

}

#rastrear {
padding-top:30px;
}

#loading {
display:none;
color:#9B0000;
font-family:"Legacy Sans ITC TT Bold","Trebuchet MS","Lucida Grande",Verdana,Tahoma,Helvetica,Arial,sans-serif;
font-size:1.5em;
font-style:normal;
font-variant:normal;
font-weight:bold;
line-height:normal;
text-transform:capitalize;
}
</style>

</head>
<body>
<center>
</center>
<div id="wrapper">
<h3>
<span>Pesquisa valor de frete</span>

</h3>
<form id="form-pesquisa-repasse" action="" method="post" onsubmit="submitForm(); return false;" class="formMain formSearch wsizep100">
<fieldset>
<legend>Filtrar Referência</legend>
<label class="wsize010" for="cep-destino">
<span class="nameField">CEP Destino</span>
<input id="cep-destino" class="text" type="text" value="" maxlength="8" title="CPF destino" name="cep-destino" tabindex="2"/>
</label>
<label for="pesquisar" class="wsize010">
<input type="button" onclick="submitForm(); return false;" value="pesquisar" class="button inline"/>
</label>
</fieldset>
</form>
<span>* Digitar somente número no CEP</span>
<br />
<span id="value"></span>
<span id='loading'>Pesquisando...</span>
</div>
</body>
</html>
<?php
} // fim else

?>
Só tá faltando isso pra eu colocar a loja da minha esposa no ar, pois 95% das remessas dela são por PAC...

Muito obrigado desde já...

Abraços à todos e parabéns mais uma vez

Rodrigo

Rodrigo


Newbie

Posts

Joined
Mon Mar 22, 2010 7:12 pm

Post by leovicio » Mon Mar 29, 2010 10:54 pm

Nossa outra versão do opencarta sai uma toda semana heheh

ai aja tempo para fazer tanto modulo

User avatar
Newbie

Posts

Joined
Sun Apr 12, 2009 11:43 am

Post by digaumsmile » Tue Mar 30, 2010 12:30 am

leovicio wrote:Nossa outra versão do opencarta sai uma toda semana heheh

ai aja tempo para fazer tanto modulo
Post errado? ???

Ow leo... dá uma ajuda ai... é o mesmo código que te pasei por email...

Valeu!

Rodrigo


Newbie

Posts

Joined
Mon Mar 22, 2010 7:12 pm

Post by sirskull » Tue Mar 30, 2010 3:35 am

não consegui verificar nesse url ai... não sai do "Pesquisando..."

Igor S. Costa


User avatar
New member

Posts

Joined
Sat Mar 27, 2010 2:45 pm

Post by digaumsmile » Tue Mar 30, 2010 8:19 am

Sei lá... acho que o server que está hospedado o bazar da minha esposa tava zuado, em manutenção ou algo assim... de qquer forma, segue o link com o código de onde eu peguei...

http://www.phaneronsoft.com/exemplos/co ... orreio.php

abraço

Rodrigo


Newbie

Posts

Joined
Mon Mar 22, 2010 7:12 pm

Post by digaumsmile » Wed Mar 31, 2010 9:49 am

Olá pessoal novamente...
To tentando por minha conta aqui mas tá osso de conseguir.... se alguém puder ajudar... I'll really appreciate! rsrs...

Abraços

Rodrigo


Newbie

Posts

Joined
Mon Mar 22, 2010 7:12 pm

Post by sirskull » Thu Apr 01, 2010 2:15 am

ah se eu soubesse implantar isso no Opencart :(

Igor S. Costa


User avatar
New member

Posts

Joined
Sat Mar 27, 2010 2:45 pm

Post by Andre_fsa_lp » Sat Apr 03, 2010 1:42 pm

Aqui o módulo do Sedex funciona, mas o do PAC não.

Newbie

Posts

Joined
Sat Mar 27, 2010 8:03 pm

Post by digaumsmile » Sun Apr 04, 2010 6:18 am

Então... o Sedex é calculado certinho... o problema tá no PAC... pior que é o que mais uso...

No aguardo

Rodrigo


Newbie

Posts

Joined
Mon Mar 22, 2010 7:12 pm

Post by Andre_fsa_lp » Mon Apr 05, 2010 11:19 am

Assim, pelo que vi, o site dos correios calcula o frete, sendo PAC ou SEDEX, dependendo de um código.
Os outros valores são semelhantes.
seguindo essa lógica, os módulos do PAC e SEDEX deveriam ser iguais, alterando somente o código de envio?

infelizmente não sei nada sobre POO. :-\

Newbie

Posts

Joined
Sat Mar 27, 2010 8:03 pm

Post by digaumsmile » Mon Apr 05, 2010 8:01 pm

Então... o código do PAC é 41106, mas por essa URL que está atualmente ele não tá calculando, não sei por que, já nessa nova URL dos correios que achei o código é o mesmo e ele calcula certinho... unf!

Abraço

Rodrigo


Newbie

Posts

Joined
Mon Mar 22, 2010 7:12 pm

Post by sirskull » Thu Apr 08, 2010 6:05 am

o problema deve ta nos valores que tem a acrescentar agora, tentei da uma olhada e comparei o modulos sedex, e pac.. modifiquei algumas linhas, quebrei a cabeça e nada de funcionar;..

acho q vo ler novamente minhas apostilas de php heheh... to fraco =\

Igor S. Costa


User avatar
New member

Posts

Joined
Sat Mar 27, 2010 2:45 pm

Post by digaumsmile » Thu Apr 08, 2010 10:27 pm

Putz sirskull, valeu mesmo pela ajuda...

Vc acredita que eu estou com a loja toda pronta, só isso falta pra colocá-la online, mas preciso resolver antes...

Devido este problema com o OC, infelizmente estou começando a implementar no PrestaShop.

É a primeira vez que implemento loja virtual, somente tinha feitos sites em PHP, e achei o OC ótimo, resolvendo isso eu nunca mais atualizo ele... rsrs...

Abraços

Rodrigo


Newbie

Posts

Joined
Mon Mar 22, 2010 7:12 pm
Who is online

Users browsing this forum: No registered users and 1 guest