Magentoでチェックアウトプロセスの前にカスタムグラントータルを設定する方法は?
質問
「sales_order_place_before」イベントにオブザーバーを追加しましたが、支払いを処理する前に合計をカスタマイズしたいと考えています。しかし、私は見積価格を変更するために多くのことを試みましたが、それは機能していません。
誰かが考えていますか?
解決
合計1つ(mage_sales_model_quote_address_total_grand)の後に新しいコレクターを追加する必要があります。総コレクターによって設定された合計を変更する必要があります。
私はそのような事件について、1週間前にウクライナで開催されたMageconf Conferenceで話をしました。ビデオとスライドはまだ利用できませんが、 Demo-Moduleをダウンロードします それは会議で説明されました。ラッピング価格を計算する総コレクターの例があります。
私のデモの合計コレクターを変更できるように、グランドトータルコレクターの後に収集プロセスに挿入されます(参照 config.xml モジュールで 等 ディレクトリ - 削除します <before>subtotal</before>
その後、ノードを使用します <after>grand_total</after>
代わりに)および変更します 収集() 定義済みの値にグランド合計を設定するための方法:
$address->setGrandTotal($someValue);
$address->setBaseGrandTotal($someBaseValue);
または、このモジュールをそのまま残すこともできますが、マイナスの合計を設定します。したがって、総総コレクターはそれらを差し引き、希望どおりに総額を減らします。また、そのような場合、顧客はあなたの負の値を見ることができます( フェッチ() 方法)そして、グランド合計が低下した理由を理解します。
楽しむ :)
他のヒント
新しい合計オブジェクトを作成したり、仮想製品として合計を追加する必要はありません
観察してください
Mage_Sales_Model_Quote_Address_Total_Abstract
Mage_Sales_Model_Order_Invoice_Total_Abstract
Mage_Sales_Model_Order_Creditmemo_Total_Abstract
合計オブジェクトを実装するために必要なものを確認します。また、レートオブジェクトを拡張する必要がある場合があります