48 lines
1.6 KiB
SQL
48 lines
1.6 KiB
SQL
-- HR Module Migration
|
|
CREATE TABLE IF NOT EXISTS hr_departments (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
name VARCHAR(255) NOT NULL,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS hr_employees (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
department_id INT,
|
|
name VARCHAR(255) NOT NULL,
|
|
email VARCHAR(255),
|
|
phone VARCHAR(20),
|
|
position VARCHAR(100),
|
|
salary DECIMAL(15, 3) DEFAULT 0.000,
|
|
joining_date DATE,
|
|
status ENUM('active', 'inactive') DEFAULT 'active',
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (department_id) REFERENCES hr_departments(id) ON DELETE SET NULL
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS hr_attendance (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
employee_id INT NOT NULL,
|
|
attendance_date DATE NOT NULL,
|
|
clock_in TIME,
|
|
clock_out TIME,
|
|
status ENUM('present', 'absent', 'on_leave') DEFAULT 'present',
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (employee_id) REFERENCES hr_employees(id) ON DELETE CASCADE,
|
|
UNIQUE KEY (employee_id, attendance_date)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS hr_payroll (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
employee_id INT NOT NULL,
|
|
payroll_month INT NOT NULL,
|
|
payroll_year INT NOT NULL,
|
|
basic_salary DECIMAL(15, 3) DEFAULT 0.000,
|
|
bonus DECIMAL(15, 3) DEFAULT 0.000,
|
|
deductions DECIMAL(15, 3) DEFAULT 0.000,
|
|
net_salary DECIMAL(15, 3) DEFAULT 0.000,
|
|
payment_date DATE,
|
|
status ENUM('pending', 'paid') DEFAULT 'pending',
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (employee_id) REFERENCES hr_employees(id) ON DELETE CASCADE
|
|
);
|