Доброго времени суток всяк сюда заглянувший. Помогите разобраться с таким вопросом. Когда в заказ добавляется оплата, нужно запретить ее добавление в том случае если у этого заказа есть отгрузка. Я в init.php добавил следующий обработчик
| Код |
|---|
Main\EventManager::getInstance()->addEventHandler(
'sale',
'OnBeforeSalePaymentEntitySaved',
'OnSaleHandler::OnBeforeSalePaymentEntitySavedHandler'
);
class OnSaleHandler
{
public static function OnBeforeSalePaymentEntitySavedHandler(Main\Event $event)
{
$delivery = $event->getParameter("ENTITY");
$orderId = $delivery->getCollection()->getOrder()->getField("ID");
$order = \Bitrix\Sale\Order::load($orderId);
$shipmentCollection = $order->getShipmentCollection();
$allowDelivery = false;
foreach ($shipmentCollection as $shipment)
{
if($shipment->isSystem())
continue;
if($shipment->getField("ALLOW_DELIVERY") == 'Y')
{
$allowDelivery = true;
}
}
if($allowDelivery)
{
//// Тут нужно запретить добавление оплаты
}
}
}
|
который срабатывая получает id заказа, по которому вытаскивает сам заказ и в цикле проходит по отгрузкам (их может быть несколько). Флаг $allowDelivery выставляется правильно и в целом все работает как мне надо. Но вот дальше я зашел в тупик. Мне нужно отменить добавление этой оплаты, То есть чтоб она вообще не добавлялась даже. Вариант
| Код |
|---|
return new \Bitrix\Main\EventResult(
\Bitrix\Main\EventResult::ERROR,
array('У заказа уже есть отгрузки'),
'sale');
|
ни к чему не приводит, оплата все равно добавляется. Помогите кто не равнодушен - второй день бьюсь