@php $tahunBerjalan = date('Y'); $tahunUsulan = date('Y') + 1; $isUkpd = auth()->user()->role === 'staff_ukpd'; $routeIndex = $isUkpd ? route('ukpd.staf.usulan.index') : route('skpd.staf.usulan-shs.index'); $routeCreate = $isUkpd ? route('ukpd.staf.usulan.create') : route('skpd.staf.usulan-shs.create'); $routeTemplate = $isUkpd ? route('ukpd.staf.usulan.download-template') : route('skpd.staf.usulan-shs.download-template'); $routeImport = $isUkpd ? route('ukpd.staf.usulan.import-csv') : route('skpd.staf.usulan-shs.import-csv'); $routeBulkSubmit = $isUkpd ? route('ukpd.staf.usulan.bulk-submit') : route('skpd.staf.usulan-shs.bulk-submit'); $routeBulkDestroy = $isUkpd ? route('ukpd.staf.usulan.bulk-destroy') : route('skpd.staf.usulan-shs.bulk-destroy'); $routeExportValidatedExcel = $isUkpd ? route('ukpd.staf.usulan.export-validated-excel') : route('skpd.staf.usulan-shs.export-validated-excel'); $submitConfirmMsg = $isUkpd ? 'Kirim usulan ini ke Staf SKPD Induk?' : 'Kirim usulan ini untuk diverifikasi oleh BPAD/BPKD?'; $submitTooltip = $isUkpd ? 'Kirim Ke Staf SKPD Induk' : 'Kirim Ke Verifikator BPAD/BPKD'; @endphp @extends('layouts.app') @section('title', 'Daftar Usulan SHS ' . $tahunUsulan) @section('content')

Daftar Usulan SHS Tahun {{ $tahunUsulan }}

Kelola dan pantau seluruh daftar usulan standar harga satuan barang/jasa instansi Anda.

Export All Tervalidasi @if (($faseStatus ?? 'open') == 'open') Tambah Usulan Baru @else @endif
@if (session('success'))
{{ session('success') }}
@endif @if (session('error'))
{{ session('error') }}
@endif
@if (request()->hasAny(['search', 'status'])) @endif

Tabel Inputan Usulan Terdaftar

Total: {{ $usulanList->total() }} Item
@forelse($usulanList as $item) @php $lockedStatuses = [ 'menunggu_konfirmasi_skpd', 'menunggu_verifikasi', 'proses_verifikasi', 'menunggu_validasi', 'validasi_success', 'disetujui', ]; $canAction = !in_array(strtolower($item->status ?? ''), $lockedStatuses); $isValidated = in_array(strtolower($item->status ?? ''), [ 'validasi_success', 'disetujui', ]); $routeShowItem = $isUkpd ? route('ukpd.staf.usulan.show', $item->id) : route('skpd.staf.usulan-shs.show', $item->id); $routeSubmitItem = $isUkpd ? route('ukpd.staf.usulan.submit', $item->id) : route('skpd.staf.usulan-shs.submit', $item->id); $routeEditItem = $isUkpd ? route('ukpd.staf.usulan.edit', $item->id) : route('skpd.staf.usulan-shs.edit', $item->id); $routeDestroyItem = $isUkpd ? route('ukpd.staf.usulan.destroy', $item->id) : route('skpd.staf.usulan-shs.destroy', $item->id); $routeCetakPdf = $isUkpd ? route('ukpd.staf.usulan.cetak-pdf', $item->id) : route('skpd.staf.usulan-shs.cetak-pdf', $item->id); @endphp @empty @endforelse
Kode & Kelompok Uraian Barang / Jasa Spesifikasi & Satuan Harga {{ $tahunBerjalan }} Usulan {{ $tahunUsulan }} Status Aksi
@if ($canAction) @else @endif

{{ $item->nama_kelompok ?? '-' }}

Brg: {{ $item->kode_barang ?? '-' }}

Rek: {{ $item->kode_rekening ?? '-' }}

