fmatituy/selectospromanager
0
1import sqlite3
2from database.db import DB_PATH
3
4def init_personal_db():
5 conn = sqlite3.connect(DB_PATH)
6 c = conn.cursor()
7
8 # 1. Tabla de Empleados
9 c.execute('''
10 CREATE TABLE IF NOT EXISTS empleados (
11 id INTEGER PRIMARY KEY AUTOINCREMENT,
12 nombre TEXT NOT NULL,
13 documento TEXT UNIQUE,
14 cargo TEXT,
15 area TEXT,
16 telefono TEXT,
17 correo TEXT,
18 fecha_ingreso TEXT,
19 estado TEXT DEFAULT 'Activo',
20 proyecto_actual_id INTEGER,
21 tipo_contrato TEXT,
22 hoja_vida TEXT
23 )
24 ''')
25
26 try:
27 c.execute("ALTER TABLE empleados ADD COLUMN tipo_contrato TEXT")
28 except: pass
29
30 try:
31 c.execute("ALTER TABLE empleados ADD COLUMN hoja_vida TEXT")
32 except: pass
33
34 # 2. Asegurar que la tabla usuarios tenga empleado_id y activo
35 try:
36 c.execute('ALTER TABLE usuarios ADD COLUMN empleado_id INTEGER')
37 except: pass # Ya existe
38
39 try:
40 c.execute("ALTER TABLE usuarios ADD COLUMN activo BOOLEAN DEFAULT 1")
41 except: pass # Ya existe
42
43 try:
44 c.execute("ALTER TABLE usuarios ADD COLUMN fecha_creacion TEXT")
45 except: pass # Ya existe
46
47 # 3. Tabla de Asistencias
48 c.execute('''
49 CREATE TABLE IF NOT EXISTS asistencias (
50 id INTEGER PRIMARY KEY AUTOINCREMENT,
51 empleado_id INTEGER,
52 fecha TEXT,
53 hora_entrada TEXT,
54 hora_salida TEXT,
55 ubicacion TEXT,
56 proyecto_id INTEGER,
57 horas_trabajadas REAL DEFAULT 0,
58 FOREIGN KEY (empleado_id) REFERENCES empleados(id)
59 )
60 ''')
61
62 # 4. Tabla de Novedades
63 c.execute('''
64 CREATE TABLE IF NOT EXISTS novedades (
65 id INTEGER PRIMARY KEY AUTOINCREMENT,
66 empleado_id INTEGER,
67 tipo TEXT, -- Incapacidad, Permiso, Ausencia, Retraso, Llamado de atención
68 descripcion TEXT,
69 fecha_inicio TEXT,
70 fecha_fin TEXT,
71 registrada_por TEXT,
72 FOREIGN KEY (empleado_id) REFERENCES empleados(id)
73 )
74 ''')
75
76 conn.commit()
77 conn.close()
78
79# Inicializar al importar
80init_personal_db()
81 