Magento - Невозможно обновить состояние запаса товара на странице товара - PullRequest
1 голос
/ 17 февраля 2012

Один из наших поставщиков имеет систему инвентаризации в реальном времени, и мы хотели бы внедрить ее на нашем сайте. Когда человек нажимает на продукт, он должен проверить инвентарь и обновить при необходимости. Это работает хорошо в лучшем случае. Проблема заключается в том, когда продукт переключается на наличие или отсутствие на складе. Он корректно обновляется в бэкэнде, но я не могу добавить / удалить кнопку addtocart. Это мой код для обновления акций:

//$_stockQTY is the realtime inventory result

$stockData = Mage::getModel('cataloginventory/stock_item');
$stockData->loadByProduct($_product->getId());
$stockData->setData('qty', $_stockQTY);                    
$stockData->setData('is_in_stock',($_stockQTY > 0) ? 1 : 0); 
 if ($stockData->dataHasChangedFor('qty')) {
    $stockData->save();
    $_product = Mage::getModel('catalog/product')->load($_product->getId());
}

Как видите, я принудительно перезагружаю продукт, когда меняется количество. Кажется, это работает для всего, кроме кнопки addtocart. Показывает предыдущий результат (На складе или на складе до перезагрузки.)

У меня есть 2 вопроса:

Есть ли лучший способ перезагрузить продукт, кроме переназначения его, как я делаю выше:

$_product = Mage::getModel('catalog/product')->load($_product->getId());

И почему все обновляется правильно, но addtocart использует тот же

$_product->isSaleable()

позвоните, чтобы узнать о нашей доступности и т. Д.

Сравнить:

<?php if($_product->isSaleable()): ?>
                <p class="availability in-stock"><img src="<?php echo $this->getSkinUrl('images/stock.png') ?>"> <span><?php echo $this->__('In stock') ?></span>
...
?>

К

<?php if($_product->isSaleable()): ?>
                        <?php echo $this->getChildHtml('addtocart') ?>
<?php endif; ?>
<?php echo $this->getChildHtml('alert_urls') ?> //Only Shows up if addtocart does not.

Обновление страницы обновит продукт должным образом, но о мета-обновлении или чем-то подобном не может быть и речи. Я благодарен за любой совет, который можно дать, поскольку я хотел бы решить эту проблему и перейти к следующему заданию.

1 Ответ

0 голосов
/ 24 февраля 2012

Если я не понял вашего вопроса, похоже, шип на вашей стороне - это индекс состояния акций.

Попробуйте это:

Mage::getSingleton('cataloginventory/stock_status')->updateStatus($_product->getId());

(я не проверял это, но похоже, что оно должно работать)

...