Instalando Provincias en Prestashop
Aprovecharé para dejar a mano en esta entrada unos recursos de interés si vas a montar una tienda on-line basada en Prestashop, así te queda a mano lo que he tenido que revisar yo mismo.
Esta aportación está basada en la instalación base de Prestashop 1.5.2 pero seguro que otras versiones pueden tener similares procedimientos…
La idea es que una vez que tenemos la instalación base con los datos de ejemplo la vamos a personalizar para incluir las provincias españolas.
Alguna de la documentación con la que he trabajado se basa en la Organización Internacional de Estandarización ISO:
Códigos ISO de los países/estados/provincias:
http://www.iso.org/iso/country_codes/country_codes
En mi instalación las zonas que hay preconfiguradas (Panel Administración->Localización->Zonas) son las siguientes:
1 Europe
2 North America
3 Asia
4 Africa
5 Oceania
6 South America
7 Europe (out E.U)
8 Central America/Antilla
Y el objetivo que me planteaba es desactivar esas e introducir 5 zonas de envío para transporte, que serían Galicia, Península, Baleares, Canarias, y Ceuta y Melilla, así que lo primero sería eliminar esas zonas… aunque habría que eliminar también los correspondientes países si no se van a utilizar. Lo podemos hacer a mano en el mismo panel de administración o a través del PHPmyadmin que nos permite ejecutar instrucciones SQL directas al motor de base de datos. Si no disponéis de acceso al PHPmyadmin tendréis que crearlas a mano o buscar algún programador que os resuelva el tema.
Precauciones:
1.- Hacer backup antes de aplicar estas modificaciones
2.- Comprobar los nombres de las tablas (es posible que hayáis cambiado el prefijo ps_ por otro durante el proceso de instalación)
3.- Si no habéis eliminado las otras zonas quedaos con el ID mayor (imaginemos que es el 8) y en el primer valor de cada línea cambiad los 9, 10, 11, 12 y 13 (siguiendo el ejemplo del 8 encontrado en la instalación por defecto) que aparecen aquí por 1, 2, 3, 4, y 5 respectivamente.
Para los ejemplos que vamos a usar partiremos de que hay datos en estas tablas, es decir, la configuración precargada en la instalación estándar, pero os será fácil adaptarla a vuestro caso.
En el cuadro de SQL introduciremos:
INSERT INTO `ps_zone` (`id_zone`, `name`, `active`) VALUES
(9, 'Península', 1),
(10, 'Canarias', 1),
(11, 'Baleares', 1),
(12, 'Ceuta y Melilla', 1),
(13, 'Galicia', 1);
Si ahora volvemos al panel veremos que las nuevas zonas son las 5 definidas aquí. Podéis hacer las vuestras basándoos un poco en esta definición por si queréis independizar vuestras provincias de España o poner por Comunidades autónomas o como consideréis oportuno, incluso si queréis adaptarlo a zonas de vuestra ciudad o provincia. El esquema es claro: Hay países y hay estados. Los estados pertenecen a países pero también pueden pertenecer a zonas que luego usamos para asignar impuestos o envíos.
Ahora tendremos que hacer modificaciones en los estados que es donde se almacenan las provincias. Si queremos eliminarlos todos deberemos eliminar las direcciones existentes en clientes y fabricantes, o eliminar todos los estados excepto los que estén en uso. Se seleccionan todos y se eliminan. En la instalación por defecto con datos precargados los estados de Illinois (IL) y Nueva York (NY) vienen en uso (IDs 13 y 32) que corresponden a los estados de los distribuidores preconfigurados (AppleStore y Shure). En mi instalación había 312 estados precargados de Estados Unidos, Italia y Japón que, como no usaré, eliminé.
Para cargar los estados de España, o sea, las provincias, aplicaremos las siguientes instrucciones:
ALTER TABLE `ps_state` MODIFY `iso_code` char(5) NOT NULL;
Con esto hemos conseguido modificar el tipo y tamaño del campo donde se almacenan los códigos ISO de los estados a 5 caracteres máximo.
A continuación insertamos todos los estados según la asignación anterior teniendo cuenta que usaremos como códigos ISO para cada provincia los que define la norma ISO 3166-2:2007, aunque he encontrado algunas por la web que usan como códigos ISO simplemente 2 o 3 letras de cada provincia, o incluso las matrículas, o incluso las 2 primeras cifras de las 5 del código postal que, por comodidad, las he asignado al id de cada estado. Así, la provincia de Pontevedra cuyos códigos postales son 36xxx será el id_state 36. Podemos ver que en el tercer campo de cada entrada hacemos referencia a los ID anteriormente creados de zonas
INSERT INTO `ps_state` (`id_state`,`id_country`, `id_zone`, `name`, `iso_code`, `tax_behavior`, `active`) VALUES
(1, 6, 9, 'Álava', 'ES-VI', 0, 1),
(2, 6, 9, 'Albacete' ,'ES-AB', 0, 1),
(3, 6, 9, 'Alicante', 'ES-A', 0, 1),
(4, 6, 9, 'Almería', 'ES-AL', 0, 1),
(5, 6, 9, 'Ávila', 'ES-AV', 0, 1),
(6, 6, 9, 'Badajoz', 'ES-BA', 0, 1),
(7, 6, 11, 'Islas Baleares', 'ES-PM', 0, 1),
(8, 6, 9, 'Barcelona', 'ES-B', 0, 1),
(9, 6, 9, 'Burgos', 'ES-BU', 0, 1),
(10, 6, 9, 'Cáceres', 'ES-CC', 0, 1),
(11, 6, 9, 'Cádiz', 'ES-CA', 0, 1),
(12, 6, 9, 'Castellón', 'ES-CS', 0, 1),
(13, 6, 9, 'Ciudad Real', 'ES-CR', 0, 1),
(14, 6, 9, 'Córdoba', 'ES-CO', 0, 1),
(15, 6, 13, 'A Coruña', 'ES-C', 0, 1),
(16, 6, 9, 'Cuenca', 'ES-CU', 0, 1),
(17, 6, 9, 'Girona', 'ES-GI', 0, 1),
(18, 6, 9, 'Granada', 'ES-GR', 0, 1),
(19, 6, 9, 'Guadalajara', 'ES-GU', 0, 1),
(20, 6, 9, 'Guipúzcoa', 'ES-SS', 0, 1),
(21, 6, 9, 'Huelva', 'ES-H', 0, 1),
(22, 6, 9, 'Huesca', 'ES-HU', 0, 1),
(23, 6, 9, 'Jaén', 'ES-J', 0, 1),
(24, 6, 9, 'La Rioja', 'ES-LO', 0, 1),
(25, 6, 9, 'León', 'ES-LE', 0, 1),
(26, 6, 9, 'Lleida', 'ES-L', 0, 1),
(27, 6, 13, 'Lugo', 'ES-LU', 0, 1),
(28, 6, 9, 'Madrid', 'ES-M', 0, 1),
(29, 6, 9, 'Málaga', 'ES-MA', 0, 1),
(30, 6, 9, 'Murcia', 'ES-MU', 0, 1),
(31, 6, 9, 'Navarra', 'ES-NA', 0, 1),
(32, 6, 13, 'Ourense', 'ES-OR', 0, 1),
(33, 6, 9, 'Asturias', 'ES-O', 0, 1),
(34, 6, 9, 'Palencia', 'ES-P', 0, 1),
(35, 6, 10, 'Las Palmas', 'ES-GC', 0, 1),
(36, 6, 13, 'Pontevedra', 'ES-PO', 0, 1),
(37, 6, 9, 'Salamanca', 'ES-SA', 0, 1),
(38, 6, 10, 'Santa Cruz de Tenerife', 'ES-TF', 0, 1),
(39, 6, 9, 'Cantabria', 'ES-S', 0, 1),
(40, 6, 9, 'Segovia', 'ES-SG', 0, 1),
(41, 6, 9, 'Sevilla', 'ES-SE', 0, 1),
(42, 6, 9, 'Soria', 'ES-SO', 0, 1),
(43, 6, 9, 'Tarragona', 'ES-T', 0, 1),
(44, 6, 9, 'Teruel', 'ES-TE', 0, 1),
(45, 6, 9, 'Toledo', 'ES-TO', 0, 1),
(46, 6, 9, 'Valencia', 'ES-V', 0, 1),
(47, 6, 9, 'Valladolid', 'ES-VA', 0, 1),
(48, 6, 9, 'Vizcaya', 'ES-BI', 0, 1),
(49, 6, 9, 'Zamora', 'ES-ZA', 0, 1),
(50, 6, 9, 'Zaragoza', 'ES-Z', 0, 1),
(51, 6, 12, 'Ceuta', 'ES-CE', 0, 1),
(52, 6, 12, 'Melilla', 'ES-ML', 0, 1);
Una vez hecho esto tenemos que ir a la configuración de Localización->Países y editar el 6 que es España y hay una casilla que por defecto viene desactivada que indica si el país tiene estados o no. O, lo que viene a ser lo mismo, en SQL le meteríamos:
UPDATE `ps_country` SET `contains_states` = 1 WHERE `id_country` = 6;
Y con esto ya tenemos las provincias metidas en el sistema y agrupadas por zonas.
jose 19:30 el 17 enero 2013 Enlace permanente |
Muchas gracias tu aportación,tengo un problema me es imposible borrar los estados (IDs 13 y 32) he borrado a los distribuidores y fabricantes pero nada, gracias
bicho raro 22:17 el 17 enero 2013 Enlace permanente |
Revisa los clientes, o proveedores, o fabricantes. Alguno de ellos tiene asignado esa provincia como uno de esos. O eliminas esos datos, o les cambias la provincia/estado a otro de los que hayas creado. Yo lo que hice fue eliminarles esas direcciones.
kamal 17:20 el 3 marzo 2013 Enlace permanente |
Excelente trabajo muchas horas ahorradas==>Funciona
Basilio Cristov 16:36 el 20 mayo 2013 Enlace permanente |
Que grande eres! Eres una maquina, muy bueno. Un gusto de estar aqui. Gracias.
rruizc 10:35 el 11 septiembre 2013 Enlace permanente |
Tengo un problema, he seguido tus pasos, y todo correcto, pero luego quiero desactivar algun estado, como por ejemplo Ceuta, Melilla …
Los desactivo, pero siguen apareciendo en el desplegable cuando te registras.
Ademas, ya he probado eliminar la cache y sigue apareciendo.
Sabes a que puede ser debido?
Nicolas 23:43 el 22 septiembre 2013 Enlace permanente |
Aqui podeis encontrar todos los paises y estados independientes Oficiales junto con sus respectivas provincias/regiones..
Para España estan creadas las 4 zonas (Peninsula / Baleares / Canarias / Ceuta y melilla)
Para Portugal estan creadas las 2 zonas (Portugal Peninsula / Portugal Islands)
I have made a recopilation of all 250 countries and independent states with all Regions/States included, Country and State ISO code, phone prefix and postal code where was available.
The resources.rar include 3 CSV file and 3 SQL file(so you can make your script and import, you have to change the name of tables, include user and DBA name)
I highly recomend you to use the CSV import, because if you do not have SQL skills is better not to touch, and CSV is easyer.
It is available for all version of Prestashop, because it’s a CSV file.
There are 3 files: so you can update individually whatever you need.
ZONES
COUNTRIES
STATES
All zones are that came by default with Prestashop, the only exception is for country Spain and Portugal.
I have crated 4 Zones, because shippment carrier apply diferent prices. The zone are:(I don’t know other zones, fell free to customize the files at your needs).
Peninsula economic shippment
Ceuta y Melilla (PS: Region in Africa) – more expensive, carrier apply fees for maritim transport
Baleares (PS: Island) – more expensive, carrier apply fees for maritim transport
Canarias (PS: Island) – more expensive, carrier apply fees for maritim transport
Portugal Peninsula and Portugal Islands
Zone / Country Number of Regions / States
EUROPE – UE
Germany 16
Austria 8
Belgium 9
Finland 15
France 22
Greece 12
Italy 20
Spain (4 zones Peninsula / Baleares / Canarias / Ceuta y Melilla) 18
Luxemburg 3
Netherlands 12
Poland 16
Portugal 20
Czech Republic 14
United Kingdom 49
Sweden 21
Denmark 5
Ireland 26
Romania 41
Slovakia 8
Cyprus 6
Estonia 15
Latvia 27
Liechtenstein 11
Lithuania 10
Malta 5
Hungary 20
Slovenia 12
Ukraine 24
Bosnia and Herzegovina 3
EUROPE OUT UE
Åland Islands 16
Albania 12
Andorra 7
Belarus 6
Croatia 21
Faroe Islands 6
Greenland 5
Guernsey 16
Iceland 23
Jersey 12
Macedonia 30
Man Island 6
Moldova 12
Monaco 1
Montenegro 21
Norway 19
Russian Federation 54
San Marino 9
Serbia 30
Svalbard and Jan Mayen Islands 2
Switzerland 26
Turkey 1
Vatican City State 1
ASIA
Afghanistan 33
Armenia 11
Azerbaijan 73
Bahrain 12
Bangladesh 5
Bhutan 20
Brunei Darrussalam 4
Burma (Myanmar) 7
Cambodia 24
China 30
Christmas Island 1
Cocos (Keeling) Islands 1
East Timor 13
Georgia 12
HongKong 18
India 28
Indonesia 16
Iran 21
Iraq 18
Israel 6
Japan 47
Jordan 12
Kazakhstan 15
Kuwait 6
Kyrgyzstan 8
Laos 16
Lebanon 8
Macau 2
Malaysia 13
Maldives 8
Mongolia 18
Nepal 5
North Korea 11
Oman 11
Pakistan 8
Palestinian Territories 2
Philippines 81
Qatar 6
Russian Federation 28
Saudi Arabia 13
Singapore 5
South Korea 10
Sri Lanka 9
Syria 13
Taiwan 4
Tajikistan 4
Thailand 30
Turkey 8
Turkmenistan 5
United Arab Emirates 7
Uzbekistan 14
Vietnam 62
Yemen 15
AFRICA
Algeria 46
Angola 18
Benin 12
Botswana 9
Burkina Faso 13
Burundi 17
Cameroon 10
Cape Verde 17
Central African Republic 17
Chad 18
Comoros 3
Congo, Dem. Republic 10
Congo, Republic 11
Djibouti 5
Egypt 27
Equatorial Guinea 7
Eritrea 6
Ethiopia 11
Gabon 9
Gambia 6
Ghana 10
Guinea 8
Guinea-Bissau 9
Ivory Coast (Costa de Marfil) 18
Kenya 8
Lesotho 10
Liberia 15
Libya 22
Madagascar 6
Malawi 28
Mali 9
Mauritania 13
Mauritius 12
Mayotte 1
Morocco 15
Mozambique 10
Namibia 12
Niger 8
Nigeria 36
Reunion Island 4
Rwanda 5
Saint Helena 3
São Tomé and Príncipe 2
Senegal 14
Seychelles 26
Sierra Leone 4
Somalia 18
South Africa 9
South Sudan 10
Sudan 15
Swaziland 4
Tanzania 26
Togo 5
Tunisia 24
Uganda 110
Western Sahara 4
Zambia 9
Zimbabwe 10
OCEANIA
Antarctica 10
Australia 8
Bouvet Island 1
British Indian Ocean Territory 1
Cook Islands 1
Fiji 5
French Polynesia 6
French Southern Territories 5
Guam 19
Heard Island and McDonald Islands 1
Kiribati 3
Marshall Islands 1
Micronesia 4
Nauru 14
New Caledonia 3
New Zealand 16
Niue 1
Norfolk Island 1
Northern Mariana Islands 4
Palau 15
Papua New Guinea 20
Pitcairn Islands 1
Samoa 11
Solomon Islands 10
Tokelau 3
Tonga 3
Tuvalu 8
Vanuatu 6
Wallis and Futuna 3
SOUTH AMERICA
Argentina 25
Bolivia 9
Brazil 26
Chile 14
Colombia 31
Ecuador 24
French Guiana 2
Guyana 10
Paraguay 18
Peru 24
Trinidad and Tobago 16
Uruguay 18
Venezuela 22
CENTRAL AMERICA / ANTILLA
Anguilla 14
Aruba 1
Belize 6
Bonaire 3
Cayman Islands 6
Costa Rica 7
Cuba 15
Curaçao 1
Dominica 10
Dominican Republic 32
El Salvador 14
Falkland Islands 1
Grenada 7
Guadeloupe 2
Guatemala 22
Haiti 10
Honduras 18
Jamaica 14
Martinique 4
Montserrat 3
Netherlands Antilles 1
Nicaragua 17
Panama 12
Puerto Rico 17
Saint Barthelemy 1
Saint Kitts and Nevis 14
Saint Lucia 10
Saint Martin 1
Saint Pierre and Miquelon 2
Saint Vincent and the Grenadines 6
Sint Maarten 1
South Georgia and the South Sandwich Islands 1
Suriname 10
Turks and Caicos Islands 1
NORTH AMERICA
American Samoa 4
Antigua and Barbuda 8
Bahamas 16
Barbados 11
Bermuda 11
Canada 13
Mexico 32
United States 51
US Outlying Islands 9
Virgin Islands (British) 1
Virgin Islands (U.S.) 3
___________________________________________________________________
TOTAL: 250 Country Regions /State 3558
REMARK: Russian Federation and Turkey are configurated with the exact therithory in both Europe (Out EU) and ASIA
UPDATED 20 September 2013
After importing this files all zones, countries and states will be ENABLED
**********************************************************
**********************************************************
BE SMART AND BEFORE ANYTHING BACKUP/EXPORT YOUR TABLES Zones/ Country/ State
**********************************************************
**********************************************************
Requirements:
Works on all Prestashop version that admit the import of CSV files. Anyway in this .rar You will find also 3 independent sql querry that you have to edit and adjust to your database.
Mysql 4 or higher
Installation:
1. make copy/export the 3 tables containing Zones / Country / States
2. log into Mysql webadmin
3 select and open the table «Zones»
4 click to Import button and select the file zone.csv and check the option «Overwrite existing record in the table» and wait until finish
5 select and open the table «Countries»
6 click to Import button and select the file countries.csv and check the option «Overwrite existing record in the table» and wait until finish
7 select and open the table «States»
8 click to Import button and select the file states.csv and check the option «Overwrite existing record in the table» and wait until finish
We are done, open the Front End Website and check if all location are listed.
In the next video you can see a fresh install of Prestashop, importing the 3 CSV files
http://www.youtube.com/watch?v=rhazWbV-kBg
*********************************************************************************************
You can aquire this rar file in the next link. Price 5€
http://shop.viste-diferente.es/es/resources/2402-all_countries_states.html
*********************************************************************************************
Doublefly 18:00 el 22 octubre 2013 Enlace permanente |
Excelente aporte!!
Pool 05:33 el 21 junio 2014 Enlace permanente |
Hola necesito ayuda soy de Peru y quiero ingresar las provincias en mi paginas pueden ayudarme
Gabriel 22:38 el 7 agosto 2018 Enlace permanente |
Yo soy de Argentina, y todavía estoy intentando ver como puedo modificar las zonas y provincias, como para poder utilizar los distintos correos, dado que en Argentina cada Provincia tiene Muchas localidades, y los precios varían por distancias por ej puedo tener en la provincia de Bs.As un envío que me salga 400$ y uno que me salga 100$, por lo que me esta cabreando demasiado que prestashop solo me deje poner las zonas por provincias. Había pensado reemplazar las provincias, por «Zonas» Dividir la provincia en Zona Norte, Oeste, Sur. Pero de esta forma pensándolo tendría problemas con prestaSecurity. La verdad que además estar peleándome 2 años con presta 1.7, reportando bugs algunos importantes, y que no los resuelvan a pesar de que ya vamos por la versión 1.7.4.2 Me esta sacando de mis casillas. Ni contar que no logro ver porque siempre me tira las lecturas de I/O de mi servidor a 2M/s bastante si no me equivoco.