Tabela de Cálculo – Table Rate

Escrito por Mario SAM

A tabela de cálculo, também conhecida como table rate no Magento, nada mais é do que uma forma de calcular o valor da entrega usando preços tabelados (em forma de planilha eletrônica).

É uma alternativa muito utilizada (e muito útil) quando o webservice dos correios está fora do ar, ou mesmo quando você trabalha com transportadoras.

Vamos ver neste post como podemos habilitar este módulo e algumas dicas de como configurar esta tabela de cálculo misteriosa.

Habilitando o módulo

Habilitar este módulo exige um certo truque de configuração, como veremos a seguir. Mas antes acesse:

Sistema > Configuração > Vendas > Formas de Entrega [Tabela de Cálculo]

Comece marcando “Sim” no campo Habilitado. Na sequência temos os campos Título e Nome do Método, que no frontend serão exibidos da seguinte forma:

table rate no frontend

No campo “Condição” é onde precisamos definir a base de nosso cálculo, se vamos cobrar baseados na informação de “Peso x Destino“, “Preço x Destino“, ou “Total de Itens x Destino“.

Aqui não existe escolha certa ou errada, vai depender do tipo de produto que você comercializa, e do tipo de contrato que possui com a transportadora.

O campo “Incluir produto virtual no cálculo de preço” também vai depender do seu tipo de produto, pois muitas lojas não possuem nenhum item virtual no seu catálogo, enquanto outras trabalham exclusivamente com produtos virtuais.

Neste caso faça uma análise de custos. Você possui algum gasto ao entregar este produto virtual que queira repassar ao seu cliente? Talvez você precise utilizar outros softwares comerciais para efetuar uma entrega personalizada (mesmo que virtual).

Em “Calcular Valor da Embalagem” e no campo seguinte “Embalagem“, você pode acrescentar um valor fixo ou percentual sobre o valor informado na tabela de cálculo, para cobrir os custos que você tem com empacotamento.

Os próximos 3 (três) campos trabalham juntos. “Mensagem de erro apresentada“, “Entrega permitida para países“, e “Entrega para países específicos“.

Talvez você queira exibir a tabela de cálculo apenas para clientes do Brasil, pois sua tabela contempla apenas os estados brasileiros. Então se você selecionar o Brasil como país específico, sempre que alguém de outro país tentar utilizar esta forma de entrega vai receber a mensagem de erro informada no campo “Mensagem de erro apresentada“.

Tem o campo “Exibir forma se não disponível” que só aparece se você selecionar a opção anterior “Países selecionados“.

E o último campo “Ordem“, é referente a sequência de apresentação na tela de opções de entrega. Então você pode definir se esta forma de entrega vem antes ou depois de outros meios de entrega disponíveis – o menor valor representa quem deve vir primeiro (0…9).

A mágica

Você habilitou o módulo, mas ele ainda não funciona – nada acontece no frontend, afinal, você não preencheu nenhuma tabela ainda. Aliás, você nem sabe que tabela é essa, onde consigo uma!?

Ainda na mesma tela de configuração, após clicar no botão salvar. No menu à esquerda, no alto selecione um website para gerenciar – o padrão seria: Main Website (Website Principal).

selecionando website

Agora você deve ver dois novos campos na tela. Exportar e Importar.

exportar e importar table rate

Quando você clica em exportar, será feito o download de um arquivo “tablerates.csv” para seu diretório de download’s padrão. É uma planilha de textos comum, com células para serem preenchidas.

Você pode usar o editor que preferir, desde que mantenha o padrão de separação dos campos e o tipo de charset (UTF-8) do documento ao salvar. No meu exemplo utilizei o OpenOffice.org.

Depois que você aprender a preencher a tabela, pode enviar de volta ao sistema utilizando o campo importar – e depois salvar.

erro ao importar table rate

Se algum campo for preenchido de forma errada, uma mensagem de erro será exibida no momento que você tentar salvar e importar o arquivo.

Tabelando a tabela

Vamos ao que interessa. Independente do tipo de cálculo que você decidiu fazer, todas as tabelas devem seguir o mesmo padrão de 5 (cinco) colunas, sendo:

País, Estado, Cep, o tipo de cálculo que você selecionou, Preço entrega.

Para ignorar valores nos 3 (três) primeiros campos, você informa um sinal de asteriscos [ * ]. Já nos 2 (dois) últimos campos você informa 0 (zero).

