Вопрос

Я рассматриваю возможность ограничить количество клиентов покупкой 1 пакета продуктов за раз.

Есть ли способ установить "Максимальное допустимое количество в корзине покупок" для пакета товаров?

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

Есть идеи, возможно ли это, если да, то как мне это реализовать?

Это было полезно?

Решение

Основная функция "Максимальное количество" привязана к товарным запасам, поэтому она не работает с пакетами (у них нет собственного запаса).

Вы должны разработать его самостоятельно.

Для простых продуктов проверка происходит в Mage_CatalogInventory_Model_Stock_Item::checkQuoteItemQty():

if ($this->getMaxSaleQty() && $qty > $this->getMaxSaleQty()) {
    $result->setHasError(true)
        ->setMessage(
            Mage::helper('cataloginventory')->__('The maximum quantity allowed for purchase is %s.', $this->getMaxSaleQty() * 1)
        )
        ->setErrorCode('qty_max')
        ->setQuoteMessage(Mage::helper('cataloginventory')->__('Some of the products cannot be ordered in requested quantity.'))
        ->setQuoteMessageIndex('qty');
    return $result;
}

Это называется Mage_CatalogInventory_Model_Observer::checkQuoteItemQty() и именно здесь я бы добавил свои собственные дополнительные ограничения для пакетов.Либо с перезаписью , либо с дополнительным наблюдателем для того же события (sales_quote_item_qty_set_after):

  • проверьте, входит ли товар в комплект
  • если это так, проверьте, равно ли количество пакетов > 1, и в этом случае добавьте ошибку в кавычки точно так же, как в исходном observer.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top