Sistema para Calcular Frete SEDEX e PAC a partir de CEP informado.

CSS, Expressões Regulares, HTML, Internet, Javascript, PHP, Sites View Comments Marcelo Korjenioski

Estava pre­ci­sando cal­cu­lar o envio de SEDEX para ven­der alguns pro­du­tos no mer­cado livre e fui pro­cu­rar no Goo­gle se alguem já tinha cri­ado algo para sim­pli­fi­car o cal­culo para agi­li­zar para o usuá­rio.
Entrei um código no fórum http://forum.prestashopbr.com e fiz alguma alte­ra­ções para se encai­xar no que eu pre­ci­sava. Estou com­par­ti­lhando o código.

Exem­plo fun­ci­o­nando.

<?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://ws.correios.com.br/calculador/CalcPrecoPrazo.aspx?StrRetorno=xml&amp;nCdServico=" . $cod_servico . "&amp;nVlPeso=" . $peso . "&amp;sCepOrigem=" . $cep_origem . "&amp;sCepDestino=" . $cep_destino . "&amp;nCdFormato=1&amp;nVlComprimento=" . $comprimento . "&amp;nVlAltura=" . $altura . "&amp;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 = '81010210';// 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 = 30;
// ALTURA: altura do volume em centímetros - somente número de 2 a 60
$altura = 15;
// LARGURA: largura do volume em centimetros - somente número de 5 a 60
$largura = 20;
$fretes = frete('41106,40010',$cep_origem,$cep_destino,$peso,$comprimento,$altura,$largura);

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

} else {
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd</a>">
<html xmlns="<a href="http://www.w3.org/1999/xhtml">http://www.w3.org/1999/xhtml</a>">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link href="<a href="http://demo.phaneronsoft.com/img/favicon.ico">http://demo.phaneronsoft.com/img/favicon.ico</a>" rel="shortcut icon" type="image/x-icon" />
<title>Sistema para Calcular Frete SEDEX e PAC a partir de CEP informado. | Phaneronsoft</title>
<script src="<a href="http://ajax.googleapis.com/ajax/libs/prototype/1.6.0.3/prototype.js">http://ajax.googleapis.com/ajax/libs/prototype/1.6.0.3/prototype.js</a>" 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="9" 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

?>

Caso tenha alguma duvida deixe um comen­tá­rio que terei pra­zer em aju­dar.
Comen­tá­rios são bem vin­dos assim posso melho­rar a qua­li­dade dos tuto­ri­ais aqui apresentados.

<?php

//script original pego em http://forum.prestashopbr.com/viewtopic.php?f=9&amp;t=322&amp;start=30

#####################################
# Código dos Serviços dos Correios  #
#    FRETE PAC = 41106       #
#    FRETE SEDEX = 40010       #
#    FRETE SEDEX 10 = 40215       #
#    FRETE SEDEX HOJE = 40290    #
#    FRETE E-SEDEX = 81019       #
#    FRETE MALOTE = 44105       #
#    FRETE NORMAL = 41017       #
#   SEDEX A COBRAR = 40045       #
#####################################
if($_POST) {
// Código do Serviço que deseja calcular, veja tabela acima:
if ($_POST['servico']) {
$cod_servico = $_POST['servico'];
}
// CEP de Origem, em geral o CEP da Loja
$cep_origem = '81010210';
// CEP de Destino, você pode passar esse CEP por GET ou POST vindo de um formulário

$cep_destino = $_POST['cep-destino'];

$cep_destino = eregi_replace("([^0-9])","",$cep_destino);

// Peso total do pacote em Quilos, caso seja menos de 1Kg, ex.: 300g, coloque 0.300
$peso = '0.300';
// URL de Consulta dos Correios
$correios = "http://www.correios.com.br/encomendas/precos/calculo.cfm?servico=".$cod_servico."&amp;cepOrigem=".$cep_origem."&amp;cepDestino=".$cep_destino."&amp;peso=".$peso."&amp;MaoPropria=N&amp;avisoRecebimento=N&amp;resposta=xml";

// Capta as informações da página dos Correios
$correios_info = file($correios);
// Processa as informações vindas do site dos correios em um Array
foreach($correios_info as $info){
// Busca a informação do Preço da Postagem
if(preg_match("/\<preco_postal>(.*)\<\/preco_postal>/",$info,$tarifa)){
$embalagem = 4.00; // Aqui você  pode colocar o valor da embalagem para envio do produto
$total = $tarifa[1] + $embalagem;
}
}

// Neste exemplo estou colocando apenas PAC e SEDEX
switch ($cod_servico) {
case 41106:
$nome_servico = "Valor do frete via PAC ";
break;
case 40010:
$nome_servico = "Valor do frete via SEDEX ";
break;
}

// Caso venha valor de resposta é numerio e maior que o custo da embalagem senão ocorreu algum erro na solicitação.
if(is_numeric($total) &amp;&amp; ($total > $embalagem)) {
// Quando encontra o valor da postagem, exibe na página formatando em padrão de moeda 10,89
// Caso você não queira formatar basta comentar a linha abaixo que será exibido assim 10.89 e basta executar o comando abaixo
$total = number_format($total,2,',','.');
echo $nome_servico . $total;
} else {
echo 'Erro ao consultar verifique se CEP esta correto';
}
} else {
?>
<html>
<head>
<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(form) {
/*
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
*/
form.request({
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)  {
$('value').innerHTML = transport.responseText;
} else {
form.reset();
$('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;
}

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

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

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

.formMain 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;
}

.formMain .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:100%;
}

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

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

.formMain 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;
}
</style>

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

</h3>
<form id="form-pesquisa-repasse" action="" method="post" onsubmit="submitForm(this); return false;">
<fieldset>
<legend>Filtrar Referência</legend>
<label for="servico">
<span>Envio</span>
<select id="servico" name="servico" title="Serviços dos Correios" tabindex="1">
<option value="41106">PAC</option>
<option value="40010">SEDEX</option>
</select>
</label>
<label for="cep-destino">
<span>CEP Destino</span>
<input id="cep-destino" type="text" value="" maxlength="9" title="CPF destino" name="cep-destino" tabindex="2"/>
</label>
<label for="pesquisar">
<input type="submit" id="pesquisar" name="pesquisar" tabindex="3"  value="Pesquisar" />
</label>
</fieldset>
</form>
<span>* Digitar somente número no CEP</span>
<br />
<span id="value"></span>
</div>
</body>
</html>
<?php
} // fim else
?>

Diferença entre sites .com e .com.br

Internet, Sites View Comments Marcelo Korjenioski

Qual a dife­rença entre um domí­nio “.com” e um “.com.br”?

Cada país pos­sui um orgão res­pon­sá­vel pelos regis­tro de domí­nios.
No Bra­sil chama-se Fapesp (www.fapesp.br),
Nos EUA, o órgão res­pon­sá­vel chama-se Inter­nic.
Fapesp e Inter­nic são inde­pen­den­tes, e regis­tram domí­nios com ter­mi­na­ções dife­ren­tes.
Vale lem­brar que o paga­mento das taxas cobra­das para Fapesp ou Inter­nic para o regis­tro e manu­ten­ção de domí­nios são de res­pon­sa­bi­li­dade do pro­pri­e­tá­rio do domí­nio.
fonte: http://www.3dwebstudio.com.br/duvidas/6.htm

Sites .com

Os sites que tem a ter­mi­na­ção do seu nome como .com são conhe­ci­dos como domí­nios gené­ri­cos, ou seja, não estão asso­ci­a­dos a nenhum pais em espe­cí­fico.
Sites .com.br

Os sites que tem a ter­mi­na­ção do seu nome como .com.br são domí­nios regi­o­nais e estão asso­ci­a­dos com o Bra­sil, isto é, foram regis­tra­dos no Bra­sil e são man­ti­dos pelo CGI — Comitê Ges­tor da Inter­net no Brasil.

fonte: http://www.luis.blog.br/

.AERO Indús­trias de trans­porte aéreo
.BIZ Busi­ness, geral­mente esco­lhido para negó­cios
.COM Empre­sas comer­ci­ais
.COOP Coo­pe­ra­ti­vas
.EDU Ins­ti­tui­ções edu­ca­ci­o­nais (esco­las e uni­ver­si­da­des)
.GOV Ins­ti­tui­ções gover­na­men­tais
.INT Ins­ti­tui­ções inter­na­ci­o­nais
.INFO Sites infor­ma­ti­vos ou de divul­ga­ção
.MIL Ins­ta­la­ções mili­ta­res
.MUSEUM Museus
.NAME Para indi­ví­duos
.NET Com­pa­nhias ou orga­ni­za­ções que admi­nis­tram gran­des redes
.ORG Orga­ni­za­ções sem fins lucra­ti­vos e/ou que não se enqua­dram em nenhum dos outros casos
.PRO Con­ta­do­res, advo­ga­dos, físi­cos e outros pro­fis­si­o­nais
.TV Sites vol­ta­dos a assun­tos televisivos

fonte: forum.clubedohardware.com.br/

Caso tenha alguma duvida deixe um comen­tá­rio que terei pra­zer em aju­dar.
Comen­tá­rios são bem vin­dos assim posso melho­rar a qua­li­dade dos tuto­ri­ais aqui apresentados.

Informação sobre tráfego da internet brasileira.

Ferramentas, Internet, Sites View Comments Marcelo Korjenioski

Infor­ma­ção sobre trá­fego da inter­net brasileira.

PTT METRO

Caso tenha alguma duvida deixe um comen­tá­rio que terei pra­zer em aju­dar.
Comen­tá­rios são bem vin­dos assim posso melho­rar a qua­li­dade dos tuto­ri­ais aqui apresentados.

Site com tecnicas de SEO (Search Engine Optimization) SEOMOZ.ORG

Ferramentas, Internet, Sites View Comments Marcelo Korjenioski

Site com tec­ni­cas de SEO (Search Engine Opti­mi­za­tion) ou em bom por­tu­guês Oti­mi­za­ção para Meca­nis­mos de Pes­quisa (Goo­gle, Yahoo, Cuil e etc). No seomoz.org existe um Cheat Sheet (folha de cola) cha­mado The web deve­lo­pers seo cheat sheet onde con­tem varias téc­ni­cas de oti­mi­za­ção para sites indi­cando o uso cor­reto das tags HTML e Metatags.

Caso tenha alguma duvida deixe um comen­tá­rio que terei pra­zer em aju­dar.
Comen­tá­rios são bem vin­dos assim posso melho­rar a qua­li­dade dos tuto­ri­ais aqui apresentados.

FTP Online — http://www.net2ftp.com/

Ferramentas, Internet, Sites View Comments Marcelo Korjenioski

Ótimo site de ftp online com ele é pos­si­vel edi­tar , remo­ver e adi­ci­o­nar seus arquivos.

Para aces­sar cli­que aqui.

Caso tenha alguma duvida deixe um comen­tá­rio que terei pra­zer em aju­dar.
Comen­tá­rios são bem vin­dos assim posso melho­rar a qua­li­dade dos tuto­ri­ais aqui apresentados.

Designed by NattyWP Wordpress Themes.
Images by desEXign.