# Приём заказов при незавершённой юридической проверке

Отдельная настройка `checkout_legal_override`, по умолчанию выключена. Она находится в административной панели: **Настройки → Режим работы магазина** (`/admin.php?page=settings#store-mode`). Доступ и сохранение проверяются сервером по роли владельца и CSRF.

## Как включить

1. Снять «Предварительный просмотр и тестовые заказы».
2. Включить «Разрешить приём реальных заказов».
3. Включить «Разрешить заказы без завершённой юридической проверки».
4. Нажать «Сохранить все настройки».

Отметка «Реквизиты, документы, доставка, оплата и требования РБ проверены владельцем» имеет самостоятельное значение; включение исключения не отмечает её автоматически и не заполняет недостающие сведения. В админке показывается действующий пропуск и фактическое состояние приёма заказов.

Товар должен быть активным, с положительным остатком и без отметки «букет для примера». Способы получения/оплаты, города, минимальная сумма, цена и остаток проверяются как обычно. Исключение не активирует WEBPAY: для рабочего онлайн-платежа сохраняются настройки платёжного провайдера и отдельная проверка юридической готовности. Для наличных/карты при получении должны быть включены соответствующие способы.

## Реализация

`Store::checkoutAvailable()` — общий расчёт: `!demo_mode && checkout_enabled && (legal_ready || checkout_legal_override)`. `settings()` возвращает вычисленное `checkout_available`; публичный API передаёт только вычисленное состояние, без внутреннего флага исключения. Корзина и открытие оформления используют это состояние, создание заказа повторно проверяет тот же расчёт на сервере.

`legal_ready` и `legal_missing` отражают исходные сведения и не подменяются исключением. Правила индексации сайта и отдельные проверки WEBPAY не меняются. SMS-галочка `rocketsms_legal_override` — независимая настройка, она не управляет заказами.

Сохранение настроек и запись `checkout.legal_override` происходят в одной транзакции. Журнал содержит администратора, время, прежнее/новое значение и состояние юридических сведений. В снимке условий созданного заказа сохраняются значение исключения и юридическое состояние на момент оформления.

Снятие галочки сохраняется даже при незаполненных сведениях. Если юридическая готовность по-прежнему отсутствует, дальнейшие заказы блокируются; ранее принятые заказы не удаляются. Установка новой возможности не включает её автоматически и не изменяет существующие настройки магазина. Миграция схемы не требуется.

Изменённые файлы: `app/Store.php`, `app/OrderService.php`, `public/admin.php`, `public/assets/app.js`, `public/index.php` (версия JS). Автоматические проверки заказов: `tests/backend.php`; они используют временные таблицы соединения, не изменяя рабочие настройки/каталог. SEO проверяется `tests/seo.php`.

Проверено 19.10.2026: **72/72** проверки заказов и **18/18** SEO-проверок, PHP/JS lint. Публичный API на PHP-предпросмотре и Apache возвращает булево `checkout_available` и не раскрывает внутренний флаг исключения. Рабочую настройку при установке не включали; платёжные и SMS-запросы не выполнялись.
