2012-07-07 87 views
0

我很清楚找出使用優惠券代碼的次數(銷售規則/優惠券型號)。不過,我想知道如何攔截使用優惠券並將其總計記錄在表格中。Magento在優惠券代碼上使用的記錄金額

我試圖通過覆蓋Mage_Checkout_OnepageController的successAction()方法來做到這一點,但是如果我試圖用

$couponCode = (string) Mage::getSingleton('checkout/cart')->getQuote()->getCouponCode(); 

$ COUPONCODE原來是一個空字符串,以獲得優惠券代碼。看起來,到成功行動被調用時,結帳/購物車單身已經被清空了。 如何攔截「下訂單」按鈕並仍能獲取客戶使用的優惠券代碼?

所有幫助非常感謝,我始終接受答案!

回答

1

輸入successAction後,checkout/cart對象的_quote屬性已被取消。

然而,你仍可以通過使用會在這個successAction進入你的數據:

$oOrder = Mage::getModel('sales/order') 
    ->load($this->getOnePage()->getCheckout()->getLastOrderId()); 

var_dump(
    $oOrder->getCouponCode(), 
    $oOrder->getDiscountAmount(), 
    $oOrder->getGrandTotal() 
); 

但是我建議以創建checkout_onepage_controller_success_action事件的觀察者來代替。這樣你就不必重寫任何東西。當涉及到Magento升級時,通常無需維護。

這種觀測器的代碼看起來similiar這樣的:

/** 
* checkout_onepage_controller_success_action event observer 
* 
* @param object $oObserver 
* @return null 
*/ 

public function checkoutOnepageControllerSuccessAction($oObserver) 
{ 
    $aOrderId = $oObserver->getOrderIds(); 
    foreach ($aOrder as $iOrderId) { 
     $oOrder = Mage::getModel('sales/order')->load($iOrderId); 
     var_dump(
      $oOrder->getCouponCode(), 
      $oOrder->getDiscountAmount(), 
      $oOrder->getGrandTotal() 
     ); 
    } 
} 
+0

第一個選項爲我工作。謝謝! – danielmhanover 2012-07-08 16:19:09