在下订单之前附加产品

时间:2012-10-11 12:00:18

标签: magento

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

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

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分: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();
}