getDefaultPerPage(); $activePage = isset($_GET['sbp_active_page']) ? max(1, absint(wp_unslash($_GET['sbp_active_page']))) : 1; $historyPage = isset($_GET['sbp_history_page']) ? max(1, absint(wp_unslash($_GET['sbp_history_page']))) : 1; $balanceResult = $service->getBalance(); $activeSettlementsResult = $service->getActiveSettlements($activePage, $perPage); $historyResult = $service->getSettlementHistory($historyPage, $perPage); $balanceData = (isset($balanceResult['data']) && is_array($balanceResult['data'])) ? $balanceResult['data'] : []; $activeSettlementsData = (isset($activeSettlementsResult['data']) && is_array($activeSettlementsResult['data'])) ? $activeSettlementsResult['data'] : []; $historyData = (isset($historyResult['data']) && is_array($historyResult['data'])) ? $historyResult['data'] : []; $activeItems = (isset($activeSettlementsData['data']) && is_array($activeSettlementsData['data'])) ? $activeSettlementsData['data'] : []; $historyItems = (isset($historyData['data']) && is_array($historyData['data'])) ? $historyData['data'] : []; $activeTotalPages = max(1, (int) ($activeSettlementsData['last_page'] ?? 1)); $historyTotalPages = max(1, (int) ($historyData['last_page'] ?? 1)); // Convert from rials to Toman (divide by 10) $formatAmount = static function ($amount): string { if (!is_numeric($amount)) { return '-'; } $value = (float) $amount; return number_format($value / 10, 0, '', ','); }; $formatAmountWithUnit = static function ($amount) use ($formatAmount): string { $formatted = $formatAmount($amount); if ($formatted === '-') { return $formatted; } return $formatted . ' تومان'; }; $maskLastDigit = static function ($amount) use ($formatAmount): string { if (!is_numeric($amount)) { return '-'; } $intAmount = (int) $amount; $negativePrefix = $intAmount < 0 ? '-' : ''; $digits = ltrim((string) abs($intAmount), '0'); if ($digits === '') { return '0'; } $withoutLastDigit = strlen($digits) > 1 ? substr($digits, 0, -1) : ''; $formattedPart = $withoutLastDigit === '' ? '0' : $formatAmount((int) $withoutLastDigit * 10); return $negativePrefix . $formattedPart; }; // Format timestamp to Jalali (Shamsi) date using DateConverter $formatJalaliTimestamp = static function ($timestamp): string { if (!is_numeric($timestamp)) { return '-'; } $value = (int) $timestamp; if ($value <= 0) { return '-'; } $dateTime = new DateTime('@' . $value); $dateTime->setTimezone(wp_timezone()); $gy = (int) $dateTime->format('Y'); $gm = (int) $dateTime->format('m'); $gd = (int) $dateTime->format('d'); $time = $dateTime->format('H:i'); [$jy, $jm, $jd] = DateConverter::gregorianToJalaliArray($gy, $gm, $gd); return sprintf('%04d/%02d/%02d - %s', $jy, $jm, $jd, $time); }; // Format timestamp to Gregorian date $formatGregorianTimestamp = static function ($timestamp): string { if (!is_numeric($timestamp)) { return '-'; } $value = (int) $timestamp; if ($value <= 0) { return '-'; } return wp_date('Y/m/d H:i', $value); }; $getStatusLabel = static function (array $item): string { if (!empty($item['status_label']) && is_string($item['status_label'])) { return $item['status_label']; } if (!empty($item['status']['description']) && is_string($item['status']['description'])) { return $item['status']['description']; } return '-'; }; $getStatusClass = static function (array $item): string { $name = ''; if (!empty($item['status']['name']) && is_string($item['status']['name'])) { $name = strtolower($item['status']['name']); } $map = [ 'created' => 'created', 'prepared' => 'prepared', 'confirmed' => 'confirmed', 'system_payment_created' => 'prepared', 'system_succeeded' => 'paid', 'wallet_charged' => 'paid', 'paid' => 'paid', 'rejected' => 'rejected', 'cancelled' => 'rejected', 'system_failed' => 'rejected', ]; return $map[$name] ?? 'default'; }; $getMethodLabel = static function (array $item): string { if (!empty($item['method']['description']) && is_string($item['method']['description'])) { return $item['method']['description']; } return '-'; }; $renderApiError = static function (array $result): void { $statusCode = isset($result['status_code']) ? (int) $result['status_code'] : 0; $message = isset($result['message']) && is_string($result['message']) ? $result['message'] : 'خطای نامشخص در دریافت اطلاعات.'; ?>
0): ?> (HTTP )
تراز غرفه تا ساعت
در حال حاضر درخواست تسویه فعالی وجود ندارد.