@php $title = 'Карточка брони — Hotel Pineta'; $heading = 'Карточка бронирования'; $subheading = 'Оплата, квитанции, лог синхронизации и уведомления'; @endphp @extends('layouts.admin') @section('content')

{{ $booking->booking_number }}

Создано {{ $booking->created_at?->format('d.m.Y H:i') }}
{{ \App\Models\Booking::statusOptions()[$booking->status] ?? $booking->status }} Новая бронь Документы и квитанции @if ($booking->status !== 'cancelled')
@csrf
@endif
@csrf @method('DELETE')
@csrf @method('PATCH')
Гость
{{ $booking->guest_name }}
Оценка гостя
{{ $booking->guest_rating ?: ($booking->guest?->admin_rating ?: '—') }}
Телефон
{{ $booking->phone ?: '—' }}
E-mail
{{ $booking->email ?: '—' }}
Комната
№ {{ $booking->room?->code }} — {{ $booking->room?->title }}
Источник
{{ \App\Models\Booking::sourceOptions()[$booking->source] ?? $booking->source }}
Вариант
{{ $booking->booking_variant }}
Заезд
{{ $booking->arrival_date?->format('d.m.Y') ?: '—' }}
Выезд
{{ $booking->departure_date?->format('d.m.Y') ?: '—' }}
Ночей
{{ $booking->nights }}
Гостей
{{ $booking->adults }}
Дети до 2 лет
{{ $booking->children_under_2 ? 'Да' : 'Нет' }}
Завтрак
{{ $booking->breakfast ? 'Да' : 'Нет' }}
Сумма
{{ number_format((float) $booking->full_amount, 2, '.', ' ') }} €
Предоплата
{{ number_format((float) $booking->prepayment_amount, 2, '.', ' ') }} €
Остаток
{{ number_format((float) $booking->remaining_amount, 2, '.', ' ') }} €
Ночь
{{ number_format((float) $booking->nightly_amount, 2, '.', ' ') }} €
Срок оплаты
{{ $booking->payment_deadline?->format('d.m.Y H:i') ?: '—' }}
Подтверждена
{{ $booking->confirmed_at?->format('d.m.Y H:i') ?: '—' }}
@if ($booking->status === 'confirmed' && $booking->prepayment_received)

Подтверждение бронирования

Бронь подтверждена администратором. Сообщение можно прочитать, скопировать или скачать.
@endif

Комментарий администратора

{{ $booking->comment_admin ?: 'Пока пусто.' }}
@if ($booking->booking_link)
Открыть ссылку источника
@endif

Оценка гостя

@csrf
Оценку видит только администратор. Она сохраняется в базе данных.

Отметки по оплате

@csrf

Подтверждение оплаты

@csrf
@csrf

Платежи

@if ($booking->payments->isEmpty())
Подтверждённых или отклонённых платежей пока нет.
@else
@foreach ($booking->payments as $payment)
{{ $payment->type }} · {{ number_format((float) $payment->amount, 2, '.', ' ') }} €
{{ $payment->status }} · {{ $payment->paid_at?->format('d.m.Y H:i') ?: 'без даты' }}
{{ $payment->note ?: 'Без комментария' }}
@endforeach
@endif

Документы и квитанции гостя

Этот блок видит только администратор. Гостю документы и квитанции не показываются.
Открыть папку брони
Папка брони
{{ $bookingFolderDisplayPath }}
Дата заезда
{{ $booking->arrival_date?->format('d.m.Y') ?: '—' }}
Комната
{{ $booking->room?->code ?: '—' }}
Папка формируется автоматически по дате заезда и комнате. Если Telegram-бот или администратор положит файлы прямо в эту папку, они появятся ниже в списке после обновления страницы.
@csrf
JPG, PNG, WEBP, PDF или TXT до 10 МБ.
Обновить список файлов
@php $documentTypeLabels = [ 'receipt' => 'Квитанция предоплаты', 'guest_document' => 'Документ жильца', 'recognition_text' => 'Текст распознавания', 'other' => 'Другое', ]; @endphp @if (empty($bookingFolderFiles))
Файлы для этой брони пока не загружены.
@else
@foreach ($bookingFolderFiles as $file)
{{ $documentTypeLabels[$file['type']] ?? $file['type'] }} · {{ $file['original_name'] }}
{{ $file['filename'] }} · {{ $file['size_label'] }} · {{ $file['modified_label'] }} @if (! $file['is_registered']) · файл из папки @endif
@endforeach
@endif

Журнал статусов

@if ($booking->statusLogs->isEmpty())
Журнал появится после изменения статусов.
@else
@foreach ($booking->statusLogs as $log)
{{ \App\Models\Booking::statusOptions()[$log->old_status] ?? ($log->old_status ?: '—') }} → {{ \App\Models\Booking::statusOptions()[$log->new_status] ?? $log->new_status }}
{{ $log->created_at?->format('d.m.Y H:i') }} · {{ $log->changedBy?->name ?: 'Система' }}
{{ $log->note ?: 'Без комментария' }}
@endforeach
@endif

Синхронизация с Google Sheets

@csrf
@if ($booking->syncLogs->isEmpty())
Лог синхронизации ещё пуст.
@else
@foreach ($booking->syncLogs as $sync)
{{ $sync->target }} · {{ $sync->status }}
{{ $sync->synced_at?->format('d.m.Y H:i') ?: '—' }} · попыток: {{ $sync->attempts }}
{{ data_get($sync->response_json, 'message', 'Без ответа') }}
@endforeach
@endif
@push('scripts') @endpush @endsection