Para sorpresa de muchos, en Magento no vienen precargadas las provincias o regiones de muchos paises, por ejemplo y sin ir más lejos, Portugal es uno de ellos.
No suele ser un problema ya que en el caso de estos países, a la hora de completar las direcciones, Magento ofrece una casilla para introducir de forma manual la provincia o región.
Esto es válido… hasta que queremos diferenciar precios de los envíos en función de provincias o regiones de uno de estos países. En ese caso al cargar la tabla de gastos de envío en el módulo Table Rates, obtendremos un bonito error, que nos indica que la región en cuestión no existe.
En el caso de Portugal, os dejo un pequeño script que podéis ejecutar creando un archivo php en el raíz de vuestra tienda Magento. Para el resto de países se podría utilizar el mismo script con unos pequeños cambios.
<?php require 'app/Mage.php'; Mage::app(); // Array con la lista de regiones (Key => Nombre) // La key puede ser cualquier valor, pero debe ser único en la base de datos. $new_regions = array( 'Lisboa' => 'Lisboa', 'Leiria' => 'Leiria', 'Santarem' => 'Santarém', 'Setubal' => 'Setúbal', 'Beja' => 'Beja', 'Faro' => 'Faro', 'Evora' => 'Évora', 'Portalegre' => 'Portalegre', 'CasteloBranco' => 'Castelo Branco', 'Guarda' => 'Guarda', 'Coimbra' => 'Coimbra', 'Aveiro' => 'Aveiro', 'Viseu' => 'Viseu', 'Braganza' => 'Braganza', 'VilaReal' => 'Vila Real', 'Oporto' => 'Oporto', 'Braga' => 'Braga', 'VianaDoCastelo' => 'Viana do Castelo', ); // Código de país al que se añaden las regiones $country_code = 'PT'; // Idioma para el que son válidos los nombres de las regiones $locale = 'es_ES'; // Haremos directamente consultas SQL para insertar en las tablas $connection = Mage::getSingleton('core/resource')->getConnection('core_write'); foreach ($new_regions as $region_code => $region_name) { // Insertamos la región $sql = "INSERT INTO `directory_country_region` (`region_id`,`country_id`,`code`,`default_name`) VALUES (NULL,?,?,?)"; $connection->query($sql,array($country_code,$region_code,$region_name)); // Obtenemos el id insertado (incremental) $region_id = $connection->lastInsertId(); // Insertamos el nombre $sql = "INSERT INTO `directory_country_region_name` (`locale`,`region_id`,`name`) VALUES (?,?,?)"; $connection->query($sql,array($locale,$region_id,$region_name)); } echo 'done';
Hola gracias por la atencion a mis comentarios apenas pude checarlo, soy nuevo en la programación y en magento por igual, solo tengo que crear un archivo php en la raiz donde estan los archivos de magento por lo que entiendo con los datos de México solo los datos que cambiaria son los de $new_regions y los demas datos los dejo igual? luego que lo guardo solo abro el php y se ejecuta todo?
y COMO SE HARIA PARA AGREGAR DISTRITOS O CIUDADES PARA ESOS DEPARTAMENTOS O PROVINCIAS, MUCHAS GRACIAS POR SU AYUDA
Que buen artículo.
Estaba buscando información exactamente sobre esto… Pero no sé donde tengo que cargar el archivo php…
¡Graicas!
Hola, hice el archivo y le inserté las regiones y configuré el idioma, lo que no me queda muy claro es como hacer que el magento reconozca el archivo, lo deje en el directorio raíz pero no se que mas hacer, ¿me puedes orientar?
saludos
HOLA
A LOS QUE NO SABEN COMO AGREGAR EL ARCHIVO LES PASO EL METODO.
Guardan su archivo PHP yo lo guarde como «regiones.php»
Lo cargan al directorio raiz de su tienda magento.
Escriben en su navegador la dirección de su tienda y el nombre de su archivo (www.tutienda.com/regiones.php)
Lo ejecutan y listo ya tienen sus regiones añadidas a la base de datos.
Para confirmarlo se van a configuracion y ajustes de envio.
Espero les sirva, Saludos
Mondra Diseñador Industrial, amateur Magento.
Un aporte fantástico! pero sabes como podemos aplicarlo en distribuciones de Mageento 2.1?
Amigo Daniel gracias por este aporte. Funciono de maravilla.
Adjunto, mi propio PHP para quien desee agregar los estados de Colombia.
Saludos.
Aqui esta la dirección en GitHub:
https://gist.github.com/williz/8e8056ba40f3dc6031911b88603ecb17