@extends('agency.layouts.app') @section('title', 'Ekstra Hizmetler') @section('page_title', 'Ekstra Hizmetler') @php $breadcrumbs = [ ['title' => 'Ana Sayfa', 'url' => route('agency.dashboard')], ['title' => 'Ürünler', 'url' => '#'], ['title' => 'Ekstra Hizmetler', 'url' => ''], ]; // Liste kategoriye göre gruplanır; kategorisizler her zaman en sonda toplanır $grouped = $services->groupBy(fn ($s) => $s->category_id ?? 0); $orderedGroups = collect(); foreach ($categories as $cat) { if ($grouped->has($cat->id)) { $orderedGroups->push(['category' => $cat, 'items' => $grouped[$cat->id]]); } } if ($grouped->has(0)) { $orderedGroups->push(['category' => null, 'items' => $grouped[0]]); } $currencyOptions = $currencies->pluck('code')->all() ?: ['TRY']; $defaultCurrency = $currencies->firstWhere('is_base', true)?->code ?? ($currencyOptions[0] ?? 'TRY'); // Inline düzenleme seçenekleri (quick-view motoru [{value,label}] bekler) $taxOptions = collect([['value' => '', 'label' => 'Vergisiz']]) ->merge($taxRates->map(fn ($t) => [ 'value' => (string) (float) $t->rate, 'label' => $t->name . ' %' . rtrim(rtrim(number_format((float) $t->rate, 2, ',', '.'), '0'), ','), ]))->values(); $unitOptions = collect([['value' => '', 'label' => 'Birimsiz']]) ->merge(collect($units)->map(fn ($l, $v) => ['value' => $v, 'label' => $l])->values())->values(); $currencyInlineOptions = collect($currencyOptions)->map(fn ($c) => ['value' => $c, 'label' => $c])->values(); $ufBase = 'agency.products.extra-services'; @endphp @push('styles') @endpush @section('content')
{{-- ══ Başlık ══ --}}

Ekstra Hizmetler

Tur ve ürünlerden bağımsız hizmet kalemleri — satışa ek olarak eklenir

{{ $stats['total'] }}Hizmet
{{ $stats['active'] }}Aktif
{{ $stats['categories'] }}Kategori
{{-- ══ Kapsam uyarısı ══ Bu modül diğer ürün tipleri gibi görünüyor ama bir satış kanalı değil; karışıklığı önlemek için nerede çıkıp nerede çıkmadığı burada yazılı. --}}
Ekstra hizmetler bir satış kanalı değildir. Buradaki kalemler tek başına satılmaz; mevcut bir satışın üzerine ek kalem olarak eklenir (satış kartı → Ürün & Hizmet KataloğuEkstra Hizmetler sekmesi). Bu nedenle Yeni Satış Oluştur ekranında satış kanalı olarak, satış/fatura filtrelerinde ve satış hedeflerinde görünmezler.
{{-- ══ Kategori rayı ══ --}} {{-- ══ İçerik ══ --}}
{{-- Araç çubuğu --}}
@if($activeCategory !== null)@endif
{{-- Hızlı ekleme --}}
Hızlı Ekle

Vergi seçmezseniz hizmet vergisiz kaydedilir. Açıklama, vergiye dahil mi gibi ayrıntıları ekledikten sonra satıra tıklayarak düzenleyebilirsiniz.

{{-- Liste --}} @forelse($orderedGroups as $group) @php $cat = $group['category']; @endphp
{{ $cat?->name ?? 'Kategorisiz' }} {{ $group['items']->count() }}
@foreach($group['items'] as $service) @php $uf = route("$ufBase.update-field", $service); $showGross = $service->tax_rate !== null && !$service->tax_included; @endphp
#{{ $service->code ?? '—' }}
{{ $service->name }}
{{ $service->unit_label ?? 'Birimsiz' }} @if($service->tax_included && $service->tax_rate !== null) Vergi dahil @endif @if($service->description) {{ $service->description }} @endif
{{ $service->tax_label }}
{{ number_format((float) $service->price, 2, ',', '.') }} {{ $service->currency }} {{-- Satır içi düzenleme sonrası JS ile tazelenir; bu yüzden koşulsuz basılır --}} {{ $showGross ? 'Brüt ' . number_format($service->gross_price, 2, ',', '.') : '' }}
@endforeach
@empty
@if(request('search') || request('status') || $activeCategory !== null)

Bu filtreye uyan hizmet yok

Arama veya kategori filtresini değiştirip yeniden deneyin.

@else

Henüz ekstra hizmet tanımlamadınız

Satışlara ek olarak eklediğiniz küçük hizmet kalemlerini burada tanımlayın. İsterseniz kategorilere ayırın, isterseniz kategorisiz bırakın.

VQ Alan VergisiVize HarcıEkstra Bagaj Öğle YemeğiRehberlik Ücreti
@endif
@endforelse
@endsection @push('scripts') @endpush