43 lines
3.1 KiB
MySQL
43 lines
3.1 KiB
MySQL
|
|
-- ========= HR: ИСТОРИЯ ЗАРПЛАТ ИЗ 1С =========
|
|||
|
|
|
|||
|
|
-- Таблица для хранения истории зарплат по периодам
|
|||
|
|
CREATE TABLE IF NOT EXISTS employee_salary_history (
|
|||
|
|
id BIGSERIAL PRIMARY KEY,
|
|||
|
|
employee_id VARCHAR(50) NOT NULL REFERENCES employees(id) ON DELETE CASCADE,
|
|||
|
|
report_id BIGINT REFERENCES financial_reports(id) ON DELETE SET NULL,
|
|||
|
|
-- Период
|
|||
|
|
period_month INTEGER NOT NULL CHECK (period_month >= 1 AND period_month <= 12),
|
|||
|
|
period_year INTEGER NOT NULL CHECK (period_year >= 2000 AND period_year <= 2100),
|
|||
|
|
-- Зарплатные данные
|
|||
|
|
base_salary NUMERIC(10, 2) DEFAULT 0, -- Оклад
|
|||
|
|
actual_salary NUMERIC(10, 2) DEFAULT 0, -- Фактическая зарплата
|
|||
|
|
bonuses NUMERIC(10, 2) DEFAULT 0, -- Премии
|
|||
|
|
deductions NUMERIC(10, 2) DEFAULT 0, -- Удержания
|
|||
|
|
net_salary NUMERIC(10, 2) DEFAULT 0, -- К выплате
|
|||
|
|
-- Отработанное время
|
|||
|
|
worked_days NUMERIC(5, 2), -- Отработано дней
|
|||
|
|
worked_hours NUMERIC(6, 2), -- Отработано часов
|
|||
|
|
vacation_days NUMERIC(5, 2) DEFAULT 0, -- Дни отпуска
|
|||
|
|
sick_leave_days NUMERIC(5, 2) DEFAULT 0, -- Дни больничного
|
|||
|
|
-- Дополнительные данные из 1С
|
|||
|
|
metadata JSONB, -- Дополнительные поля из отчета
|
|||
|
|
-- Служебные поля
|
|||
|
|
imported_from_1c BOOLEAN DEFAULT true, -- Импортировано из 1С
|
|||
|
|
imported_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|||
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|||
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|||
|
|
-- Уникальность: один сотрудник - один период
|
|||
|
|
UNIQUE(employee_id, period_month, period_year)
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
CREATE INDEX IF NOT EXISTS idx_salary_history_employee ON employee_salary_history(employee_id);
|
|||
|
|
CREATE INDEX IF NOT EXISTS idx_salary_history_period ON employee_salary_history(period_year, period_month);
|
|||
|
|
CREATE INDEX IF NOT EXISTS idx_salary_history_report ON employee_salary_history(report_id);
|
|||
|
|
|
|||
|
|
-- Комментарии к таблице
|
|||
|
|
COMMENT ON TABLE employee_salary_history IS 'История зарплат сотрудников по периодам, импортированная из 1С';
|
|||
|
|
COMMENT ON COLUMN employee_salary_history.base_salary IS 'Оклад (базовая ставка)';
|
|||
|
|
COMMENT ON COLUMN employee_salary_history.actual_salary IS 'Фактическая начисленная зарплата';
|
|||
|
|
COMMENT ON COLUMN employee_salary_history.net_salary IS 'Зарплата к выплате (после всех удержаний)';
|
|||
|
|
COMMENT ON COLUMN employee_salary_history.metadata IS 'Дополнительные данные из отчета 1С в формате JSON';
|