- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/location/tree.php
- Класс: BitrixSaleLocationis
- Вызов: is::checkFields
static function checkFields(EntityResult $result, $primary, array $data)
{
parent::checkFields($result, $primary, $data);
if(!($result instanceof EntityUpdateResult)) // work out only when update()
return;
foreach (static::getEntity()->getFields() as $field)
{
if($field->getName() == 'PARENT_ID' && mb_strlen($data['PARENT_ID']))
{
//it cant be parent for itself
if(intval($primary['ID']) == intval($data['PARENT_ID']))
{
$result->addError(new EntityFieldError(
$field,
Loc::getMessage('SALE_LOCATION_TREE_ENTITY_CANNOT_MOVE_STRAIGHT_TO_ITSELF_EXCEPTION'),
EntityFieldError::INVALID_VALUE
));
}
else
{
try
{
$node = self::getNodeInfo($primary['ID']);
$nodeDst = self::getNodeInfo($data['PARENT_ID']);
// new parent cannot belong to node subtree
if($node['PARENT_ID'] != $nodeDst['ID'])
{
if($nodeDst['LEFT_MARGIN'] >= $node['LEFT_MARGIN'] && $nodeDst['RIGHT_MARGIN'] <= $node['RIGHT_MARGIN'])
{
$result->addError(new EntityFieldError(
$field,
Loc::getMessage('SALE_LOCATION_TREE_ENTITY_CANNOT_MOVE_TO_ITSELF_EXCEPTION'),
EntityFieldError::INVALID_VALUE
));
}
}
}
catch(MainSystemException $e)
{
}
}
}
}
}