2016-07-20 12 views
1

Magentoでは、お客様が発注した際に自動生成されたクーポンコードを注文確認メールで送信します。クーポンコードは一意でなければならず、一度使用することができ、48時間有効です。 これはどのように達成できますか?詳細な回答は高く評価されます。Magentoクーポンコード(オーダー確認メール)

おかげで、

+0

要件は解決されていますか? – Rathinam

答えて

0

あなたはクーポンコードの変数を持つように注文確認メールのテンプレートをカスタマイズする必要があります。 クーポンコードを表示するテンプレートに次のコードを追加します。

{{var order.getCouponCode()}} 

イベントsales_order_place_afterの新しいオブザーバを作成します。

<sales_order_place_after> 
      <observers> 
       <add_coupon> 
        <class>CompanyName_ModuleName_Model_Observer</class> 
        <method>setCouponCode</method> 
       </add_coupon> 
      </observers> 
     </sales_order_place_after> 

必要な修正を加えて次のコードを挿入してください。

public function setCouponCode(Varien_Event_Observer $observer) { 
     $order = $observer->getEvent()->getOrder(); 
     //code to generate coupon 
     //create new shopping cart rule in admin with "Use Auto Generation" and place rule id below 
     $ruleId = 'place here your rule id'; 

     $rule = Mage::getModel('salesrule/rule')->load($ruleId); 

     // Define a coupon code generator model instance 
     // Look at Mage_SalesRule_Model_Coupon_Massgenerator for options 
     $generator = Mage::getModel('salesrule/coupon_massgenerator'); 

     $parameters = array(
      'rule_id' => $ruleId, 
      'qty' => 1, 
      'uses_per_coupon'=>$rule->getUsesPerCoupon(), 
      'uses_per_customer'=>$rule->getUsesPerCustomer(), 
      'format'=>'alphanum', 
      'dash'=>4, 
      'prefix'=>'ABCD-EFGH-', 
      'suffix'=>'-WXYZ', 
      'length'=>8 
     ); 

     $generator->setData($parameters); 
     $code = $this->generatePool($generator); 
     $generated = $generator->getGeneratedCount(); 
     $order->setCouponcode($code); 
    } 

希望すると、これが役立ちます。