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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a magento.stackexchange
scroll top