Domanda

Ho una routine di importazione personalizzata che crea prodotti configurabili e assegna loro i bambini a loro.Questi appaiono sul front-end senza problemi fino a quando non eseguono manualmente il ri-indice dello stato dello stock.

Ho fatto un'istantanea da prima e dopo il ri-index e c'è una tabella che cambia che è cataloginventory_stock_status in cui la colonna stock_status viene modificata da 1 (quando viene visualizzato) a 0 (ora non appare) per la mia configurabilegenitore.

Qualcuno può spiegare questo comportamento o sapere come risolverlo?

Solo per chiarire, ri-sincronizzare il mio prodotto che chiama il seguente codice:

$stockStatus = Mage::getModel('cataloginventory/stock_status');
$stockStatus->assignProduct($product);
$stockStatus->saveProductStatus($product->getId(), 1);
.

Rende di nuovo le opzioni fino a quando il successivo ri-indice di stato.

È stato utile?

Soluzione 2

Si scopre quando si importano il genitore configurabile, sto saltando un codice che inserisca un'ingresso in cataloginventory_stock_item che ha causato impostare il stock_status su 0 quando è stato eseguito il processo di ri-index.Con questo in mente, dobbiamo assicurarci che un genitore configurabile abbia un articolo I.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();
.

Altri suggerimenti

Ho incontrato questo problema durante l'importazione dello stato delle scorte tramite il metodo API.Quello che ho dovuto fare è curare il nucleo riscrivendo un modulo principale.Mage_Catalog_Model_Resource_Product_Status::getProductStatus(). Ha un bug in esso che carica erroneamente gli stati dei bambini.Per risolvere questo bug, ho sostituito l'assegnazione di $ Select in all else di questo metodo 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);
.

Assicurarsi di farlo sovrascrivere il metodo Mage_Catalog_Model_Resource_Product_Status::getProductStatus() per eseguire ciò in modo da non modificare direttamente il nucleo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top