• Модуль: catalog
  • Путь к файлу: ~/bitrix/modules/catalog/lib/model/vat.php
  • Класс: BitrixCatalogModelVat
  • Вызов: Vat::prepareForAdd
static function prepareForAdd(ORMDataAddResult $result, $id, array &$data): void
{
	$fields = $data['fields'];
	parent::prepareForAdd($result, $id, $fields);
	if (!$result->isSuccess())
	{
		return;
	}

	static $defaultValues = null,
		$blackList = null;

	if ($defaultValues === null)
	{
		$defaultValues = [
			'ACTIVE' => 'Y',
			'SORT' => 100,
			'NAME' => null,
			'EXCLUDE_VAT' => 'N',
			'RATE' => null,
			'XML_ID' => null,
		];

		$blackList = [
			'ID' => true
		];
	}

	$fields = array_merge(
		$defaultValues,
		array_diff_key($fields, $blackList)
	);

	if ($fields['ACTIVE'] !== 'N')
	{
		$fields['ACTIVE'] = $defaultValues['ACTIVE'];
	}

	$fields['SORT'] = static::prepareIntValue($fields['SORT']);
	if ($fields['SORT'] === null || $fields['SORT'] <= 0)
	{
		$fields['SORT'] = $defaultValues['SORT'];
	}

	$fields['NAME'] = static::prepareStringValue($fields['NAME']);
	if ($fields['NAME'] === null)
	{
		$result->addError(new ORMEntityError(
			Loc::getMessage('BX_CATALOG_MODEL_VAT_ERR_WRONG_NAME')
		));
	}

	if ($fields['EXCLUDE_VAT'] !== 'Y')
	{
		$fields['EXCLUDE_VAT'] = $defaultValues['EXCLUDE_VAT'];
	}
	if ($fields['EXCLUDE_VAT'] === 'Y')
	{
		$fields['RATE'] = null;
	}
	else
	{
		$fields['RATE'] = static::prepareFloatValue($fields['RATE']);
		if ($fields['RATE'] === null || $fields['RATE'] < 0)
		{
			$result->addError(new ORMEntityError(
				Loc::getMessage('BX_CATALOG_MODEL_VAT_ERR_WRONG_RATE')
			));
		}
	}

	$fields['XML_ID'] = static::prepareStringValue($fields['XML_ID']);
	if ($fields['XML_ID'] !== null)
	{
		$fields['XML_ID'] = mb_substr($fields['XML_ID'], 0, 255);
	}

	if ($result->isSuccess())
	{
		$fields['TIMESTAMP_X'] = new MainTypeDateTime();
		$data['fields'] = $fields;
	}
	unset($fields);
}