@extends('layouts.app', ['class' => 'g-sidenav-show bg-gray-100']) {{-- section content --}} @section('content') @include('layouts.navbars.auth.topnav', ['title' => ''])
@if ($table_header_l->isNotEmpty() || $table_header_r->isNotEmpty())
@csrf @method('PUT') @if ($errors->any()) @endif
{{-- REJECTION NOTE: Tiru 100% style ongsmp (no gap, structure same) --}} @if (isset($rejected_info) && $rejected_info && !in_array($rejected_info['level'], [4, 5]))
{{ $rejected_info['level_label'] ?? $rejected_info['approver'] }} @if (isset($rejected_info['date'])) {{ \Carbon\Carbon::parse($rejected_info['date'])->format('d/m/Y H:i') }} @endif

{!! nl2br(e(trim($rejected_info['note']))) !!}

@endif

View {{ $title_menu }}


{{-- LEFT COLUMN --}} @if ($table_header_l->isNotEmpty())
@foreach ($table_header_l as $header) @php $string = $header->field; @endphp
{{-- Gedung Sample: Wrap form-group dengan id untuk hide/show --}} @if ($header->field == 'gedung_sample')
@else
@endif @if ($header->type != 'hidden') @endif {{-- Approval field (joinmultiple) - HARUS dicek SEBELUM primary key field --}} @if ( $header->type == 'joinmultiple' || ($header->field == 'id_sample' && strpos(strtolower($header->alias), 'approval') !== false)) @php // DEBUG: Log untuk debugging approval field \Log::info( 'LstsmpController.show.view: Rendering approval field (PRIORITY CHECK)', [ 'field' => $header->field, 'alias' => $header->alias, 'type' => $header->type, 'can_edit_authorized' => isset($can_edit_authorized) && $can_edit_authorized ? 'yes' : 'no', 'can_edit' => isset($can_edit) && $can_edit ? 'yes' : 'no', 'approval_text' => $approval_text ?? 'N/A', 'approval_text_exists' => isset($approval_text) ? 'yes' : 'no', 'approval_data_exists' => isset($approval_data) ? 'yes' : 'no', 'list_approval_1_count' => isset( $list_approval_1, ) ? $list_approval_1->count() : 0, 'list_approval_2_count' => isset( $list_approval_2, ) ? $list_approval_2->count() : 0, 'list_approval_3_count' => isset( $list_approval_3, ) ? $list_approval_3->count() : 0, ], ); @endphp @if (isset($can_edit_authorized) && $can_edit_authorized === true && isset($can_edit) && $can_edit === true) {{-- EDIT MODE: Show dropdowns untuk 3 level dari mst_approval --}} @php $approvalLevel1 = isset($approval_data[1]) && isset($approval_data[1]['id_approval']) ? $approval_data[1]['id_approval'] : ''; $approvalLevel2 = isset($approval_data[2]) && isset($approval_data[2]['id_approval']) ? $approval_data[2]['id_approval'] : ''; $approvalLevel3 = isset($approval_data[3]) && isset($approval_data[3]['id_approval']) ? $approval_data[3]['id_approval'] : ''; @endphp
Approval Level 1
Approval Level 2
Approval Level 3
@else {{-- VIEW MODE: Show approval text dari controller --}} @php $displayApprovalText = isset($approval_text) && !empty($approval_text) ? $approval_text : '-'; @endphp @endif {{-- Primary key field (readonly) - SKIP jika type joinmultiple dan alias contains approval --}} @elseif ( $header->field == $table_primary->field && !($header->type == 'joinmultiple' && strpos(strtolower($header->alias), 'approval') !== false)) {{-- Status field (LOCKED - readonly dan tetap Entry) --}} @elseif ($header->field == 'status') @elseif ($header->field == 'sample_date') @php $dateValue = $list->$string ?? ''; if (!empty($dateValue)) { try { // Format dengan jam: d/m/Y H:i (contoh: 17/12/2025 14:30) $dateValue = \Carbon\Carbon::parse( $dateValue, )->format('d/m/Y H:i'); } catch (\Exception $e) { // Jika parsing gagal, tampilkan as-is $dateValue = $list->$string ?? ''; } } else { $dateValue = '-'; } @endphp {{-- ID Salesman (enum/dropdown dari mst_approval) - FIXED: Pastikan menggunakan field yang benar --}} @elseif ($header->field == 'id_salesman' || $header->field == 'nama_sales') @if ($header->field == 'id_salesman') @endif {{-- ID Customer (enum/dropdown dari mst_customer) - FIXED: Pastikan menggunakan field yang benar --}} @elseif ($header->field == 'id_customer' || $header->field == 'customer') @if ($header->field == 'id_customer') @endif {{-- Project Field (Manual Injection) --}}
{{-- End User Field (Manual Injection) --}}
{{-- Enum fields (dropdown dari query) --}} @elseif ($header->type == 'enum') {{-- Date fields --}} @elseif ($header->type == 'date') @php $dateValue = $list->$string ?? ''; if (!empty($dateValue)) { try { $dateValue = \Carbon\Carbon::parse( $dateValue, )->format('Y-m-d'); } catch (\Exception $e) { } } @endphp {{-- DateTime fields --}} @elseif ($header->type == 'datetime') @php $dateValue = $list->$string ?? ''; if (!empty($dateValue)) { try { $dateValue = \Carbon\Carbon::parse( $dateValue, )->format('Y-m-d\TH:i'); } catch (\Exception $e) { } } @endphp {{-- Attn. To field (READ-ONLY - auto-filled from customer) --}} @elseif ($header->field == 'attn_to') {{-- Ship To field (free text) --}} @elseif ($header->field == 'ship_to') {{-- Text/textarea fields --}} @elseif ($header->type == 'text') {{-- String/char fields (default) - SKIP jika type joinmultiple dan alias contains approval --}} @elseif (!($header->type == 'joinmultiple' && strpos(strtolower($header->alias), 'approval') !== false)) @else {{-- Fallback untuk joinmultiple approval yang tidak ter-handle --}} @php $displayApprovalText = isset($approval_text) && !empty($approval_text) ? $approval_text : $list->$string ?? '-'; \Log::warning( 'LstsmpController.show.view: Approval field fallback', [ 'field' => $header->field, 'alias' => $header->alias, 'type' => $header->type, 'displayApprovalText' => $displayApprovalText, 'approval_text' => $approval_text ?? 'NOT SET', ], ); @endphp @endif @if (!empty($header->note))

{{ '*) ' . $header->note }}

@endif @error($header->field)

{{ $message }}

@enderror
@endforeach
@endif {{-- RIGHT COLUMN --}} @if ($table_header_r->isNotEmpty())
@foreach ($table_header_r as $header) @php $string = $header->field; @endphp
{{-- Gedung Sample: Wrap form-group dengan id untuk hide/show --}} @if ($header->field == 'gedung_sample')
@else
@endif @if ($header->type != 'hidden') @endif {{-- Approval field (joinmultiple) - HARUS dicek SEBELUM primary key field --}} @if ( $header->type == 'joinmultiple' || ($header->field == 'id_sample' && strpos(strtolower($header->alias), 'approval') !== false)) @php // DEBUG: Log untuk debugging approval field \Log::info( 'LstsmpController.show.view: Rendering approval field (PRIORITY CHECK)', [ 'field' => $header->field, 'alias' => $header->alias, 'type' => $header->type, 'can_edit_authorized' => isset($can_edit_authorized) && $can_edit_authorized ? 'yes' : 'no', 'can_edit' => isset($can_edit) && $can_edit ? 'yes' : 'no', 'approval_text' => $approval_text ?? 'N/A', 'approval_text_exists' => isset($approval_text) ? 'yes' : 'no', 'approval_data_exists' => isset($approval_data) ? 'yes' : 'no', 'list_approval_1_count' => isset($list_approval_1) ? $list_approval_1->count() : 0, 'list_approval_2_count' => isset($list_approval_2) ? $list_approval_2->count() : 0, 'list_approval_3_count' => isset($list_approval_3) ? $list_approval_3->count() : 0, ], ); @endphp @if (isset($can_edit_authorized) && $can_edit_authorized === true && isset($can_edit) && $can_edit === true) {{-- EDIT MODE: Show dropdowns untuk 3 level dari mst_approval --}} @php $approvalLevel1 = isset($approval_data[1]) && isset($approval_data[1]['id_approval']) ? $approval_data[1]['id_approval'] : ''; $approvalLevel2 = isset($approval_data[2]) && isset($approval_data[2]['id_approval']) ? $approval_data[2]['id_approval'] : ''; $approvalLevel3 = isset($approval_data[3]) && isset($approval_data[3]['id_approval']) ? $approval_data[3]['id_approval'] : ''; @endphp
Approval Level 1
Approval Level 2
Approval Level 3
@else {{-- VIEW MODE: Show approval text dari controller --}} @php // DEBUG: Pastikan approval_text ter-set $displayApprovalText = isset($approval_text) && !empty($approval_text) ? $approval_text : '-'; \Log::info( 'LstsmpController.show.view: Displaying approval text (VIEW MODE)', [ 'approval_text' => $displayApprovalText, 'approval_text_raw' => $approval_text ?? 'NOT SET', 'field' => $header->field, 'alias' => $header->alias, ], ); @endphp @endif {{-- Primary key field (readonly) - SKIP jika type joinmultiple dan alias contains approval --}} @elseif ( $header->field == $table_primary->field && !($header->type == 'joinmultiple' && strpos(strtolower($header->alias), 'approval') !== false)) {{-- Status field (LOCKED - readonly dan tetap Entry) --}} @elseif ($header->field == 'status') {{-- Sample Date field (LOCKED - readonly, otomatis update saat simpan dengan jam) --}} @elseif ($header->field == 'sample_date') @php $dateValue = $list->$string ?? ''; if (!empty($dateValue)) { try { // Format dengan jam: d/m/Y H:i (contoh: 17/12/2025 14:30) $dateValue = \Carbon\Carbon::parse($dateValue)->format('d/m/Y H:i'); } catch (\Exception $e) { // Jika parsing gagal, tampilkan as-is $dateValue = $list->$string ?? ''; } } @endphp {{-- ID Salesman (enum/dropdown dari mst_approval) - FIXED: Pastikan menggunakan field yang benar --}} @elseif ($header->field == 'id_salesman' || $header->field == 'nama_sales') @if ($header->field == 'id_salesman') @endif {{-- ID Customer (enum/dropdown dari mst_customer) - FIXED: Pastikan menggunakan field yang benar --}} @elseif ($header->field == 'id_customer' || $header->field == 'customer') @if ($header->field == 'id_customer') @endif {{-- Project Field (Manual Injection) --}}
{{-- End User Field (Manual Injection) --}}
{{-- Enum fields (dropdown dari query) --}} @elseif ($header->type == 'enum') {{-- Date fields --}} @elseif ($header->type == 'date') @php $dateValue = $list->$string ?? ''; if (!empty($dateValue)) { try { $dateValue = \Carbon\Carbon::parse($dateValue)->format('Y-m-d'); } catch (\Exception $e) { } } @endphp {{-- DateTime fields --}} @elseif ($header->type == 'datetime') @php $dateValue = $list->$string ?? ''; if (!empty($dateValue)) { try { $dateValue = \Carbon\Carbon::parse($dateValue)->format('Y-m-d\TH:i'); } catch (\Exception $e) { } } @endphp {{-- Attn. To field (READ-ONLY - auto-filled from customer) --}} @elseif ($header->field == 'attn_to') {{-- Ship To field (free text) --}} @elseif ($header->field == 'ship_to') {{-- Text/textarea fields --}} @elseif ($header->type == 'text') {{-- String/char fields (default) - SKIP jika type joinmultiple dan alias contains approval --}} @elseif (!($header->type == 'joinmultiple' && strpos(strtolower($header->alias), 'approval') !== false)) @else {{-- Fallback untuk joinmultiple approval yang tidak ter-handle --}} @php $displayApprovalText = isset($approval_text) && !empty($approval_text) ? $approval_text : $list->$string ?? '-'; \Log::warning('LstsmpController.show.view: Approval field fallback', [ 'field' => $header->field, 'alias' => $header->alias, 'type' => $header->type, 'displayApprovalText' => $displayApprovalText, 'approval_text' => $approval_text ?? 'NOT SET', ]); @endphp @endif @if (!empty($header->note))

{{ '*) ' . $header->note }}

@endif @error($header->field)

{{ $message }}

@enderror
@endforeach
@endif
{{-- Detail Items Section dengan dynamic table --}}
Detail Items
@if (isset($can_edit_authorized) && $can_edit_authorized === true && isset($can_edit) && $can_edit === true) @endif
@if (isset($detail_items) && $detail_items->count() > 0) @foreach ($detail_items as $index => $item)
Item {{ $index + 1 }} @if (isset($can_edit_authorized) && $can_edit_authorized === true && isset($can_edit) && $can_edit === true) @endif
{{-- Row 1: Primary Info (Application, Item/Detail, Color) --}}
@if (isset($can_edit_authorized) && $can_edit_authorized === true && isset($can_edit) && $can_edit === true) @else

{{ $item->aplikasi_name ?? $item->aplikasi }}

@endif
@if (isset($can_edit_authorized) && $can_edit_authorized === true && isset($can_edit) && $can_edit === true) @else

{{ $item->detail_name ?? $item->id_detail }}

@endif
@if (isset($can_edit_authorized) && $can_edit_authorized === true && isset($can_edit) && $can_edit === true) @else

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

@endif
{{-- Row 2: Specs & Qty (GSM, Dimensions, Qty, UOM) --}}
@if (isset($can_edit_authorized) && $can_edit_authorized === true && isset($can_edit) && $can_edit === true) @else

{{ $item->size_gsm ?? '0' }}

@endif
@if (isset($can_edit_authorized) && $can_edit_authorized === true && isset($can_edit) && $can_edit === true) @else

{{ $item->size_length ?? '0' }}

@endif
@if (isset($can_edit_authorized) && $can_edit_authorized === true && isset($can_edit) && $can_edit === true) @else

{{ $item->size_width ?? '0' }}

@endif
@if (isset($can_edit_authorized) && $can_edit_authorized === true && isset($can_edit) && $can_edit === true) @else

{{ $item->qty ?? '0' }}

@endif
@if (isset($can_edit_authorized) && $can_edit_authorized === true && isset($can_edit) && $can_edit === true) @else

{{ strtoupper($item->uom ?? '-') }}

@endif
{{-- Row 3: Description --}}
@if (isset($can_edit_authorized) && $can_edit_authorized === true && isset($can_edit) && $can_edit === true) @else

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

@endif
{{-- QC Rejection Details (Only for Rejected Samples) --}} @if ( !empty($item->reason_qc) || !empty($item->timeline_qc) || !empty($item->quality_qc) || !empty($item->alternative_qc))
Rekomendasi & Catatan QC

{{ $item->reason_qc ?: '-' }}

{{ $item->timeline_qc ? \Carbon\Carbon::parse($item->timeline_qc)->format('d/m/Y') : '-' }}

{{ $item->quality_qc ?: '-' }}

{{ $item->alternative_qc ?: '-' }}

@endif
@endforeach @endif
@endif
{{-- Alert message --}} @include('components.alert') @if (isset($jsmenu) && $jsmenu == '1') @if (view()->exists("js.{$dmenu}")) @push('addjs') @include('js.' . $dmenu); @endpush @endif @endif @endsection @push('css') @endpush @push('js') @endpush