yous
@yous

Bitrix быстрый заказ, как получить стоимость доставки?

Подскажите как получить стоимость доставки в момент отправки email при быстром заказе?
быстрый заказ на компоненте от Аспро.

Подцепляюсь на событие быстрого заказа

$eventManager = Bitrix\Main\EventManager::getInstance();
	$eventManager->addEventHandler("main", "OnBeforeEventAdd", array('OrderMailModify', 'OneClickBuyModify'));


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

пытаюсь получить доставку

public function OneClickBuyModify($event, &$siteId, &$arFields){
        if ($event != 'NEW_ONE_CLICK_BUY'){
        	return true;
        } 

        $order = \Bitrix\Sale\Order::load($arFields['RS_ORDER_ID']);
        $shipmentCollection = $order->getShipmentCollection();
        $arFields['PRICE_DELIVERY'] = $shipmentCollection->getBasePriceDelivery();


$shipmentCollection->getBasePriceDelivery() - возвращает 0, хотя в сформированном заказе есть отгрузка на 300р

как собственно получить отгрузку?

для обычного заказа такой принцип работает, $shipmentCollection->getBasePriceDelivery() возвращает правильную сумму. Я так понимаю, что событие OnBeforeEventAdd срабатывает раньше сохранения заказа для покупки в 1Клик и быстром заказе?
  • Вопрос задан
  • 1064 просмотра
Пригласить эксперта
Ответы на вопрос 1
yous
@yous Автор вопроса
сам себе отвечу

public function OneClickBuyModify($event, &$siteId, &$arFields){
        if ($event != 'NEW_ONE_CLICK_BUY'){
        	return true;
        } 
if(class_exists('\Bitrix\Sale\Internals\OrderTable')){
            $arOrder = \Bitrix\Sale\Internals\OrderTable::getList(array('order' => array('ID' => 'ASC'), 'filter' => array('ID' => $arFields['RS_ORDER_ID'])))->Fetch();
        }
        else{
            $arOrder = CSaleOrder::GetList(array(), array('ID' => $arFields['RS_ORDER_ID']))->Fetch();
        }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы