Entre las opciones configurables de desaparecer de la parte delantera después de la situación del stock volver a índice
-
12-12-2019 - |
Pregunta
Tengo una rutina de importación personalizado que crea productos configurables y se asigna a los niños a ellos.Estos aparecen en la parte delantera sin problema hasta que ejecutar manualmente el estado del stock de volver a índice.
He hecho una foto desde antes y después de la re-índice y hay una mesa de cambio que se cataloginventory_stock_status
donde el stock_status
la columna se cambia de 1
(cuando aparece) a 0
(ahora no aparecen) para mi configurable de los padres.
¿Alguien puede explicar este comportamiento o sabe cómo solucionarlo?
Solo para aclarar, re-sincronización de mi producto que se llama el código siguiente:
$stockStatus = Mage::getModel('cataloginventory/stock_status');
$stockStatus->assignProduct($product);
$stockStatus->saveProductStatus($product->getId(), 1);
hace que las opciones aparecen de nuevo hasta que el estado siguiente volver a índice.
Solución 2
Resulta que cuando la importación de la configurable padre me fue la omisión de algunos de código que poner una entrada en cataloginventory_stock_item
lo que causó la stock_status
se establezca en 0
cuando la re-índice de ejecución.Con eso en mente, necesitamos asegurarnos de configurar un registro de los padres tiene un elemento que yo.e:
$stockItem = Mage::getModel('cataloginventory/stock_item');
$stockItem->assignProduct($product);
$stockItem->setData('stock_id', 1);
$stockItem->setData('qty', $stockLevel);
$stockItem->setData('use_config_min_qty', 1);
$stockItem->setData('use_config_backorders', 1);
$stockItem->setData('min_sale_qty', 1);
$stockItem->setData('use_config_min_sale_qty', 1);
$stockItem->setData('use_config_max_sale_qty', 1);
$stockItem->setData('is_in_stock', ($isInStock) ? 1 : 0);
$stockItem->setData('use_config_notify_stock_qty', 1);
$stockItem->setData('use_config_manage_stock', 0);
$stockItem->setData('manage_stock', ($this->getPropS($kcStockItem, 'STOCK_CONTROLLED') == '-1') ? 1 : 0);
$stockItem->setData('backorders', $backorderVal);
$stockItem->setData('use_config_backorders', "0");
$stockItem->save();
Otros consejos
Me he topado con este problema al importar el estado del stock a través del método de la API.Lo que tenía que hacer era parche para el núcleo de la reescritura de un módulo principal. Mage_Catalog_Model_Resource_Product_Status::getProductStatus()
tiene un error en lo que incorrectamente se carga hasta que el niño los estados.Con el fin de corregir este error, que sustituyó a la $seleccione asignación en la instrucción else de este método con
$select = $adapter->select()
->from(
array('t1' => $attributeTable),
'')
->joinLeft(
array('t2' => $attributeTable),
't1.entity_id = t2.entity_id AND t1.attribute_id = t2.attribute_id AND t2.store_id = ' . (int)$storeId,
array('t1.entity_id')
)
->columns(array('value' => $valueCheckSql))
->where('t1.store_id = ?', Mage_Core_Model_App::ADMIN_STORE_ID)
->where('t1.attribute_id = ?', $attribute->getAttributeId())
->where('t1.entity_id IN(?)', $productIds);
Asegúrese de que usted hace esto anulando la Mage_Catalog_Model_Resource_Product_Status::getProductStatus()
método para llevar a cabo esto por lo que eres no modificar el núcleo directamente.