• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/orderfacade.php
  • Класс: BitrixSaleOrderFacade
  • Вызов: OrderFacade::cancelDeductOrder
static function cancelDeductOrder($id)
{
	$result = new Result();

	$registry = Registry::getInstance(Registry::REGISTRY_TYPE_ORDER);
	/** @var Order $orderClassName */
	$orderClassName = $registry->getOrderClassName();

	$order = $orderClassName::load($id);
	if (!$order)
	{
		$result->addError(new Error(Loc::getMessage('SALE_GROUP_ACTION_ERR_ORDER_NOT_FOUND')));
		return $result;
	}

	$collection = $order->getShipmentCollection()->getNotSystemItems();

	/** @var Shipment $shipment */
	foreach ($collection as $shipment)
	{
		if ($shipment->isShipped())
		{
			$r = $shipment->setField('DEDUCTED', 'N');
			if (!$r->isSuccess())
			{
				$result->addErrors($r->getErrors());
				return $result;
			}
		}
	}

	$r = $order->save();
	if (!$r->isSuccess())
	{
		$result->addErrors($r->getErrors());
	}

	return $result;
}