private static function ensureStatusesLoaded() { if (self::$STATUS_INIT) { return; } global $DB; $paidStatus = null; $arStatuses = array(); $arStatuses = \CCrmInvoice::GetStatusList(); foreach ($arStatuses as $statusID => $arStatus) { if (!$paidStatus && strval($statusID) === 'P') { $paidStatus = $arStatus; continue; } } self::$WORK_STATUSES = array(); self::$CANCEL_STATUSES = array(); if ($paidStatus) { $paidStatusSort = intval($paidStatus['SORT']); foreach ($arStatuses as $statusID => $arStatus) { $sort = intval($arStatus['SORT']); if ($sort < $paidStatusSort) { self::$WORK_STATUSES[] = '\'' . $DB->ForSql($statusID) . '\''; } elseif ($sort > $paidStatusSort) { self::$CANCEL_STATUSES[] = '\'' . $DB->ForSql($statusID) . '\''; } } } self::$STATUS_INIT = true; }