@extends('agency.layouts.app') @section('title', 'Kalkış Operasyonu') @section('page_title', $vm['tour_name']) @php $badge = $vm['badge']; $cap = $vm['capacity']; $typeKey = $vm['type_key']; $id = $vm['id']; $isTerminal = in_array($badge['key'], ['cancelled', 'completed']); $isGuaranteed = in_array($badge['key'], ['auto_guaranteed', 'manual_guaranteed']); @endphp @push('styles') @include('agency.operations._styles') @endpush @section('content')
Operasyon Panosu
{{-- Başlık --}}
{{ optional($vm['start'])->format('d') ?? '—' }} {{ optional($vm['start'])->translatedFormat('M Y') }}
{{ $vm['type_label'] }}
{{ optional($vm['start'])->translatedFormat('l, d F Y') ?: 'Tarih atanmadı' }}@if($vm['start_time']) · {{ $vm['start_time'] }}@endif
{{ $vm['tour_name'] }} @if($vm['tour_code']) · {{ $vm['tour_code'] }}@endif @if($vm['end'] && $vm['start'] && $vm['end']->ne($vm['start'])) · Bitiş: {{ $vm['end']->translatedFormat('d F Y') }}@endif
{{ $badge['label'] }}
@if(!$isTerminal)
@if(!$isGuaranteed)
@csrf
@endif
@csrf
@csrf
@endif
{{-- İstatistikler --}}
Doluluk & Finans
%{{ $cap['occupancy'] }}
Doluluk
{{ $cap['used'] }}/{{ $cap['total'] ?: '∞' }}
Koltuk
{{ $vm['pax'] }}
Yolcu
{{ number_format($vm['revenue'], 0, ',', '.') }}₺
Ciro
{{-- Kaynak atama paneli --}} @php $roleMeta = [ 'guide' => ['Rehber', 'fa-user-tie', '#3b82f6'], 'vehicle' => ['Araç', 'fa-bus', '#10b981'], 'captain' => ['Kaptan', 'fa-id-card', '#8b5cf6'], ]; @endphp
Atanan Kaynaklar ({{ $assignments->count() }})
{{-- Atanmış kaynaklar --}} @forelse($assignments as $a) @php $role = $a->effective_role; $rm = $roleMeta[$role] ?? ['Kaynak', 'fa-cube', '#64748b']; $r = $a->resource; @endphp
{{ $r->name ?? 'Kaynak' }} {{ $rm[0] }}
@if($role === 'vehicle' && $r?->vehicle_plate){{ $r->vehicle_plate }}@endif @if($r?->phone) @if($role==='vehicle' && $r?->vehicle_plate) · @endif {{ $r->phone }}@endif
{{ number_format($a->effective_cost, 0, ',', '.') }}₺
{{ $a->cost_type_label }}
@csrf @method('DELETE')
@empty
Henüz kaynak atanmadı.
@endforelse {{-- Maliyet özeti --}} @if($assignments->count()) @php $net = (float) $vm['revenue_won'] - (float) $resourceCost; @endphp
Toplam Kaynak Maliyeti{{ number_format($resourceCost, 0, ',', '.') }}₺
Kesin Ciro{{ number_format($vm['revenue_won'], 0, ',', '.') }}₺
Net (Kesin − Maliyet){{ number_format($net, 0, ',', '.') }}₺
@endif {{-- Atama paneli --}}
@forelse($assignable->flatten(1) as $x) @php $r = $x['resource']; $rm = $roleMeta[$r->type] ?? ['Kaynak', 'fa-cube', '#64748b']; @endphp
@csrf
{{ $r->name }} @if($r->vehicle_plate){{ $r->vehicle_plate }}@endif
@if($x['already_assigned']) Bu kalkışa atanmış @elseif($x['available']) Müsait @else Çakışma var @endif · {{ number_format($x['cost_daily'], 0, ',', '.') }}₺/gün
@empty
Atanabilir aktif kaynak bulunamadı. Önce Kaynak Yönetimi'nden ekleyin.
@endforelse
{{-- Manifesto --}}
Yolcu Listesi ({{ $sales->count() }} rezervasyon)
@forelse($sales as $sale)
{{ mb_strtoupper(mb_substr($sale->customer->first_name ?? 'M', 0, 1)) }}
{{ $sale->customer->first_name ?? '' }} {{ $sale->customer->last_name ?? '' }}
{{ $sale->sale_code }} · {{ $sale->total_participants }} yolcu · {{ $sale->adult_count }}Y {{ $sale->child_count }}Ç {{ $sale->infant_count }}B
{{ $sale->status_label }}
{{ number_format($sale->total_amount, 0, ',', '.') }}₺
@empty
Bu kalkışa bağlı yolcu kaydı yok.
@endforelse
{{-- Kesin kalkış durumu --}}
{{ $badge['label'] }}
@if($op && $op->guaranteed_at)
{{ $op->guaranteed_mode === 'manual' ? 'Manuel' : 'Otomatik' }} · {{ $op->guaranteed_at->translatedFormat('d F Y H:i') }} @if($op->guaranteedBy)
{{ $op->guaranteedBy->full_name ?? $op->guaranteedBy->name }}@endif
@elseif($op && $op->departure_status === 'cancelled')
{{ $op->cancellation_reason ?: 'İptal edildi' }}
@else
Rezervasyon toplanıyor.
@endif
{{-- Hizmet onayları --}} @if($vm['services'])
Hizmet Onayları
@foreach(['accommodation'=>['Konaklama','fa-bed'],'meals'=>['Yemek','fa-utensils'],'transportation'=>['Ulaşım','fa-bus']] as $svc => $info) @php $on = $vm['services'][$svc]; @endphp @endforeach
@endif
@include('agency.operations.partials.contract-modal') @endsection