{{ __('Purchase Requisition (PR)') }}

Requested By:
{{ $itemRequest->user->name ?? 'N/A' }}
Status:
{{ match ($itemRequest->req_status->value) { 'Initiated' => 'Pending', default => $itemRequest->req_status->value, } }}
Requisition Number:
{{ $itemRequest->requisition_number ?? 'N/A' }}
Cost Center:
{{ $itemRequest->costCenter->cc_desc ?? 'N/A' }}
Priority:
{{ $itemRequest->priority->value ?? 'N/A' }}
Reason for Request:
{{ $itemRequest->approval_flow_label ?? 'N/A' }}
Due Date:
{{ $itemRequest->due_date ? $itemRequest->due_date->format('Y-m-d') : 'N/A' }}
Created at:
{{ $itemRequest->created_at ? $itemRequest->created_at->format('Y-m-d H:i') : 'N/A' }}
@if ($itemRequest->selected_items && count($itemRequest->selected_items) > 0) @foreach ($itemRequest->selected_items as $item) @endforeach
No Item Number Description Qty Due Date
{{ $item['line'] ?? '' }} {{ $item['item_number'] ?? '' }} {{ $item['name'] ?? '' }} @if (!empty($item['comment']))
{{ $item['comment'] }} @endif
{{ $item['quantity'] ?? '' }}@if (!empty($item['unit']))  {{ $item['unit'] }} @endif {{ $item['due_date'] ?? '' }}
@else

No items selected for this request.

@endif @php $approverIds = collect(range(1, 10)) ->map(fn($i) => $itemRequest->{'approver' . $i}) ->filter(); $approverUsers = \App\Models\User::whereIn('id', $approverIds) ->get() ->keyBy('id'); $approvalDates = $itemRequest->approvals ->where('status', 'Approved') ->sortByDesc('created_at') ->keyBy('user_id'); $approvers = collect(range(1, 10)) ->map(function ($i) use ( $itemRequest, $approverUsers, $approvalDates, ) { $userId = $itemRequest->{'approver' . $i}; if (!$userId) { return null; } $user = $approverUsers->get($userId); $approval = $approvalDates->get($userId); return [ 'name' => $itemRequest->{'approver' . $i . '_name'} ?? '', 'status' => $itemRequest->{'appstatus' . $i} ? $itemRequest->{'appstatus' . $i}->value : '', 'user_id' => $userId, 'signature' => $user?->signature, 'approved_at' => $approval?->created_at, ]; }) ->filter(); @endphp @foreach ($approvers as $approver) @endforeach @foreach ($approvers as $approver) @endforeach

The document is electronically submitted, approved and received by:

@if ($itemRequest->user && $itemRequest->user->signature) Signature @else

Pengguna belum mengunggah dokumen tanda tangan

@endif
@if ($approver['status'] === 'Approved') @if (!empty($approver['signature'])) Signature @else

Pengguna belum mengunggah dokumen tanda tangan

@endif @endif

{{ $itemRequest->user->name }}

{{ $itemRequest->created_at->format('d M Y H:i') }}

@if ($approver['status'] === 'Approved')

{{ $approver['name'] }}

@if ($approver['approved_at'])

{{ $approver['approved_at']->format('d M Y H:i') }}

@endif @endif
@if (!empty($itemRequest->remarks))

Comment

