나는 전체 카트에서 5 % 할인 된 쿠폰을 프로그래밍 방식으로 생성하는 작은 모듈을 만들었습니다.Magento : 쿠폰 코드가 자동으로 적용되지 않습니다.
쿠폰은 한 번만 사용하고 한 고객 만 사용할 수 있습니다. 쿠폰은 정상적으로 생성되며 프로모션> 장바구니 가격 규칙 아래에 표시되며 규칙 이름은 쿠폰 코드와 동일합니다.
제가하는 데 문제는 내가이 쿠폰을 만들려하지만 난이를 추가 할 때 고객이 프론트 엔드에 할인 코드에 필드에 쿠폰 코드를 입력하는 대신 때까지 바구니에 적용하지 않는 것입니다 제품을 바구니에 넣으면 쿠폰이 할인을 적용합니다.
제 질문은 자동으로 쿠폰을 추가하는 것을 중지하는 것입니다.
프로그래밍 방식으로 쿠폰 코드 및 규칙을 만드는 더 좋은 방법이 있다면 알고 싶습니다. 이 중요한 경우
내 코드는 다음과 같습니다 : 나는 당신이 쿠폰 유형에 대한 설정을 추가 할 필요가 추측하고있어
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();
}
오래된 중고품을 청소하는 작업을 추가하는 것을 잊지 마십시오. 장바구니에 추가 작업의 속도를 죽일 수있는 많은 장바구니 가격 규칙으로 끝나게됩니다. – McNab