• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/compatible/ordercompatibility.php
  • Класс: BitrixSaleCompatibleOrderCompatibility
  • Вызов: OrderCompatibility::delete
static function delete($id)
{
	$result = new SaleResult();

	if (intval($id) <= 0)
	{
		$result->addError( new SaleResultError(MainLocalizationLoc::getMessage('SALE_COMPATIBLE_ORDER_ID_NOT_FOUND'), 'SALE_COMPATIBLE_ORDER_ID_NOT_FOUND') );
		return $result;
	}

	$registry = SaleRegistry::getInstance(static::getRegistryType());
	/** @var SaleOrder $orderClassName */
	$orderClassName = $registry->getOrderClassName();
	if (!$order = $orderClassName::load($id))
	{
		$result->addError(new SaleResultError(MainLocalizationLoc::getMessage('SALE_ORDER_ENTITY_NOT_FOUND'), 'SALE_ORDER_ENTITY_NOT_FOUND'));
		return $result;
	}

	/** @var SalePayment $payment */
	foreach ($order->getPaymentCollection() as $payment)
	{
		if ($payment->isPaid())
		{
			$payment->setPaid('N');
		}
	}

	/** @var SaleShipment $shipment */
	foreach ($order->getShipmentCollection() as $shipment)
	{
		if ($shipment->isShipped())
		{
			$shipment->setField('DEDUCTED', 'N');
		}
	}

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

	try
	{
		$r = $orderClassName::delete($id);
	}
	catch (Exception $exception)
	{
		$r = $orderClassName::deleteNoDemand($id);
	}

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

	return $result;
}