@budro

Можно ли изменить стоимость доставки?

Можно ли обнулить стоимость доставки в Битрикс по событию OnSaleOrderBeforeSaved?
setDeliveryPrice не работает.
  • Вопрос задан
  • 1694 просмотра
Решения вопроса 1
@PetrPo
Тебе надо менять не стоимость доставки, а стоимость отгрузки. Как-то так:
$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler('sale', 'OnSaleOrderBeforeSaved', ['OrderEvents', 'onBeforeOrderSaveHandler']);

class OrderEvents {
	public static function onBeforeOrderSaveHandler(\Bitrix\Main\Event $event) {
		$order = $event->getParameter('ENTITY');
		$shipmentCollection = $order->getShipmentCollection();
		
		foreach($shipmentCollection as $shipment) {
			if(!$shipment->isSystem())
				$shipment->setBasePriceDelivery(0, false);
		}
	}
}


UPD
Насчет if(!$shipment->isSystem()) я не уверен, взял с компонента sale.order.ajax. Помню, что там типа две отгрузки создаются - одна системная, а вот зачем не помню.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@budro Автор вопроса
Не меняется цена, так я уже пробовал.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы