Initial commit MKD fixes
This commit is contained in:
90
backend/migrate_pre_trial_work.sql
Executable file
90
backend/migrate_pre_trial_work.sql
Executable file
@@ -0,0 +1,90 @@
|
||||
-- ========= ЮРИДИЧЕСКИЙ ОТДЕЛ: ДОСУДЕБНАЯ РАБОТА =========
|
||||
-- Миграция для создания таблиц досудебной работы с должниками
|
||||
|
||||
-- Должники в юридическом отделе
|
||||
CREATE TABLE IF NOT EXISTS legal_debtors (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
building_id VARCHAR(50) REFERENCES buildings(id) ON DELETE SET NULL,
|
||||
apartment TEXT NOT NULL,
|
||||
debtor_name TEXT,
|
||||
phone TEXT,
|
||||
email TEXT,
|
||||
address TEXT NOT NULL,
|
||||
debt_amount NUMERIC(10, 2) NOT NULL,
|
||||
debt_months INTEGER NOT NULL,
|
||||
status VARCHAR(20) NOT NULL DEFAULT 'new' CHECK (status IN ('new', 'in_progress', 'promised_payment', 'transferred_to_court', 'resolved')),
|
||||
transferred_from_finance BOOLEAN DEFAULT FALSE,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_legal_debtors_building ON legal_debtors(building_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_legal_debtors_status ON legal_debtors(status);
|
||||
CREATE INDEX IF NOT EXISTS idx_legal_debtors_apartment ON legal_debtors(apartment);
|
||||
CREATE INDEX IF NOT EXISTS idx_legal_debtors_created ON legal_debtors(created_at DESC);
|
||||
|
||||
-- Досудебная работа
|
||||
CREATE TABLE IF NOT EXISTS pre_trial_work (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
debtor_id BIGINT NOT NULL REFERENCES legal_debtors(id) ON DELETE CASCADE,
|
||||
assigned_to TEXT, -- Кто ведет дело
|
||||
status VARCHAR(20) NOT NULL DEFAULT 'new' CHECK (status IN ('new', 'in_progress', 'promised_payment', 'transferred_to_court', 'resolved')),
|
||||
promised_payment_date DATE,
|
||||
promised_payment_amount NUMERIC(10, 2),
|
||||
transferred_to_court BOOLEAN DEFAULT FALSE,
|
||||
court_case_id VARCHAR(50), -- Связь с судебным делом
|
||||
notes TEXT,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_pre_trial_work_debtor ON pre_trial_work(debtor_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_pre_trial_work_status ON pre_trial_work(status);
|
||||
CREATE INDEX IF NOT EXISTS idx_pre_trial_work_assigned ON pre_trial_work(assigned_to);
|
||||
CREATE INDEX IF NOT EXISTS idx_pre_trial_work_court_case ON pre_trial_work(court_case_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_pre_trial_work_promised_date ON pre_trial_work(promised_payment_date);
|
||||
|
||||
-- Действия (звонки, письма, визиты)
|
||||
CREATE TABLE IF NOT EXISTS pre_trial_actions (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
work_id BIGINT NOT NULL REFERENCES pre_trial_work(id) ON DELETE CASCADE,
|
||||
action_type VARCHAR(20) NOT NULL CHECK (action_type IN ('call', 'letter', 'visit')),
|
||||
action_date TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
performed_by TEXT NOT NULL,
|
||||
result TEXT, -- Результат действия
|
||||
notes TEXT,
|
||||
attachments TEXT[], -- Файлы (например, фото визита)
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_pre_trial_actions_work ON pre_trial_actions(work_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_pre_trial_actions_type ON pre_trial_actions(action_type);
|
||||
CREATE INDEX IF NOT EXISTS idx_pre_trial_actions_date ON pre_trial_actions(action_date DESC);
|
||||
CREATE INDEX IF NOT EXISTS idx_pre_trial_actions_performed ON pre_trial_actions(performed_by);
|
||||
|
||||
-- Обещанные оплаты
|
||||
CREATE TABLE IF NOT EXISTS promised_payments (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
work_id BIGINT NOT NULL REFERENCES pre_trial_work(id) ON DELETE CASCADE,
|
||||
promised_date DATE NOT NULL,
|
||||
promised_amount NUMERIC(10, 2) NOT NULL,
|
||||
actual_payment_date DATE,
|
||||
actual_payment_amount NUMERIC(10, 2),
|
||||
is_paid BOOLEAN DEFAULT FALSE,
|
||||
reminder_sent BOOLEAN DEFAULT FALSE,
|
||||
reminder_date DATE,
|
||||
notes TEXT,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_promised_payments_work ON promised_payments(work_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_promised_payments_date ON promised_payments(promised_date);
|
||||
CREATE INDEX IF NOT EXISTS idx_promised_payments_paid ON promised_payments(is_paid);
|
||||
CREATE INDEX IF NOT EXISTS idx_promised_payments_reminder ON promised_payments(reminder_sent, reminder_date);
|
||||
|
||||
-- Комментарий для документации
|
||||
COMMENT ON TABLE legal_debtors IS 'Должники, переданные из финансового отдела в юридический отдел для досудебной работы';
|
||||
COMMENT ON TABLE pre_trial_work IS 'Досудебная работа по взысканию задолженности с должников';
|
||||
COMMENT ON TABLE pre_trial_actions IS 'Действия, выполненные в рамках досудебной работы (звонки, письма, визиты)';
|
||||
COMMENT ON TABLE promised_payments IS 'Обещанные должниками оплаты с отслеживанием выполнения';
|
||||
Reference in New Issue
Block a user