Entre las opciones configurables de desaparecer de la parte delantera después de la situación del stock volver a índice

magento.stackexchange https://magento.stackexchange.com//questions/34569

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.

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top