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 に答える