Files
mkd/backend/migrations/create_payment_calendar_entries.sql
2026-02-04 00:17:04 +05:00

29 lines
2.0 KiB
SQL
Executable File

-- Записи платежного календаря (расходы и поступления, по счету / без счета / наличка)
CREATE TABLE IF NOT EXISTS payment_calendar_entries (
id BIGSERIAL PRIMARY KEY,
direction VARCHAR(20) NOT NULL CHECK (direction IN ('outgoing', 'incoming')),
type VARCHAR(20) NOT NULL CHECK (type IN ('invoice', 'manual', 'cash')),
payment_invoice_id BIGINT REFERENCES payment_invoices(id) ON DELETE SET NULL,
category TEXT NOT NULL DEFAULT '',
description TEXT NOT NULL DEFAULT '',
amount NUMERIC(15, 2) NOT NULL,
scheduled_date DATE NOT NULL,
payment_date DATE,
probability VARCHAR(20) NOT NULL DEFAULT 'confirmed' CHECK (probability IN ('confirmed', 'high', 'medium', 'low')),
currency VARCHAR(10) NOT NULL DEFAULT 'RUB',
is_cash BOOLEAN NOT NULL DEFAULT FALSE,
contractor_name TEXT NOT NULL DEFAULT '',
notes TEXT,
created_by TEXT NOT NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE INDEX IF NOT EXISTS idx_payment_calendar_entries_direction ON payment_calendar_entries(direction);
CREATE INDEX IF NOT EXISTS idx_payment_calendar_entries_type ON payment_calendar_entries(type);
CREATE INDEX IF NOT EXISTS idx_payment_calendar_entries_scheduled_date ON payment_calendar_entries(scheduled_date);
CREATE INDEX IF NOT EXISTS idx_payment_calendar_entries_payment_date ON payment_calendar_entries(payment_date);
CREATE INDEX IF NOT EXISTS idx_payment_calendar_entries_payment_invoice_id ON payment_calendar_entries(payment_invoice_id);
COMMENT ON TABLE payment_calendar_entries IS 'Записи платежного календаря: расходы и поступления (по счету, без счета, наличка)';