Magento-ショッピングカートのルールなしで割引を適用します
-
28-10-2019 - |
質問
私には次の問題があります:
ユーザーが特定の製品を追加したときにギフトとしてカートに製品を自動的に追加するサードパーティの拡張機能があります。クーポンも適用されます。たとえば、ユーザーがテレビを購入したいときに無料のWiFiレシーバーを追加します。製品を十分に追加しますが、これらの製品に100%の割引を行うにはショッピングカートルールが必要です。
私がする必要があるのは、この拡張機能を作成して、ショッピングカートのルールなしでこれらの製品を無料として追加することです。割引に関連する唯一のイベントはです sales_quote_address_discount_item
, 、しかし、それを伴う操作には結果が得られませんでした。
だから、誰かが私を正しい方向に向けているなら、私は本当に感謝するでしょう:このコードのどこでこの割引が適用され、どうすればこの拡張機能から同じものを作ることができますか?
解決
クーポンからの割引が適用されます Mage_SalesRule_Model_Validator
の中に process()
方法。この方法は毎回呼び出されます collectTotals()
引用で呼び出されます。クーポンの動作をオーバーライドするには、このクラス(および他のいくつかの可能性のあるもの)をオーバーライドする必要があります。その方法内にイベントがあります salesrule_validator_process
メソッド全体をオーバーライドする代わりに使用できるかもしれませんが、適切な場所で発生するかどうかについて変更する必要があるロジックに依存します。
他のヒント
また、ADD_TO_CART_AFTERイベントが起動された後、独自のロジックを追加することもできます。 (たとえば、独自のイベントを作成するapply_discount_after_add_to_cart;)
このモジュールを見てください。ギフトとしてショッピングカートに製品を追加し、追加中に価格を0ドルに設定できます。 http://www.code4business.de/make-a-gift-magento-warenkorbpreisregeln-um-geschenke-erweitern/.
そのために、2つのイベントSalesRule_Validator_Processとsales_quote_collect_totals_beforeをキャッチします。何も書き直しません。コードについては、詳細にも説明されています http://www.webguys.de/magento/turchen-21-kostenlose-produkte-uber-warenkorb-preisregeln/.
価格ルールが必要ですが、贈り物を得る製品(または条件)を特定するためだけです。ギフトは常に無料です。追加のルールは必要ありません。