0

我遇到了一种情况,我们需要根据购物车物品附加一些产品。但我们不希望客户看到有条件的产品。有没有办法在下订单之前添加某些产品?

我为事件创建了一个观察者sales_order_place_before并检查了订单项目并获取了我们需要添加的条件产品。但是,现在我应该如何将这些产品附加到将要创建的订单中?

任何帮助将不胜感激!

4

1 回答 1

0

添加我自己的答案以帮助其他有同样问题的人。

config.xml

<events>
    <sales_order_save_after>
        <observers>
            <specialitem>
                <type>singleton</type>
                <class>specialitem/observer</class>
                <method>attachSpecialItem</method>
            </specialitem>
        </observers>
    </sales_order_save_after>
</events>

Observer.php

public function attachSpecialItem(Varien_Event_Observer $obs) {

    $order = $obs->getEvent()->getOrder();
    $sku = 'SKU OF PRODUCT TO ADD DYNAMICALLY';
    $product = Mage::getModel('catalog/product')->loadByAttribute('sku', $sku);
    $qty = 1;

    $rowTotal = $product->getPrice();
    $order_item = Mage::getModel('sales/order_item')
            ->setStoreId($order->getStore()->getStoreId())
            ->setQuoteItemId(NULL)
            ->setQuoteParentItemId(NULL)
            ->setProductId($product->getId())
            ->setProductType($product->getTypeId())
            ->setQtyBackordered(NULL)
            ->setTotalQtyOrdered($qty)
            ->setQtyOrdered($qty)
            ->setName($product->getName())
            ->setSku($product->getSku())
            ->setPrice($product->getPrice())
            ->setBasePrice($product->getPrice())
            ->setOriginalPrice($product->getPrice())
            ->setRowTotal($rowTotal)
            ->setBaseRowTotal($rowTotal)
            ->setOrder($order);
    $order_item->save();
}
于 2013-02-22T20:18:01.950 回答