@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
Yeni Hizmet
{{-- ══ 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ğu → Ekstra 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 --}}
{{-- Hızlı ekleme --}}
{{-- 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
category_id)>Kategorisiz
@foreach($categories as $c)
category_id === $c->id)>{{ $c->name }}
@endforeach
{{ $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 Vergisi Vize Harcı Ekstra Bagaj
Öğle Yemeği Rehberlik Ücreti
@endif
@endforelse
@endsection
@push('scripts')
@endpush