【问题标题】:How can I ADD own list of coupons programmatically in magento?如何在 magento 中以编程方式添加自己的优惠券列表?
【发布时间】:2016-03-22 23:19:59
【问题描述】:

我想将自己的优惠券添加到 salerule,但我找到的所有示例都是由 magento 生成器创建的。

// Get the rule in question
$rule = Mage::getModel('salesrule/rule')->load(21); //21 = 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'=>5,
    'format'=>'alphanumeric',
    'dash_every_x_characters'=>4,
    'prefix'=>'ABCD-EFGH-',
    'suffix'=>'-WXYZ',
    '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;

没关系,但是这个生成的代码,我有一个代码列表,必须放入 salerules。

【问题讨论】:

    标签: php magento magento-1.7 magento-1.9 magento-1.8


    【解决方案1】:

    您需要在直接 sql 查询中插入自定义优惠券:

    // Get the rule in question
    $rule = Mage::getModel('salesrule/rule')->load(21);
    
    //preconfigure data
    $primary = $rule->getPrimaryCoupon();
    $data = array(
        $rule->getId(), 
       '', 
       intVal($primary->getUsageLimit()), 
       intVal($primary->getUsagePerCustomer()), 
       $primary->getExpirationDate(),
    );   
    
    $table = Mage::getSingleton('core/resource')->getTableName('salesrule/coupon');
    //preconfig sql
    $sql = "INSERT IGNORE INTO `$table` (`rule_id`, `code`, `usage_limit`, `usage_per_customer`, `expiration_date`) VALUES "; 
    
    //coupons variable contain all needed coupon codes in array like
    //$coupons = array('mycustomcoupon1','mycustomcoupon2');
    $data[1] =  "'" . implode(',', $coupons) . "'";
    
    //adding coupons string to preconfigured sql
    $sql .= '(' . implode(',', $data) . '),';   
    
    //USE YOUR COMPANYNAME_MODULENAME from config.xml
    $db = Mage::getSingleton('core/resource')->getConnection('COMPANYNAME_MODULENAME');        
    //insert coupons
    $db->raw_query(substr($sql, 0, -1));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-04
      • 1970-01-01
      • 2013-03-22
      • 1970-01-01
      • 1970-01-01
      • 2015-09-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多