@php $tahunBerjalan = date('Y'); $tahunUsulan = date('Y') + 1; @endphp @extends('layouts.app') @section('title', 'Daftar Usulan Masuk dari UKPD') @section('content')

Usulan Masuk dari UKPD

Tinjau dan proses usulan standar harga satuan yang diajukan oleh Staf UKPD.

@if (session('success'))
{{ session('success') }}
@endif @if (session('error'))
{{ session('error') }}
@endif
@if (request()->hasAny(['search', 'status'])) @endif

Daftar Usulan Masuk Staf UKPD

Total: {{ $usulanList->total() }} Item
@forelse($usulanList as $item) @php $isValidated = in_array(strtolower($item->status ?? ''), [ 'validasi_success', 'disetujui', ]); @endphp @empty @endforelse
Pengusul (UKPD) Kode & Kelompok Uraian Barang / Jasa Spesifikasi & Satuan Usulan Harga {{ $tahunUsulan }} Status Aksi
{{ substr($item->user->name ?? 'U', 0, 1) }}

{{ $item->user->name ?? 'Staf UKPD' }}

{{ $item->user->email ?? '-' }}

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

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

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

{{ $item->uraian_barang }}

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

{{ $item->satuan }}
Rp {{ number_format($item->usulan_harga_2026 ?? 0, 0, ',', '.') }} @php $statusMap = [ 'menunggu_konfirmasi_skpd' => [ 'label' => 'Perlu Ditinjau SKPD', 'class' => 'bg-amber-100 text-amber-800', ], 'menunggu_verifikasi' => [ 'label' => 'Proses Verifikasi (BPKD/BPAD)', 'class' => 'bg-blue-100 text-blue-800', ], 'proses_verifikasi' => [ 'label' => 'Proses Verifikasi (BPKD/BPAD)', 'class' => 'bg-blue-100 text-blue-800', ], 'menunggu_validasi' => [ 'label' => 'Menunggu Validasi', 'class' => 'bg-indigo-100 text-indigo-800', ], 'validasi_success' => [ 'label' => 'Disetujui', 'class' => 'bg-emerald-100 text-emerald-800 border border-emerald-300', ], 'disetujui' => [ 'label' => 'Disetujui', 'class' => 'bg-emerald-100 text-emerald-800 border border-emerald-300', ], 'verifikasi_tertolak' => [ 'label' => 'Dikembalikan / Ditolak', '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))); $penolakName = $item->rejectedByUser->name ?? null; $roleLabels = [ 'staff_bpkd' => 'Staff BPKD', 'staff_bpad' => 'Staff BPAD', 'staff_skpd' => 'Staff SKPD', 'ka_skpd' => 'Kepala SKPD', ]; $penolakRole = $roleLabels[$item->rejected_by_role ?? ''] ?? 'Verifikator'; @endphp {{ $st['label'] }} @if (in_array($item->status, ['verifikasi_tertolak', 'validasi_tertolak', 'ditolak']) && $alasanPenolakan)

Ditolak Oleh: {{ $penolakName ?? 'Verifikator' }} ({{ $penolakRole }})

"{{ $alasanPenolakan }}"

@endif
@if ($isValidated) @endif @if ($item->status === 'menunggu_konfirmasi_skpd')
@csrf
@endif

Belum ada usulan masuk dari Staf UKPD.

{{-- Footer Pagination & Per Page Selector --}}
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
{{-- Modal Tolak / Kembalikan Usulan ke UKPD --}} @endsection