Daniel Irias Posted February 2, 2015 Share Posted February 2, 2015 (edited) Hace unos días encontré un script que realizaba la tarea de desactivar los productos que se quedan con stock = 0.Si no somos de los que realizamos ventas con stock en 0, esto es algo útil, pues de esta manera evitamos que nuestros clientes vean los productos de los cuales ya no tenemos inventario.Sin embargo, con el pasar de los días me di cuenta que había algo malo con este script:UPDATE ps_product_shop SET active=0 WHERE id_product IN (SELECT id_product FROM ps_stock_available WHERE quantity=0)Resulta que si de un producto tenemos algunas variantes, por ejemplo su tamaño, y de uno de esos tamaños nuestro stock ha llegado a 0, el script lo desactiva. Cosa que no debería suceder. Prestashop se encarga de mostrar a los clientes únicamente los tamaño que tienen un stock > 0 y al desactivar el producto desactivamos estos tamaños que sí tienen stock.Ilustrando un poco: En este caso en total tenemos 113 unidades del producto, pero el script lo desactiva porque de nuestros tamaños y colores hay 3 con un stock=0. Como dije antes: Prestashop se encarga de mostrar a los clientes únicamente los tamaño que tienen un stock > 0, en este caso los tres primeros. El script corregido sería el siguiente: UPDATE ps_product_shop SET active=0WHERE id_productIN (SELECT interna.id_product FROM (SELECT SUM(quantity) as quantity, id_product as id_product FROM ps_stock_available GROUP BY id_product) as interna WHERE interna.quantity=0) De esta manera el producto será desactivado cuando no dispongamos de ningún tamaño o cualquier otra variante. Para que funcione, deben crear un trigger en la tabla ps_stock_available tal como se los muestro a continuación. Espero que este post sea de utilidad para todos. Edited February 4, 2015 by daniel_irias (see edit history) Link to comment Share on other sites More sharing options...
Recommended Posts