@extends('layouts.app') @section('title', 'Envanter Yönetimi') @section('content')

Envanter Yönetimi

Envanter kayıtları ve kullanıcı zimmet atamaları.

@if(session('success'))
{{ session('success') }}
@endif @if(session('error'))
{{ session('error') }}
@endif @if(session('warning'))
{{ session('warning') }}
@endif @if($errors->any())
@foreach($errors->all() as $error)
{{ $error }}
@endforeach
@endif @if(!$ready)
Envanter tablolari hazir değil. L?tfen migration ?aliştirin.
@else @php $showCreateAssetForm = old('rows') !== null || old('rows_assignee') !== null || old('rows_note') !== null || old('assignee') !== null || old('assignment_note') !== null || old('bulk_rows_text') !== null; $oldRowsRaw = old('rows'); $formRows = []; if (is_array($oldRowsRaw)) { foreach ($oldRowsRaw as $rawRow) { if (!is_array($rawRow)) { continue; } $formRows[] = [ 'name' => trim((string) ($rawRow['name'] ?? '')), 'category' => trim((string) ($rawRow['category'] ?? '')), 'brand' => trim((string) ($rawRow['brand'] ?? '')), 'model' => trim((string) ($rawRow['model'] ?? '')), 'serial_no' => trim((string) ($rawRow['serial_no'] ?? '')), 'depo_no' => trim((string) ($rawRow['depo_no'] ?? '')), 'assignee' => trim((string) ($rawRow['assignee'] ?? '')), 'mikro_evrak_no' => trim((string) ($rawRow['mikro_evrak_no'] ?? '')), 'mikro_stok_isim' => trim((string) ($rawRow['mikro_stok_isim'] ?? '')), 'mikro_stok_kod' => trim((string) ($rawRow['mikro_stok_kod'] ?? '')), 'mikro_cari_kodu' => trim((string) ($rawRow['mikro_cari_kodu'] ?? '')), 'mikro_miktar' => trim((string) ($rawRow['mikro_miktar'] ?? '')), 'mikro_birim_pntr' => trim((string) ($rawRow['mikro_birim_pntr'] ?? '')), 'mikro_tutar' => trim((string) ($rawRow['mikro_tutar'] ?? '')), 'mikro_aciklama' => trim((string) ($rawRow['mikro_aciklama'] ?? '')), 'mikro_depo_no' => trim((string) ($rawRow['mikro_depo_no'] ?? '')), 'mikro_tarih' => trim((string) ($rawRow['mikro_tarih'] ?? '')), 'total_quantity' => (int) ($rawRow['total_quantity'] ?? 1), ]; } } if (!$formRows) { $formRows[] = [ 'name' => trim((string) old('name', '')), 'category' => trim((string) old('category', '')), 'brand' => trim((string) old('brand', '')), 'model' => trim((string) old('model', '')), 'serial_no' => trim((string) old('serial_no', '')), 'depo_no' => trim((string) old('depo_no', old('mikro_depo_no', ''))), 'assignee' => trim((string) old('assignee', '')), 'mikro_evrak_no' => trim((string) old('mikro_evrak_no', '')), 'mikro_stok_isim' => trim((string) old('mikro_stok_isim', '')), 'mikro_stok_kod' => trim((string) old('mikro_stok_kod', '')), 'mikro_cari_kodu' => trim((string) old('mikro_cari_kodu', '')), 'mikro_miktar' => trim((string) old('mikro_miktar', '')), 'mikro_birim_pntr' => trim((string) old('mikro_birim_pntr', '')), 'mikro_tutar' => trim((string) old('mikro_tutar', '')), 'mikro_aciklama' => trim((string) old('mikro_aciklama', '')), 'mikro_depo_no' => trim((string) old('mikro_depo_no', '')), 'mikro_tarih' => trim((string) old('mikro_tarih', '')), 'total_quantity' => (int) old('total_quantity', 1), ]; } $oldRowsAssignee = trim((string) old('rows_assignee', old('assignee', old('bulk_assignee', '')))); $oldRowsNote = trim((string) old('rows_note', old('assignment_note', old('bulk_note', '')))); $nextRowIndex = count($formRows); $assetRowFieldErrors = session('asset_row_field_errors', []); if (!is_array($assetRowFieldErrors)) { $assetRowFieldErrors = []; } $getRowFieldError = static function ($rowIndex, string $field) use ($errors, $assetRowFieldErrors): string { $validationError = trim((string) $errors->first('rows.' . $rowIndex . '.' . $field)); if ($validationError !== '') { return $validationError; } $sessionError = data_get($assetRowFieldErrors, $rowIndex . '.' . $field); return is_string($sessionError) ? trim($sessionError) : ''; }; @endphp
Yeni Envanter Ekle (Coklu Satir)
@csrf
Ortak Mikro ERP Bilgileri
Urun Satirlari
@foreach($formRows as $rowIndex => $row) @php $rowMikroStokError = $getRowFieldError($rowIndex, 'mikro_stok_isim'); $rowNameError = $getRowFieldError($rowIndex, 'name'); $rowTotalQuantityError = $getRowFieldError($rowIndex, 'total_quantity'); $rowAssigneeError = $getRowFieldError($rowIndex, 'assignee'); $rowDepoNo = trim((string) ($row['depo_no'] ?? old('mikro_depo_no', ''))); @endphp
Mikro Satır Bilgileri
@if($rowMikroStokError !== '')
{{ $rowMikroStokError }}
@endif
Yerel Envanter Bilgileri
@if($rowNameError !== '')
{{ $rowNameError }}
@endif
@php $rowCategory = trim((string) ($row['category'] ?? '')); @endphp
@if($rowTotalQuantityError !== '')
{{ $rowTotalQuantityError }}
@endif
@php $rowAssigneeValue = trim((string) ($row['assignee'] ?? '')); @endphp @if($rowAssigneeError !== '')
{{ $rowAssigneeError }}
@endif
@endforeach
Temizle
@forelse($assets as $asset) @php $totalQty = (int) ($asset->total_quantity_effective ?? ($asset->total_quantity ?? 1)); $assignedQty = (int) ($asset->assigned_quantity ?? 0); $availableQty = (int) ($asset->available_quantity ?? max($totalQty - $assignedQty, 0)); $assetMeta = json_decode((string) ($asset->metadata_json ?? ''), true); $hardwareSpecs = []; if (is_array($assetMeta)) { $rawSpecs = $assetMeta['hardware_specs'] ?? []; if (is_string($rawSpecs) && trim($rawSpecs) !== '') { $rawSpecs = [$rawSpecs]; } if (is_array($rawSpecs)) { $hardwareSpecs = array_values(array_unique(array_filter(array_map( static fn($spec) => trim((string) $spec), $rawSpecs ), static fn(string $spec): bool => $spec !== ''))); } } $rowNo = method_exists($assets, 'firstItem') ? ((int) ($assets->firstItem() ?? 1) + $loop->index) : ($loop->index + 1); @endphp @empty @endforelse
# Envanter Kategori Stok Detay
{{ $rowNo }}
{{ $asset->name }}
{{ $asset->brand }} {{ $asset->model }} @if(!empty($hardwareSpecs)) Donanim: {{ \Illuminate\Support\Str::limit(implode(' | ', $hardwareSpecs), 120) }} @endif
{{ $asset->category ?: '-' }}
Depo: {{ trim((string) ($asset->depo_no ?? '')) !== '' ? trim((string) ($asset->depo_no ?? '')) : '-' }}
Toplam: {{ $totalQty }}
Zimmetli: {{ $assignedQty }}
Kalan: {{ $availableQty }}
Detay
Envanter kaydı yok.
@php $summaryItemCount = (int) data_get($summary ?? null, 'item_count', 0); $summaryTotalQty = (int) data_get($summary ?? null, 'total_quantity_sum', 0); $summaryAssignedQty = (int) data_get($summary ?? null, 'assigned_quantity_sum', 0); $summaryAvailableQty = (int) data_get($summary ?? null, 'available_quantity_sum', 0); $hasActiveFilters = trim((string) ($filters['name'] ?? '')) !== '' || trim((string) ($filters['serial_no'] ?? '')) !== '' || trim((string) ($filters['category'] ?? '')) !== '' || trim((string) ($filters['brand'] ?? '')) !== '' || trim((string) ($filters['model'] ?? '')) !== '' || trim((string) ($filters['depo_no'] ?? '')) !== '' || (string) ($filters['depo_breakdown'] ?? '0') === '1' || trim((string) ($filters['stock_status'] ?? '')) !== '' || trim((string) ($filters['assignment_status'] ?? '')) !== ''; @endphp
@endif
@endsection @push('scripts') @endpush