- Модуль: 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);
}