• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/kanban/entity/order.php
  • Класс: Bitrix\Crm\Kanban\Entity\Order
  • Вызов: Order::prepareEntityFields
protected function prepareEntityFields(array $orders): array
{
	static $currencies = [];
	static $personTypes = [];

	if(empty($orders))
	{
		return $orders;
	}
	$ids = array_keys($orders);
	if (empty($currencies))
	{
		$currencies = \CCrmCurrencyHelper::PrepareListItems();
	}
	if (empty($personTypes))
	{
		$personTypes = PersonType::load(SITE_ID);
	}
	$orderClientRaw = OrderContactCompanyTable::getList([
		'filter' => [
			'=ORDER_ID' => $ids
		]
	]);
	while ($orderClient = $orderClientRaw->fetch())
	{
		$orderId = $orderClient['ORDER_ID'];
		if ((int)$orderClient['ENTITY_TYPE_ID'] === \CCrmOwnerType::Contact)
		{
			if (empty($orders[$orderId]['CONTACT_ID']) || $orderClient['IS_PRIMARY'] === 'Y')
			{
				$orders[$orderId]['CONTACT_ID'] = $orderClient['ENTITY_ID'];
			}
		}
		elseif ((int)$orderClient['ENTITY_TYPE_ID'] === \CCrmOwnerType::Company)
		{
			$orders[$orderId]['COMPANY_ID'] = $orderClient['ENTITY_ID'];
		}
	}

	$paymentRaw = Payment::getList([
		'filter' => [
			'=ORDER_ID' => $ids
		]
	]);
	while ($payment = $paymentRaw->fetch())
	{
		$orderId = $payment['ORDER_ID'];
		$orders[$orderId]['PAYMENT'][$payment['ID']] = $payment;
	}

	$shipmentRaw = Shipment::getList([
		'filter' => [
			'=ORDER_ID' => $ids,
			'SYSTEM' => 'N'
		]
	]);
	while ($shipment = $shipmentRaw->fetch())
	{
		$orderId = $shipment['ORDER_ID'];
		$orders[$orderId]['SHIPMENT'][$shipment['ID']] = $shipment;
	}

	$markersRaw = EntityMarker::getList([
		'filter' => [
			'=ENTITY_TYPE' => EntityMarker::ENTITY_TYPE_ORDER,
			'=ENTITY_ID' => $ids,
			'=SUCCESS' => 'N',
		],
		'select' => ['MESSAGE', 'ENTITY_ID']
	]);

	$markers = [];
	while ($marker = $markersRaw->fetch())
	{
		$markers[$marker['ENTITY_ID']][] = $marker['MESSAGE'];
	}

	if (!empty($markers))
	{
		foreach ($markers as $orderId => $marker )
		{
			if (count($marker) > 1)
			{
				$value = implode('
', $marker); } else { $value = $marker[0]; } $orders[$orderId]['PROBLEM_NOTIFICATION'] = $value; } } $enumVariants = []; $enumPropertyVariantRaw = PropertyVariant::getList([ 'select' => ['VALUE', 'NAME', 'ORDER_PROPS_ID'] ]); while ($variant = $enumPropertyVariantRaw->fetch()) { $enumVariants[$variant['ORDER_PROPS_ID']][$variant['VALUE']] = $variant['NAME']; } $propertyValuesRaw = PropertyValue::getList([ 'filter' => [ '=ORDER_ID' => $ids ], 'select' => ['TYPE' => 'PROPERTY.TYPE', 'VALUE', 'ORDER_PROPS_ID', 'ORDER_ID'] ]); while ($propertyValue = $propertyValuesRaw->fetch()) { $value = $propertyValue['VALUE']; $currentPropertyId = $propertyValue['ORDER_PROPS_ID']; if ($propertyValue['TYPE'] === 'ENUM') { $valueNameList = []; if (is_array($value)) { foreach ($value as $currentValue) { $valueNameList[] = $enumVariants[$currentPropertyId][$currentValue]; } } else { $valueNameList[] = $enumVariants[$currentPropertyId][$value]; } $orders[$propertyValue['ORDER_ID']]['PROPERTY_'.$currentPropertyId] = implode(', ', $valueNameList); } if ($propertyValue['TYPE'] === 'Y/N') { $value = ($value === 'Y') ? 'Y' : 'N'; $orders[$propertyValue['ORDER_ID']]['PROPERTY_'.$currentPropertyId] = Loc::getMessage('CRM_KANBAN_CHAR_' . $value); } else { $orders[$propertyValue['ORDER_ID']]['PROPERTY_'.$currentPropertyId] = $value; } } foreach ($orders as &$order) { if (isset($order['PERSON_TYPE_ID'])) { $type = $personTypes[$order['PERSON_TYPE_ID']]; $order['PERSON_TYPE_ID'] = $type['NAME']; } $order['CURRENCY_ID'] = $order['CURRENCY']; $order['USER'] = $order['USER_ID'] ?? null; $order['CURRENCY'] = $currencies[$order['CURRENCY']]; $order['TITLE'] = Loc::getMessage('CRM_KANBAN_ORDER_TITLE', [ '#ACCOUNT_NUMBER#' => $order['ACCOUNT_NUMBER'] ]); } return $orders; }