2009-09-02 58 views
6

Greetings in Magento一般的な顧客(ID 1)が100ドル以上を費やし、支払いが確認された場合(ゲートウェイの確認または手動による)注文が処理されると、 、私はこれに恵みを与えるだろうが、私は2日前に返事が欲しい4(プロモーションルールによって世界的に2%の割引を取得し、銀VIP) に彼のグループIDを設定しO_Oマゼンタで受け取った支払いでイベントをトリガーするにはどうすればよいですか?

EDIT:私がこれまでに受け取った答えは部分的な答えでもあり、リンクが非常に混乱していることが分かりました。最小限の設定とは何かを明確にしていません。何を設定する必要がありますか...また、支払う顧客ID /モデルを取得する方法。

答えて

31

まず、app/code/localに独自のモジュールを作成します。 Moak/Vipなどのディレクトリを作成します。あなたのモジュールのルートになります。

Magentoのは、次の内容で、など/モジュールでMoak_Vip.xmlという名前のファイルを作成し、それが存在することがわかっているようにするために:

<?xml version="1.0"?> 
<config> 
    <modules> 
     <Moak_Vip> 
      <active>true</active> 
      <codePool>local</codePool> 
      <self_name>Moak VIP module</self_name> 
     </Moak_Vip > 
    </modules> 
</config> 

を次に、あなたのモジュールディレクトリに、次のような構造を必要とし、ファイル:

  • など/ config.xmlに
  • モデル/ Observer.php

config.xmlはモジュールを定義し、特定のイベント(1ページのチェックアウト処理が完了したときにcheckout_onepage_controller_success_actionが送信され、支払いが確認されたときにsales_order_payment_payが送信される)のイベントリスナーを宣言します。

新しいエンティティを保存しないため、DB設定は必要ありません。 だからあなたの設定ファイルには、次のようになります。

<?xml version="1.0"?> 
<config> 
    <modules> 
     <Moak_Vip> 
      <version>0.1.0</version> 
     </Moak_Vip> 
    </modules> 
    <global> 
     <models> 
      <moak> 
       <class>Moak_Vip_Model</class> 
      </moak> 
     </models>  
     <events> 
      <sales_order_payment_pay> 
       <observers> 
        <moak_observer> 
         <type>singleton</type> 
         <class>moak/observer</class> 
         <method>checkVipCustomer</method> 
        </moak_observer> 
       </observers> 
      </sales_order_payment_pay >  
     </events> 
    </global> 
</config> 

今、あなたのオブザーバー方法checkVipCustomerは、ご注文に関するすべての情報、顧客を取得することができ、そこからイベントオブジェクトを受け取り...と修正を行う必要がありますがあなたは好きです。 app/code/core/Mage /.../ Model/... のMagentoモデルクラスを見て、それらのオブジェクトをナビゲートする方法を見てください。

例:私は、私がここに書いたコードのいずれかをテストし、その取り扱いに注意していませんでした

<?php 

class Moak_Vip_Model_Observer 
{ 
    public function checkVipCustomer($event) 
    { 
     $order = $event->getInvoice()->getOrder(); // Mage_Sales_Model_Order 
     /* 
      - Check order amount 
      - Get customer object 
      - Set Group id 
      - $customer->save(); 
     */ 
     return $this; 
    } 

} 

注意! それは助けて欲しい、Magentoはハード学習曲線を持っています... 幸運!

+3

これは優れたメイトです。これはおそらくちょっと古いですが、Magentoがイベント/オブザーバーのパターンをどのように実装したかを知ることができました。乾杯! –

+0

あなたのconfig.xmlの "computeExpirationDate"はおそらく "checkVipCustomer"になるはずです –

+0

あなたは正しいです@ケーベレンズ、私は答えを編集しました。 – Julien

1

「sales_order_payment_pay」イベントのオブザーバーを作成することができます。ここには、magento 1.3のイベントのcheatsheetがあります。

observer methodsの作成方法の説明。優れたactivecodelineとinchooサイトのリンクが提供されています。

関連する問題