Magento:停止自动应用优惠券代码

Magento:停止自动应用优惠券代码,magento,coupon,Magento,Coupon,我制作了一个小模块,我正在测试它,它基于默认优惠券以编程方式创建优惠券代码,给客户总购物车5%的折扣 优惠券只供一名顾客使用。优惠券生成罚款,在促销>购物车价格规则下可见,规则名称与优惠券代码相同 我遇到的问题是,我希望它创建优惠券,但在客户在前端的折扣代码字段中输入优惠券代码之前,不要将其应用于购物篮,而是在我向购物篮添加产品时,优惠券应用折扣 我的问题是如何阻止它自动添加优惠券 如果有更好的方法以编程方式创建优惠券代码和规则,我想知道 我的代码(如果重要)如下所示: public funct

我制作了一个小模块,我正在测试它,它基于默认优惠券以编程方式创建优惠券代码,给客户总购物车5%的折扣

优惠券只供一名顾客使用。优惠券生成罚款,在促销>购物车价格规则下可见,规则名称与优惠券代码相同

我遇到的问题是,我希望它创建优惠券,但在客户在前端的折扣代码字段中输入优惠券代码之前,不要将其应用于购物篮,而是在我向购物篮添加产品时,优惠券应用折扣

我的问题是如何阻止它自动添加优惠券

如果有更好的方法以编程方式创建优惠券代码和规则,我想知道

我的代码(如果重要)如下所示:

public function createCoupon() {

    // Get the rule in question
    $rule = Mage::getModel('salesrule/rule')->load(1); //1 = ID of coupon in question

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

    $parameters = array(
        'count'=> 1,
        'format'=> 'alphanumeric',
        'dash_every_x_characters'=> 4,
        'prefix'=> 'XXX-',
        'suffix'=> '-CODE5',
        'length'=> 8
    );

    if( !empty($parameters['format']) ) {
        switch( strtolower($parameters['format']) ) {
            case 'alphanumeric':
            case 'alphanum':
                $generator->setFormat( Mage_SalesRule_Helper_Coupon::COUPON_FORMAT_ALPHANUMERIC );
                break;
            case 'alphabetical':
            case 'alpha':
                $generator->setFormat( Mage_SalesRule_Helper_Coupon::COUPON_FORMAT_ALPHABETICAL );
                break;
            case 'numeric':
            case 'num':
                $generator->setFormat( Mage_SalesRule_Helper_Coupon::COUPON_FORMAT_NUMERIC );
                break;
        }
    }

    $generator->setDash( !empty($parameters['dash_every_x_characters'])? (int) $parameters['dash_every_x_characters'] : 0);
    $generator->setLength( !empty($parameters['length']) ? (int) $parameters['length'] : 6);
    $generator->setPrefix( !empty($parameters['prefix']) ? $parameters['prefix'] : '');
    $generator->setSuffix( !empty($parameters['suffix']) ? $parameters['suffix'] : '');

    // Set the generator, and coupon type so it's able to generate
    $rule->setCouponCodeGenerator($generator);
    $rule->setCouponType( Mage_SalesRule_Model_Rule::COUPON_TYPE_AUTO );

    // Get as many coupons as you required
    $count = !empty($parameters['count'])? (int) $parameters['count'] : 1;
    $codes = array();

    for( $i = 0; $i < $count; $i++ ) {
        $coupon = $rule->acquireCoupon();
        $code = $coupon->getCode();
        $codes[] = $code;
    }

    return $codes[0];
}

