Загрузка данных


CREATE TABLE employees (
    id SERIAL PRIMARY KEY,
    tab_no VARCHAR(20) UNIQUE,
    last_name VARCHAR(50),
    first_name VARCHAR(50),
    middle_name VARCHAR(50),
    department VARCHAR(100),
    position VARCHAR(100),
    position_code VARCHAR(20)
);

-- Создадим также остальные таблицы, которые нужны приложению,
-- чтобы не ловить ошибки в будущем:

CREATE TABLE service_notes (
    id SERIAL PRIMARY KEY,
    doc_number VARCHAR(50),
    doc_date DATE,
    payment_code VARCHAR(10),
    base_reason TEXT,
    created_by VARCHAR(50),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE supplement_details (
    id SERIAL PRIMARY KEY,
    service_note_id INTEGER REFERENCES service_notes(id) ON DELETE CASCADE,
    employee_id INTEGER REFERENCES employees(id),
    start_date DATE,
    end_date DATE,
    amount NUMERIC(10, 2),
    is_percent BOOLEAN DEFAULT FALSE,
    work_content TEXT,
    work_type VARCHAR(100),
    status VARCHAR(20) DEFAULT 'draft'
);

CREATE TABLE combination_details (
    id SERIAL PRIMARY KEY,
    service_note_id INTEGER REFERENCES service_notes(id) ON DELETE CASCADE,
    employee_id INTEGER REFERENCES employees(id),
    combined_position VARCHAR(250),
    position_identifier VARCHAR(20),
    department VARCHAR(250),
    start_date DATE,
    end_date DATE,
    extra_pay NUMERIC(10, 2),
    payment_code VARCHAR(10),
    reason TEXT,
    duties TEXT
);

CREATE TABLE substitution_details (
    id SERIAL PRIMARY KEY,
    service_note_id INTEGER REFERENCES service_notes(id) ON DELETE CASCADE,
    substitute_employee_id INTEGER REFERENCES employees(id),
    absent_employee_id INTEGER REFERENCES employees(id),
    start_date DATE,
    end_date DATE,
    extra_pay_percent NUMERIC(5, 2),
    payment_code VARCHAR(10),
    duties TEXT,
    absence_reason VARCHAR(200)
);

CREATE TABLE allowance_details (
    id SERIAL PRIMARY KEY,
    service_note_id INTEGER REFERENCES service_notes(id) ON DELETE CASCADE,
    employee_id INTEGER REFERENCES employees(id),
    allowance_name VARCHAR(250),
    payment_code VARCHAR(10),
    unit VARCHAR(10),
    amount NUMERIC(10, 2),
    status VARCHAR(20),
    start_date DATE,
    end_date DATE
);