OrderFilter::prepareDeliveryStageFilter

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. OrderFilter
  4. prepareDeliveryStageFilter
  • Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/deal/orderfilter.php
  • Класс: Bitrix\Crm\Deal\OrderFilter
  • Вызов: OrderFilter::prepareDeliveryStageFilter
static function prepareDeliveryStageFilter(array $deliveryStageList): array
{
	$map = [
		DeliveryStage::SHIPPED => 'Y',
		DeliveryStage::NO_SHIPPED => 'N',
	];
	$enum = [];
	foreach ($deliveryStageList as $stage)
	{
		$enum[] = $map[$stage];
	}

	$sql = self::convertEnumToSql($enum);
	$shipmentTable = Internals\ShipmentTable::getTableName();
	$deliveryTable = Delivery\Services\Table::getTableName();
	$orderEntityTable = Binding\OrderEntityTable::getTableName();
	$dealTableAlias = \CCrmDeal::TABLE_ALIAS;

	$helper = Main\Application::getConnection()->getSqlHelper();


	return [
		"TYPE" => "WHERE",
		"SQL" => "EXISTS (
			SELECT 1 FROM {$shipmentTable} shipment
			INNER JOIN {$orderEntityTable} orderentity ON orderentity.ORDER_ID = shipment.ORDER_ID
			INNER JOIN {$deliveryTable} delivery ON delivery.ID = shipment.DELIVERY_ID
			WHERE shipment.SYSTEM = 'N'
				AND orderentity.OWNER_ID = {$dealTableAlias}.ID
				AND orderentity.OWNER_TYPE_ID = " . \CCrmOwnerType::Deal . "
				AND shipment.DEDUCTED IN ({$sql})
				AND delivery.CLASS_NAME != '" . $helper->forSql('\\' . Delivery\Services\EmptyDeliveryService::class) . "'
		)",
	];
}

Добавить комментарий