Код проверен в боевых условиях.
<?
// Этот цикл делает уникальный купон вида "CP-25R0E-ZENGJBX"
// Содрал из ява функции в админке (на кнопке "Сгенерировать код")
// Сама ява функция:
//
// function GenerateCheck()
// {
// var oCoupon = document.fdiscount_edit.COUPON;
//
// var allchars = 'ABCDEFGHIJKLNMOPQRSTUVWXYZ0123456789';
// var string1 = '';
// var string2 = '';
// for (var i = 0; i < 5; i++)
// string1 = string1 + allchars.substr(Math.round((Math.random())*(allchars.length-1)), 1);
//
// for (var i = 0; i < 7; i++)
// string2 = string2 + allchars.substr(Math.round((Math.random())*(allchars.length-1)), 1);
//
// oCoupon.value = "CP-"+string1+"-"+string2;
// }
do{
$allchars = 'ABCDEFGHIJKLNMOPQRSTUVWXYZ0123456789';
$string1 = '';
$string2 = '';
for ($i = 0; $i < 5; $i++){
$string1.=substr($allchars,round((rand(0,10)*0.1)*(strlen($allchars)-1)),1);
}
for ($i = 0; $i < 7; $i++)
$string2.=substr($allchars,round((rand(0,10)*0.1)*(strlen($allchars)-1)),1);
$newCoupon = "CP-".$string1."-".$string2;
$dbCouponCheck=CCatalogDiscountCoupon::GetList(array(),array("COUPON"=>$oCoupon),false,false,array());
//повторять заново если такой уже есть
}while(intval($dbCouponCheck->SelectedRowsCount())>0);
//берем структуру любого уже существующего купона, который нам подходит
$cu=CCatalogDiscountCoupon::GetByID(5);
// В массиве $cu:
// Array
// (
// [ID] => 5
// [DISCOUNT_ID] => 5
// [ACTIVE] => Y
// [COUPON] => CP-25R0E-ZENGJBX
// [ONE_TIME] => N
// [DATE_APPLY] =>
// )
unset($cu['ID']); //убираем ID
$cu['COUPON']=$newCoupon; //меняем код купона на сгенерированный
// В массиве $cu:
// Array
// (
// [DISCOUNT_ID] => 5
// [ACTIVE] => Y
// [COUPON] => CP-VSEA6-ZOVH6AA
// [ONE_TIME] => N
// [DATE_APPLY] =>
// )
//создаем новый купон, передавая новую структуру купона
$newCouponId=CCatalogDiscountCoupon::Add($cu);
$arResult["COUPON"]=$newCoupon;
?>
<p>Код вашего купона: <b><?=$arResult["COUPON"]?></b></p>
<p>Чтобы получить скидку 5% на покупку в интернет-магазине:
<ul>
<li>Добавьте товар в корзину.</li>
<li>Откройте корзину.</li>
<li>Введите номер купона в поле для купона.</li>
<li>Нажмите кнопку "Обновить".</li>
</ul>
</p>
|
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».