¿Como actualizar precios en combinaciones de producto por categoría en Prestashop?
Si quieres actualizar de forma masiva los precios de las combinaciones en Prestashop debes de tener en cuenta que este se encuentra en dos tablas importantes que son:
- ps_product_attribute_shop (en la que encontramos precio de venta del atributo en la tienda)
- ps_product_attribute (encontramos precio del atributo)
Si solo modificaciones el precio en la tabla ps_product_attribute_shop, tendremos que el problema de que al editar la combinación, nos pondrá automáticamente el precio antiguo y no el de venta del producto que hemos modificado, lo que puede ocasionar un pequeño caos.
Para modificar de forma masiva una categoría utilizariamos la siguiente consulta SQL en PhpMyAdmin (no queda otra)
¿Como actualizo el precio de todas las combinaciones de una categoría?
UPDATE ps_product prd, ps_product_attribute pat, ps_category_product cat, ps_product_attribute_shop pshop
SET pat.price = pat.price - ((pat.price*37)/100), pshop.price = pshop.price - ((pshop.price*37)/100)
WHERE
prd.id_product = pat.id_product and cat.id_product = prd.id_product
AND pshop.id_product=cat.id_product
AND (cat.id_category = 24)
En este ejemplo esta modificado el precio de todos los productos de la categoría 24 y al precio de la combinacion le estamos realizando un descuento del 37% con la formula pshop.price = pshop.price – ((pshop.price*37)/100)
Si quisieramos sumarle 5€ solo tendriamos que modificarla por lo siguiente pshop.price = pshop.price + 5, facil y secillo.
Solo deseo modificar las combinaciones de un producto ¿como lo hago?
Para ello podrás utilizar la siguiente sentencia SQL donde prd.id_product es el ID de tu producto.
UPDATE ps_product prd, ps_product_attribute pat, ps_category_product cat, ps_product_attribute_shop pshop
SET pat.price = pat.price - ((pat.price*37)/100), pshop.price = pshop.price - ((pshop.price*37)/100)
WHERE
prd.id_product = pat.id_product and cat.id_product = prd.id_product
AND pshop.id_product=cat.id_product
AND (prd.id_product = 1)
Si tienes cualquier duda o si te ha parecido interesante no olvides dejar tu comentario.
hola buenas,
He usado ese código y el resultado es «SELECT» no existe
Buenas, es raro ya que no existen select en la sentencia, comprueba que no se a colado ningún select, que el prefijo de las tablas es ps_ o en su defecto cambia los prefijos de la sentencia al que tengas puesto.
he ejecutado la sentencia en un prestashop actual por para comprobarlo y funciona perfectamente. De todas maneras siempre que se realiza algo sobre bbdd es muy conveniente tener una copia de seguridad.
Un saludo y espero que te sirva de ayuda