2010-12-06 14 views
4

"sales_order_place_before"イベントにオブザーバーを追加し、支払いを処理する前に総額をカスタマイズしたいとします。しかし、私は引用価格を変更するために多くを試したが、それは動作していません。マジェンタで決済処理前にカスタム総額を設定するにはどうすればよいですか?

誰にも分かりませんか?あなたが新しい合計オブジェクトを作成または仮想製品

として合計を追加することはできません

答えて

14

総コレクタ(Mage_Sales_Model_Quote_Address_Total_Grand)の後に新しいコレクタを追加する必要があります。総計コレクタによって設定された合計を修正する必要があります。

私は週前のウクライナのMageConf会議でこのようなケースについて話しました。ビデオとスライドはまだ利用できませんが、会議で説明されたdownload demo-moduleとすることができます。ラッピング価格を計算するトータルコレクタの例があります。

それは総計コレクター後にそのプロセスを集めるに挿入されますので、あなたは(などディレクトリモジュールconfig.xmlのを参照してください - 代わりに<after>grand_total</after>を使用し、その後<before>subtotal</before>ノードを削除します)私のデモ総コレクタを変更することができますし、収集を変更

$address->setGrandTotal($someValue); 
$address->setBaseGrandTotal($someBaseValue); 

それともそのままあなたは、このモジュールを残すことができますが、それに負の合計を設定します()メソッドは自分の定義済みの値に総計を設定します。だからグランド総コレクターはそれらを減算し、あなたが望むように総計値を下げます。このような場合でも、顧客は負の値を確認することができます(fetch()メソッド)、総額が引き下げられた理由を理解することができます。

楽しんでください:)

+0

優秀な例 –

+0

助けてくれてありがとう、しかし、私は新しい注文/チェックアウトのプロセスを置く前にカート価格を変更したい。それは同じで働いているのですか? – smart

+0

ええ、それは同じ動作します –

0

は、全オブジェクトを実装するために必要なものを見るために

Mage_Sales_Model_Quote_Address_Total_Abstract Mage_Sales_Model_Order_Invoice_Total_Abstract Mage_Sales_Model_Order_Creditmemo_Total_Abstract

を守ってください。レートオブジェクトを拡張する必要がある場合もあります。

+2

もう少し詳しくお聞かせください。 – smart

関連する問題