2012-11-26 16 views
9

Magentoビルドに報酬モジュールをインストールしました。私はまた、いくつかのショッピングカートプロモーションを設定しました。すべてが機能します。ショッピングカートページでは、報酬ポイントを交換して割引コードを入力することができ、すべてが正しく割引されます。問題は、それらが両方とも「割引」ラベルの下にラベル付けされていることである(ここで、1,000ポイント=£1オフ)あなたは、それは£5クーポン割引と£1報酬をグループ化されて見ることができるようにMagento複数の割引の内訳を表示

http://i.imm.io/N0hf.png

一緒に割引。どのようにしてこれらを分けて、2つの割引行、クーポンと報酬ポイントの2つの行を持っていますか?

+0

インストールした報酬モジュールの名前は何ですか? –

+0

SweetTooth - http://www.magentocommerce.com/magento-connect/sweet-tooth-customer-rewards.html –

+0

実行中のSweet Toothのバージョンは? – JMTyler

答えて

11

後にこれは単純な作業ではありません。残念ながら、Magentoの割引システムは、カートの合計ボックスに一緒に追加したくないかもしれない新しい割引タイプの追加のために非常に準備されていません。

TBT_Rewards_Model_Salesrule_ObserverクラスのresetDiscountLabels()メソッドを変更する必要があります。ただし、このメソッドではありません。ここで、Sweet Toothは割引の説明に割引を追加します。まったく逆です。 Sweet Toothの割引はで、Magentoのカートの割引のリストに自動的にが追加されています(割引の説明はこの割引のリストから自動的に生成されます)。問題は、スウィートトゥース割引でさえ、のカートに追加されないようにすることです。作成したルールに基づいてカートに適用されるディスカウントですが、顧客は実際に購入することを選択していませんまだポイントがありません。 resetDiscountLabels()メソッドは、にあります。不要なディスカウントの説明をカートから削除します。追加するものではありません。

問題の解決策は2つのステップに分かれています。第2のステップは、より課税的です。

最初に、上記の方法を変更して、すべて Sweet Tooth割引の説明を適用しないでカートから削除する必要があります。私はあなたのapp/code/local codepoolにファイルを最初にコピーし、元のファイルの代わりにそのファイルを修正することをお勧めします。カートのすべてのルールIDをループしてルールモデルを読み込むと、そのpoints_actionフィールドが設定されている場合は$rule->getPointsAction() !== nullの場合Sweet Toothルールかどうかを判断できます。 のルールのうちがスウィートトゥースルールの場合は、そのメソッドがすでに行っている方法で割引の説明からunsetを使用できます。その後、Sweet Toothディスカウントは、その行の合計ボックスに表示されなくなります。

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

私が言ったように、これは簡単な作業ではありません。残念なことに、これを行うには半永久的な方法です。うまくいけばそれほど多くはありません。むしろ自分の開発時間を他のタスクに集中させたい場合は、開発会社を常に雇って、あなたのためにそれを行うこともできます。

これは便利です。

+0

@リチャード・パナビー・キング:あなたが問題を首尾よく解決したかどうかを教えていただけますか?すごく興味がある! – JMTyler

4

あなたは/TBT/Rewards/Model/Salesrule/Observer.phpを変更する必要があります - 割引額ためcheckRedemptionCouponBefore()をチェックして、resetDiscountLabels()をチェック - スウィートトゥースは割引の説明にその割引を追加場所です。

また/app/design/frontend/base/default/template/rss/order/details.phtmlを変更する必要があります - ラインif ($_order->getDiscountAmount() > 0)

+0

彼がresetDiscountLabels()を呼び出さなかった場合、彼はSweet Toothディスカウントラベルを完全に失うことになりますが、彼は単にそれらを分離したいと思うように聞こえます。 – JMTyler

+0

その機能を呼び出すのではなく、機能を拡張して機能を示すことです。私は2つの割引が1つの行に入れられる正確なポイントを指摘しました。 –

関連する問題