Скидка на день рожденье

2020.06.22

С помощью данной функции можно применять скидки на товары в день рожденья зарегистрированного пользователя Битрикс, работает только на редакции Малый бизнес и Бизнес
Данную функцию нужно поставить выполняться на агента
(1.Настройки -> 2. Настройки продукта 3. Агенты),



Настройки агента

 создать группу с именинниками и присвоить переменной $HAPPY_GROUP_ID id созданной группы,
указать сколько дней до и сколько дней после пользователь должен принадлежать группе именинники
$HAPPY_GROUP_ID = 9; /* Группа со скидкой в день рожденья */
$DAY_BEFORE = 20; /* Дней до дня рождения */
$DAY_AFTER = 20; /* Дней после дня рожденья */

после этого, нужно создать скидку в правилах работы с корзиной
(1. Маркетинг -> 2.Товарный маркетинг -> 3.Правила работы с корзиной )



Настройки правил работы с корзиной

и добавить ограничение на группу пользователей



        <?
function AutoUserGroup(){
    $HAPPY_GROUP_ID = 9; /* Группа со скидкой в день рожденья */
    $DAY_BEFORE = 20; /* Дней до дня рождения */
    $DAY_AFTER = 20; /* Дней после дня рожденья */

    $DAY_BEFORE = $DAY_BEFORE * 24 * 60 * 60;
    $DAY_AFTER = $DAY_AFTER * 24 * 60 * 60;
    $filter = Array(
        "ACTIVE"              => "Y",
    );
    $select = array(
        'ID',
        'PERSONAL_BIRTHDAY',
        'GROUP_ID',
    );
    global $USER;
    $rsUsers = CUser::GetList($by = "NAME", $order = "desc", $filter, array('select' => $select));
    while ($arUser = $rsUsers->Fetch()) {
        $arSpecUser[] = $arUser;
    }

    foreach ($arSpecUser as $oneUser){
        $pattern = '/(\.[0-9]+)$/m';
        $replacement = '';
       if (!empty(oneUser['PERSONAL_BIRTHDAY'])) {
            $oneUser['PERSONAL_BIRTHDAY'] = preg_replace($pattern, $replacement, $oneUser['PERSONAL_BIRTHDAY']) . '.' . date('Y');
        }
        if(!empty($oneUser['PERSONAL_BIRTHDAY']) && strtotime($oneUser['PERSONAL_BIRTHDAY']) >= strtotime(date('m.d.y')) - $DAY_AFTER && strtotime($oneUser['PERSONAL_BIRTHDAY']) <= strtotime(date('m.d.y')) + $DAY_BEFORE){
            $groupUser = CUser::GetUserGroup($oneUser['ID']);
            if (!in_array($HAPPY_GROUP_ID, $groupUser)){
                $groupUser[] = $HAPPY_GROUP_ID;
                $arFields = [
                    'GROUP_ID' => $groupUser,
                ];
                $USER->Update($oneUser['ID'], $arFields);
            }
        }else{
            $groupUser = CUser::GetUserGroup($oneUser['ID']);
            if (in_array($HAPPY_GROUP_ID, $groupUser)){
                $groupUser = array_flip($groupUser);
                unset($groupUser[$HAPPY_GROUP_ID]);
                $groupUser = array_flip($groupUser);
                $arFields = [
                    'GROUP_ID' => $groupUser,
                ];
                $USER->Update($oneUser['ID'], $arFields);
            }
        }
    }
    return 'AutoUserGroup()';
}    
Текст сообщения*
Загрузить файл или картинкуПеретащить с помощью Drag'n'drop
Перетащите файлы
Ничего не найдено
Защита от автоматических сообщений