Изменение цены продукта в зависимости от количества на складе в magento 1.9


У меня ситуация, когда цена товара должна меняться в зависимости от количества товаров на складе. Например, если на складе более 10 наименований, то цена товара должна быть какой-то специальной ценой, например 100 долларов. Если запас составляет <10, то цена должна отражать первоначальную цену товара.

Я создал пользовательский модуль с пользовательским атрибутом (minqtyapplicableforspecialprice) для минимального количества, применимого по специальной цене. Теперь я должен изменить все такие места, как страницы товаров, корзины и оформления заказа, где цена должна показывать специальную цену, основанную на значении minqtyapplicablefor Specialprice.

Любая помощь приветствуется. Заранее спасибо.

Author: Meenu, 2018-12-09

1 answers

Наконец-то нашел свое собственное решение, добавив событие наблюдателя.

sales_order_place_after может изменить цену товара после размещения заказа, если запас меньше, чем minQtyApplicableForSpecialPrice.

public function salesOrderAfterSave(Varien_Event_Observer $observer)
{

    $order = $observer->getEvent()->getOrder();
    $cartItems = $order->getQuote()->getAllVisibleItems();
    foreach ($cartItems as $item) {
       $productId = $item->getProductId();
       $product = Mage::getModel('catalog/product')->load($productId);
       $stock = Mage::getModel('cataloginventory/stock_item')->loadByProduct($product);
       $stockQuantity=$stock->getQty();

       $attribute_code='minimum_qty_for_special_price';
       $minimumQuantity = $product->getResource()->getAttribute($attribute_code)->getFrontend()->getValue($product);
       $date = Mage::getModel('core/date')->date('Y-m-d h:i:s');
       $previousDate =  Mage::getModel('core/date')->date('Y-m-d h:i:s', strtotime($date." -1 days"));

       if (($stockQuantity - $minimumQuantity) < 0){
            $product->setSpecialToDate($previousDate);
            Mage::app()->setCurrentStore(0);
            $product->save();
        } 

    }
    return $this;
}

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

 0
Author: Meenu, 2018-12-10 13:27:03