- MinibarSettingsPage: поле категории → выпадающий список с существующими + «Новая...» - Кнопка «Учёт и остатки» ведёт на /settings/minibar/stock - MinibarStockPage: 5 вкладок — Остатки, Приходы, Списания, Инвентаризация, Отчёт - api.ts: добавлены методы и типы для stock/receipts/writeoffs/inventory/report Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
65 lines
2.2 KiB
SQL
65 lines
2.2 KiB
SQL
CREATE TABLE minibar_stock (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
hotel_id UUID NOT NULL REFERENCES hotels(id) ON DELETE CASCADE,
|
|
item_id UUID NOT NULL REFERENCES minibar_items(id) ON DELETE CASCADE,
|
|
quantity NUMERIC(10,3) NOT NULL DEFAULT 0,
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
UNIQUE(hotel_id, item_id)
|
|
);
|
|
|
|
CREATE TABLE minibar_receipts (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
hotel_id UUID NOT NULL REFERENCES hotels(id) ON DELETE CASCADE,
|
|
supplier TEXT,
|
|
notes TEXT,
|
|
created_by UUID REFERENCES users(id),
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
);
|
|
|
|
CREATE TABLE minibar_receipt_items (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
receipt_id UUID NOT NULL REFERENCES minibar_receipts(id) ON DELETE CASCADE,
|
|
item_id UUID NOT NULL REFERENCES minibar_items(id),
|
|
quantity NUMERIC(10,3) NOT NULL,
|
|
cost_price NUMERIC(10,2)
|
|
);
|
|
|
|
CREATE TABLE minibar_writeoffs (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
hotel_id UUID NOT NULL REFERENCES hotels(id) ON DELETE CASCADE,
|
|
reason TEXT NOT NULL,
|
|
notes TEXT,
|
|
created_by UUID REFERENCES users(id),
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
);
|
|
|
|
CREATE TABLE minibar_writeoff_items (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
writeoff_id UUID NOT NULL REFERENCES minibar_writeoffs(id) ON DELETE CASCADE,
|
|
item_id UUID NOT NULL REFERENCES minibar_items(id),
|
|
quantity NUMERIC(10,3) NOT NULL
|
|
);
|
|
|
|
CREATE TABLE minibar_inventory_checks (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
hotel_id UUID NOT NULL REFERENCES hotels(id) ON DELETE CASCADE,
|
|
checked_at DATE NOT NULL DEFAULT CURRENT_DATE,
|
|
notes TEXT,
|
|
is_complete BOOLEAN NOT NULL DEFAULT false,
|
|
created_by UUID REFERENCES users(id),
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
);
|
|
|
|
CREATE TABLE minibar_inventory_items (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
check_id UUID NOT NULL REFERENCES minibar_inventory_checks(id) ON DELETE CASCADE,
|
|
item_id UUID NOT NULL REFERENCES minibar_items(id),
|
|
expected_qty NUMERIC(10,3) NOT NULL DEFAULT 0,
|
|
actual_qty NUMERIC(10,3) NOT NULL DEFAULT 0
|
|
);
|
|
|
|
CREATE INDEX ON minibar_stock(hotel_id);
|
|
CREATE INDEX ON minibar_receipts(hotel_id);
|
|
CREATE INDEX ON minibar_writeoffs(hotel_id);
|
|
CREATE INDEX ON minibar_inventory_checks(hotel_id);
|