Magento Forum

Correios - status :: em Desenvolvimento
 
tubadc
Sr. Member
 
Total Posts:  95
Joined:  2008-05-07
Floripa | BR
 

Galera cansei de esperar e vou partir pro desenvolvimento wink quem quiser ajudar seria ótimo, afinal isso aqui é OPEN SOURCE (ainda...), então bora lá…

Procurando aqui no bkp achei uma função ,não pergunte de onde é nem de quem pois não lembro, cheguei em uma função razoável… pra começar a implementar…

Ela calcula independente do serviço… dando a opção de você colocar para o cliente o método que lhe convier… segue o código, o qual pode ser melhorado claro… mas em cima dele que vou me basear para injetar no magento…

correios.php

<form id="form1" name="form1" method="post" action="">
  
CEP Origem:
  <
label>
  <
input type="text" name="origem" id="origem" />
  </
label>
  <
p>CEP Destino
    <
label>
    <
input type="text" name="destino" id="destino" />
    </
label>
  </
p>
  <
p>Peso: <select name=peso size=1 id="peso">
<
option value=0.3 selected>0,300</option>
<
option value=1>1</option>
<
option value=2>2</option>
<
option value=3>3</option>
<
option value=4>4</option>
<
option value=5>5</option>
<
option value=6>6</option>
<
option value=7>7</option>
<
option value=8>8</option>
<
option value=9>9</option>
<
option value=10>10</option>
<
option value=11>11</option>
<
option value=12>12</option>
<
option value=13>13</option>
<
option value=14>14</option>
<
option value=15>15</option>
<
option value=16>16</option>
<
option value=17>17</option>
<
option value=18>18</option>
<
option value=19>19</option>
<
option value=20>20</option>
<
option value=21>21</option>
<
option value=22>22</option>
<
option value=23>23</option>
<
option value=24>24</option>
<
option value=25>25</option>
<
option value=26>26</option>
<
option value=27>27</option>
<
option value=28>28</option>
<
option value=29>29</option>
<
option value=30>30</option>
</
select></p>
  <
p>Serviço:<select name="servico">
<
option value=40010>SEDEX</option>
<
option value=40290>SEDEX Hoje</option>
<
option value=40215>SEDEX 10</option>
<
option value=40045>SEDEX a Cobrar</option>
<
option value=41017 selected>Encomenda Normal</option>
</
select>
    <
input name="procura" type="hidden" id="procura" value="1" />
  </
p>
  <
p>
    <
label>
    <
input type="submit" name="button" id="button" value="Calcula Valor" />
    </
label>
  </
p>
</
form>

