@extends('layouts.app', ['class' => 'g-sidenav-show bg-gray-100']) @section('content') @include('layouts.navbars.auth.topnav', ['title' => $title_menu]) @php $userRoles = $users_rules ?? []; $statusColors = [ 'entry' => '#6c757d', 'pending' => '#ffc107', 'finish' => '#28a745', 'draft' => '#6c757d', 'final' => '#ffc107', 'parsial' => '#17a2b8', 'approve' => '#28a745', 'reject' => '#dc3545', 'cancel' => '#6c757d', 'pending' => '#ffc107', 'Pending Head' => '#ffc107', 'Pending PPIC' => '#17a2b8', ]; $rawHeaderStatus = $header->status ?? 'draft'; if (in_array($rawHeaderStatus, ['Pending Head', 'Pending PPIC'])) { $headerUiStatus = 'pending'; } elseif (in_array($rawHeaderStatus, ['approve', 'reject', 'cancel'])) { $headerUiStatus = $rawHeaderStatus; } else { $headerUiStatus = $rawHeaderStatus; } $headerColor = $statusColors[$headerUiStatus] ?? '#6c757d'; $canEdit = false; $editLabel = 'Edit'; $btnClass = 'btn-primary'; $detailCollection = $details instanceof \Illuminate\Support\Collection ? $details : collect($details ?? []); $hasHeadRejectedDetail = $detailCollection->contains(function ($d) { return ($d->status ?? '') === 'reject' && !empty($d->appr_head_by) && empty($d->appr_ppic_by); }); $hasDraftDetail = $detailCollection->contains(function ($d) { return in_array(strtolower(trim($d->status ?? '')), ['draft', 'entry', '-', '']); }); if (in_array('spv', $userRoles) && ($header->status === 'entry' || $hasHeadRejectedDetail || $hasDraftDetail)) { $canEdit = true; $editLabel = 'Edit'; $btnClass = 'btn-warning'; } elseif (in_array('head', $userRoles) && !in_array($header->status, ['finish'])) { $canEdit = true; $editLabel = 'Tambah Lampiran'; $btnClass = 'btn-info'; } elseif (in_array('ppic', $userRoles) && !in_array($header->status, ['finish'])) { $canEdit = true; $editLabel = 'Edit Detail'; $btnClass = 'btn-warning'; } elseif (in_array('admins', $userRoles) && !in_array($header->status, ['finish'])) { $canEdit = true; $editLabel = 'Edit'; $btnClass = 'btn-warning'; } @endphp
{{ $title_menu }}

No PRA PR: {{ $header->no_prapr }}

@php $userRoles = $users_rules ?? []; $allDetails = $details instanceof \Illuminate\Support\Collection ? $details : collect($details ?? []); // Zero Inbox: filter items berdasarkan role if (in_array('head', $userRoles) && !in_array('admins', $userRoles)) { $renderDetails = $allDetails->filter(fn($d) => ($d->status ?? '') === 'Pending Head'); } elseif (in_array('ppic', $userRoles) && !in_array('admins', $userRoles)) { $renderDetails = $allDetails->filter( fn($d) => in_array($d->status ?? '', ['Pending PPIC', 'parsial']), ); } else { // SPV / Admin: tampilkan semua $renderDetails = $allDetails; } $hasActionableItems = $renderDetails->isNotEmpty(); $detailColspan = in_array('spv', $userRoles) ? 11 : 9; @endphp {{-- Header Info --}}
Tanggal Pengajuan

{{ date('d M Y', strtotime($header->tanggal_pengajuan)) }}

Departemen

{{ $header->departemen?->nama_departemen ?? '-' }}

Pemohon

{{ $user_name }}


