Opções configuráveis desaparecendo a partir do front-end depois de status do estoque re-índice de
-
12-12-2019 - |
Pergunta
Eu tenho uma rotina de importação personalizado que cria produtos configuráveis e atribui filhos deles.Estes aparecem no front-end sem problema até que eu executar manualmente o status do estoque re-índice.
Eu fiz um instantâneo de antes e depois de re-índice e não é uma tabela de mudar o que é cataloginventory_stock_status
onde o stock_status
a coluna é alterada de 1
(quando for apresentada) para 0
(agora não aparecem) para o meu configurável pai.
Alguém pode explicar esse comportamento ou sabe como consertar isso?
Só para esclarecer, re-sincronizar o meu produto que chama o código a seguir:
$stockStatus = Mage::getModel('cataloginventory/stock_status');
$stockStatus->assignProduct($product);
$stockStatus->saveProductStatus($product->getId(), 1);
faz com que as opções aparecem novamente até o próximo status de re-índice.
Solução 2
Acontece que ao importar a configurável pai eu estava ignorando algum código que colocar uma porta de entrada para cataloginventory_stock_item
o que causou o stock_status
a ser definido 0
quando o re-índice do processo foi executado.Com isso em mente, precisamos ter certeza de uma configuráveis pai tem um item que eu.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();
Outras dicas
Eu tenho esse problema quando a importação de status do estoque através do método da API.O que eu tinha a fazer era aplicar o patch do núcleo de reconfiguração de um módulo de núcleo. Mage_Catalog_Model_Resource_Product_Status::getProductStatus()
tem um erro que incorretamente carrega o status de criança.Para corrigir esse erro, troquei o $seleccione a atribuição na outra instrução deste método com
$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);
Certifique-se de que você fazer isso substituindo o Mage_Catalog_Model_Resource_Product_Status::getProductStatus()
método para fazer isso de modo que você não está modificando o núcleo diretamente.