<?
if (isset($_POST['procura'])){

    
include "funcaoCorreios.php";

//chama a função depois do post
    
$correios getCorreios($_POST['origem']$_POST['destino'$_POST['peso']$_POST['servico']);
    
//exibe valor do correios
    
echo "R$ " number_format($correios["valor"]2","","); //valor do correios
}

?>

funcaoCorreios.php

<?php
    
function getCorreios($cepOrigem$cepDestino $peso$servico)
    
{
        $urlCorreios 
"http://www.correios.com.br/encomendas/precos/calculo.cfm?resposta=xml&servico;=$servico&cepOrigem;=$cepOrigem&cepDestino;=$cepDestino&peso;=$peso";
        
$urlCorreios sprintf($urlCorreios$cepOrigem$cepDestino$peso);
        
//carrega url dos correios
        //caso o seu servidor não permita o uso da função file para url's externas
        //recomenda-se a utilização de CURL - http://www.php.net/manual/en/ref.curl.php
        
$carrega file($urlCorreios) or die("Problemas em obter os dados dos correios");
        
//tratando string xml obtida. Removendo espaços e linhas para facilitar...
        
$conteudo trim(str_replace(array("\n"chr(13)), ""implode($carrega"")));
        if(
strlen($conteudo) <1) return false;
        
//informações de origem tratadas com RegExp...
        
preg_match_all("/<uf_origem>(.+)<\/uf_origem>/"$conteudo$uf_origem);
        
preg_match_all("/<local_origem>(.+)<\/local_origem>/"$conteudo$local_origem);
        
preg_match_all("/<cep_origem>(.+)<\/cep_origem>/"$conteudo$cep_origem);
        
//informações de destino tratadas com RegExp...
        
preg_match_all("/<uf_destino>(.+)<\/uf_destino>/"$conteudo$uf_destino);
        
preg_match_all("/<local_destino>(.+)<\/local_destino>/"$conteudo$local_destino);
        
preg_match_all("/<cep_destino>(.+)<\/cep_destino>/"$conteudo$cep_destino);
        
//informações sobre a encomenda tratadas com RegExp...
        
preg_match_all("/<peso>(.+)<\/peso>/"$conteudo$peso);
        
preg_match_all("/<preco_postal>(.+)<\/preco_postal>/"$conteudo$preco_postal);
        
//objeto contendo as informações sobre o frete...
        
$correios = array(
            
"uf_origem" => $uf_origem[1][0],
            
"local_origem" => $local_origem[1][0],
            
"cep_origem" => $cep_origem[1][0],
            
"uf_destino" => $uf_destino[1][0],
            
"local_destino" => $local_destino[1][0],
            
"cep_destino" => $cep_destino[1][0],
            
"peso" => floatval($peso[1][0]),
            
"valor" => floatval($preco_postal[1][0])
        );
        return 
$correios;
    
}
    
?>

Acredito que no FDS termino… ta corrido aqui no trampo.... 21h15 agora vo vaza… flw…

abs

 
Magento Community Magento Community
Magento Community
Magento Community
 
Weblibre
Member
 
Avatar
Total Posts:  49
Joined:  2008-06-10
Presidente Prudente, São Paulo, Brazil
 

Obrigado pelo excelente trabalho.

 
Magento Community Magento Community
Magento Community
Magento Community
 
PedroTeixeira
Sr. Member
 
Avatar
Total Posts:  136
Joined:  2008-05-28
Brazil
 

Eai galera!

Sou programador PHP já faz alguns anos, tenho uma loja virtual em OsCommerce [ www.causaganha.com.br ] e estou implantando uma nova loja agora em Magento.

Bom, irei criar os módulos para entrega e pagamento, seguindo minhas necessidades irei criar uma módulo de entrega baseado em SEDEX e um de cobrança baseado em COBREBEM.

Nunca trabalhei com o Framework Zend e acho que como a maioria estou ralando para entender, mas hoje já consegui fazer o módulo de SEDEX versão beta, com um problema, rodando dentro da estrutura de módulos do Magento, ou seja, “core/Mage”.

Assim que eu passar o módulo para o “local” e terminar a lógica posto as novidades aqui.

Abraços a todos!

 
Magento Community Magento Community
Magento Community
Magento Community
 
tubadc
Sr. Member
 
Total Posts:  95
Joined:  2008-05-07
Floripa | BR
 

Estou com o módulo funcionau dos correios, vou terminar a limpeza do código e postar aqui amanhã, ou ainda hj se conseguir uma brecha aqui....

Ele calcula pra Sedex / Sedex10 / Encomenda Normal / PAC

abs

 
Magento Community Magento Community
Magento Community
Magento Community
 
PedroTeixeira
Sr. Member
 
Avatar
Total Posts:  136
Joined:  2008-05-28
Brazil
 

Ele está rodando onde tubac?

Abraços!

 
Magento Community Magento Community
Magento Community
Magento Community
 
PedroTeixeira
Sr. Member
 
Avatar
Total Posts:  136
Joined:  2008-05-28
Brazil
 

Eai pessoal,

Com a ajuda do tubadc, consegui finalizar o módulo dos correios: http://www.magentocommerce.com/boards/viewthread/9988/

Abraços!

 
Magento Community Magento Community
Magento Community
Magento Community
Magento Community
Magento Community
Back to top