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:
23
backend/migrations/064_payment_methods.sql
Normal file
23
backend/migrations/064_payment_methods.sql
Normal file
@@ -0,0 +1,23 @@
|
||||
-- Hotel payment methods (configurable per hotel)
|
||||
CREATE TABLE hotel_payment_methods (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
hotel_id UUID NOT NULL REFERENCES hotels(id) ON DELETE CASCADE,
|
||||
name TEXT NOT NULL,
|
||||
currency TEXT NOT NULL DEFAULT 'RUB',
|
||||
type TEXT NOT NULL DEFAULT 'cash', -- cash, card, transfer, other
|
||||
is_active BOOLEAN NOT NULL DEFAULT true,
|
||||
sort_order INTEGER NOT NULL DEFAULT 0
|
||||
);
|
||||
|
||||
-- Require payment on check-in: none | soft | hard
|
||||
ALTER TABLE hotels ADD COLUMN IF NOT EXISTS require_payment_checkin TEXT NOT NULL DEFAULT 'none';
|
||||
|
||||
-- Seed default payment methods for existing hotels
|
||||
INSERT INTO hotel_payment_methods (hotel_id, name, currency, type, sort_order)
|
||||
SELECT id, 'Наличные', 'RUB', 'cash', 0 FROM hotels;
|
||||
|
||||
INSERT INTO hotel_payment_methods (hotel_id, name, currency, type, sort_order)
|
||||
SELECT id, 'Банковская карта', 'RUB', 'card', 1 FROM hotels;
|
||||
|
||||
INSERT INTO hotel_payment_methods (hotel_id, name, currency, type, sort_order)
|
||||
SELECT id, 'Перевод (СБП)', 'RUB', 'transfer', 2 FROM hotels;
|
||||
Reference in New Issue
Block a user