Сумма заказов пользователя по умолчанию рассчитывается из суммы оплаченных заказов пользователя на сайте.
Бывает, что при обмене с 1С, на сайте не всегда имеются все заказы пользователя (отсутствуют заказы, оформленные офф-лайн).
В данном случае, из 1С можно передавать на сайт сумму заказов пользователя, сохраняя в произвольном поле, и использовать при расчете эту сумму.
\Bitrix\Main\EventManager::getInstance()->addEventHandler("logictim.balls", "BeforeUserOrdersSum", "EventBeforeUserOrdersSum");
function EventBeforeUserOrdersSum(\Bitrix\Main\Event $event)
{
$arFields = $event->getParameters();
$arFields["CUSTOM_ORDERS_SUM"] = 10000; //Если здесь укажите сумму заказов, то при расчетах правил будет использоваться именно она
$result = new Bitrix\Main\EventResult($event->getEventType(), $arFields);
return $result;
}
Ниже пример кода для определения суммы оплаченных заказов за определенный период
\Bitrix\Main\EventManager::getInstance()->addEventHandler("logictim.balls", "BeforeUserOrdersSum", "EventBeforeUserOrdersSum");
function EventBeforeUserOrdersSum(\Bitrix\Main\Event $event)
{
$dateStart = strtotime('16.12.2021'); //Учитывать в сумме покупок заказы начиная с даты
$dateEnd = time(); //Учитывать в сумме покупок заказы до текущей даты
$arFields = $event->getParameters();
//Получаем сумм оплаченных заказов пользователя за период
\CModule::IncludeModule("sale");
$calculator = new \Bitrix\Sale\Discount\CumulativeCalculator($arFields["USER_ID"], $arFields["SITE_ID"]);
$sumConfiguration = array(
'type_sum_period'=> 'interval',
'sum_period_data' => array('order_start' => $dateStart, 'order_end' => $dateEnd)
);
$calculator->setSumConfiguration($sumConfiguration);
$ordersSum = $calculator->calculate();
//Если идет расчет суммы заказов в момент оплаты заказа, то вычитаем из расчета сумму этого заказа
if($arFields["ORDER"]["ORDER_ID"] > 0 && $arFields["EVENT_ORDER_PAID"] == 'Y')
$ordersSum = $ordersSum - $arFields["ORDER"]["ORDER_SUM"];
$arFields["CUSTOM_ORDERS_SUM"] = $ordersSum;
$result = new Bitrix\Main\EventResult($event->getEventType(), $arFields);
return $result;
}
Logictim - официальный сертифицированный партнер 1С-Битрикс, AMO CRM, Rusonyx
Вы можете связаться с нами любым из перечисленных способов:
Телефон: +7 (843) 212-62-17
Email: info@logictim.ru
Адрес: г. Казань, ул. Дубравная 38, офис 4
Режим работы: пн-пт с 10:00 до 18:00
Наши несколько основных принципов:
- Открытый и честный подход
- Стоимость пропорциональна объему работ
- Качественное исполнение
Наш менеджер свяжется с Вами в ближайшее время!