29 lines
2.0 KiB
SQL
Executable File
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 'Записи платежного календаря: расходы и поступления (по счету, без счета, наличка)';
|