Михаил Базаров Разработка на 1С-Битрикс Михаил Базаров

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

Внимание! Все сообщения на форуме проходят модерацию. Ваше сообщение появится после проверки.
Бонус за выполненный заказ на внутренний счет пользователя

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

Блог-note Заметки по 1С-Битрикс