@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
| # |
Envanter |
Kategori |
Stok |
Detay |
@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
| {{ $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
|
@empty
| Envanter kaydı yok. |
@endforelse
@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