{{-- Alert untuk SPB Regular --}}
@if($data->request_type == 'Regular' && !in_array($data->status, ['Approved', 'Dibatalkan', 'Pengajuan Pembatalan']))
Informasi!
SPB Regular hanya dapat diedit melalui halaman Stock Opname. Untuk mengubah data SPB ini, silakan akses menu Stock Opname.
@endif
| Nomor SPB |
: {{ $data->spb_number }} |
| Store |
: {{ $data->store->name ?? '-' }} |
| Tipe Permintaan |
: {{ $data->request_type }} |
| Status |
:
@if($data->status == 'Draft')
{{ $data->status }}
@elseif($data->status == 'Submitted')
{{ $data->status }}
@elseif($data->status == 'Approved')
{{ $data->status }}
@else
{{ $data->status }}
@endif
|
| Tanggal Permintaan |
: {{ $data->request_date->format('d/m/Y') }} |
| Tanggal Pengiriman |
: {{ $data->delivery_date ? $data->delivery_date->format('d/m/Y') : '-' }} |
| Stock Opname |
:
@if($data->stockOpname)
{{ $data->stockOpname->so_number }}
@else
-
@endif
|
| Jadwal Pengiriman |
:
@if($data->ShipmentDelivery)
{{ $data->ShipmentDelivery->delivery_day }} - {{ $data->ShipmentDelivery->tipe_pengiriman ?? '' }}
@else
-
@endif
|
| Dibuat Oleh |
: {{ $data->creator->fullname ?? 'System' }} ({{ $data->created_at->format('d/m/Y H:i') }}) |
| Diubah Oleh |
: {{ $data->modificator->fullname ?? '-' }} ({{ $data->updated_at ? $data->updated_at->format('d/m/Y H:i') : '-' }}) |
@if($data->csv_generated_at)
| CSV Dibuat |
: {{ $data->csvGeneratedBy->name ?? 'System' }} ({{ $data->csv_generated_at->format('d/m/Y H:i') }}) |
@endif
| Total Item |
: {{ count($data->details) }} item |
@if($data->notes)
| Catatan |
: {{ $data->notes }} |
@endif
{{-- Cancellation Information --}}
@if($data->cancellation_reason)
| Alasan Pembatalan |
: {{ $data->cancellation_reason }} |
| Diajukan Oleh |
: {{ $data->modificator->fullname ?? '-' }} |
| Tanggal Pengajuan |
: {{ $data->updated_at ? $data->updated_at->format('d/m/Y H:i') : '-' }} |
@if($data->cancellation_approved_by)
| Diapprove Oleh |
: {{ $data->cancellationApprovedBy->fullname ?? '-' }} |
| Tanggal Approve |
:
@if($data->cancellation_approved_at)
{{ $data->cancellation_approved_at->format('d/m/Y H:i') }}
@else
-
@endif
|
@endif
@if($data->cancellation_rejected_by)
| Direject Oleh |
: {{ $data->cancellationRejectedBy->fullname ?? '-' }} |
| Tanggal Reject |
:
@if($data->cancellation_rejected_at)
{{ $data->cancellation_rejected_at->format('d/m/Y H:i') }}
@else
-
@endif
|
@endif
@endif
| No |
Kode |
Item |
UOM |
Forecast |
Qty SO |
Qty TSM |
Saran |
Penyesuaian |
Qty Final |
Alert Forecast |
Status DOI |
Catatan |
@forelse($data->details as $index => $detail)
| {{ $index + 1 }} |
{{ $detail->rawMaterial->code ?? '' }} |
{{ $detail->rawMaterial->name ?? '' }} |
{{ $detail->rawMaterial->uom ?? '' }} |
{{ number_format($detail->forecast_qty, 2) }} |
{{ number_format($detail->so_qty, 2) }} |
{{ number_format($detail->tsm_qty, 2) }} |
{{ number_format($detail->suggested_qty, 2) }} |
{{ number_format($detail->adjusted_qty, 2) }} |
{{ number_format($detail->final_qty, 2) }} |
@php
$forecastQty = $detail->forecast_qty;
$finalQty = $detail->final_qty;
$variance = $forecastQty > 0 ? (($finalQty - $forecastQty) / $forecastQty) * 100 : 0;
if ($finalQty > $forecastQty) {
if ($variance > 20) {
$alertClass = 'danger';
$alertText = 'Over +' . number_format($variance, 1) . '%';
} else {
$alertClass = 'warning';
$alertText = 'Over +' . number_format($variance, 1) . '%';
}
} elseif ($finalQty < $forecastQty) {
if (abs($variance)> 20) {
$alertClass = 'info';
$alertText = 'Under -' . number_format(abs($variance), 1) . '%';
} else {
$alertClass = 'secondary';
$alertText = 'Under -' . number_format(abs($variance), 1) . '%';
}
} else {
$alertClass = 'success';
$alertText = 'Match';
}
@endphp
@if($forecastQty > 0)
{{ $alertText }}
@else
Tidak Ada Forecast
@endif
|
@if($detail->alert_status)
{{ $detail->alert_status }}
@else
-
@endif
|
{{ $detail->notes ?? '-' }} |
@empty
| Tidak ada item ditemukan |
@endforelse
@if(count($data->details) > 0)
| Total Qty Final: |
{{ number_format($data->details->sum('final_qty'), 2) }} |
|
@endif