foto
Alisson O Blog

Alisson O Blog

Magento e os idiomas que o computador fala…

Magento: Table Rate Shipping ou Frete por Taxas de Tabela

10 de julho de 2009

Olá.. Não sei se vou ajudar alguém com este post mas, pelo que me consta, existe uma certa dificuldade em fazer o Table Rate funcionar no Magento. Sendo assim, vou contar essa aventura de +ou- 6 horas de busca incansável pelas poucas linhas de código que resolveriam meus problemas. Enfim, tive essa necessidade com um cliente aqui da Indexa, que precisava enviar seus produtos através de uma transportadora. Recebi as informações de cobrança em uma colorida e extensa (literal e lateralmente) planilha do Excel, que, depois de muitos ctrl+c ctrl+v, se tornou um resultado típico de uma SQL, depois transformado no formato CSV, que é o que o Magento lê, a seguir:

“País”,”Estado”,”CEP”,”Peso (e acima)”,”Valor do frete”
“BR”,”RJ”,”*”,”0.25″,”11.71″
“BR”,”RJ”,”*”,”0.5″,”12.39″
“BR”,”RJ”,”*”,”0.75″,”13.07″

Sendo assim, para qualquer CEP do estado RJ com produtos pesando até 250 gramas o preço de envio fica R$ 11,71,  de 251 gramas até 500 gramas custa R$ 12,39, e assim por diante, com uma regra pra cada estado. Porém, como problemática típica, pra cada estado existem 2 valores: um para capital, e outro para interior. Nesse caso, apesar de existirem extensões para tabelas múltiplas, como nos links a seguir:

http://www.magentocommerce.com/extension/306/pickup-at-event–multiple-flatrates
http://www.magentocommerce.com/extension/1357/product-matrix-shipping
http://www.magentocommerce.com/extension/728/multiple-tablerates

…acabei optando por cadastrar Regions diferentes (como “São Paulo – Interior” e “São Paulo – Capital”), o que agradou mais esse cliente em específico, por já facilitar a diferenciação da taxa a ser utilizada através de uma simples olhada no endereço do cliente.

Refiz então o CSV para essa nova situação, usando siglas como “RJI” para o interior do “Rio de Janeiro – Interior” e “RJC” para “Rio de Janeiro – Capital”, modificando isso tudo lá nas tabelas de Regions do MySQL do Magento… Mas, ao fazer o upload do CSV pela tela de configuração (ver imagem mais abaixo no post) um erro de “undefined index” me foi mostrado. Não sei se há um jeito melhor de resolver isso, porque todos os índices estavam corretos e etc, mas tive de fazer a seguinte alteração no core pro arquivo conseguir ser processado corretamente. Me pareceu um pequeno bugfix:

/www/app/code/core/Mage/Shipping/Model/Mysql4/Carrier/Tablerate.php
001

Certo, na linha 202 adicionei aquele if checando se o índice existe antes de indexá-lo e tudo pareceu correr bem a partir de então… Fiz mais 2 mudanças no core para o Tablerate funcionar corretamente pro meu caso:

/www/app/code/core/Mage/Shipping/Model/Mysql4/Carrier/Tablerate.php
002

As condições dessa query são bem importantes pra definir como o Magento traz os resultados da Tablerate e o relaciona com os produtos e o peso. No print acima está como as minhas condições acabaram ficando. Na próxima e última alteração, fiz com que a listagem de estados lá do frontend viesse em ordem alfabética. Para isso, criei uma função que ordena o array das regiões do Brasil, sem modificar seus índices:

/www/app/code/Mage/Directory/Helper/Data.php
003

Bom, partindo para a configuração final, logo abaixo segue a tela com as opções que selecionei lá nas configurações do admin e que deixou tudo funcionando no checkout… Pra chegar até esta tela clique em Sistema->Configurações e selecione Taxas de Tabela, e lembre-se de selecionar o website pra essas opções aparecerem!

tax_rates

E agora um print do resultado dessa brincadeira no frontend:

frontend_multi_table_rate

Valeu pessoal, espero ajudar aí e até a próxima! :D

Tags: , , , , , , ,

