我有一些定制价格的产品。根据所选的选项,应用了一个增加产品费用的公式,因此价格永远不会相同。我遇到的问题是,当您重新订购时,重新订购产品的价格始终为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();
任何帮助?
答案 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);
}
}
}