Бонус за выполненный заказ на внутренний счет пользователя

RSS
Бонус за выполненный заказ на внутренний счет пользователя
 
Бонус за выполненный заказ на внутренний счет пользователя

Задача: после того как заказ, в интернет-магазине, перешел в статус "Выполнен" начислить пользователю 5% от стоимости заказа, на накопительный счет - с которого можно оплатить будущие заказы.
 
Вывод истории начислений списаний, используем метод: CSaleUserTransact::GetList
Метод возвращает результат выборки записей транзакций в соответствии со своими параметрами. Нестатический метод.

CDBResult
CSaleUserTransact::GetList(
    array arOrder = array(),
    array arFilter = array(),
    array arGroupBy = false,
    array arNavStartParams = false,
    array arSelectFields = array()
);

Код
<table class="trans_history">
    <tr>
        <td width="200">Дата:</td>
        <td width="200">Сумма:</td>
        <td>Основание:</td>
    </tr>
    <?
    global $USER;
    $USER->GetID();
    CModule::IncludeModule("sale");
    $res = CSaleUserTransact::GetList(Array("ID" => "DESC"), array("USER_ID" => $USER->GetID()));
    while ($arFields = $res->Fetch()) {
//            echo '<pre>';
//            print_r($arFields);
//            echo '</pre>';
        ?>
        <tr>
            <td>
                <?= $arFields["TRANSACT_DATE"] ?>
            </td>
            <td>
                <?= ($arFields["DEBIT"] == "Y") ? "+" : "-" ?>
                <?= SaleFormatCurrency($arFields["AMOUNT"], $arFields["CURRENCY"]) ?>
                <small>(<?= ($arFields["DEBIT"] == "Y") ? "начислено" : "списано" ?>)</small>
            </td>
            <td>
                <?
                if (empty($arFields["NOTES"])) {
                    if (empty($arFields["ORDER_ID"])) {
                        echo 'Основание не найдено';
                    } else {
                        $arOrder = CSaleOrder::GetByID($arFields["ORDER_ID"]);
                        echo 'Заказ №' . $arOrder['ACCOUNT_NUMBER'];
                    }
                } else {
                    echo $arFields["NOTES"];
                } ?>
            </td>
        </tr>
    <? } ?>
</table>
 
Подскажите, а как просто массово пополнить счета большому числу пользователей по ID?

И еще... Можно ли связать внутренний счет с ифоблоком?
 
Массово пополнить: можно просто пробежавшись по пользователямв цикле

Код
$rsUsers = CUser::GetList(
   false, 
   false, 
   false, // Это фильтр, можно выбрать определнных пользователей, например диапазон ID или дней рождений
); // выбираем пользователей

while($arRes = $rsUsers->Fetch()){ // Проходим циклом по отобранным пользователям
      CSaleUserAccount::UpdateAccount(
            $arRes['ID'],
            '1000',
            'RUB',
            'Причина такой щедрости',
            false,
            false,
        );
}

А про связь с инфоблоком, нужны подробности, что бы подсказать что-то
 
Спасибо, Михаил. Просто как-то связать с инфоблоком сумму на счете, чтобы через файл подгружать по ID пользователя.
Изменено: Михаил Базаров - 17.11.2023 10:35:45
Читают тему
Форма ответов
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
Загрузить файлы
 
Поблагодарить и поддержать:
Или подписаться на boosty канал: Видео на Bst
Место для вашей рекламы.
Сквозная по:

15 000 руб/мес.

Обязательно через ОРД
со счетами и актами

Блог-note: заметки разработчика

Отсортировать предложения по цене в каталоге 1С-Битрикс

Задача: в 1С-Битрикс есть настройка для вывода предложений по стоимости, но она не функционирует должным образом. Необхо...

Ссылка и название раздела в списке новостей Битрикс

Если нужно вывести название раздела инфоблока в котором находится конкретный элемент/новость в компоненте "списк новосте...

Добавление своих полей в почтовые шаблоны Битрикс

Иногда нужно внести свои поля в почтовые шаблоны битрикс. Например: добавить имя и номер телефона заказчика в почтовый ш...

Вывести компонент новостей на страницу в Битрикс

Посмотрел Яндекс метрику на свой сайт, и решил что буду частенько писать сюда именно то, что ищут люди. Итак за последню...

Вывод элементов с помощью API битрикс

Иногда, выводить элементы инфоблока с помощью компонентов, может оказаться избыточным. Например, если нужно вывести элем...

Не дать купить товара больше, чем находится на определенных складах

Задача: в магазине 20 складов, на всех есть остатки но нужно ограничить покупку товара только остатками на двух складах,...

Дополнительные параметры в меню Битрикс

Иногда нужно присвоить какой-то функционал к конкретному пункту меню в битрикс. Например открывать ссылку в новом окне и...

Вывести имя пользователя добавившего элемент инфоблока в Битрикс

Иногда, необходимо вывести имя пользователя добавившего элемент инфоблока. Например, автора новости или автора объявлени...

Простые калькуляторы в карточке товара каталога на Битрикс

На одном из создаваемых сайтов было необходимо сделать небольшой калькулятор и предварительным подсчетом стоимости услуг...