Сумма заказов пользователя по умолчанию рассчитывается из суммы оплаченных заказов пользователя на сайте.
Бывает, что при обмене с 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
Наши несколько основных принципов:
- Открытый и честный подход
- Стоимость пропорциональна объему работ
- Качественное исполнение
Наш менеджер свяжется с Вами в ближайшее время!