arunda2 Posted December 28, 2011 Share Posted December 28, 2011 Tengo una tienda de ropa y el programa de facturación me da un listado con Referencia, talla, y unidades de cada artículo Estoy preparando un script sql para actualizar la base de datos de prestashop una vez al día, para no tener que actualizar el inventario uno por uno, cosa que sería poco menos que imposible. Ya he localizado la referencia y el stock en la tabla product_attribute, pero puesto que de cada referencia hay varias líneas con distintas tallas, y tengo que actualizar solo la que corresponda, no sé como localizar las tallas en la BD, puesto que hay diferentes tallajes (grupos de atributos) y además prestashop maneja diferentes idiomas. Todo esto afecta a múltiples tablas Alguna idea de como hacer esta consulta ¿Nadie tuvo que hacer esto antes? Gracias Link to comment Share on other sites More sharing options...
ErikSebastia2 Posted December 29, 2011 Share Posted December 29, 2011 Hola compañero, creo que hay dos opciones: a)Codigo SQL correcto que busque i actualize en todas las tablas b)Utilizar un programa como Factusol (gratuito) Puedes mostrar más datos de las tablas de BD? Saludos cordiales Link to comment Share on other sites More sharing options...
jotacee Posted December 29, 2011 Share Posted December 29, 2011 Existe un módulo llamado exportproducts que te permitirá exportar toda la información que necesites. Después, cuando tengas en un listado en excel o csv las columnas de Nombre de artículo, y Stock, podrás Importar, en el menú de Herramientas de prestashop. ¡Ojo! Prueba antes a hacerlo en tu entorno de pruebas... o hazlo solo con un artículo. Esta es una práctica habitual en muchas tiendas online. Excel es vital Le dedico el post del día: http://joyconnecting.com Link to comment Share on other sites More sharing options...
opsystemcd Posted January 27, 2012 Share Posted January 27, 2012 Existe un módulo llamado exportproducts que te permitirá exportar toda la información que necesites. Después, cuando tengas en un listado en excel o csv las columnas de Nombre de artículo, y Stock, podrás Importar, en el menú de Herramientas de prestashop. ¡Ojo! Prueba antes a hacerlo en tu entorno de pruebas... o hazlo solo con un artículo. Esta es una práctica habitual en muchas tiendas online. Excel es vital Le dedico el post del día: http://joyconnecting.com Donde puedo descargar ese modulo? Gracias. Link to comment Share on other sites More sharing options...
josecarre Posted January 28, 2012 Share Posted January 28, 2012 Yo estoy en lo mismo. Tengo zapatos de niño: unas 20 numeraciones y 50 colores. Estoy acabando un script en python para manejarlo. Os pongo aquí tres consultas sql que uso en el script y que podéis probar en local -para evitar accidentes-. En mi caso ambas funcionan, pero ojo a los nombres de los atributos y los id de los atributos, en cada caso cambian. En estos scripts se manejan dos atributos por referencia: color y número. edit: en todos los casos parto de la base de productos ya generados mediante el BO de combinaciones, que resulta muy prácticos para introducir los atributos pero un engorro para editar cantidades. 1 La primera sirve para obtener una vista general de las existencias, con los productos listados por color en vertical y la numeración en horizontal (ojo, hay que introducir en el primer select cada uno de los valores del atributo) . El problema que tiene es que, a base de instrucciones group concat se pierde el dato fundamental a la hora de actualizar existencias: el id_product_attribute. Este índice es la base que permite actualizar las existencias de cada producto en un color y talla determinado. O sea, que sirve para ver, pero no permite generar fácilmente una instrucción update. 2 La solución es usar el primer sql para generar la vista y otro sql equivalente para generar las instrucciones update. Aunque el segundo sql muestra los datos de manera diferente, devuelve exactamente los mismos datos que en la primera, pero emparejando cada id_product_attribute con el número y color adecuado. De este modo es muy sencillo actualizar con un update set quantity=lo que sea where id_product_attribute= lo que sea. Ojo, en este sql se mete manualmente el id de referencia de cada producto. 3 Después, por necesidad --mi hosting no acepta sql en python- cambié de estrategia: ahora uso un tercer sql equivalente al segundo, pero que genera el mismo listado para todas las referencias. Luego lo exporto vía csv y lo manejo offline. La idea es que idealmente sólo tendré que hacer esto una vez, al establecer un inventario base. Después, cambio el script para que genere updates 'relativos', es decir, que sumen o resten a la cantidad existente. De este modo es más fácil introducir ventas de las tiendas físicas o añadir existencias cuando llega más mercancía. En fin, espero que esto le ayude a alguien. Suerte ------------------------------- primer sql -------------------------------- SELECT color, group_concat(if(numero='16 ',cast(quantity as char), null)) as '16', group_concat(if(numero='17 ',cast(quantity as char), null)) as '17', group_concat(if(numero='18 ',cast(quantity as char), null)) as '18', group_concat(if(numero='19 ',cast(quantity as char), null)) as '19', group_concat(if(numero='20 ',cast(quantity as char), null)) as '20', group_concat(if(numero='21 ',cast(quantity as char), null)) as '21', group_concat(if(numero='22 ',cast(quantity as char), null)) as '22', group_concat(if(numero='23 ',cast(quantity as char), null)) as '23', group_concat(if(numero='24 ',cast(quantity as char), null)) as '24', group_concat(if(numero='25 ',cast(quantity as char), null)) as '25', group_concat(if(numero='26 ',cast(quantity as char), null)) as '26', group_concat(if(numero='27 ',cast(quantity as char), null)) as '27', group_concat(if(numero='28 ',cast(quantity as char), null)) as '28', group_concat(if(numero='29 ',cast(quantity as char), null)) as '29', group_concat(if(numero='30 ',cast(quantity as char), null)) as '30', group_concat(if(numero='31 ',cast(quantity as char), null)) as '31', group_concat(if(numero='32 ',cast(quantity as char), null)) as '32', group_concat(if(numero='33 ',cast(quantity as char), null)) as '33', group_concat(if(numero='34 ',cast(quantity as char), null)) as '34', group_concat(if(numero='35 ',cast(quantity as char), null)) as '35', group_concat(if(numero='36 ',cast(quantity as char), null)) as '36', group_concat(if(numero='37 ',cast(quantity as char), null)) as '37', group_concat(if(numero='38 ',cast(quantity as char), null)) as '38', group_concat(if(numero='39 ',cast(quantity as char), null)) as '39' from ( SELECT substring(group_concat(PAL.name order by A.id_attribute_group desc separator ' '),3) as color, substring(group_concat(PAL.name order by A.id_attribute_group desc separator ' '),1,3) as numero, quantity FROM ps_attribute_lang as PAL, ps_product_attribute_combination as PAC, ps_product_attribute as PA, ps_attribute as A WHERE (PAL.id_lang=3 AND PAC.id_attribute=PAL.id_attribute AND PAC.id_product_attribute=PA.id_product_attribute AND PA.reference='2335' AND PAL.id_attribute=A.id_attribute) group by PAC.id_product_attribute ) as tbl group by color; -------------------------- segundo sql -------------------------- SELECT group_concat(PAL.name order by A.id_attribute_group asc separator ' ') as numero_color, PAC.id_product_attribute, PA.reference, PA.quantity FROM ps_attribute_lang as PAL, ps_product_attribute_combination as PAC, ps_product_attribute as PA, ps_attribute as A WHERE (PAL.id_lang=3 AND PAC.id_attribute=PAL.id_attribute AND PAC.id_product_attribute=PA.id_product_attribute AND PA.reference='2335' AND PAL.id_attribute=A.id_attribute) group by PAC.id_product_attribute order by numero_color ------------------- tercer sql --------------------- SELECT PA.reference, PAC.id_product_attribute, group_concat(PAL.name ORDER BY A.id_attribute_group DESC SEPARATOR ' '), PA.quantity FROM ps_attribute_lang as PAL, ps_product_attribute_combination as PAC, ps_product_attribute as PA, ps_attribute as A WHERE (PAL.id_lang=3 AND PAC.id_attribute=PAL.id_attribute AND PAC.id_product_attribute=PA.id_product_attribute AND PAL.id_attribute=A.id_attribute) group by PAC.id_product_attribute Link to comment Share on other sites More sharing options...
jotacee Posted February 1, 2012 Share Posted February 1, 2012 El módulo de exportproducts al que me refería lo encontramos en el blog de Sergio Bejarano: http://www.sergiobejarano.com/2011/10/24/modulo-para-exportar-productos-a-csv-en-prestashop/ Link to comment Share on other sites More sharing options...
Recommended Posts