{{ $item->uraian_barang }}

@if ($item->is_khusus_skpd) Khusus {{ $isUkpd ? 'UKPD' : 'SKPD' }} @endif

{{ $item->spesifikasi ?? '-' }}

{{ $item->satuan }}
Rp {{ number_format($item->harga_2025 ?? 0, 0, ',', '.') }} Rp {{ number_format($item->usulan_harga_2026 ?? 0, 0, ',', '.') }} @php $statusMap = [ 'menunggu_dikirim_ukpd' => [ 'label' => 'Draft UKPD', 'class' => 'bg-amber-100 text-amber-800', ], 'menunggu_konfirmasi_skpd' => [ 'label' => 'Dikirim ke SKPD', 'class' => 'bg-blue-100 text-blue-800', ], 'menunggu_dikirim' => [ 'label' => 'Menunggu Dikirim', 'class' => 'bg-amber-100 text-amber-800', ], 'draft' => [ 'label' => 'Menunggu Dikirim', 'class' => 'bg-amber-100 text-amber-800', ], 'menunggu_verifikasi' => [ 'label' => 'Menunggu Verifikasi', 'class' => 'bg-blue-100 text-blue-800', ], 'proses_verifikasi' => [ 'label' => 'Menunggu Verifikasi', 'class' => 'bg-blue-100 text-blue-800', ], 'menunggu_validasi' => [ 'label' => 'Menunggu Validasi', 'class' => 'bg-indigo-100 text-indigo-800', ], 'validasi_success' => [ 'label' => 'Validasi Success', 'class' => 'bg-emerald-100 text-emerald-800 border border-emerald-300', ], 'disetujui' => [ 'label' => 'Validasi Success', 'class' => 'bg-emerald-100 text-emerald-800 border border-emerald-300', ], 'verifikasi_tertolak' => [ 'label' => 'Verifikasi Tertolak', 'class' => 'bg-rose-100 text-rose-800', ], 'validasi_tertolak' => [ 'label' => 'Validasi Tertolak', 'class' => 'bg-rose-100 text-rose-800', ], ]; $st = $statusMap[$item->status] ?? [ 'label' => str_replace('_', ' ', $item->status), 'class' => 'bg-slate-100 text-slate-700', ]; $alasanPenolakan = $item->catatan_penolakan ?? ($item->catatan_bpad ?? ($item->catatan_bpkd ?? ($item->catatan_verifikasi ?? null))); @endphp {{ $st['label'] }} @if (in_array($item->status, ['verifikasi_tertolak', 'validasi_tertolak', 'ditolak']) && $alasanPenolakan)

Alasan Ditolak:

"{{ $alasanPenolakan }}"

@endif
@if ($isValidated) @endif @if ($canAction)
@csrf
@csrf @method('DELETE')
@endif

Data usulan tidak ditemukan.

{{-- Footer Pagination & Per Page Selector --}}
{{-- Selector Data Per Halaman & Info Total --}}
data per halaman
@if ($usulanList->total() > 0) @if (request('per_page') === 'all') Menampilkan semua {{ $usulanList->total() }} data @else Menampilkan {{ $usulanList->firstItem() }} - {{ $usulanList->lastItem() }} dari {{ $usulanList->total() }} total usulan @endif @else Menampilkan 0 data @endif
@if (request('per_page') !== 'all' && $usulanList->lastPage() > 1) @php $currentPage = $usulanList->currentPage(); $lastPage = $usulanList->lastPage(); $pages = []; if ($lastPage <= 7) { $pages = range(1, $lastPage); } else { $pages[] = 1; $start = max(2, $currentPage - 1); $end = min($lastPage - 1, $currentPage + 1); if ($start > 2) { $pages[] = '...'; } for ($i = $start; $i <= $end; $i++) { $pages[] = $i; } if ($end < $lastPage - 1) { $pages[] = '...'; } $pages[] = $lastPage; } @endphp @endif
@endsection