Jump to content

Migración de productos de un ERP a Prestashop


himar

Recommended Posts

Buenos días de nuevo,

 

Estoy teniendo un problema con el siguiente tema:

 

Tengo un CRM/ERP desarrollado completamente a medida; Mediante la herramienta TALEND (java), he desarrollado unos Jobs autónomos, que migran los productos y los packs de dicha aplicación (con BBDD Oracle) a Prestashop (ahora la 1.5.4) una vez al día.

 

El problema es que funcionaba en la 1.5.3 y sin utilizador de stock, pero ahora en la 1.5.4 y con utilizador de stock activado, ocurre que deja todos los pack como si fuesen productos (marcados como producto) y no aparece la pestaña de "Paquete" en la edición del producto.

 

En BBDD todo parece estar correcto porque se soluciona de la siguiente manera:

Tengo un producto "No disponible" con el que lo soluciono. Tras la migración diaria, edito dicho producto, lo marco como paquete y en la pestaña paquete le pongo un producto cualquiera, y tras grabar sin problemas, todos los paquetes aparecen ya bien (como paquetes y no como productos) y con los artículos que los componen, tanto en el frontend como en el backend Parece como si al grabar un paquete desde el backend algo se regenerase y a partir de ahí todo se ve correctamente...

 

Le ha pasado a alguien algo parecido?, intuís por dónde puede estar el problema? Caché corrupta..? Me gustaría saber el porqué y poder solucionarlo..

 

En BBDD establezco:

  • En la tabla xxx_product la columna "cache_is_pack" a 1.
  • En la tabla xxx_pack los productos de cada paquete.

Muchas gracias por vuestro tiempo.

Link to comment
Share on other sites

  • 4 months later...

Buenos dias,

 

He leido su post y me parece interesante, yo estoy trabajando con la integracion de productos en la base de datos prestashop, a partir de Talend Open Studio.

 

Puede ayudarme con algun ejemplo de query sql que le permita crear un producto?

He intentado con querys de typo

 

insert into ps_product(id_supplier, id_manufacturer, id_category_default, id_tax_rules_group, active, available_date, date_add, date_upd)
values (0,0,0,1,1,DATE_FORMAT('USA', '09-04-2013'),DATE_FORMAT('USA', '09-04-2013'),DATE_FORMAT('USA', '09-04-2013'));

 

pero no logro relacionar esta linea para despues recuperar el id_product generado y declarar mis datos en ps_product_lang.

 

Segun lo que he entendido, debo almenos de declarar mis datos en las tablas ps_product , ps_product_lang y ps_product_shop.

 

De ante mano, gracias por su ayuda

Link to comment
Share on other sites

Hello matrix13

 

Las tablas que yo empleo son:

sp_product, ps_product_shop, ps_category_product, ps_product_lang y ps_pack.

 

No creo que se pueda crear un producto con una sola query, más bien es un proceso de varias. Te cuento lo que yo hago:

(Partimos del supuesto de que tenemos ya todos los artículos en la base de datos de prestashop)

 

Yo leo la información necesaria en mi ORACLE mediante un objeto tOracleInput e inserto esa información en ps_product mediante un tMysqlOutput.

Después (onComponentOk) obtengo los ID mediante un tMysqlInput que lee los datos de ps_product que acabo de insertar, mediante esta consulta que me permite obtener los datos para realizar las inserciones necesarias en ps_product_shop:

"SELECT sp.id_product, sp.id_shop_default as id_shop, sp.id_category_default, sp.id_tax_rules_group, sp.ecotax, sp.price, sp.available_date, sp.date_add, sp.date_upd, sp.reference from shop_product sp where cache_is_pack = 1"

 

Tras esto, y con un proceso idéntico, inserto sus categorías en la tabla ps_category_product y finalmente en ps_product_lang.

 

Para insertar en ps_product_lang hago lo siguiente:

Con un objeto tOracleInput leo de mi Oracle el nombre, descripción, código...

Con un objeto tMysqlInput leo de prestashop el id_product y la referencia de ps_product where cache_is_pack = 1

Con el objeto tMap asocio los dos objetos anteriores con un tercero que es de tipo tMySqlOutput cuya tabla es ps_product_lang realizándose así la inserción.

 

Por último y de forma similar inserto los datos necesarios en ps_pack para que aparezcan los artículos que forman un pack.

 

No sé si he conseguido explicarme o entender bien tu pregunta... si no pregúntame.

 

Saludos y suerte!

Link to comment
Share on other sites

si me permitis un comentario os cuento mi experiencia, nosotros hace un par de años usabamos sentencias SQL para crear productos y al final vimos que no es la opción más correcta. La gente de prestashop permite realizar modulos extendiendo su programacion que es muy facil de comprender, para que os hagais una idea por ejemplo:

 

producto->add();

 

De esta forma tan sencilla os crea un producto que previamente hemos creado como un objeto Product. Yo revisaria un poco los modulos que ya vienen en Prestashop para que veais su programación.

 

De esta forma os olvidareis de que se me olvido tal o cual consulta. Lleva un poco mas de tiempo pero el metodo es mejor y no dan tantos problemas.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...