Magento:用自定义价格重新订购商品,价格始终为0

时间:2012-03-05 15:57:28

标签: magento

我有一些定制价格的产品。根据所选的选项,应用了一个增加产品费用的公式,因此价格永远不会相同。我遇到的问题是,当您重新订购时,重新订购产品的价格始终为0.

在sales / controllers / OrderController中,在函数重新排序中,有:

$order = Mage::registry('current_order');
$items = $order->getItemsCollection();
foreach ($items as $item) {
    try {
        $cart->addOrderItem($item);
        ...

如果我添加这些行,我可以检索自定义价格,但我找不到编辑项目的方法,因此这是重新订购时添加的价格。

$options = $item->getProductOptions();
$options = $options['info_buyRequest'];
$customPrice = $options['custom_price'];

我尝试过(在循环中,在$ cart-> addOrderItem($ item)之前),但没有成功。

$item->setSpecialPrice($customPrice);
$item->setCustomPrice($customPrice);
$item->setOriginalPrice($customPrice);
$item->setBaseOriginalPrice($customPrice);
$item->setBaseCost($customPrice);
$item->setBaseRowInvoiced($customPrice);
$item->setRowInvoiced($customPrice);
$item->save();

任何帮助?

1 个答案:

答案 0 :(得分:3)

几种可能性。我会为checkout_cart_product_add_after事件尝试一个事件观察者。

// observer method:
public function checkoutCartProductAddAfter(Varien_Event_Observer $observer)
{
    $action = Mage::app()->getFrontController()->getAction();
    if ($action->getFullActionName() == 'sales_order_reorder')
    {
        $buyInfo = $observer->getQuoteItem()->getBuyRequest();
        if ($customPrice = $buyInfo->getCustomPrice())
        {
            $observer->getQuoteItem()->setCustomPrice($customPrice)
                 ->setOriginalCustomPrice($customPrice);
        }
    }
}