可配置产品的库存通知电子邮件


8

当我开始注意到某些库存通知电子邮件没有发送时,我最近遇到了一家商店的问题。所有有关简单产品的电子邮件都可以,但是涉及可配置产品时,这是我的问题:

现在,客户可以注册库存通知电子邮件。cron作业运行良好,并且系统逻辑上仅在它们实际有库存且未设置为0时才发送它们。但是,可配置产品始终设置为0,并且属于该可配置产品的简单产品会进行库存更改。因此,现在发生的事情是,人们只能在所有尺码都缺货时才能订购产品(因此,甚至无法选择他们希望收到的信息的尺码),然后例如在重新购买鞋子时,他们不会收到通知,因为可配置(他们订阅的产品)仍为0。

我确定我不是第一个遇到此问题的人,所以我想知道是否有人能够解决该问题或找到解决方案?

Answers:


1

听起来您需要在两个地方调整代码。首先,您的代码在哪里检查每个产品是否允许客户订阅。其次,您的代码(我承担的cron工作)在哪里检查产品的库存变化。

首先,如果任何子产品缺货,您可以允许订阅:

    $allowSubscriptionForProduct = false;
    if ($product->getData('type_id') == 'configurable') {
        $childProductIds = Mage::getModel('catalog/product_type_configurable')
            ->getChildrenIds($product->getId())
        foreach ($childProductIds[0] as $childProductId) {
            $stock = Mage::getModel('cataloginventory/stock_item')->loadByProduct($childProductId);
            if ($stock->getData('is_in_stock') == 1) {
                $allowSubscriptionForProduct = true;
                break;
            }
        }
    }
    if ($allowSubscriptionForProduct === true) {
        // change a product attribute to let customers subscribe to this product. 
    }

注意:$ childProductIds具有奇怪的结构。我期望有一个id数组,但是getChildrenIds()将该数组包装在另一个数组中。因此,foreach循环中的[0]。

在第二种情况下,您需要从子产品转到父可配置产品。

    foreach ($simpleProductThatWasOutOfStock as $outOfStockSimpleProduct) {
        $stock = Mage::getModel('cataloginventory/stock_item')->loadByProduct($outOfStockSimpleProduct->getId());
        if ($stock->getData('is_in_stock') == 1) {
            $configurableProductIds = Mage::getModel('catalog/product_type_configurable')->getParentIdsByChild($outOfStockSimpleProduct->getId())
            foreach ($configurableProductIds as $configurableProductId) {
                // use the code that schedules/sends the email notifications 
            }
        }
    }

如果没有正在使用的实际代码,很难更精确。我希望这至少会使您走上正确的道路。

这些条目也可能有用。要检查库存状态:

https://stackoverflow.com/a/2703800

https://stackoverflow.com/a/31612963

从子产品到可配置的父产品:

https://stackoverflow.com/a/1706297

https://magento.stackexchange.com/a/30245


0

您可能需要自定义代码或使用任何扩展来提供诸如基于主要产品(而不是根据简单产品)的可配置产品工作之类的功能。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.