- Модуль: catalog
- Путь к файлу: ~/bitrix/modules/catalog/lib/component/gridvariationform.php
- Класс: BitrixCatalogComponentGridVariationForm
- Вызов: GridVariationForm::prepareFieldsValues
public function prepareFieldsValues(array $dirtyValues): array
{
$result = [
'PROPERTIES' => [],
'BARCODES' => [],
'PRICES' => [],
];
$pricePrefix = self::GRID_FIELD_PREFIX . self::PRICE_FIELD_PREFIX;
$purchacingPricePrefix = self::GRID_FIELD_PREFIX . 'PURCHASING_PRICE';
foreach ($this->getDescriptions() as $description)
{
$name = $description['name'];
$value = $dirtyValues[$name] ?? null;
if (!isset($value))
{
continue;
}
if (isset($description['propertyId']))
{
$type = $description['type'] ?? null;
if ($type === 'multilist' && empty($value))
{
$value = [];
}
$propertyId = (int)$description['propertyId'];
$result['PROPERTIES'][$propertyId] = $value;
}
elseif (mb_strpos($name, $pricePrefix) === 0)
{
if (
is_array($value)
&& isset($value['PRICE']['NAME'], $value['PRICE']['VALUE'], $value['CURRENCY']['VALUE'])
)
{
$priceGroupId = str_replace($pricePrefix, '', $value['PRICE']['NAME']);
if ($priceGroupId)
{
$result['PRICES'][$priceGroupId] = [
'PRICE' => (float)$value['PRICE']['VALUE'],
'CURRENCY' => (string)$value['CURRENCY']['VALUE'],
];
}
}
}
elseif (mb_strpos($name, $purchacingPricePrefix) === 0)
{
if (is_array($value) && isset($value['PRICE']['VALUE'], $value['CURRENCY']['VALUE']))
{
$result['PURCHASING_PRICE'] = (float)$value['PRICE']['VALUE'];
$result['PURCHASING_CURRENCY'] = (string)$value['CURRENCY']['VALUE'];
}
}
elseif (isset($description['originalName']))
{
$name = $description['originalName'];
$result[$name] = $value;
}
elseif (isset($description['entity']) && $description['entity'] === 'barcode')
{
if (is_array($value))
{
array_push($result['BARCODES'], ...$value);
}
else
{
$result['BARCODES'][] = $value;
}
}
}
return $result;
}