2013-08-16 10 views
10

タイトルに似ています...何らかの理由で、MagentoのWebサイトでクーポンコードが適用されない...無効な「クーポンコードが無効です」というメッセージが返されます。 しかし、不思議なことに、これはカートの価格が120通貨よりも大きい場合に発生します。

例:65の価格でカートに1つの商品がある場合、クーポンコードは正常に機能します...カートに同じ商品がありますが、数量2(合計金額が130になることを意味します) _validateCouponCode()、内部次:$アドレス - > hasCouponCode()は常にfalseを返します。上記の私は名前の関数を持っているコードに「Mage_Sales_Model_Quote」クラスは、ダウントレースしてきました無効なエラーメッセージ

を述べました.. 私は何を試してみてください... ...私はreindexed、リフレッシュされたキャッシュ... etc ...何も変わっていません...そして、私はアドレスモデルでhasCouponCode関数が何が起こるか見ることができません... 事前に多くの感謝

+0

これにはどんな解決策がありましたか? – Taras

+0

これはショッピングカートのルールの状態を確認できますか? –

+0

一部の時間にクーポンコードが無効である理由を診断するのに役立つ場合は、シリアライズされたクーポンコードルールを送信する必要があります。 –

答えて

0

まずはvar_dump($ address)をチェックし、詳細を確認してください。開始と有効期限のため

  1. 正しい日付:

    その後、

    は、以下のことを確認してください。

  2. クーポンの正しい顧客グループを設定してください。
  3. 設定するとactiveです。真

全て1以上の場合、2、3の要件は、その後、何らかの理由で、これらの他にYES

  • Stop further rules processingを設定する、のSKUは、条件の英数字の桁を必要とします。そのため、商品のSKU値が英数字であるかどうかを確認してください。
3

まず、$ address-> hasCouponCode()の動作を理解する必要があります。

マジック関数__callを使用して呼び出されるメソッドはありません。

$ _データが保護されているため、直接アクセスすることはできません。

デバッグするには、アドレスオブジェクトにクーポンが設定されているかどうかを確認するのが一番です。

$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()呼び出しがquoteからクーポンコードを除去する単一のジョブを持っています。これは、collectTotal呼び出し中に割引総モデルが有効で適用された場合にクーポンコードをアドレスにコピーするためです。したがって、$ address-> hasCouponCode()がこの場合nullを返すという事実は、ルールバリデーターが指定されたクーポンコードの適用を拒否したという指標に過ぎません。

第2に、クーポンが適用されていない理由を調べるために、2つの方法があります。あなたのクーポンによっては、それは唯一のものかもしれませんが、私は両方を指摘します。 Mage_SalesRule_Model_Validator :: process()Mage_SalesRule_Model_Validator :: processShippingAmount()は、クーポンコードを確認し、それを適用してコードをアドレスにコピーする2つの場所です。サイドノートとして

Mage_SalesRule_Model_Validator :: _ maintainAddressCouponCode()アドレスへ(引用からコードを得た)バリからクーポンコードをコピーするための責任を負う方法です。このメソッドが呼び出されない場合、クーポンコードは常にクォートから削除されます。

TL; Mage_SalesRule_Model_Validator ::プロセス()Mage_SalesRule_Model_ValidatorをデバッグDR

ステップ:: processShippingAmount()クーポンコードが有効でない理由をデバッグします。

関連する問題