@extends('layouts.app', ['class' => 'g-sidenav-show bg-gray-100']) @section('content') @include('layouts.navbars.auth.topnav', ['title' => 'Certificate of Analysis']) {{-- Toast Mengambang di Pojok Kanan Bawah --}}
{{-- Kolom Kiri: Tombol --}}
{{-- Tombol Kembali --}} Kembali {{-- Tombol Simpan / Update --}}
{{-- Kolom Kanan: Session Alert --}}
@if (session('success')) @endif @if (session('error')) @endif
Certificate of Analysis
@if (isset($existingCoa) && $existingCoa) @endif

@include('components.alert')
@csrf
@php $invoiceRaw = $existingCoa->invoice ?? ($coaData->VBELN ?? '-'); $invoiceDisplay = ltrim($invoiceRaw, '0'); @endphp
@php // Ambil nama COA dari existingCoa $selectedCoaName = old('coa_type', $existingCoa->coa_type ?? 'Reguler COA'); // Temukan ID yang sesuai dengan nama tersebut $selectedCoaId = collect($coaTypes)->search($selectedCoaName) ?? 1; @endphp
{{-- Custom Searchable Dropdown --}}
{{-- Display Button (mimics form-select) --}}
{{ $selectedCoaName }}
{{-- Hidden native select to preserve all existing JS logic --}} {{-- Dropdown Panel --}}
{{-- End Custom Searchable Dropdown --}}
@if (isset($existingCoa) && $existingCoa) @endif
@if (!empty($additionalDynamicFields)) @foreach ($additionalDynamicFields as $field)
@endforeach @endif
COA Item Data
{{-- Tombol baru: Jalankan Jumbo Prop Test --}} @if (isset($existingCoa) && $existingCoa)
@else @endif

