actualizar estado de los productos

Objetivo

Nuestro objetivo es cambiar el estado a "fuera de stock" a todos los productos que tengan las siguientes características:

  • Tienen que ser de la tienda X
  • Tienen que ser de color diferente del blanco

Plan de acción

Antes de realizar acciones concretas, razonemos primero. Es conveniente tener un plan de acción.

Magento tiene una funcionalidad en el Backoffice para importar archivos de extensión csv para hacer cambios en los datos de la base de datos. La ruta de la configuración está en System > Data Transfer > Import.

Un producto puede ser de dos tipos: configurable o simple. Puede tener muchos atributos, que pueden tener muchos valores. En este caso concreto, el producto tiene que ser de tipo simple. El atributo es color. Su valor tiene que ser diferente del blanco.

Sabemos que si un producto tiene cantidad 0, automáticamente considerará que está en estado "Fuera de Stock" y no estará disponible para la venta. Como consecuencia, el botón de "añadir al carrito" no estará presente en la página del producto.

Entonces podemos llevar a cabo este plan de acción de la siguiente manera:

  • Sacar, de la base de datos, todos los skus que cumplan las condiciones anteriores, asignar valor 0 al atributo "QTY" y volcar todos estos datos en un fichero csv.
  • Importar el fichero csv usando la funcionalidad de importación de csv en la ruta System > Data Transfer > Import, eligiendo Product Entity

Pasos a hacer

El sql para sacar los productos que cumplan las características anteriores es:

        
            SELECT DISTINCT
              a.sku,
              "0" AS qty
            from
              catalog_product_entity a
              inner join catalog_category_product b on b.entity_id = a.entity_id
              inner join catalog_product_website c on c.product_id = b.product_id
              inner join cataloginventory_stock_status d on b.product_id = d.product_id
              inner join catalog_product_entity_int e on e.entity_id = a.entity_id
            where
              a.type_id = "[simple]"
              and c.website_id = [3]
              and e.attribute_id = [93]
              AND e.value !=  [5]

            # [simple]: tipo de producto
            # [93]: id del atributo color
            # [5]: color blanco
            # [3]: id del website
        
    

Exportar los datos obtenidos en formato CSV, usando algún cliente de Mysql. Por ejemplo, HeidiSql

        
            # Resultado en el fichero csv
            "sku"	"qty"
            "T4"	"0"
            "T6"	"0"
            "T8"	"0"
            "T3"	"0"
            "T12"	"0"
            "T15"	"0"
            "T14"	"0"