public function createCouponForLike($couponCode) {
    $model = Mage::getModel('salesrule/rule');

    $model->setName($couponCode);
    $model->setDescription('Discount coupon for liking us on Facebook.');
    $model->setFromDate(date('Y-m-d'));
    $model->setCouponCode($couponCode);
    $model->setUsesPerCoupon(1);
    $model->setUsesPerCustomer(1);
    $model->setCustomerGroupIds('0,1');
    $model->setIsActive(1);
    $model->setConditionsSerialized('a:6:{s:4:"type";s:32:"salesrule/rule_condition_combine";s:9:"attribute";N;s:8:"operator";N;s:5:"value";s:1:"1";s:18:"is_value_processed";N;s:10:"aggregator";s:3:"all";}');
    $model->setActionsSerialized('a:6:{s:4:"type";s:40:"salesrule/rule_condition_product_combine";s:9:"attribute";N;s:8:"operator";N;s:5:"value";s:1:"1";s:18:"is_value_processed";N;s:10:"aggregator";s:3:"all";}');
    $model->setStopRulesProcessing(0);
    $model->setIsAdvanced(1);
    $model->setProductIds('');
    $model->setSortOrder(1);
    $model->setSimpleAction('by_percent');
    $model->setDiscountAmount(5);
    $model->setDiscountStep(0);
    $model->setSimpleFreeShipping(0);
    $model->setTimesUsed(0);
    $model->setIsRss(0);
    $model->setWebsiteIds('1');

    $model->save();
} 
公共函数create优惠券(){
//质疑规则
$rule=Mage::getModel('salesrule/rule')->load(1);//1=有问题优惠券的ID
//定义优惠券代码生成器模型实例
//查看Mage_SalesRule_Model_优惠券_Massgenerator以获取选项
$generator=Mage::getModel('salesrule/优惠券\u massgenerator');
$parameters=数组(
“计数”=>1,
'格式'=>'字母数字',
'每字符破折号'=>4,
'前缀'=>'XXX-',
'后缀'=>'-CODE5',
“长度”=>8
);
如果(!empty($parameters['format'])){
开关(strtolower($parameters['format'])){
“字母数字”大小写:
“alphanum”案例:
$generator->setFormat(Mage\u SalesRule\u Helper\u优惠券::优惠券格式\u字母数字);
打破
按字母顺序排列:
案例“阿尔法”:
$generator->setFormat(Mage\u SalesRule\u Helper\u优惠券::优惠券格式\u字母顺序);
打破
大小写“数字”:
案例“num”:
$generator->setFormat(Mage\u SalesRule\u Helper\u优惠券::优惠券格式\u数字);
打破
}
}
$generator->setDash(!empty($parameters['dash_every_x_characters'])?(int)$parameters['dash_every_x_characters']:0);
$generator->setLength(!empty($parameters['length'])?(int)$parameters['length']:6);
$generator->setPrefix(!empty($parameters['prefix'])?$parameters['prefix']:'';
$generator->setSuffix(!empty($parameters['suffix'])?$parameters['suffix']:'';
//设置生成器和优惠券类型,以便能够生成
$rule->setCoupondeGenerator($generator);
$rule->setCouponType(Mage\u SalesRule\u Model\u rule::优惠券\u TYPE\u AUTO);
//获得您所需的尽可能多的优惠券
$count=!empty($parameters['count'])?(int)$parameters['count']:1;
$codes=数组();
对于($i=0;$i<$count;$i++){
$优惠券=$rule->Acquire优惠券();
$code=$优惠券->获取代码();
$code[]=$code;
}
返回$code[0];
}
公共函数createCouponForLike($couponCode){
$model=Mage::getModel('salesrule/rule');
$model->setName($couponCode);
$model->setDescription('在Facebook上喜欢我们的折扣券');
$model->setFromDate(日期('Y-m-d'));
$model->setCouponCode($couponCode);
$model->setUsesPerCoupon(1);
$model->setUsesPerCustomer(1);
$model->setCustomerGroupId('0,1');
$model->setIsActive(1);
$model->setConditionsSerialized($a:6:{s:4:“类型”;s:32:“销售规则/规则条件”组合;s:9:“属性”;N;s:8:“运算符”;N;s:5:“值”;s:1:“1”;s:18:“正在处理值”;N;s:10:“聚合器”;s:3:“全部”});
$model->setActionsSerialized($a:6:{s:4:“类型”;s:40:“销售规则/规则条件与产品组合”;s:9:“属性”;N;s:8:“运算符”;N;s:5:“值”;s:1:“1”;s:18:“值是否已处理”;N;s:10:“聚合器”;s:3:“全部”});
$model->setStopRulesProcessing(0);
$model->setIsAdvanced(1);
$model->setProductIds(“”);
$model->setSortOrder(1);
$model->setSimpleAction('by_percent');
$model->setDiscountAmount(5);
$model->setDiscountStep(0);
$model->setSimpleFreeShipping(0);
$model->setTimesUsed(0);
$model->setIsRss(0);
$model->setWebsiteIds('1');
$model->save();
} 

我猜您需要为优惠券类型添加设置,请尝试以下操作:

// The value can be 1 or 2
// If the value is set to 1 the rule will apply without the need of a coupon
$model->setCouponType(2);
有关更多信息,请参阅本指南,实际上有很多教程:

编辑 最近注意到,您已经使用此常量将其设置为一个点:

Mage_SalesRule_Model_Rule::COUPON_TYPE_AUTO

问题可能是,我能找到的唯一提到的
优惠券类型\u AUTO
说它被设置为3,当您可能希望将其设置为2时。

请记住添加一个作业以清除旧的已用作业,否则最终会出现大量的购物车价格规则,这可能会降低“添加到购物车”操作的速度。感谢您的回答,但更改该行代码仍然不起作用。教程看起来不错,如果我能让它工作,我会接受这个答案。你给我的例子中的函数实现了我想要的。现在只需要找到一种以编程方式生成代码的方法