@php $settings = app(\Korzilla\Core\Settings\SettingsRepository::class); $currency = $settings->string('catalog.currency_suffix', '₽'); $value = fn (string $key) => old($key, $old[$key] ?? ''); @endphp

Оформление заказа

@if (session('error'))

{{ session('error') }}

@endif
@foreach ($cart['items'] as $line)
{{ $line['product']->name }} {{ rtrim(rtrim(number_format($line['item']->quantity, 3, ',', ' '), '0'), ',') }} × {{ number_format((float) $line['price'], 2, ',', ' ') }} {{ $currency }}
@endforeach @php($defaultDelivery = $deliveries->firstWhere('is_default') ?? $deliveries->first()) @php($defaultCost = $defaultDelivery === null ? 0 : ($deliveryCosts[$defaultDelivery->key_name] ?? 0))
Товары {{ number_format($cart['total'], 2, ',', ' ') }} {{ $currency }}
Доставка {{ $defaultCost > 0 ? number_format($defaultCost, 2, ',', ' ').' '.$currency : 'бесплатно' }}
Итого {{-- Итог пересчитывается на клиенте при смене способа, но решает всё равно сервер: он считает доставку сам и никогда не берёт сумму из формы. --}} {{ number_format($cart['total'] + $defaultCost, 2, ',', ' ') }} {{ $currency }}
@csrf @if ($awaiting) {{-- Введённые данные едут скрытыми полями, а не в сессии: шаг подтверждения не должен зависеть от того, та ли это вкладка. --}} @foreach (['customer_name', 'customer_phone', 'customer_email', 'delivery_key', 'delivery_address', 'comment', 'payment_key'] as $field) @endforeach {{-- Свои поля переживают шаг подтверждения так же, как системные: иначе после звонка «этаж и подъезд» пришлось бы вводить заново, а покупатель уже считает заказ оформленным. --}} @foreach (($old['extra'] ?? []) as $key => $extra) @endforeach

Звоним на {{ $masked }}. Отвечать не нужно — введите последние цифры номера, с которого идёт звонок.

@error('code')

{{ $message }}

@enderror @else @error('customer_name')

{{ $message }}

@enderror @error('customer_phone')

{{ $message }}

@enderror {{-- Способ показывается ВСЕГДА, даже когда он один. Скрытое поле без единой строки на странице означало для покупателя, что сайт не сказал ему ни как повезёт, ни сколько это стоит. --}} @if (count($deliveries) > 0)
Доставка @foreach ($deliveries as $delivery) @php($cost = $deliveryCosts[$delivery->key_name] ?? 0) @endforeach
@endif @error('delivery_address')

{{ $message }}

@enderror {{-- Свои поля сайта: «этаж и подъезд», «удобное время», «ИНН». Набор задаёт владелец в админке — код о них не знает. --}} @foreach ($fields as $field) @php($name = 'extra['.$field->key_name.']') @php($id = 'kz-checkout-'.$field->key_name) @php($own = old('extra.'.$field->key_name, $old['extra'][$field->key_name] ?? '')) @if ($field->type === 'checkbox') @else @if ($field->type === 'text') @elseif ($field->type === 'select') @else is_required)> @endif @endif @error('extra.'.$field->key_name)

{{ $message }}

@enderror @endforeach @if (count($methods) > 0)
Оплата @foreach ($methods as $method) @endforeach
@endif @if ($confirmRequired) @endif @endif
@unless ($awaiting) {{-- Пересчёт итога при смене способа доставки. Без скрипта итог показывает способ по умолчанию — и это не ошибка: сумму всё равно считает сервер, он никогда не берёт её из формы. --}} @endunless