Si lo que buscas es un script que te permita importar datos a Prestashop desde un ERP, fuentes CSV/XML o varios proveedores, lee este otro post.
Estoy en pleno desarrollo de una tienda virtual con Prestashop para un cliente del sector de la ferretería. El cliente tiene su aplicación de gestión de productos en el servidor de la empresa y la base de datos de estos debe de ser sincronizada con el e-commerce de forma automática de modo que cualquier modificación en la misma se vea actualizada en la base de datos del Prestashop.
Inicialmente había pensado en la posibilidad de hacer un script que sincronizara las dos bases de datos conectando directamente con ellas pero visto que el Prestashop dispone de un módulo de importación a partir de ficheros CSV, he decidido utilizarlo.
En esta arquitectura existen dos partes, la parte del cliente situada en el servidor local de la empresa y la parte de la tienda virtual situada en un alojamiento web, que entre otras cosas requiere dar de alta reglas en el firewall para permitir conectar al Mysql desde una IP externa, cosa que finalmente no necesitaremos.
En la parte del cliente programaré un script que exporte en el formato CSV, esperado por Prestashop, tanto las categorías como los productos -en este caso lo único que necesito exportar- y que suba ambos ficheros al servidor donde está ubicada la tienda.
En la parte de la tienda virtual se requiere un script que sea capaz de lanzar el proceso de importación y es el que describiré a continuación.
Existía la posibilidad, en esta segunda parte, de simular la navegación utilizando CURL, haciendo el login y posterior proceso de importación, pero complica mucho más las cosas cuando lo que necesitamos es simplemente llamar a la clase AdminImport y utilizar su funcionalidad.
Aquí dejo el código del script que, situado en la parte de la tienda, lanza una importación de un fichero CSV productos (pro.csv) o categorías (cat.csv), según se le indique por GET[‘entity’]
Los ficheros CSV a importar deben encontrarse en el directorio /admin/import mientras que nuestro script debe de estar situado en el directorio /admin del Prestashop.
Espero que le pueda (re)servir a alguien.
<?php define('PS_ADMIN_DIR', getcwd()); include(PS_ADMIN_DIR.'/../config/config.inc.php'); include(PS_ADMIN_DIR.'/functions.php'); include_once './tabs/AdminImport.php'; if (!isset($_GET['entity'])) die(); $import = New AdminImport(); switch ($_GET['entity']) { case 0: loadCategoriesPost(); $import->categoryImport(); break; case 1: loadProductsPost(); $import->productImport(); break; default: die(); break; } function loadCategoriesPost() { $_POST = array ( 'tab' => 'AdminImport', 'skip' => '0', 'csv' => 'cat.csv', 'convert' => '', 'entity' => '0', 'separator' => ';', 'multiple_value_separator' => ',', 'import' => 'Importar datos CSV', 'type_value' => array ( 0 => 'id', 1 => 'active', 2 => 'name', 3 => 'parent', 4 => 'description', 5 => 'meta_title', 6 => 'meta_keywords', 7 => 'meta_description', 8 => 'link_rewrite', 9 => 'image', ), ); } function loadProductsPost() { $_POST = array ( 'tab' => 'AdminImport', 'skip' => '0', 'csv' => 'pro.csv', 'convert' => '', 'entity' => '1', 'separator' => ';', 'multiple_value_separator' => ',', 'import' => 'Importar datos CSV', 'type_value' => array ( 0 => 'id', 1 => 'active', 2 => 'name', 3 => 'category', 4 => 'price_tex', 5 => 'tax_rate', 6 => 'wholesale_price', 7 => 'on_sale', 8 => 'reduction_price', 9 => 'reduction_percent', 10 => 'reduction_from', 11 => 'reduction_to', 12 => 'reference', 13 => 'supplier_reference', 14 => 'supplier', 15 => 'manufacturer', 16 => 'ean13', 17 => 'ecotax', 18 => 'weight', 19 => 'quantity', 20 => 'description_short', 21 => 'description', 22 => 'tags', 23 => 'meta_title', 24 => 'meta_keywords', 25 => 'meta_description', 26 => 'available_now', 27 => 'available_later', 28 => 'image', 29 => 'no', ), ); } ?> |
Hay una alternativa a este script que permite importar los datos a Prestashop desde un ERP, fuentes CSV/XML o múltiples fuentes, como proveedores de drop shipping.
Para saber más haz click aquí
Hola,
No probe el script pero desde ya te agradezco que lo compartas!
Una consulta, suponiendo que le llamo al script importardatos.php, como le paso el valor para entity?
Hay manera de saber si la importacion fue correcta? Si se cargaron todos los datos?
Quizas crear algun archivo en donde se deje una variable con un valor, si es 1 salio todo bien, si es 0, hubo un error. Esto como para saber q todo funciona bien, sino estaria vendiendo a precios viejos en el site.
Las fotos hay que subirlas a la carpeta upload, no?
Saludos, Exitos, y Muchas gracias.
Claudio
Hola Claudio,
el parámetro entity lo debes pasar por GET llamando a importardatos.php?entity=1, por ejemplo.
Respecto a los errores, la misma clase registra los errores en un array $_errors que posteriormente es lanzado a pantalla con displayErrors(). Esto ocurre sólo cuando importas desde el back-office.
Por otro lado la clase gestiona warnings que también son mostrados, en el back-office, una vez finalizado el proceso de importación , estos últimos en la función displayForm() de AdminImport.php
En el script de importación que aparece en el post puedes lanzar displayErrors(), capturar su salida y lanzarla por pantalla y lo mismo con los warnings aunque en este caso deberías de implementarte tu propio displayWarning(), pero basándose en displayErrors() el desarrollo es inmediato.
Las imágenes de productos en Prestashop se guardan dentro de img/p y las de las categorías dentro de img/c
Ahí es donde deberías de subirlas. Si esto no te funcionara, prueba a pasar la URL completa de un directorio donde las tengas todas por ejemplo http://example.com/imagenes/producto1.jpg
Me alegro de haberte servido de ayuda 😉
Santi
Respecto a los errores lo util, como se esta buscando automatizar todo, es que queden en un archivo, mas que salgan por pantalla. Esto sabes como se haria?
Y el tema de las imagenes, viste que prestashop no las copia directamente a p o c, les hace un proceso y te guarda x cada una no recuerdo si 4, small, large, etc.
Me parece q cuando probe de importar imagenes, las subi a upload y me las cargo bien. Es necesarios tener los distintos tamaños de imagenes?
Prestashop cuenta con una utilidad para regenerar todas las miniaturas, desde el backend en la pestaña Preferencias la opción Imagen. Desde ahí se gestionan los distintos tamaños para las imágenes y está la opción de regenerar miniaturas.
Excelente , me sirvio de mucho el scrip muchas gracias , mas bien tengo una consulta , que puedo hacer para enviar el parametro para que borre la db de productos pues cada vez que ejecuto la funcion esta me duplica la data y no la actualiza como pensaba
gracias
Hola, muchas gracias por el script, me funciona todo ok pero tengo un problema las fotos no me las sube, le paso la url http://example.com/imagenes/producto1.jpg pero no la pilla, sin embargo si lo hago desde el BO con el mismo cvs si que las sube.
A que puede ser debido? mi prestashop 1.3.2
Un saludo y gracias 🙂
Alguna sugerencia?
Problema solucionado!!!
En el php AdminImport.php línea 718 se supone que $product->Image es un array, si ejecutamos la importación desde fuera del bo (no es un array) por lo que modifico el código
/*if (isset($product->image) AND is_array($product->image) and sizeof($product->image))*/
if (isset($product->image) AND sizeof($product->image))
{
$productHasImages = (bool)Image::getImages(3, intval($product->id));
/*$productHasImages = (bool)Image::getImages(intval($cookie->id_lang), intval($product->id));
foreach ($product->image AS $key => $url)*/
$url=$product->image;
if (!empty($url))
{
De esta forma solo podremos importar una foto, no una lista de fotos aunque a mi me basta, supongo que con una lista si que funcionaria.
Hola Rafa,
me has pillado en una de las semanas más ocupadas del año. Revisaré el script para buscar la forma de solucionarlo, a poder ser sin tocar el código fuente del AdminImport.php que es código del core del Prestashop.
Hola, hace unos meses pasé los datos de una base de datos oscommerce a una prestashop utilizando la herramienta online Cart2Cart http://www.shopping-cart-migration.com/
que es de pago y es de lo mejor que he visto para esta tarea, aunque no lo hace del todo bien, luego te toca darle un repaso a mano.
El caso es que recientemente tuve que migrar de nuevo de oscommerce a prestashop, pero en este caso se trataba de sólo los clientes, así que decidí crear mi propio script, y el éxito ha sido rotundo: pasa toda la información de los usuarios, con sus direcciones incluidas.
Si alguien está interesado en este script puede encontrarme en http://www.programadorphpfreelance.com
Saludos!
Hola,
La verdad es que este script es muy util, pero la mejora con las imagenes es importante. ¿ has podido ver si es viable realizar el cambio en el script en vez del codigo core ?
Hola David,
sigo muy ocupado y aún no he tenido tiempo. Esperemos que en breve 😉
Gracias por la respuesta. Esperaremos
rferrero, has podido terminar el script???
Estoy tratando de utilizarlo, lo subo al ftp dentro del directorio del admin, pero después no sé cual es el siguiente paso.
¿Dónde se configura la dirección de donde tiene que “recoger” los datos del proveedor? ¿Aparece en el bo? ¿No hay que hacer nada más?
Igualmente gracias por tu trabajo, eres de los pocos que lo ha compartido desinteresadamente.
Hola @verofenix,
el script está preparado para ser llamado en remoto utilizando el path completo, por ejemplo http://example.com/admin/script.php?entity=0 donde en este caso el script lo hubiéramos llamado script.php
El script no tiene configuración en el BO y sólo importa productos y categorías desde ficheros CSV que se encuentren en el servidor.
Espero haberte ayudado 😉
hola a todos!!! Perdonen mi ignorancia pero no se donde meter el fichero csv para q me lo detecte (^_^)’. Lo e puesto en la misma carpeta q el scipt pero al ejecutarlo me dice q no puede leer el fichero. Llevo ya 3 meses intentando hacer un csv en condiciones xq siempre me encuentran algun fallo asi q si alguien me puede decir esto estaria muy agradecido. Un saludo y gracias.
Hola Xikot5,
he ampliado el post para indicar el path de los CSV. Te lo pego aquí:
Un saludo
hola de nuevo y gracias por tu tiempo. Ahora tengo tu scrip en la carpeta admin y mi csv en la import (todo con permisos 777) y este el path q utilizo para llamarlo -> http://www.xxx.cat/admin49/importardatos.php?entity=1
pero todabia me dice q no puede leer el fichero. Se te ocurre q puedo tar aciendo mal? Utilizo la version 1.3.6.
Hola,
aún no lo he probado con la rama 1.3.x del Prestashop, así que desconozco si puede venir por ahí el problema. ¿Alguien lo ha probado en la rama 1.3.x?
¿Puedes pegar el error que devuelve? ¿El nombre del CSV es el esperado, pro.csv o cat.csv?
wenas! pensaba q lo de pro.csv y cat.csv era un ejemplo ^^’ aora no me devuelve el error (era este : Cannot read the csv file) sino q se queda la pagina en blanco pero cuando voi al BO nose me an importado los productos e revisado i tengo los mismos campos q en el scrip, nose si es q soy un pardillo o es q esto es muy dificil, estoy ya desquiciado 🙁
Xikot5,
se ve que editando el post había desaparecido parte del principio del script. Lo he corregido. Revisa que no vayan por ahí los tiros.
Por otro lado, la pantalla en blanco seguramente se produzca por un error en el PHP que tu servidor está escondiendo.
Para obtener más información añade estas dos lineas al principio del script:
error_reporting(E_ALL);
ini_set('display_errors', '1');
wenos dias! he vuelto a crear el script por lo q me as comentado y le he añadido las dos lineas con lo q ahora me muestra estas dos advertencias:
Warning: key_exists() [function.key-exists]: The second argument should be either an array or an object in /var/www/vhosts/elaborats.cat/httpdocs/classes/AdminTab.php on line 164
Notice: Trying to get property of non-object in /var/www/vhosts/elaborats.cat/httpdocs/classes/AdminTab.php on line 148
Lo he estado mirando pero no se por donde cojerlo.
El script da ese error en la rama 1.3.x del Prestashop, que supongo que es la que estás probando. Tengo previsto adaptarlo en breve. Lo publicaré aquí.
Gracias por tu tiempo, viendo tu curriculum no creo q esto te cueste muxo xD. Efectivamente utilizo la 1.3.6. Esparare la actualizaion puesto q en todo el tiempo q llevo liado con prestashop has sido el unico q ha contestado los post. Haces un gran trabajo.
está a puntito de salir la version 1.4 como definitiva, va a tocar actualizar dos veces XD.
Por cierto, gracias por la respuesta, que no te lo dije, pero me salen los mismor errores que a los compañeros, porque estoy usando las últimas versiones del presta, y actualizo en cuanto están disponibles para descargar.
Buen trabajo igualmente ^^.
Y esperemos que no sean tres.
Estoy a punto de abandonar esa linea de desarrollo. En mi caso en concreto he acabado necesitando un script que ataque directamente a la base de datos ya que la importación por CSV no permite controlar al detalle una actualización de productos existentes.
En cualquier caso este script es una prueba de concepto para automatizar una importación mediante CSV, sin necesidad de pasar por el backoffice. Eso y sólo eso y necesita ser complementado con un desarrollo en la parte de cliente que se encargue de generar los CSV, subirlos al servidor y llamar a este script, para tener un verdadero script de importación.
Con eso se tendría un buen script de sincronización automatizada pero sólo en un sentido: Desde el origen hasta el Prestashop.
Si alguien quiere/puede corregir o completar el script que no dude en hacerlo saber.
Buenas.
Seguramente deberé realizar lo mismo o algo parecido para el sitio donde trabajo.
Tengo que conectar un MSSQL, con el MySQL.
Pero con la salvedad que también tengo que importar(MySQL –> MSSQL) las orders…
Miraré a ver que puedo hacer con la exportación de categorías y productos, aún así creo que no podré utilizar las funciones nativas.
Bueno si sale algo decente ya lo publicaré. Alguien ha avanzado con las versiones 1.3.X? Creo que me centraré en la 1.4 RC3 o 4
Un saludo.
Hola, el script no funciona ni puede funcionar con las nuevas versiones por temas de seguridad.
Al navegar por la administración se hacen comprobaciones con una cadena llamada token. Si no le pasais el token correcto da un fallo. Las funciones que se utilizan en el script requieren este token, por lo que no funciona.
La forma de hacerlo sería mediante la libreria Curl.
Un saludo
Hola,
el caso es que el error que yo recuerdo parecía propio del PHP, más relacionado con la definición de clases, que no con el token.
Una alternativa, como bien dices, es cURL.
Suerte
Cuando lo probé me daba un fallo que comentas porque no tenia Cookie.
Se ve que la comprobación de seguridad la hace con el token y la cookie que se crea al acceder a la administración.
Un saludo
Buenas,
gracias por el aporte, va perfecto también en la versión 1.4, un par de modificaciones en las variables de la función “loadProductsPost()” y de lujo (las pruebas son en local). Ahora quiero probar como implementar algún tipo de aviso al finalizar. Si consigo algo decente, lo comento.
Saludos
Hola Vancaru,
gracias por tu aportación. Si finalmente implementas el sistema de avisos y quieres publicarlo, esta es tu casa 😉
Un saludo
Buenas a todos.
He leido todo el hilo, he implementado el script en una importación automatizada y tengo varias dudas por si podéis ayudarme.
Mi necesidad es que el CSV de productos y categorías me lo da el proveedor de productos, con lo que no puedo manipular el CSV original para añadir las columnas que me exige el prestashop.
La solución es extraer sólo los campos que me interesan y crear un CSV a la medida del prestashop. He creado un script que publicaré aquí cuanto lo tenga terminado para aportar mi experiencia.
Mi script crea un CSV sólo extrayendo los campos que necesito para prestashop, los coloca en el orden necesario y los deja en la carpeta /ADMIN/IMPORT.
El problema:
Cuando uso las opciones del BACKOFFICE de importar, selecciono los campos del desplegable de importar productos y le doy a importar, funciona (si lo hago con pocos productos, entre 10 y 300, mas se cuelga y no termina nunca.) Lo que significa que mi script funciona y prepara correctamente los CSV.
Cuando uso tu script, que he modificado para sólo seleccionar los campos que realmente uso en la importación desde backoffice, no importa nada.
Pregunta:
Como debo preparar el array de campos a importar?
En mi caso son 14 de los 27 campos:
array (
0 => ‘id’,
1 => ‘active’,
2 => ‘name’,
3 => ‘category’,
4 => ‘wholesale_price’,
5 => ‘tax_rate’,
6 => ‘reference’,
7 => ‘manufacturer’,
8 => ‘supplier_reference’,
9 => ‘ean13’,
10 => ‘quantity’,
11 => ‘description_short’,
12 => ‘description’,
13 => ‘meta_title’,
14 => ‘image’,
),
Con esta opción no funciona.
Lo que no explica por ningún lado, o que haya encontrado es como preparar este array. Que es importante la etiqueta o el número. Yo creo que la etiqueta.
Segunda pregunta:
Mi script prepara el CSV para ISO-8859-1, debo poner el campo ‘convert’ => ‘1’, para que lo importe en ese formato?
Gracias anticipadas.
Hola a todos.
He implementado la funcion en las versión 1.4 y no soy capaz de saber que parámetros hay que añadir en loadProductsPost() para que funcione correctamente y pueda realizar la importación.
El error que me da es: key_exists() [function.key-exists]: The second argument should be either an array …
Podéis ayudarme?
gracias anticipadas.
El error completo es:
Warning: key_exists() [function.key-exists]: The second argument should be either an array or an object in /var/www/vhosts/domain/httpdocs/classes/AdminTab.php on line 215
Gracias.
Saludos que interesante tema y de verdad util, por favor si alguien tiene el script ya corriendo en las versiones 1.4 por favor publicarlo se los agradezco, gracias
Es una buena aportación, habrá que probarla, 1saludo.
El script esta completo? he leido el hilo y sus comentarios y hay un arreglo que dice linea 718 y no tengo tantas lineas.
podeis poner el script ya corregido otra vez.
Hola buenas, quisiera saber si alguien haya podido implementar bien este script en prestashop 1.4 y quiera ganarse un dinerillo que se ponga en contacto conmigo, alfonso@red19.net, gracias.
Muy interesante el hilo. Aunque son muchas modificaciones ya para mí, como para haber conseguido que funcione. A mi cuando importo el CSV por el BO me da muchos problemas por las URL canonicas, longitudes de descripciones, … y estoy tratando de evitarlo. Pero gracias por compartirlo 🙂
buenas gente, estoy intentando automatizar el import de un csv de productos con el script que aqui tenemos.
Tengo el mismo error que mucha gente aqui comenta:
key_exists() [function.key-exists]: The second argument should be either an array or an object in /var/www/vhosts/domain/httpdocs/classes/AdminTab.php on line 164
Alguien me puede ayudar?
tengo la version de presta 1.3.6
Estaba buscando algo parecido, vamos a probarlo a ver que tal funciona con las nuevas versiones.
Gracias.
Brother gracias por este pequeño pero interesante aporte a toda la comunidad.
Hola .
Yo necesito exportar una lista los productos que tengo en mi tienda en un fichero CSV, para despues importar mis productos a Amazon Market Place.
Es una buena idea hacer la exportacion uno mismo y desde phpmyadmin no se necesita ningun modulo pero parece sencillo pero yo soy completamente novato y me gustaria si hay alguna buena persona que me pueda ayudar , simplemente alguien que me explique que debo de hacer desde phpmyadmin para exportar por ejemplo los siguientes campos ( estos serian los campos que necesito para importar a Amazon ) :
sku price quantity product-id product-id-type condition-type condition-note
Muchas gracias compañeros!
Saludos.
He encontrado un arreglo para poder subir las imagenes (varias) cuando estamos tanto dentro como fuera del backoffice.
en la linea 718 de AdminImport.php, (en la version 1.4.4 lo tenemos en la 819) añadimos las siguientes lineas
if (isset($product->image) && !is_array($product->image)) $product->image = explode(“,”,$product->image);
de esta forma, si las imagenes vienen en formato cadena de caracteres separadas por coma, forzamos a que sean un array para que las suba. En cualquier otro caso, respeta lo que venga.
saludos y gracias por compartir.
Hola, yo hice un script que se conecta con la base de datos de Prestashop, para actualizar y crear artículos, pero hasta ahora no encontraba qué hacer con las imágenes, el archivo desde donde importo no es un CSV sino un XML y hay tag con la url de la imagen grande y de la miniatura, pero no se como hacer que desde mi script suba las imágenes.
Vi que tu lo haces con las clases del mismo Prestashop, para lo cual quisiera hacerte unas preguntas, ya que no soy muy ducho con esto:
1. El array que pones con todos los campos, se puede modificar para poner sólo los que necesito? Y como es que se puede modificar?.
2. En caso que sólo funcione con archivos CSV, podrías enviarme un ejemplo de la estructura que debe tener el archivo pro.csv?.
3. Si se puede usar el archivo XML, como quedaría el script que pusiste en tu blog?.
Espero que me puedas ayudar, llevo ya 2 meses buscando y buscando una luz que me ayude a solucionar esto y hasta ahora encuentro algo que más o menos se acerca.
y entonces Ufito ??, publicas todo el script para que lo podamos bajar ?
Desde mi ignorancia en programación y en vista de mi desesperación por poder subir mas de 100 productos sin que se cuelgue por el tiempo de espera…
Pienso que el proceso de subida de productos podría mejorar enormemente si introdujésemos en la columna “url de la imagenes”, solo las que vamos a actualizar o crear, y las que no queremos hacer cambios dejarlo vacío.
actualmente si se introduce la url de la imagen, el programa automaticamente la procesa generando un tiempo impresionante por cada imagen, y ésto podría ser evitado, dejando en blanco las imagenes que ya tenemos cargadas y no queremos volver a cargar.
Ahora me van a decir, si, eso ya existe, para eso está el campo “eliminar imagenes existentes” pero la verdad es que no importa si ponemos el valor en 0 o en 1, siempre procesa la imagen y pierde tiempo en cada una si el campo “url de la imagen” no está vacío.
Dicha esta explicación (que puedo estar equivocado)
Yo quisiera modificar el adminimport.php para que haga de cuenta como que dejamos el campo vacío en “URLl de imagen” siempre y cuando el “reemplazar imagenes existentes” esté en 0.
Como ya dije no se nada de programación, y estuve una hora casi que sin parpadear, babeandome frente al monitor tratando de entender los jeroglificos del archivo adminimport.php hasta que encontré sentido a lo que leia, y (prestashop 1.4.7) en la linea 839 donde le dice que procese la imagen, es donde quiero agregarle una condicion mas al if, cosa que solo la procese si el campo “eliminar imagenes existentes” está en 1
Se entiende lo que quiero lograr ??? estoy muy mal de la cabeza, la desesperación me hizo delirar ??? o estaré en lo correcto???
Agradezco a alguna alma caritativa que pueda tirarme un salvavidas
Corrección…
Yo quisiera modificar el adminimport.php para que haga de cuenta como que dejamos el campo vacío en “URL de imagen” … siempre y cuando ese producto ya tenga imagenes cargadas en la base de datos.
Muchísimas Gracias por tu Aportación ! !
Buscando, buscando, he llegado hasta aquí y me has solucionado un problemilla con mi PrestaShop 😉
Un Saludo desde Barcelona para todos !
Me alegra saber que el post esté ayudando. Seguimos compartiendo 😉
Muchas gracias por compartir tu trabajo Santi.
Alguien ha dado con alguna solución del script para PS1.4.X?
Buenos días necesito un script que importe productos XML a prestashop, estoy leyendo esto me pierdo por eso me gustaría que alguien me lo hiciera y por supuesto le pagaría.
Saludos
realmente estoy confundido con esto ya que mire que prestashop tiene esta funcionalidad de importación de productos a través de un archivo .CSV por favor explicar porque este script es necesario para esta función de importar.
Hola Yoel,
el objetivo del este script/experimento era aislar las llamadas a la herramienta de importación del Prestashop. De esta forma se podría programar/automatizar la importación de una fuente de datos como por ejemplo un XML, de los que tanto se llevan ahora con el dropshipping o a partir de una base de datos de un ERP, como fue mi caso no hace mucho.
Espero haberte ayudado,
Santi
Hola, antes de nada agradecerte que hayas compartido este scipt con nosotros. Solo tengo una pregunta, que ya te la han hecho perono he visto la respuesta, ¿cómo podemos hacer para que elimine lo que habia anteriormente?
Muchas gracias de nuevo
Enrique
Hola Enrique,
si no recuerdo mal una de las variables POST que le pasamos al script permite indicar que se realice un delete all previo. Creo que el valor por defecto es aplicar ese delete all así que ya estaría comportándose como necesitas.
Un saludo,
Santi
Hola!! yo tb estoy trabajando en realizar un script similar y me aparece dicho error:
Warning: key_exists() expects parameter 2 to be array, null given in /var/www/prestashop/classes/AdminTab.php on line 224
Alguien ha conseguido solucionar el tema??
Sería de gran ayuda.
Un saludo y gracias!
Hola!
Gracias primero de todo por compartir el script estoy probando en 1.4.8 y funciona… Solo hay una pega y es que siempre inserta productos, si ejecuto dos veces el script de productos, tengo los mismos productos 2 veces repetidos, y si ejecuto otra vez, tendre 3 productos, Sabes si hay algun flag o variable para poner para que no se dupliquen y actualizen los productos que ya existan en la BD?
Muchas gracias! Un saludo.
Hola,
sí que me suena que se podía resetear, de hecho creo que tal cual está a mi me reseteaba los valores previos.
No lo recuerdo bien pero prueba a jugar con el parámetro skip. En caso de no funcionar tendrías que estudiar el script de importación de la 1.4.8 y añadir el parámetro que realice el borrado.
Me gustaría poder darte más ayuda pero ahora mismo tengo el calendario a tope de trabajo.
Cu
Hola, estoy trabajando a partir del script que compartiste he realizado algunas modificaciones y todo me funciona a la perfección, puedo eliminar artículos categorías etc etc.
Bien, me he puesto a programar para añadir fabricantes, todo va a las mil maravillas pero los fabricantes… me lanza el siguiente error
NombreFabricante (ID XX) No se puede guardar
Manufacturer -> name = Array
Este es mi código
function loadManufacturersPost() {
$_POST = array (
‘tab’ => ‘AdminImport’,
‘skip’ => ‘0’,
‘csv’ => $_GET[‘archivo’],
‘convert’ => ”,
‘entity’ => ‘5’,
‘separator’ => ‘|’,
‘multiple_value_separator’ => ‘~’,
‘import’ => ‘Importar datos CSV’,
‘type_value’ =>
array (
0 => ‘id’,
1 => ‘active’,
2 => ‘name’,
3 => ‘description’,
4 => ‘short_description’,
5 => ‘meta_title’,
6 => ‘meta_keywords’,
7 => ‘meta_description’,
),
);
}
si el mismo archivo csv que leo en esta función lo importo desde prestashop, funciona correctamente. creo que a la hora de montar el array, pero por mas vueltas que le he dado…
Me puedes ayudar?
pd: en el archivo adminImport Manufacturers y Suppliers van de la mano (linea 252) no se si tendra algo que ver
Hola Sumuel,
me pillas un poco liado y no sé cuando podré responderte. A ver si alguien que visite el post tiene más tiempo.
Suerte,
Santi
hola, saludos a todos…
primero que todo gracias por el script, para mi ha sido un aporte demasiado útil para un proyecto que estoy desarrollando, he estado trabajando con prestashop 1.4.9 y todo me funciona de maravilla… mi problema es que las versiones más recientes de PS parecen haber cambiado su estructura de directorios, por lo que no importa las clases necesarias al inicio del script:
include_once ‘./tabs/AdminImport.php’;
luego buscando en el código de PS, encontré que movieron todas las funciones a la carpeta “/controllers/admin/” donde existe el archivo “AdminImportController.php” aparentemente con las funciones que utiliza tu script de importación automática…
he intentado corregir éstas relaciones de las rutas de los archivos pero sin ningún resultado aún…
mi pregunta es: hay alguien que haya encontrado una alternativa a éste script que funcione en las versiones más recientes de prestashop, o alguien ha podido hacer las correcciones para adaptar éste mismo script….
saludos cordiales desde costa rica y muchas gracias a todos de antemano por la ayuda que puedan me facilitar al respecto…
atte: erick
Hola Erick,
puede que en breve, por necesidad de un encargo, me vea en situación de adaptar el script para la última versión del Prestashop. En ese caso intentaré publicar los cambios.
Mientras tanto puede que algún lector del hilo pueda aportar experiencia y/o código.
Santi (vigoncas)
Estoy en la misma situación que Erick, En una tienda con la versión anterior no he tenido problemas, pero en la versión 1.5 parece que todo ha cambiado.
Muchas gracias por el esfuerzo
Jorge
Hola Jorge,
siento no disponer del tiempo para adaptar el código a las últimas versiones. No obstante, lo que le comentaba a Erick, a ver si hay suerte y algún proyecto financia esa investigación 😉
Hola Santi, No te disculpes.
Estoy intentando traspasar artículos desde mi programa de gestión desarrollado en otro lenguaje de programación.
El problema es que aún teniendo conocimientos de POO, no tengo conocimientos de PHP.
Igualmente estoy intentado ver si solo es una cuestión de cambiar rutas o es algo más complejo.
Si lo consigo no dudes que lo publicaré en este foro.
Gracias
Jorge
Jorge,
gracias a ti también.