@php
$title = 'Карточка брони — Hotel Pineta';
$heading = 'Карточка бронирования';
$subheading = 'Оплата, квитанции, лог синхронизации и уведомления';
@endphp
@extends('layouts.admin')
@section('content')
Подтверждение бронирования
Бронь подтверждена администратором. Сообщение можно прочитать, скопировать или скачать.
Скопировать подтверждение
Формат
TXT
JPG
PDF
Скачать подтверждение
@endif
Комментарий администратора
{{ $booking->comment_admin ?: 'Пока пусто.' }}
@if ($booking->booking_link)
@endif
Подтверждение оплаты
@csrf
Причина отклонения квитанции
{{ old('reject_note') }}
Отклонить платёж
Платежи
@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
Документы и квитанции гостя
Этот блок видит только администратор. Гостю документы и квитанции не показываются.
Открыть папку брони
Папка формируется автоматически по дате заезда и комнате. Если Telegram-бот или администратор положит файлы прямо в эту папку, они появятся ниже в списке после обновления страницы.
@csrf
@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