Convertir productos simples en virtuales en Magento

Cada tanto suele aparecer la misma pregunta (en alguna de sus dos variantes): ¿como hago para convertir un producto simple en un producto virtual? (o podría ser el caso inverso).

En líneas generales, dentro de Magento, los productos simples y los virtuales son lo mismo (atributo más, atributo menos). Veamos un ejemplo de producto simple.

+-----------+----------------+------------------+---------+----------------+--------------+---------------------+---------------------+-------------+------------------+
| entity_id | entity_type_id | attribute_set_id | type_id | sku            | category_ids | created_at          | updated_at          | has_options | required_options |
+-----------+----------------+------------------+---------+----------------+--------------+---------------------+---------------------+-------------+------------------+
|         3 |              4 |                4 | simple  | simple-product | 4            | 2009-12-12 18:31:36 | 2009-12-12 18:31:36 |           0 |                0 |
+-----------+----------------+------------------+---------+----------------+--------------+---------------------+---------------------+-------------+------------------+

Como ven, en la columna type_id se especifica qué tipo de producto estamos usando.

La gran diferencia entre un tipo de producto y otro, dada su naturaleza, es que el virtual no necesita de especificación del método de envío (dado que es un producto que no se enviaría).

Si vemos el checkout de un simple, el 3º y 4º paso hace referencia a los envíos.

Checkout de un producto simple en Magento

Vamos a convertir el producto simple en virtual.

update catalog_product_entity set type_id = 'virtual' where entity_id = 3;

Si volvemos a consultar el producto veríamos lo siguiente.

+-----------+----------------+------------------+---------+----------------+--------------+---------------------+---------------------+-------------+------------------+
| entity_id | entity_type_id | attribute_set_id | type_id | sku            | category_ids | created_at          | updated_at          | has_options | required_options |
+-----------+----------------+------------------+---------+----------------+--------------+---------------------+---------------------+-------------+------------------+
|         3 |              4 |                4 | virtual | simple-product | 4            | 2009-12-12 18:31:36 | 2009-12-12 18:31:36 |           0 |                0 |
+-----------+----------------+------------------+---------+----------------+--------------+---------------------+---------------------+-------------+------------------+

Si vemos en el checkout ahora, vemos como el cambio en el producto se ha aplicado.

Checkout de un producto virtual en Magento

Con esto logramos convertir nuestro producto.

Por supuesto, puede hacerse en ambos sentidos. Es decir, de simple a virtual o de virtual a simple. El paso sería el mismo.