{!! preg_match('/remarks) ? $itemRequest->remarks : nl2br(e($itemRequest->remarks)) !!}
@endif @if ($itemRequest->attachments && count($itemRequest->attachments) > 0)

Attachment(s)

@php $attachIconMap = [ 'pdf' => 'fa-solid fa-file-pdf text-red-500', 'doc' => 'fa-solid fa-file-word text-blue-500', 'docx' => 'fa-solid fa-file-word text-blue-500', 'xls' => 'fa-solid fa-file-excel text-green-500', 'xlsx' => 'fa-solid fa-file-excel text-green-500', 'ppt' => 'fa-solid fa-file-powerpoint text-orange-500', 'pptx' => 'fa-solid fa-file-powerpoint text-orange-500', 'jpg' => 'fa-solid fa-file-image text-purple-500', 'jpeg' => 'fa-solid fa-file-image text-purple-500', 'png' => 'fa-solid fa-file-image text-purple-500', 'zip' => 'fa-solid fa-file-zipper text-yellow-600', 'rar' => 'fa-solid fa-file-zipper text-yellow-600', ]; @endphp @foreach ($itemRequest->attachments as $attachment) @php $ext = strtolower(pathinfo($attachment, PATHINFO_EXTENSION)); $icon = $attachIconMap[$ext] ?? 'fa-solid fa-file text-gray-400'; $fileName = substr(basename($attachment), 11); @endphp {{ $fileName }} @endforeach
@endif
@if ($itemRequest->approvals->isNotEmpty())

Activity Log

@foreach ($itemRequest->approvals->sortByDesc('created_at') as $approval) @php $statusStyles = [ 'Approved' => [ 'bg-green-50 text-green-700 ring-green-200', 'bg-green-500', ], 'Rejected' => ['bg-red-50 text-red-700 ring-red-200', 'bg-red-500'], 'Cancelled' => [ 'bg-blue-50 text-blue-700 ring-blue-200', 'bg-blue-500', ], 'Initiated' => [ 'bg-blue-50 text-blue-700 ring-blue-200', 'bg-blue-500', ], 'In process' => [ 'bg-yellow-50 text-yellow-700 ring-yellow-200', 'bg-yellow-500', ], ]; [$pillClass, $dotClass] = $statusStyles[$approval->status] ?? [ 'bg-gray-50 text-gray-700 ring-gray-200', 'bg-gray-400', ]; $commentPoints = []; if ($approval->comment && trim($approval->comment)) { $raw = trim($approval->comment); $parts = preg_split('/(?:^|\s)-\s(?=[A-Z])/u', $raw); $parts = array_values(array_filter(array_map('trim', $parts))); if (count($parts) > 1) { $commentPoints = $parts; } } @endphp
{{ strtoupper(substr($approval->user->name ?? '?', 0, 1)) }}
{{ $approval->user->name }} {{ $approval->created_at->format('d M Y H:i') }}
{{ $approval->status }}
@if (count($commentPoints) > 1)
    @foreach ($commentPoints as $point)
  • {{ $point }}
  • @endforeach
@elseif ($approval->comment && trim($approval->comment))
{{ $approval->comment }}
@else

No comment provided.

@endif @if ($approval->attachments && count(json_decode($approval->attachments)) > 0)
@foreach (json_decode($approval->attachments) as $attachment) {{ substr(basename($attachment), 11) }} @endforeach
@endif
@endforeach
@endif

Approval Workflow

@foreach ($approvers as $approver)
@php $borderColor = $approver['status'] === 'Approved' ? '#22c55e' : ($approver['status'] === 'Initiated' ? '#3b82f6' : ($approver['status'] === 'Rejected' ? '#eab308' : ($approver['status'] === 'Cancelled' ? '#ef4444' : '#d1d5db'))); $bgColor = $approver['status'] === 'Approved' ? '#dcfce7' : ($approver['status'] === 'Initiated' ? '#dbeafe' : ($approver['status'] === 'Rejected' ? '#fef9c3' : ($approver['status'] === 'Cancelled' ? '#fee2e2' : '#ffffff'))); $textColor = $approver['status'] === 'Approved' ? '#15803d' : ($approver['status'] === 'Initiated' ? '#1d4ed8' : ($approver['status'] === 'Rejected' ? '#a16207' : ($approver['status'] === 'Cancelled' ? '#b91c1c' : '#6b7280'))); $icon = $approver['status'] === 'Approved' ? '✓' : ($approver['status'] === 'Rejected' ? '✗' : ($approver['status'] === 'Cancelled' ? '✗' : ($approver['status'] === 'Initiated' ? '!' : '?'))); @endphp
{{ $icon }}
{{ $approver['name'] ?? 'N/A' }}
{{ $approver['status'] ?? 'Pending' }}
@endforeach
Back Print @can('edit item requests') @if ( $itemRequest->user_id === auth()->id() && in_array($itemRequest->req_status->value, [ \App\Enums\ApprovalStatus::Initiated->value, \App\Enums\ApprovalStatus::Rejected->value, ])) Edit @endif @endcan @php $currentUserIsApprover = false; $approverIndex = null; for ($i = 1; $i <= 10; $i++) { if (auth()->check() && $itemRequest->{'approver' . $i} === auth()->user()->id) { $currentUserIsApprover = true; $status = $itemRequest->{'appstatus' . $i}; if (!$status || in_array($status->value, ['Initiated', 'In process'])) { $approverIndex = $i; break; } } } $canApproveOrReject = false; if ( $currentUserIsApprover && $approverIndex && !in_array($itemRequest->req_status->value, ['Rejected', 'Cancelled']) ) { $currentStatus = $itemRequest->{'appstatus' . $approverIndex}; $isCurrentPending = $currentStatus && in_array($currentStatus->value, ['Initiated', 'In process']); $isCurrentNull = !$currentStatus && $itemRequest->req_status->value === 'Initiated'; if ($isCurrentPending || $isCurrentNull) { if ($approverIndex === 1) { $canApproveOrReject = true; } else { $allPreviousApproved = true; for ($j = 1; $j < $approverIndex; $j++) { if ($itemRequest->{'approver' . $j}) { $previousStatus = $itemRequest->{'appstatus' . $j}; if (!$previousStatus || $previousStatus->value !== 'Approved') { $allPreviousApproved = false; break; } } } $canApproveOrReject = $allPreviousApproved; } } } @endphp @can('approve item requests') @if ($canApproveOrReject) @endif @endcan @can('reassign item requests') @endcan @can('delete item requests')
@csrf @method('DELETE')
@endcan
@push('scripts') @endpush