15 comentários para “Magento: Table Rate Shipping ou Frete por Taxas de Tabela”

  1. Higor Borges Paulinelli disse:

    Olá Alisson Oldoniestou montando uma loja virtual usando a plataforma Magento, e não etou conseguindo implantar o calculo de frete.
    Gostaria de saber se você presta algum tipo de consultoria.

    Aguardo retorno. Atenciosamente,

  2. Alisson Oldoni disse:

    Olá Higor,
    Sim, aqui na Indexa Internet prestamos consultoria específica de Magento. Como já lhe falei por email, encaminhei seu pedido ao nosso dpto. comercial que entrará em contato com você. Obrigado por visitar meu blog, e pena o post não ter sido suficiente para ajudá-lo!

  3. Ricardo Alexandre disse:

    Olá, gostaria de saber como faço para colocar frete gratis por região,minha lojá tem plataforma magento,
    aguardo contato
    obrigado

  4. Alisson Oldoni disse:

    Olá, imaginamos, por cima, possíveis soluções utilizando a promoção (por região/estado) ou usando o próprio frete por tabela (por faixa de cep).

  5. Ricardo Alexandre disse:

    ok como faço para criar a regra de frete grpatis por região e habilitar

  6. Ricardo Alexandre disse:

    Alisson, eu achei onde fica a faixa de cep, mais não estou conseguindo concluir o serviço, por favor me ajude, gostaria que me passe passo a passo

  7. Alexandre disse:

    Muito interessante trabalhar desta forma, terei um pouco de dificuldade com certeza porém a dica já está dada, muito obrigado mesmo Alisson! Espero que este ano sejamos amigos diferente dos impasses do ano passado ~.~

    Outra boa dica também seria sobre alteração do carrinho de compras, deixando mais com a cara da loja. Isso tem fóruns lá de sobra, mas bem explicado igual aqui não.

    Flz 2010 para todos!

  8. Charles disse:

    Olá Alisson, joia ! Estou montando uma loja, e como o sistema de PAC dos correios nao esta funcional e nao tenho um modulo adaptado para calcular volume, pois pelo que sei essa é a nova exigencia do novo sistema, estou usando o modulo de calculos de frete que é instalado com o modulo de pagamento pagseguro, pois bem, funciona bem a nao ser pelo fato de que o calculo de frete do PS é baseado no serviço de contrato com os correios, entao é mais barato, 3 reais pra ser exato, entao gostaria de saber como eu poderia modificar para q eu pudesse adicionar este valor ao valor final do frete do pagseguro no proprio calculo de cotação !!! aguardo seu auxilio !

  9. Alisson Oldoni disse:

    Olá Charles.

    Nós já temos o módulo de Correios adaptado para calcular volume. Entre em contato com comercial@indexainternet.com.br para maiores informações. Quanto ao seu módulo do Pagseguro infelizmente não vou poder ajudar só com estas informações… Tente procurar as classes dentro do diretório Model/Carrier do seu módulo. Lá se encontra o arquivo que faz o cálculo e talvez adicionando 3 ao valor retornado pelo Pagseguro possa ajudar. Vale lembra que, mesmo assim, o cálculo continuará retornando um valor diferente do praticado no balcão, é impossível um valor mais aproximado sem um cálculo correto do peso cúbico que utiliza a largura, altura e comprimento.

    Obrigado pela visita!

  10. Rodiney disse:

    A Indexa domina…ta loco..não existe a frase “não dá pra fazer isso ou aquilo”! Parabéns!

  11. Raul disse:

    Tem como usar o table rates para apenas uma cidade?
    Do cep 18000-001 a 18109-999…

    Vlw

  12. Marcos disse:

    achei na net – Modulo Cadastral para clientes do Brasil – magento
    esse modulo de cadastro de clientes permite a escolha entre pessoas físicas e jurídicas, endereço preenchimdo automáticamente ao colocar o CEP, validação e ocultação de campos.
    versoes:
    versão 1.4.0.1 do Magento Ecommerce.
    versão 1.4.1.1 do Magento Ecommerce.
    versão 1.4.2.0 do Magento Ecommerce.
    - nao sei de quem é o credito
    LINKS:
    http://www.megaupload.com/?d=7GZH2OCG

    http://www.easy-share.com/1913435033/modulo.cad.clientes.magento.1.0.pt.br.rar

  13. Marco Souza disse:

    Tem como por exemplo calcular o GRIS com Table Rates?

  14. Guilherme disse:

    Pessoal reinstalei o magento no servidor da UOLHost, quando eu finalizo a compra sem calcular o frete no carrinho de compras funciona normalmente até da o valor do frete sedex e pac tudo normal, só que quando mando calcular o cep no carrinho de compras da o seguinte erro (An internal server error occurred. Please try again later.) e o site fica fora do ar um tempão.

    Alguém sabe o que pode ser, estou usando um tema, mais creio que o problema possa estar no arquivo do carrinho de compras, alguém já teve este problema,

    Agradeço a todos e obrigado

  15. Eneias Camargo disse:

    Ola,

    Estou tentando configurar o table rates conforme vc explicou, mas não esta dando certo…quando chego na tela de carrinho de compras(o ultimo print seu do post) não aparece o metodo de entrefa configurado, e também não da erros na tela nem no log. Qual a versão que você usou? eu estou usando a 1.6.

    Você sabe se existe algum bug para esta vesão?

    Att,
    Eneias

Deixe um comentário



© 2012 - Indexa Ltda. Todos os direitos reservados.