- DB migrations 057-059: checklist_templates/items/completions, minibar_items/consumptions, hotel_deposit_settings, booking_deposits - Backend routes: checklists (templates CRUD + task completions), minibar (items + consumptions), deposit (settings, cash/yookassa hold, release/capture) - YooKassa service for hold/capture/cancel payments - Frontend: ChecklistSettingsPage, MinibarSettingsPage, DepositSettingsPage - HousekeepingPage: task cards now show checklist + minibar panel with checkboxes and quantity buttons - BookingModal: minibar charges summary + deposit management (cash/YooKassa/release) for existing bookings - Sidebar + App.tsx: new routes /settings/checklists, /settings/minibar, /settings/deposit Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
35 lines
1.3 KiB
SQL
35 lines
1.3 KiB
SQL
CREATE TABLE hotel_deposit_settings (
|
|
hotel_id UUID PRIMARY KEY REFERENCES hotels(id) ON DELETE CASCADE,
|
|
is_enabled BOOLEAN NOT NULL DEFAULT false,
|
|
amount NUMERIC(10,2) NOT NULL DEFAULT 5000,
|
|
yookassa_shop_id TEXT,
|
|
yookassa_secret_key TEXT,
|
|
updated_at TIMESTAMPTZ DEFAULT NOW()
|
|
);
|
|
|
|
CREATE TABLE booking_deposits (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
hotel_id UUID NOT NULL REFERENCES hotels(id),
|
|
booking_id UUID NOT NULL REFERENCES bookings(id),
|
|
amount NUMERIC(10,2) NOT NULL,
|
|
status TEXT NOT NULL DEFAULT 'pending',
|
|
-- pending = ожидает оплаты
|
|
-- paid_cash = оплачен наличными
|
|
-- hold_created = холд создан в ЮКасса
|
|
-- hold_confirmed = холд подтверждён (webhook)
|
|
-- captured = частично/полностью списано
|
|
-- refunded = возвращён полностью
|
|
-- cancelled = отменён
|
|
payment_method TEXT, -- 'cash', 'yookassa_hold'
|
|
yookassa_payment_id TEXT,
|
|
yookassa_confirmation_url TEXT,
|
|
captured_amount NUMERIC(10,2),
|
|
retention_reason TEXT,
|
|
guest_email_sent BOOLEAN NOT NULL DEFAULT false,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
paid_at TIMESTAMPTZ,
|
|
released_at TIMESTAMPTZ
|
|
);
|
|
|
|
CREATE INDEX ON booking_deposits(booking_id);
|