{{-- Detail Items --}}
Detail Items @if ($hasActionableItems) {{ $renderDetails->count() }} @endif
@if (!$hasActionableItems) @else
@if (isset($users_rules) && in_array('spv', $users_rules)) @endif @foreach ($renderDetails as $detail) {{-- BARIS UTAMA --}} @if (isset($users_rules) && in_array('spv', $users_rules)) @endif {{-- BARIS DETAIL (TERSEMBUNYI) --}} @endforeach
Jenis No Order No Aset Barang Qty Tanggal Dibutuhkan StatusPersetujuan Head Persetujuan PPICAksi
{{ strtoupper($detail->jenis_referensi ?? '-') }} {{ $detail->no_order ?? '-' }} {{ $detail->no_aset ?? '-' }}
{{ $detail->nama_barang }}
{{ $detail->qty }} {{ $detail->satuan_nama }} {{ $detail->tanggal_dibutuhkan ? date('d/m/Y', strtotime($detail->tanggal_dibutuhkan)) : '-' }} @php $statusColors = [ 'entry' => '#6c757d', 'pending' => '#ffc107', 'finish' => '#28a745', 'draft' => '#6c757d', 'parsial' => '#17a2b8', 'approve' => '#28a745', 'reject' => '#dc3545', 'cancel' => '#6c757d', 'Pending Head' => '#ffc107', 'Pending PPIC' => '#ffc107', ]; $rawDetailStatus = $detail->status ?? 'draft'; $badgeColor = $statusColors[$rawDetailStatus] ?? '#6c757d'; // Untuk Head/PPIC: tampilkan "Pending" saja (bukan "Pending Head"/"Pending PPIC") $displayStatus = in_array($rawDetailStatus, [ 'Pending Head', 'Pending PPIC', ]) ? 'Pending' : $rawDetailStatus; @endphp {{ strtoupper($displayStatus) }} @php $headApprovalStatus = 'Pending Head'; $headApprovalColor = '#ffc107'; if (($detail->status ?? '') === 'reject' && !empty($detail->appr_head_by) && empty($detail->appr_ppic_by)) { $headApprovalStatus = 'Reject'; $headApprovalColor = '#dc3545'; } elseif (($detail->status ?? '') === 'cancel' && !empty($detail->appr_head_by)) { $headApprovalStatus = 'Cancel'; $headApprovalColor = '#6c757d'; } elseif (!empty($detail->appr_head_by)) { $headApprovalStatus = 'Approve'; $headApprovalColor = '#28a745'; } elseif (strtolower(trim((string) ($detail->status ?? ''))) === 'draft') { $headApprovalStatus = 'Draft'; $headApprovalColor = '#6c757d'; } @endphp {{ strtoupper($headApprovalStatus) }} @if ($detail->appr_head_by)
{{ $detail->appr_head_by }}
@endif
@php $ppicApprovalStatus = '-'; $ppicApprovalColor = '#6c757d'; if (empty($detail->appr_head_by) && in_array($detail->status ?? '', ['draft', 'Pending Head'])) { $ppicApprovalStatus = '-'; } elseif (in_array($detail->status ?? '', ['Pending PPIC', 'parsial'])) { $ppicApprovalStatus = 'Pending PPIC'; $ppicApprovalColor = '#ffc107'; } elseif (($detail->status ?? '') === 'reject' && !empty($detail->appr_ppic_by)) { $ppicApprovalStatus = 'Reject'; $ppicApprovalColor = '#dc3545'; } elseif (!empty($detail->appr_ppic_by) || in_array($detail->status ?? '', ['approve', 'finish'])) { $ppicApprovalStatus = 'Approve'; $ppicApprovalColor = '#28a745'; } @endphp @if ($ppicApprovalStatus === '-') - @else {{ strtoupper($ppicApprovalStatus) }} @if ($detail->appr_ppic_by)
{{ $detail->appr_ppic_by }}
@endif @endif
{{-- Action Buttons (Approval) --}} @php $canApprove = false; $rules = $users_rules ?? []; $detailStatusNormalized = strtolower( trim($detail->status ?? ''), ); $canDeleteDetailSpv = in_array('spv', $rules) && ((in_array($detailStatusNormalized, [ '', '-', 'draft', 'entry', ]) && empty($detail->appr_head_by) && empty($detail->appr_ppic_by)) || ($detailStatusNormalized === 'reject' && !empty($detail->appr_head_by) && empty($detail->appr_ppic_by))); if ( in_array('head', $rules) && $detail->status == 'Pending Head' ) { $canApprove = true; } elseif ( in_array('ppic', $rules) && in_array($detail->status, ['Pending PPIC', 'parsial']) ) { $canApprove = true; } elseif (in_array('admins', $rules)) { $canApprove = true; } @endphp @php $showCancelHead = in_array('head', $rules) && $detail->status == 'Pending Head'; @endphp @if ($canApprove && !in_array($detail->status, ['approve', 'reject', 'cancel'])) @if ($showCancelHead) @endif @elseif ($canDeleteDetailSpv) @else @if (in_array($detail->status, ['approve', 'finish', 'parsial'])) @elseif($detail->status == 'reject') @elseif($detail->status == 'cancel') @else - @endif @endif
Deskripsi

{{ $detail->deskripsi ?? 'Tidak ada deskripsi tambahan.' }}

@if (in_array($detail->status, ['reject', 'cancel']) && !empty($detail->catatan))
Catatan Keputusan

{{ $detail->catatan }}

@endif
Lampiran File
@php $files = DB::table('trs_pr_lampiran') ->where('id_pr_detail', $detail->id) ->where('isactive', '1') ->get(); @endphp @if ($files->count() > 0)
@foreach ($files as $f)
{{ Str::limit($f->nama_file, 25) }}
@endforeach
@else Tidak ada lampiran. @endif
@endif {{-- Footer Info --}}
Terakhir diupdate: {{ date('d M Y H:i', strtotime($header->updated_at)) }} @if ($header->user_update) oleh {{ $updated_by_name }} @endif
@endsection