exemplo de table rate

No exemplo acima estamos informando ao sistema que não importa o País, o Estado, o Cep, e o Peso. Ele deve cobrar sempre 10 reais.

A coluna – País

Eu não posso informar qualquer valor que vier à mente, como por exemplo: Brasilzão. Isso vai gerar um erro na hora de importar o arquivo, pois o Magento não sabe que país é este.

sigla de paises

É preciso informar a sigla do país. E uma maneira de saber quais siglas podem ser utilizadas é olhando o código-fonte da tela que carrega o combobox das opções.

A coluna – Estado

A mesma coisa acontece na segunda coluna. Você precisa informar uma sigla que seja reconhecida pelo sistema. Essas siglas são armazenadas no banco de dados e identificadas por um código numérico no frontend:

estados disponiveis no banco de dados

Caso você queira personalizar, utilizar estados (siglas) que não existem no sistema, não faça a caga** de alterar o core. Seja inteligente e insira essas siglas no banco de dados, exatamente da mesma forma como foi feito para inserir os estados brasileiros (ver post). #semxunxo

A coluna – Cep

A terceira coluna referente ao campo cep me decepcionou um pouco. Eu acreditei que poderia ser informado um range – uma faixa de cep inicial e final. Cheguei a perder duas horas tentando configurar este campo, pois não queria acreditar que a Magento tivesse criado um campo de consulta simples.

Sem sucesso eu resolvi olhar o código-fonte, para ver como era feita a consulta neste campo, e no arquivo:

app > code > core > Mage > Shipping > Model > Resource > Carrier > Tablerate.php

Eu encontrei esta linha (133):

"dest_country_id = :country_id AND dest_region_id = :region_id AND dest_zip = :postcode",

Onde “dest_zip = :postcode” me mostra que ele faz uma busca exata – sem range. Ou seja, você precisa informar o valor exato do cep para cada valor declarado. O que acaba por inutilizar este campo.

Se alguém conseguiu usar o table rate com range de cep (sem alterar o core) por favor entre em contato e compartilhe sua solução.

A coluna – Peso/Preço/Itens

A quarta coluna é um pouco mais complicada porque depende da condição selecionada no backend, que pode ser peso, preço, ou quantidade de itens.

Para “peso“, lembre-se que 1kg é igual a 1.000 gramas. Então para informar 1kg digite “1“, para informar 1/2kg (meio quilo) digite “0.500” ou “0.5“, para informar 30 gramas digite “0.030” ou “0.03“, e para informar menos de 10 gramas digite “0.009“. Você precisa informar apenas o valor inicial, o sistema se encarrega de encontrar um peso superior e recalcular o preço de entrega.

O “preço” segue a mesma lógica, sempre utilizando o ponto [ . ] como separador decimal – nunca utilize vírgulas. Para preços abaixo de 1 real digite “0.99“, para preços até mil reais digite “999.99“, e acima disso digite no formato “99999.99“. Veja que não existe a necessidade de separar os milhares, e informe apenas o valor inicial.

E para “# de itens” basta fazer o mesmo. Informe sempre um número inteiro 9, 99, 999, 9999, 99999, não precisa separar os milhares. Caso o produto seja fracionado, exemplo, você vendeu um litro e meio, ou dois metros e quarenta, etc. Informe estes valores decimais separados por ponto [ . ] da mesma forma como é feito para o preço.

modelo de table rate

Caso os valores informados pelo usuário não estejam na tabela de cálculo, o sistema retorna cálculo em branco (sem valores). Foi por isso que na última linha eu informei um registro genérico “*,*,*,0,50” onde 50 é o valor do frete para locais desconhecidos.

Problemas acontecem

Alguns editores podem atrapalhar mais do que ajudar, tenha atenção com as correções automáticas feitas pelas planilhas.

Após a importação os valores ficam armazenados para consulta do sistema na tabela shipping_tablerate.

Linhas duplicadas no arquivo também geram erro durante a importação.

Lembre-se de informar seu cep de origem no menu “Configurações de Entrega“.

Ficou com dúvidas? Até eu fiquei. Vamos conversar a respeito no fórum da Escola Magento.

Sucesso!

O Autor

Mario SAM

Desenvolvedor Magento com certificação M1 Developer e M1 FrontEnd Developer. Graduado em Web Design e Programação, pós-graduado em Gestão de Projetos e TI. Não sou matemático mas estou aqui para somar.