Para que o seu sistema Magento fique ainda mais tupiniquim, é importante que você tenha os estados brasileiros cadastrados no seu sistema. Pois a instalação padrão não contempla os estados brasileiros.
E faz diferença ter os estados cadastrados no sistema?
Sim, faz diferença. Se você criar um novo cadastro de usuário, no momento que for cadastrar o endereço, será solicitado que você digite o estado. E devido aos erros de digitação e imaginação, um simples “São Paulo” pode ter diversas variações como:
SP sp saopaulo Sao paulo São Paulo S.Paulo sampa
Isso em resumo. Então para higienizar/padronizar os dados no cadastro de endereços, e também para facilitar a vida dos usuários ao cadastrar um novo endereço, é muito pertinente que você tenha os estados brasileiros cadastrados no seu site.
Aviso Importante
Se você instalou a melhor tradução português brasil do Magento disponibilizada gratuitamente aqui no blog, e executou o script sql bônus, então você já possui os estados brasileiros cadastrados no sistema.
Na dúvida, você pode executar esse script sem problemas, pois o mesmo vai verificar se os estados já estão cadastrados antes de inserir alguma informação.
Em 2010 eu criei um script sql para inserir os estados brasileiros na versão 1.4.x do Magento. Muita gente copiou este script e saiu distribuindo junto com outras traduções para o Magento. E é muito arriscado você executar esse script antigo nas novas versões do Magento, pois o script antigo foi criado para funcionar apenas na versão 1.4.x do Magento.
Se você receber um erro de region_id durante o cadastro de um endereço, é porque fez uso de script não compatível (antigo).
Script Universal
Agora eu criei um script totalmente novo, que vai funcionar em qualquer versão do Magento, e independente de você ter ou não os estados já cadastrados. Pois antes de inserir qualquer informação no banco de dados é feito uma verificação nos dados.
Basta copiar e executar o código abaixo no seu SGBD:
INSERT INTO `directory_country_region` (`country_id`, `code`, `default_name`) SELECT * FROM (SELECT 'BR', 'AC', 'Acre') AS tmp WHERE NOT EXISTS (SELECT `default_name` FROM `directory_country_region` WHERE `default_name`='Acre') LIMIT 1; INSERT INTO `directory_country_region_name` (`locale`, `region_id`, `name`) SELECT * FROM (SELECT 'pt_BR', LAST_INSERT_ID(), 'Acre') AS tmp WHERE NOT EXISTS (SELECT `name` FROM `directory_country_region_name` WHERE `name`='Acre') LIMIT 1; INSERT INTO `directory_country_region` (`country_id`, `code`, `default_name`) SELECT * FROM (SELECT 'BR', 'AL', 'Alagoas') AS tmp WHERE NOT EXISTS (SELECT `default_name` FROM `directory_country_region` WHERE `default_name`='Alagoas') LIMIT 1; INSERT INTO `directory_country_region_name` (`locale`, `region_id`, `name`) SELECT * FROM (SELECT 'pt_BR', LAST_INSERT_ID(), 'Alagoas') AS tmp WHERE NOT EXISTS (SELECT `name` FROM `directory_country_region_name` WHERE `name`='Alagoas') LIMIT 1; INSERT INTO `directory_country_region` (`country_id`, `code`, `default_name`) SELECT * FROM (SELECT 'BR', 'AP', 'Amapá') AS tmp WHERE NOT EXISTS (SELECT `default_name` FROM `directory_country_region` WHERE `default_name`='Amapá') LIMIT 1; INSERT INTO `directory_country_region_name` (`locale`, `region_id`, `name`) SELECT * FROM (SELECT 'pt_BR', LAST_INSERT_ID(), 'Amapá') AS tmp WHERE NOT EXISTS (SELECT `name` FROM `directory_country_region_name` WHERE `name`='Amapá') LIMIT 1; INSERT INTO `directory_country_region` (`country_id`, `code`, `default_name`) SELECT * FROM (SELECT 'BR', 'AM', 'Amazonas') AS tmp WHERE NOT EXISTS (SELECT `default_name` FROM `directory_country_region` WHERE `default_name`='Amazonas') LIMIT 1; INSERT INTO `directory_country_region_name` (`locale`, `region_id`, `name`) SELECT * FROM (SELECT 'pt_BR', LAST_INSERT_ID(), 'Amazonas') AS tmp WHERE NOT EXISTS (SELECT `name` FROM `directory_country_region_name` WHERE `name`='Amazonas') LIMIT 1; INSERT INTO `directory_country_region` (`country_id`, `code`, `default_name`) SELECT * FROM (SELECT 'BR', 'BA', 'Bahia') AS tmp WHERE NOT EXISTS (SELECT `default_name` FROM `directory_country_region` WHERE `default_name`='Bahia') LIMIT 1; INSERT INTO `directory_country_region_name` (`locale`, `region_id`, `name`) SELECT * FROM (SELECT 'pt_BR', LAST_INSERT_ID(), 'Bahia') AS tmp WHERE NOT EXISTS (SELECT `name` FROM `directory_country_region_name` WHERE `name`='Bahia') LIMIT 1; INSERT INTO `directory_country_region` (`country_id`, `code`, `default_name`) SELECT * FROM (SELECT 'BR', 'CE', 'Ceará') AS tmp WHERE NOT EXISTS (SELECT `default_name` FROM `directory_country_region` WHERE `default_name`='Ceará') LIMIT 1; INSERT INTO `directory_country_region_name` (`locale`, `region_id`, `name`) SELECT * FROM (SELECT 'pt_BR', LAST_INSERT_ID(), 'Ceará') AS tmp WHERE NOT EXISTS (SELECT `name` FROM `directory_country_region_name` WHERE `name`='Ceará') LIMIT 1; INSERT INTO `directory_country_region` (`country_id`, `code`, `default_name`) SELECT * FROM (SELECT 'BR', 'ES', 'Espírito Santo') AS tmp WHERE NOT EXISTS (SELECT `default_name` FROM `directory_country_region` WHERE `default_name`='Espírito Santo') LIMIT 1; INSERT INTO `directory_country_region_name` (`locale`, `region_id`, `name`) SELECT * FROM (SELECT 'pt_BR', LAST_INSERT_ID(), 'Espírito Santo') AS tmp WHERE NOT EXISTS (SELECT `name` FROM `directory_country_region_name` WHERE `name`='Espírito Santo') LIMIT 1; INSERT INTO `directory_country_region` (`country_id`, `code`, `default_name`) SELECT * FROM (SELECT 'BR', 'GO', 'Goiás') AS tmp WHERE NOT EXISTS (SELECT `default_name` FROM `directory_country_region` WHERE `default_name`='Goiás') LIMIT 1; INSERT INTO `directory_country_region_name` (`locale`, `region_id`, `name`) SELECT * FROM (SELECT 'pt_BR', LAST_INSERT_ID(), 'Goiás') AS tmp WHERE NOT EXISTS (SELECT `name` FROM `directory_country_region_name` WHERE `name`='Goiás') LIMIT 1; INSERT INTO `directory_country_region` (`country_id`, `code`, `default_name`) SELECT * FROM (SELECT 'BR', 'MA', 'Maranhão') AS tmp WHERE NOT EXISTS (SELECT `default_name` FROM `directory_country_region` WHERE `default_name`='Maranhão') LIMIT 1; INSERT INTO `directory_country_region_name` (`locale`, `region_id`, `name`) SELECT * FROM (SELECT 'pt_BR', LAST_INSERT_ID(), 'Maranhão') AS tmp WHERE NOT EXISTS (SELECT `name` FROM `directory_country_region_name` WHERE `name`='Maranhão') LIMIT 1; INSERT INTO `directory_country_region` (`country_id`, `code`, `default_name`) SELECT * FROM (SELECT 'BR', 'MT', 'Mato Grosso') AS tmp WHERE NOT EXISTS (SELECT `default_name` FROM `directory_country_region` WHERE `default_name`='Mato Grosso') LIMIT 1; INSERT INTO `directory_country_region_name` (`locale`, `region_id`, `name`) SELECT * FROM (SELECT 'pt_BR', LAST_INSERT_ID(), 'Mato Grosso') AS tmp WHERE NOT EXISTS (SELECT `name` FROM `directory_country_region_name` WHERE `name`='Mato Grosso') LIMIT 1; INSERT INTO `directory_country_region` (`country_id`, `code`, `default_name`) SELECT * FROM (SELECT 'BR', 'MS', 'Mato Grosso do Sul') AS tmp WHERE NOT EXISTS (SELECT `default_name` FROM `directory_country_region` WHERE `default_name`='Mato Grosso do Sul') LIMIT 1; INSERT INTO `directory_country_region_name` (`locale`, `region_id`, `name`) SELECT * FROM (SELECT 'pt_BR', LAST_INSERT_ID(), 'Mato Grosso do Sul') AS tmp WHERE NOT EXISTS (SELECT `name` FROM `directory_country_region_name` WHERE `name`='Mato Grosso do Sul') LIMIT 1; INSERT INTO `directory_country_region` (`country_id`, `code`, `default_name`) SELECT * FROM (SELECT 'BR', 'MG', 'Minas Gerais') AS tmp WHERE NOT EXISTS (SELECT `default_name` FROM `directory_country_region` WHERE `default_name`='Minas Gerais') LIMIT 1; INSERT INTO `directory_country_region_name` (`locale`, `region_id`, `name`) SELECT * FROM (SELECT 'pt_BR', LAST_INSERT_ID(), 'Minas Gerais') AS tmp WHERE NOT EXISTS (SELECT `name` FROM `directory_country_region_name` WHERE `name`='Minas Gerais') LIMIT 1; INSERT INTO `directory_country_region` (`country_id`, `code`, `default_name`) SELECT * FROM (SELECT 'BR', 'PA', 'Pará') AS tmp WHERE NOT EXISTS (SELECT `default_name` FROM `directory_country_region` WHERE `default_name`='Pará') LIMIT 1; INSERT INTO `directory_country_region_name` (`locale`, `region_id`, `name`) SELECT * FROM (SELECT 'pt_BR', LAST_INSERT_ID(), 'Pará') AS tmp WHERE NOT EXISTS (SELECT `name` FROM `directory_country_region_name` WHERE `name`='Pará') LIMIT 1; INSERT INTO `directory_country_region` (`country_id`, `code`, `default_name`) SELECT * FROM (SELECT 'BR', 'PB', 'Paraíba') AS tmp WHERE NOT EXISTS (SELECT `default_name` FROM `directory_country_region` WHERE `default_name`='Paraíba') LIMIT 1; INSERT INTO `directory_country_region_name` (`locale`, `region_id`, `name`) SELECT * FROM (SELECT 'pt_BR', LAST_INSERT_ID(), 'Paraíba') AS tmp WHERE NOT EXISTS (SELECT `name` FROM `directory_country_region_name` WHERE `name`='Paraíba') LIMIT 1; INSERT INTO `directory_country_region` (`country_id`, `code`, `default_name`) SELECT * FROM (SELECT 'BR', 'PR', 'Paraná') AS tmp WHERE NOT EXISTS (SELECT `default_name` FROM `directory_country_region` WHERE `default_name`='Paraná') LIMIT 1; INSERT INTO `directory_country_region_name` (`locale`, `region_id`, `name`) SELECT * FROM (SELECT 'pt_BR', LAST_INSERT_ID(), 'Paraná') AS tmp WHERE NOT EXISTS (SELECT `name` FROM `directory_country_region_name` WHERE `name`='Paraná') LIMIT 1; INSERT INTO `directory_country_region` (`country_id`, `code`, `default_name`) SELECT * FROM (SELECT 'BR', 'PE', 'Pernambuco') AS tmp WHERE NOT EXISTS (SELECT `default_name` FROM `directory_country_region` WHERE `default_name`='Pernambuco') LIMIT 1; INSERT INTO `directory_country_region_name` (`locale`, `region_id`, `name`) SELECT * FROM (SELECT 'pt_BR', LAST_INSERT_ID(), 'Pernambuco') AS tmp WHERE NOT EXISTS (SELECT `name` FROM `directory_country_region_name` WHERE `name`='Pernambuco') LIMIT 1; INSERT INTO `directory_country_region` (`country_id`, `code`, `default_name`) SELECT * FROM (SELECT 'BR', 'PI', 'Piauí') AS tmp WHERE NOT EXISTS (SELECT `default_name` FROM `directory_country_region` WHERE `default_name`='Piauí') LIMIT 1; INSERT INTO `directory_country_region_name` (`locale`, `region_id`, `name`) SELECT * FROM (SELECT 'pt_BR', LAST_INSERT_ID(), 'Piauí') AS tmp WHERE NOT EXISTS (SELECT `name` FROM `directory_country_region_name` WHERE `name`='Piauí') LIMIT 1; INSERT INTO `directory_country_region` (`country_id`, `code`, `default_name`) SELECT * FROM (SELECT 'BR', 'RJ', 'Rio de Janeiro') AS tmp WHERE NOT EXISTS (SELECT `default_name` FROM `directory_country_region` WHERE `default_name`='Rio de Janeiro') LIMIT 1; INSERT INTO `directory_country_region_name` (`locale`, `region_id`, `name`) SELECT * FROM (SELECT 'pt_BR', LAST_INSERT_ID(), 'Rio de Janeiro') AS tmp WHERE NOT EXISTS (SELECT `name` FROM `directory_country_region_name` WHERE `name`='Rio de Janeiro') LIMIT 1; INSERT INTO `directory_country_region` (`country_id`, `code`, `default_name`) SELECT * FROM (SELECT 'BR', 'RN', 'Rio Grande do Norte') AS tmp WHERE NOT EXISTS (SELECT `default_name` FROM `directory_country_region` WHERE `default_name`='Rio Grande do Norte') LIMIT 1; INSERT INTO `directory_country_region_name` (`locale`, `region_id`, `name`) SELECT * FROM (SELECT 'pt_BR', LAST_INSERT_ID(), 'Rio Grande do Norte') AS tmp WHERE NOT EXISTS (SELECT `name` FROM `directory_country_region_name` WHERE `name`='Rio Grande do Norte') LIMIT 1; INSERT INTO `directory_country_region` (`country_id`, `code`, `default_name`) SELECT * FROM (SELECT 'BR', 'RS', 'Rio Grande do Sul') AS tmp WHERE NOT EXISTS (SELECT `default_name` FROM `directory_country_region` WHERE `default_name`='Rio Grande do Sul') LIMIT 1; INSERT INTO `directory_country_region_name` (`locale`, `region_id`, `name`) SELECT * FROM (SELECT 'pt_BR', LAST_INSERT_ID(), 'Rio Grande do Sul') AS tmp WHERE NOT EXISTS (SELECT `name` FROM `directory_country_region_name` WHERE `name`='Rio Grande do Sul') LIMIT 1; INSERT INTO `directory_country_region` (`country_id`, `code`, `default_name`) SELECT * FROM (SELECT 'BR', 'RO', 'Rondônia') AS tmp WHERE NOT EXISTS (SELECT `default_name` FROM `directory_country_region` WHERE `default_name`='Rondônia') LIMIT 1; INSERT INTO `directory_country_region_name` (`locale`, `region_id`, `name`) SELECT * FROM (SELECT 'pt_BR', LAST_INSERT_ID(), 'Rondônia') AS tmp WHERE NOT EXISTS (SELECT `name` FROM `directory_country_region_name` WHERE `name`='Rondônia') LIMIT 1; INSERT INTO `directory_country_region` (`country_id`, `code`, `default_name`) SELECT * FROM (SELECT 'BR', 'RR', 'Roraima') AS tmp WHERE NOT EXISTS (SELECT `default_name` FROM `directory_country_region` WHERE `default_name`='Roraima') LIMIT 1; INSERT INTO `directory_country_region_name` (`locale`, `region_id`, `name`) SELECT * FROM (SELECT 'pt_BR', LAST_INSERT_ID(), 'Roraima') AS tmp WHERE NOT EXISTS (SELECT `name` FROM `directory_country_region_name` WHERE `name`='Roraima') LIMIT 1; INSERT INTO `directory_country_region` (`country_id`, `code`, `default_name`) SELECT * FROM (SELECT 'BR', 'SC', 'Santa Catarina') AS tmp WHERE NOT EXISTS (SELECT `default_name` FROM `directory_country_region` WHERE `default_name`='Santa Catarina') LIMIT 1; INSERT INTO `directory_country_region_name` (`locale`, `region_id`, `name`) SELECT * FROM (SELECT 'pt_BR', LAST_INSERT_ID(), 'Santa Catarina') AS tmp WHERE NOT EXISTS (SELECT `name` FROM `directory_country_region_name` WHERE `name`='Santa Catarina') LIMIT 1; INSERT INTO `directory_country_region` (`country_id`, `code`, `default_name`) SELECT * FROM (SELECT 'BR', 'SP', 'São Paulo') AS tmp WHERE NOT EXISTS (SELECT `default_name` FROM `directory_country_region` WHERE `default_name`='São Paulo') LIMIT 1; INSERT INTO `directory_country_region_name` (`locale`, `region_id`, `name`) SELECT * FROM (SELECT 'pt_BR', LAST_INSERT_ID(), 'São Paulo') AS tmp WHERE NOT EXISTS (SELECT `name` FROM `directory_country_region_name` WHERE `name`='São Paulo') LIMIT 1; INSERT INTO `directory_country_region` (`country_id`, `code`, `default_name`) SELECT * FROM (SELECT 'BR', 'SE', 'Sergipe') AS tmp WHERE NOT EXISTS (SELECT `default_name` FROM `directory_country_region` WHERE `default_name`='Sergipe') LIMIT 1; INSERT INTO `directory_country_region_name` (`locale`, `region_id`, `name`) SELECT * FROM (SELECT 'pt_BR', LAST_INSERT_ID(), 'Sergipe') AS tmp WHERE NOT EXISTS (SELECT `name` FROM `directory_country_region_name` WHERE `name`='Sergipe') LIMIT 1; INSERT INTO `directory_country_region` (`country_id`, `code`, `default_name`) SELECT * FROM (SELECT 'BR', 'TO', 'Tocantins') AS tmp WHERE NOT EXISTS (SELECT `default_name` FROM `directory_country_region` WHERE `default_name`='Tocantins') LIMIT 1; INSERT INTO `directory_country_region_name` (`locale`, `region_id`, `name`) SELECT * FROM (SELECT 'pt_BR', LAST_INSERT_ID(), 'Tocantins') AS tmp WHERE NOT EXISTS (SELECT `name` FROM `directory_country_region_name` WHERE `name`='Tocantins') LIMIT 1; INSERT INTO `directory_country_region` (`country_id`, `code`, `default_name`) SELECT * FROM (SELECT 'BR', 'DF', 'Distrito Federal') AS tmp WHERE NOT EXISTS (SELECT `default_name` FROM `directory_country_region` WHERE `default_name`='Distrito Federal') LIMIT 1; INSERT INTO `directory_country_region_name` (`locale`, `region_id`, `name`) SELECT * FROM (SELECT 'pt_BR', LAST_INSERT_ID(), 'Distrito Federal') AS tmp WHERE NOT EXISTS (SELECT `name` FROM `directory_country_region_name` WHERE `name`='Distrito Federal') LIMIT 1;
Caso você já tenha os estados cadastrados, vai receber a mensagem “0 rows affected in total“. E se tudo der certo, 54 novos registros serão inseridos.
Onde executa isso?
Apesar de ser algo bem simples, tem muita gente que não faz a menor idéia de onde colocar esse código. Então vamos ilustrar abaixo.
Você pode abrir um software SGBD como o Sequel Pro, ou então usando o phpMyAdmin no seu navegador. Caso você não saiba como acessar seu phpMyAdmin contate o suporte da sua hospedagem e peça orientações.
Agora basta copiar o código aqui do blog, colar no console SQL, e clicar em Go/Executar.
Não esqueça de selecionar o database à esquerda antes de tudo.
E terminou, simples assim. Você já pode iniciar um novo cadastro de endereço no Magento e visualizar o combobox com os estados brasileiros.
Sucesso!