feat: настройки оплаты — способы оплаты + контроль при заселении

- Миграция 064: таблица hotel_payment_methods, поле require_payment_checkin
- Бэкенд: CRUD /api/hotels/:slug/payment-methods, /api/hotels/:slug/payment-settings
- PaymentSettingsPage (/settings/payments): управление способами оплаты
  (название, валюта, тип, активность, сортировка), контроль при заселении (нет/мягкий/жёсткий)
- BookingDetailPanel: динамические методы оплаты вместо захардкоженных
- Кнопка «Заселить»: hard — заблокирована при балансе > 0; soft — предупреждение с выбором

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-06 16:12:38 +03:00
parent 45a8cf7c10
commit f94d4723d5
8 changed files with 632 additions and 24 deletions

View File

@@ -47,6 +47,7 @@ import { TTLockPage } from './pages/TTLockPage'
import { ChecklistSettingsPage } from './pages/ChecklistSettingsPage'
import { MinibarSettingsPage } from './pages/MinibarSettingsPage'
import { MinibarStockPage } from './pages/MinibarStockPage'
import { PaymentSettingsPage } from './pages/PaymentSettingsPage'
import { DepositSettingsPage } from './pages/DepositSettingsPage'
import { DepositHistoryPage } from './pages/DepositHistoryPage'
import { PayDepositPage } from './pages/PayDepositPage'
@@ -106,6 +107,7 @@ export default function App() {
<Route path="/wifi" element={<WiFiPage />} />
<Route path="/ttlock" element={<TTLockPage />} />
<Route path="/settings/checklists" element={<ChecklistSettingsPage />} />
<Route path="/settings/payments" element={<PaymentSettingsPage />} />
<Route path="/settings/minibar" element={<MinibarSettingsPage />} />
<Route path="/settings/minibar/stock" element={<MinibarStockPage />} />
<Route path="/settings/deposit" element={<DepositSettingsPage />} />