Форум 1С-Битрикс

Задавайте свои вопросы и отвечайте на вопросы других участников форума


Как сделать, чтобы была возможность отправлять заказ в шиптор, даже если отгрузка не разрешена

Необходимые условия для передачи заказа в Shiptor:
- заказ разрешен к доставке.
- заказ не был ранее отгружен. Отсутствует трекинг номер от Shiptor и не установлен статус отгрузки Отгружен.
- статус «оплачено» для заказа БЕЗ наложенного платежа (онлайн оплата). Или неоплачено для заказов с наложенным платежом
Модуль не позволяет отправлять заказы в шиптор если заказ не разрешен к доставке

Ответ 1

Стандартного функционала для этого нет. Если только дорабатывать программно.
Необходимо в init.php разместить событие OnSaleOrderSaved, в котором изменять флаг доставки на разрешено. При этом проверить условие, что доставка та, которая вам нужна. Данное событие происходит в конце сохранения, когда заказ и все связанные сущности уже сохранены.

use Bitrix\Main;
Main\EventManager::getInstance()->addEventHandler(
   'sale',
   'OnSaleOrderSaved',
   'OnSaleOrderSavedHandler'
);

function OnSaleOrderSavedHandler(Main\Event $event)
{
   /** @var Order $order */
   $order = $event->getParameter("ENTITY");
   $oldValues = $event->getParameter("VALUES");
   $isNew = $event->getParameter("IS_NEW");
   $shiptor_id = array(211, 216, 212);

if ($isNew)
{

$shipmentCollection = $order->getShipmentCollection();
foreach ($shipmentCollection as $shipment)
{
    if (!$shipment->isSystem())
{
$originalDeliveryId = $shipment->getDeliveryId();

if(in_array($originalDeliveryId, $shiptor_id)){

$shipment->allowDelivery();
$shipment->setField('DEDUCTED', 'N');
$order->setField('STATUS_ID', 'N');

$order->save();

}
}
}
}
}

Возврат к списку