Меню
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
Читают тему
Форма ответов
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
Загрузить файлы
 

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

Подключение SSL на Битрикс виртуальная машина

С первого января 2017 года, наличие безопасного соединения HTTPS становится практически обязательным. Ваши сайты будут з...

Вывести товары из того же раздела в карточке товара

Немножко топорный, но все же вполне действенный способ по выводу внутри подробной карточки товара, элементов того же раз...

Кастомизация компонента восстановления пароля bitrix:system.auth.forgotpasswd

Достаточно часто спрашивают как кастомизировать компонент восстановления пароля пользователя. Типовая задача, это измени...

Автоматическая загрузка каталогов из csv файлов в Битрикс

Если требуется настроить автоматический импорт каталогов из csv файлов, от поставщиков. В 1С-Битрикс, уже есть весь не...

Вывести минимальную цену самого дешевого торгового предложения

Если у товара несколько торговых предложений и у каждого предложения разные цены, иногда требуется вывести минимальную ц...

Связанные элементы в карточке товара, с помощью catalog.section

Достаточно часто, при разработке магазинов на битрикс, требуется выводить связанные элементы внутри карточки товара. Д...

Создание PWA для сайта на 1С-Битрикс

Технология PWA позволяет создать приложение для любого сайта. Не обязательно работающего на 1С-Битрикс, данная заметка ...

Удаление недоступных для заказа товаров из корзины

Задача: пользователи магазина могу наполнять корзины, но не доходить до оформления заказа. Такие корзины считаются броше...

Установка поиска Sphinx на Ubuntu 22.04 для 1С-Битрикс

Задача: установить и сконфигурировать поиск Sphinx под управлением Ubuntu 22.04 и панели управления HestiaCP для использ...