Intenté algunos fragmentos encontrados en línea pero sin éxito.
Solo tratando de configurar un producto para que esté en stock / fuera de stock con código, esto es lo que he conseguido:
$product = Mage::getModel('catalog/product')->load( 'id' );
$stockItem = $product->getStockItem();
$stockItem->setData('manage_stock', 1);
$stockItem->setData('is_in_stock', 0);
$stockItem->setData('use_config_notify_stock_qty', 0);
$stockItem->setData('qty', 0);
$stockItem->save();
$product->save();
No está haciendo cambios en la información del producto cuando se ve a través del panel de administración, ¿alguna idea?
inventory
ce-1.6.2.0
Miguel
fuente
fuente
Respuestas:
Intenta esto en su lugar:
y luego establezca y guarde sus cambios como antes.
fuente
Intenta lo siguiente. no deberías tener que cargar un nuevo objeto de stock
Y simplemente guarde el producto como lo hizo en su script
fuente
Tuve un problema similar pero con la diferencia de que no había ningún objeto de stock para un producto en particular. Cuando esto sucede, es bueno crear el objeto del artículo de inventario inicialmente antes de establecer la cantidad (a menos que haya una forma de hacerlo al mismo tiempo).
fuente
$product->save();
- ¿Se requiere después de guardar$stockItem
?probándose magento 1.8.1.0 CE y no se pudo guardar "qty" debido a que falta el valor "type_id" (para un nuevo elemento). resuelto por
fuente
Como la adición a todas las respuestas, puede ser una buena idea usar en
addData
lugar desetData
estar seguro para actualizar la información y no solo configurarla.fuente
Quiero sugerir un cambio en la respuesta de Raj para apoyar situaciones extrañas. Para que la respuesta funcione, tuve que comentar la declaración if, porque los productos creados de manera programática pueden tener datos de existencias parciales pero incompletos. Esta fue la única forma en que pude hacerlo funcionar.
fuente
Aquí hay una posible causa que me costó aproximadamente 2 horas de trabajo: estuve intentando esto durante años preguntándome por qué no ahorraría. Tenía una
exit;
declaración de php después del->save()
y un montón de ecos para que no se moviera a la siguiente pantalla automáticamente (para ayudar a depurar).Sin embargo, los commits a la base de datos deben ocurrir tarde en la carga de la página, ¡no me guardaría hasta que elimine el
exit;
!fuente
Como en otras respuestas sugeridas, uno puede usar la clase
Mage_CatalogInventory_Model_Stock_Item
directamente. Pero uno tiene que hacer referencia al producto correctamente a través de una llamadasetProduct
para tener un código de trabajo tanto para los artículos nuevos como para los existentes.Solución alternativa
Sin embargo, si llama de
$product->save
todos modos, solo establecería los datos de stock de la$product->setStockdata($array)
siguiente manera. De esta manera, Magento crea un artículo de stock correcto a partir de los datos de stock. La gran ventaja es que la actualización del artículo de stock ocurre en la misma transacción que$product->save()
. Esto es importante para la consistencia de los datos.fuente
Este es mi código C #
is_in_stockSpecified
es importanteEsta es la salida
fuente