• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/recurring/entity/parametermapper/restdeal.php
  • Класс: Bitrix\Crm\Recurring\Entity\ParameterMapper\RestDeal
  • Вызов: RestDeal::fillMap
public function fillMap(array $params = [])
{
	$scheme = $this->getScheme();
	$typeParameters = $this->getTypeParameterList();
	foreach ($scheme as $code => $fieldName)
	{
		$item = $params[$fieldName];
		if ($fieldName === self::FIELD_MODE_NAME)
		{
			$this->map[$code] = $this->resolveModeId($item);
		}
		elseif (in_array($code, $typeParameters) && !empty($item))
		{
			$item = mb_strtolower($item);
			$this->map[$code] = (int)Calculator::resolveTypeId($item);
		}
		else
		{
			$item = (int)$item;
			$this->map[$code] = ($item > 0) ? $item : 0;
		}
	}

	if ((int)$params[self::FIELD_MODE_NAME] === Manager::SINGLE_EXECUTION)
	{
		$this->mode = Manager::SINGLE_EXECUTION;

		$this->map[self::FIELD_SINGLE_TYPE] =
		$this->unitType = (int)Calculator::resolveTypeId($params[self::FIELD_SINGLE_TYPE_NAME]);
		$this->interval = (int)$params[self::FIELD_SINGLE_INTERVAL_NAME];
	}
	else
	{
		$this->mode = Manager::MULTIPLY_EXECUTION;
		$this->unitType = (int)Calculator::resolveTypeId($params[self::FIELD_MULTIPLE_CUSTOM_TYPE_NAME]);
		$this->interval = (int)$params[self::FIELD_MULTIPLE_CUSTOM_INTERVAL_NAME];
		if ($this->interval === 1)
		{
			$this->map[self::FIELD_MULTIPLE_TYPE] = $this->unitType;
		}
		else
		{
			$this->map[self::FIELD_MULTIPLE_TYPE] = Calculator::SALE_TYPE_CUSTOM_OFFSET;
		}
	}

	if (!empty($this->map[self::FIELD_BEGINDATE_OFFSET_TYPE]))
	{
		$this->map[self::FIELD_BEGINDATE_TYPE] = Deal::CALCULATED_FIELD_VALUE;
	}

	if (!empty($this->map[self::FIELD_CLOSEDATE_OFFSET_TYPE]))
	{
		$this->map[self::FIELD_CLOSEDATE_TYPE] = Deal::CALCULATED_FIELD_VALUE;
	}
}