2013-08-16 157 views
10

喜歡在標題中...由於某種原因,magento網站不適用優惠券代碼...總是返回無效的「優惠券代碼無效」消息。 但奇怪的是,當購物車的價格大於120我的貨幣時,會發生這種情況。

例如:如果我有一個產品在購物車中的價格爲65,優惠券代碼工作正常...如果我有相同的產品在購物車中,但與數量2(這意味着總價格變成130)上述無效的錯誤消息

我已經追蹤到「Mage_Sales_Model_Quote」類,它有一個名爲函數的代碼: _validateCouponCode(),裏面其中以下內容:$地址 - > hasCouponCode()始終返回false。 .. 我應該嘗試什麼?...我重新編制索引,刷新緩存..等等......沒有任何改變...我似乎無法在地址模型中找到hasCouponCode函數來查看在那裏發生了什麼... 非常感謝提前

+0

你有沒有找到這方面的解決方案? – Taras

+0

我可以看到您的購物車規則的條件嗎? –

+0

如果您需要幫助診斷優惠券代碼在某些時間無效的原因,則需要發佈序列化優惠券代碼規則。 –

回答

0

首先var_dump($地址)並檢查細節。

然後,

檢查如下:

  1. 正確的日期開始和到期。
  2. 設置優惠券的正確客戶羣。
  3. 設定它active

如果所有上述1,2,3要求真,那麼設置Stop further rules processingYES

  • 除了這些由於某些原因,在成品保持單元需要的條件的字母數字數位。因此,請檢查您的產品SKU值是否爲字母數字。
3

首先您需要了解$ address-> hasCouponCode()的工作方式。

有沒有這樣的方法使用魔術函數調用__call。

您不能直接訪問它,因爲$ _data受到保護。

現在,調試的最佳方法是檢查您的地址對象中是否設置了優惠券。

$data = $address->getData(); 
$coupon = $data['coupon_code']; 

現在檢查您的購物車中是否有2件商品時,是否設置了優惠券。

另一種方法是嘗試使用二傳手加息作爲

$address->setCouponCode('Your Coupon Code'); 

$address->setData('coupon_code', 'Your Coupon Code'); 

,並檢查這是否工作。 如果不那麼考慮

_validateCouponCode in Mage_Sales_Model_Quote 

將是一個好的開始調試。

7

那麼,沒有你的確切規則,很難給出一個完整的答案。

首先,Mage_Sales_Model_Quote :: _ validateCouponCode()調用已經從報價移除優惠券代碼,如果優惠券代碼是不是在報價地址的單個作業。這是因爲在collectTotal調用期間,折扣總計模型會將優惠券代碼複製到地址(如果該地址有效且適用)。因此,在這種情況下,$ address-> hasCouponCode()返回null僅僅是規則驗證程序拒絕應用提供的優惠券代碼的指示。

其次,有兩種方法可以找出您的優惠券未被應用的原因。可能它只有一個或另一個取決於您的優惠券,但我會指出兩者。 Mage_SalesRule_Model_Validator :: process()Mage_SalesRule_Model_Validator :: processShippingAmount()是將檢查您的優惠券代碼並可能應用它並將代碼複製到地址的兩個位置。

作爲一個側面說明,Mage_SalesRule_Model_Validator :: _ maintainAddressCouponCode()負責從驗證(誰得到了報價的代碼)的地址複製優惠券代碼的方法。如果此方法從未被調用,那麼您的優惠券代碼將始終從報價中刪除。

TL;博士

步調試Mage_SalesRule_Model_Validator ::過程()Mage_SalesRule_Model_Validator :: processShippingAmount()調試爲什麼你的優惠券代碼無效。

相關問題