{{-- Badge Agreement Rata Kanan, hanya jika ada --}} @php $selectedGedungBadge = old('selected_gedung', $selectedGedung ?? request('selected_gedung')); $sourceByGedungBadge = collect($sourceByGedung ?? []); if (!$selectedGedungBadge) { $selectedGedungBadge = collect($specData ?? [])->keys()->first(); } $initialSourceBadge = $sourceByGedungBadge[$selectedGedungBadge] ?? 'sap'; @endphp
Agreement Avg Properties Agreement Average Properties{{ !empty($standardWarnaName) ? ' (' . $standardWarnaName . ')' : '' }} SAP
@foreach ($specData as $gedung => $specGedung) @foreach ($specGedung['MICs'] as $micName => $mic) @php $micName = trim($mic['MIC Name'] ?? ''); $unit = trim($mic['Unit'] ?? ''); $lookupKey = strtolower($micName) . '|' . strtolower($unit); $existingDetail = $existingCoaDetails[$lookupKey] ?? null; if (!function_exists('numericValueForCoaFormat')) { function numericValueForCoaFormat($value) { if ($value === null || $value === '') { return 0.0; } if (is_numeric($value)) { return (float) $value; } $normalized = trim((string) $value); if (str_contains($normalized, ',') && !str_contains($normalized, '.')) { $normalized = str_replace(',', '.', $normalized); } else { $normalized = str_replace(',', '', $normalized); } return is_numeric($normalized) ? (float) $normalized : 0.0; } } // ✅ Target Value, Upper Limit, Lower Limit: dari v_mst_standard_properties → SAP $targetValue = number_format(numericValueForCoaFormat($mic['Target Value'] ?? 0), 2, '.', ''); $upperLimit = number_format(numericValueForCoaFormat($mic['Upper Limit'] ?? 0), 2, '.', ''); $lowerLimit = number_format(numericValueForCoaFormat($mic['Lower Limit'] ?? 0), 2, '.', ''); // ✅ Agreement logic: data New Target/Upper/Lower diambil dari mst_Agreement (tertinggi) -> Agreement Avg Properties (fallback) $normalizedKey = $mic['Normalized Key'] ?? null; $customerAgreementItem = $customerAgreement[$normalizedKey] ?? null; $isFromAgreement = false; // New Target/Upper/Lower: existingDetail → Agreement → fallback ke base // Target/Upper/Lower $agreementTarget = $mic['Agreement Target'] ?? null; $agreementUpper = $mic['Agreement Upper'] ?? null; $agreementLower = $mic['Agreement Lower'] ?? null; $agreementUnit = $mic['Agreement Unit'] ?? null; if ($agreementTarget !== null || $agreementUpper !== null || $agreementLower !== null) { $isFromAgreement = true; } $newTarget = $existingDetail->new_target_value ?? ($agreementTarget !== null && trim((string)$agreementTarget) !== '' ? $agreementTarget : $targetValue); $newUpper = $existingDetail->new_upper_limit ?? ($agreementUpper !== null && trim((string)$agreementUpper) !== '' ? $agreementUpper : $upperLimit); $newLower = $existingDetail->new_lower_limit ?? ($agreementLower !== null && trim((string)$agreementLower) !== '' ? $agreementLower : $lowerLimit); $avgMittelwert = number_format(numericValueForCoaFormat($mic['avg_mittelwert'] ?? 0), 2, '.', ''); $newValue = $existingDetail->new_value ?? $avgMittelwert; $indikator = $existingDetail->indikator ?? ''; $method = $existingDetail->method ?? ''; $urut = $existingDetail->urut ?? 9999; $newUom = $existingDetail->new_uom ?? ($agreementUnit ?? $unit); $formattedTarget = $newTarget; $formattedUpper = $newUpper; $formattedLower = $newLower; $formattedValue = $newValue; if (!function_exists('formatWithDbPrecision')) { function formatWithDbPrecision( $value, $lookupKey, $precisionMap, $default = 1, ) { $key = strtolower(trim($lookupKey)); $decimalType = $precisionMap[$key]['decimal'] ?? $default; switch ($decimalType) { case 0: return number_format((float) $value, 0, '.', ''); case 1: return number_format((float) $value, 1, '.', ''); case 2: return number_format((float) $value, 2, '.', ''); case 3: return number_format((float) $value, 3, '.', ''); default: return number_format((float) $value, $default, '.', ''); } } } // Format hanya jika numerik $formattedTarget = is_numeric($formattedTarget) ? formatWithDbPrecision( $formattedTarget, $lookupKey, $micPrecisionMap, ) : $formattedTarget; $formattedUpper = is_numeric($formattedUpper) ? formatWithDbPrecision( $formattedUpper, $lookupKey, $micPrecisionMap, ) : $formattedUpper; $formattedLower = is_numeric($formattedLower) ? formatWithDbPrecision( $formattedLower, $lookupKey, $micPrecisionMap, ) : $formattedLower; $formattedValue = is_numeric($formattedValue) ? formatWithDbPrecision( $formattedValue, $lookupKey, $micPrecisionMap, ) : $formattedValue; @endphp @endforeach @endforeach
V MIC Name Unit Target Value Upper Limit Lower Limit Original Value New Target Value New Upper Limit New Lower Limit New Value Ind Method New UOM
@if (isset($existingCoa) && $existingCoa) @endif
{{ $micName }} {{ $unit }} {{ formatWithDbPrecision($targetValue, $lookupKey, $micPrecisionMap) }} {{ formatWithDbPrecision($upperLimit, $lookupKey, $micPrecisionMap) }} {{ formatWithDbPrecision($lowerLimit, $lookupKey, $micPrecisionMap) }} {{ formatWithDbPrecision($mic['avg_mittelwert'] ?? 0, $lookupKey, $micPrecisionMap) }} Sebelumnya: {{ formatWithDbPrecision($newTarget, $lookupKey, $micPrecisionMap) }} Sebelumnya: {{ formatWithDbPrecision($newUpper, $lookupKey, $micPrecisionMap) }} Sebelumnya: {{ formatWithDbPrecision($newLower, $lookupKey, $micPrecisionMap) }} Sebelumnya: {{ $formattedValue }}
{{-- Modal: Jumbo Prop Test --}} @if ($jsmenu == '1') @if (view()->exists("js.{$dmenu}")) @push('addjs') {{-- file js in folder (resources/views/js) --}} @include('js.' . $dmenu); @endpush @else @push('addjs') @endpush @endif @endif @endsection @push('js') @endpush @push('css') @endpush