在Magento,我想在客户下订单时通过订单确认电子邮件发送自动生成的优惠券代码。优惠券代码应该是唯一的,可以使用一次,有效期为48小时。 如何实现这一目标?详细的答案将不胜感激。
谢谢,
答案 0 :(得分: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);
}
希望这会对你有所帮助。