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)
| No |
Item Number |
Description |
Qty |
Due Date |
@foreach ($itemRequest->selected_items as $item)
|
{{ $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'] ?? '' }}
|
@endforeach
@else
No items selected for this request.
@endif
|
The document is electronically
submitted, approved and received by:
|
@php
$approverIds = collect(range(1, 10))
->map(fn($i) => $itemRequest->{'approver' . $i})
->filter();
$approverUsers = \App\Models\User::whereIn('id', $approverIds)
->get()
->keyBy('id');
// ✅ Map latest approval date by user_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, // ✅ FIX
];
})
->filter();
@endphp
@if ($itemRequest->user && $itemRequest->user->signature)
@else
Pengguna belum mengunggah dokumen tanda tangan
@endif
|
@foreach ($approvers as $approver)
@if ($approver['status'] === 'Approved')
@if (!empty($approver['signature']))
@else
Pengguna belum mengunggah dokumen tanda
tangan
@endif
@endif
|
@endforeach
|
{{ $itemRequest->user->name }}
{{ $itemRequest->created_at->format('d M Y H:i') }}
|
@foreach ($approvers as $approver)
@if ($approver['status'] === 'Approved')
{{ $approver['name'] }}
@if ($approver['approved_at'])
{{ $approver['approved_at']->format('d M Y H:i') }}
@endif
@endif
|
@endforeach
@if (!empty($itemRequest->remarks))
Comment:
{{ $itemRequest->remarks }}
@endif
@if ($itemRequest->attachments && count($itemRequest->attachments) > 0)
@endif
Approval History
@forelse ($itemRequest->approvals->sortByDesc('created_at') as $approval)
{{ strtoupper(substr($approval->user->name, 0, 1)) }}
{{ $approval->user->name }}
{{ $approval->created_at->format('M d, Y • h:i A') }}
{{ $approval->status }}
{{ $approval->comment ?? 'No comment provided.' }}
@if ($approval->attachments && count(json_decode($approval->attachments)) > 0)
@endif
@empty
No approval history found
@endforelse
Approval Workflow
@foreach ($approvers as $approver)
✓
{{ $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('delete item requests')
@endcan
@push('scripts')
@endpush
|