9

リワード モジュールを Magento ビルドにインストールしました。ショッピングカートのプロモーションもいくつか設定しました。すべてが機能します。ショッピング カートのページで、特典ポイントを引き換えて割引コードを入力すると、すべてが正しく割引されます。問題は、どちらも「割引」ラベルの下に表示されていることです (1,000 ポイント = £1 オフ)。


(ソース: i.imm.io )

ご覧のとおり、£5 のクーポン割引と £1 の特典割引がグループ化されています。これらを分割して、クーポン用と特典ポイント用の 2 つの割引行を作成するにはどうすればよいですか?

4

2 に答える 2

11

これは簡単な作業ではありません。残念ながら、Magento のディスカウント システムは、カートの合計ボックスに一緒に追加したくない新しいディスカウントタイプを追加するための十分な準備ができていません。

クラスのresetDiscountLabels()メソッドを変更する必要があることは事実です。TBT_Rewards_Model_Salesrule_Observerただし、この方法、Sweet Tooth が割引の説明に割引を追加する場所ではありません。まったく逆です。Sweet Tooth の割引は、カートの Magento の割引リストに自動的に追加されます (割引の説明は、この割引リストから自動的に生成されます)。問題は、カートに追加されるべきではない甘党の割引でさえそこに表示されることです.作成したルールに基づいてカートに適用される割引ですが、顧客は実際にはまだポイントを使うことを選択していません. . 不要な割引の説明を追加するのではなく、カートから削除するresetDiscountLabels()方法があります。

問題の解決には 2 つのステップがあり、2 番目のステップは負担が大きくなります。

最初に、上記の方法を変更して、適用されないものだけでなく、すべてのSweet Tooth 割引の説明をカートから削除する必要があります。最初にファイルを app/code/local codepool にコピーし、元のファイルではなくそのファイルを変更することをお勧めします。カートのすべてのルール ID をループしてルール モデルをロードすると、そのpoints_actionフィールドが設定されている場合、つまり$rule->getPointsAction() !== null. ルールのいずれかが甘党のルールである場合は、割引の説明から、そのメソッドが既に行っている方法でそれらを行うことができますunset。この後、Sweet Tooth 割引は合計ボックスのその行に表示されなくなります。

2 番目のステップは、合計ボックスに新しい行を追加することです。つまり、新しい合計モデルを見積もりに追加します。これはより複雑なステップになります。この回答で説明できるよりもはるかに複雑ですが、新しい合計列を追加するためのチュートリアルを次に示します: http://turnkeye.com/blog/magento-development-add-total-row- checkout/ 新しい合計モデルのcollect()メソッドでは、見積もりのapplied_redemptions​​フィールドをチェックして、顧客がカートに適用した Sweet Tooth ルール ID のリストを取得する必要があります。次に、これらの値を使用して、Sweet Tooth 割引の合計を再生成できます。

前述したように、これは単純な作業ではありません。残念ながら、これがセミクリーンな唯一の方法です。うまくいけば、それは多すぎません。自分の開発時間を他のタスクに集中させたい場合は、いつでも開発会社を雇ってそれを行うこともできます。

うまくいけば、これは役に立ちます!

于 2012-12-03T02:11:24.440 に答える
4

変更する必要があります/TBT/Rewards/Model/Salesrule/Observer.php-checkRedemptionCouponBefore()割引額を確認し、確認してくださいresetDiscountLabels()-これは、Sweet Toothが割引の説明に割引を追加する場所です.

また、変更する必要がある場合があります/app/design/frontend/base/default/template/rss/order/details.phtml- 行の後if ($_order->getDiscountAmount() > 0)

于 2012-12-01T14:29:18.523 に答える