• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/controller/property.php
  • Класс: BitrixSaleControllerProperty
  • Вызов: Property::saveVariants
protected function saveVariants()
{
	$orderPropsVariant = new CSaleOrderPropsVariant();

	if ($this->property['TYPE'] === 'ENUM')
	{
		$index = 0;
		$variantSettings = $this->getVariantSettings();

		foreach ($this->property['VARIANTS'] as $key => $row)
		{
			if (isset($row['DELETE']) && $row['DELETE'] === 'Y')
			{
				if ($row['ID'])
				{
					$orderPropsVariant->Delete($row['ID']);
				}

				unset($this->property['VARIANTS'][$key]);
			}
			else
			{
				++$index;
				$variantId = $row['ID'];
				$row = array_intersect_key($row, $variantSettings);

				if ($variantId)
				{
					unset($row['ID']);
					if (!$orderPropsVariant->Update($variantId, $row))
					{
						$this->errors[] = Loc::getMessage('ERROR_EDIT_VARIANT')." $index";
					}
				}
				else
				{
					$row['ORDER_PROPS_ID'] = $this->property['ID'];

					if ($variantId = $orderPropsVariant->Add($row))
					{
						$variants[$key]['ID'] = $variantId;
					}
					else
					{
						$this->errors[] = Loc::getMessage('ERROR_ADD_VARIANT')." $index";
					}
				}
			}
		}
	}
	// cleanup variants
	elseif (!empty($this->dbProperty) && $this->dbProperty['TYPE'] === 'ENUM')
	{
		CSaleOrderPropsVariant::DeleteAll($this->dbProperty['ID']);
	}
}