$action = isset($_REQUEST['ACTION']) ? $_REQUEST['ACTION'] : ''; if ($action === 'FIX_STATUSES') { if (COption::GetOptionString('crm', '~CRM_FIX_STATUSES', 'N') !== 'Y') { __CrmConfigStatusEndResonse(array('COMPLETED' => 'Y')); } $dbRes = $DB->Query("SELECT ENTITY_ID, STATUS_ID FROM b_crm_status WHERE SYSTEM = 'N' GROUP BY ENTITY_ID, STATUS_ID HAVING COUNT(*) > 1", false, 'FILE: ' . __FILE__ . '<br /> LINE: ' . __LINE__); $items = array(); while ($arRes = $dbRes->Fetch()) { $items[] = $arRes; } foreach ($items as $item) { $entityID = isset($item['ENTITY_ID']) ? $item['ENTITY_ID'] : ''; $statusID = isset($item['STATUS_ID']) ? (int) $item['STATUS_ID'] : 0; if ($entityID === '' || $statusID <= 0) { continue; } $dbRes = $DB->Query("SELECT ID, SORT, NAME, SYSTEM FROM b_crm_status WHERE ENTITY_ID = '{$entityID}' AND STATUS_ID = '{$statusID}'", false, 'FILE: ' . __FILE__ . '<br /> LINE: ' . __LINE__); $entity = new CCrmStatus($entityID); $isFirst = true; while ($arRes = $dbRes->Fetch()) { if ($isFirst) { $isFirst = false; continue; } $itemID = (int) $arRes['ID']; $error = $entity->Update($itemID, array('STATUS_ID' => $entity->GetNextStatusId(), 'SORT' => isset($arRes['SORT']) ? (int) $arRes['SORT'] : 10, 'SYSTEM' => isset($arRes['SYSTEM']) ? $arRes['SYSTEM'] : 'N', 'NAME' => isset($arRes['NAME']) ? $arRes['NAME'] : ''), array('ENABLE_STATUS_ID' => true)); } } COption::RemoveOption('crm', '~CRM_FIX_STATUSES'); __CrmConfigStatusEndResonse(array('COMPLETED' => 'Y')); }