• Модуль: catalog
  • Путь к файлу: ~/bitrix/modules/catalog/lib/model/vat.php
  • Класс: BitrixCatalogModelVat
  • Вызов: Vat::prepareForUpdate
static function prepareForUpdate(ORMDataUpdateResult $result, $id, array &$data): void
{
	$id = (int)$id;
	if ($id <= 0)
	{
		$result->addError(new ORMEntityError(
			Loc::getMessage('BX_CATALOG_MODEL_VAT_ERR_WRONG_VAT_ID')
		));
		return;
	}

	$fields = $data['fields'];
	parent::prepareForUpdate($result, $id, $fields);
	if (!$result->isSuccess())
	{
		return;
	}

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

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

	if (array_key_exists('ACTIVE', $fields))
	{
		if (
			$fields['ACTIVE'] !== 'Y'
			&& $fields['ACTIVE'] !== 'N'
		)
		{
			unset($fields['ACTIVE']);
		}
	}

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

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

	if (array_key_exists('EXCLUDE_VAT', $fields))
	{
		if (
			$fields['EXCLUDE_VAT'] !== 'Y'
			&& $fields['EXCLUDE_VAT'] !== 'N'
		)
		{
			unset($fields['EXCLUDE_VAT']);
		}
	}


	if (array_key_exists('RATE', $fields))
	{
		$excludeVat = 'N';
		if (isset($fields['EXCLUDE_VAT']))
		{
			$excludeVat = $fields['EXCLUDE_VAT'];
		}
		else
		{
			$cache = static::getCacheItem($id, true);
			if (!empty($cache))
			{
				$excludeVat = $cache['EXCLUDE_VAT'];
			}
			unset($cache);
		}

		if ($excludeVat === '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')
				));
			}
		}
		unset($excludeVat);
	}
	else
	{
		if (
			isset($fields['EXCLUDE_VAT'])
			&& $fields['EXCLUDE_VAT'] === 'Y'
		)
		{
			$fields['RATE'] = null;
		}
	}

	if (array_key_exists('XML_ID', $fields))
	{
		$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);
}