-- =============================================================================
-- 11 — EMPLEADOS + TURNOS + COMISIONES (opcional para MVP, importante para V1)
-- =============================================================================

CREATE TABLE IF NOT EXISTS empleados (
    id              INT AUTO_INCREMENT PRIMARY KEY,
    nombre          VARCHAR(120) NOT NULL,
    apellido        VARCHAR(120),
    dni             VARCHAR(20),
    cuil            VARCHAR(20),
    telefono        VARCHAR(40),
    email           VARCHAR(150),
    direccion       VARCHAR(255),
    rol             ENUM('dueno','encargado','cajero','cocinero','pizzero','repartidor','mostrador') NOT NULL,
    salario_base    DECIMAL(12,2),
    forma_pago      ENUM('blanco','en_negro','mixto') DEFAULT 'mixto',
    activo          TINYINT DEFAULT 1,
    fecha_ingreso   DATE,
    fecha_egreso    DATE NULL,
    foto_url        VARCHAR(255),
    notas           TEXT,
    INDEX (rol, activo)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- TURNOS PROGRAMADOS (la grilla de quién trabaja cuándo)
CREATE TABLE IF NOT EXISTS turnos_programados (
    id              INT AUTO_INCREMENT PRIMARY KEY,
    id_empleado     INT NOT NULL,
    fecha           DATE NOT NULL,
    hora_inicio     TIME NOT NULL,
    hora_fin        TIME NOT NULL,
    notas           TEXT,
    FOREIGN KEY (id_empleado) REFERENCES empleados(id) ON DELETE CASCADE,
    INDEX (fecha, id_empleado)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- ASISTENCIAS REALES (cuándo entró y salió de verdad)
CREATE TABLE IF NOT EXISTS asistencias (
    id              INT AUTO_INCREMENT PRIMARY KEY,
    id_empleado     INT NOT NULL,
    fecha           DATE NOT NULL,
    hora_entrada    DATETIME,
    hora_salida     DATETIME,
    horas_trabajadas DECIMAL(5,2),
    notas           TEXT,
    FOREIGN KEY (id_empleado) REFERENCES empleados(id),
    INDEX (id_empleado, fecha)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- COMISIONES (para repartidores principalmente, o vendedores con bonus)
CREATE TABLE IF NOT EXISTS comisiones (
    id              INT AUTO_INCREMENT PRIMARY KEY,
    id_empleado     INT NOT NULL,
    id_pedido       INT NULL,                       -- si la comisión es por un pedido específico
    tipo            ENUM('delivery','venta','bonus','propina') NOT NULL,
    monto           DECIMAL(10,2) NOT NULL,
    descripcion     VARCHAR(255),
    fecha           DATE NOT NULL,
    pagada          TINYINT DEFAULT 0,
    fecha_pago      DATE NULL,
    FOREIGN KEY (id_empleado) REFERENCES empleados(id),
    FOREIGN KEY (id_pedido)   REFERENCES pedidos(id),
    INDEX (id_empleado, pagada),
    INDEX (fecha)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- LIQUIDACIONES (recibos de sueldo, pagos quincenales/mensuales)
CREATE TABLE IF NOT EXISTS liquidaciones (
    id              INT AUTO_INCREMENT PRIMARY KEY,
    id_empleado     INT NOT NULL,
    periodo_desde   DATE NOT NULL,
    periodo_hasta   DATE NOT NULL,
    salario_base    DECIMAL(12,2),
    horas_extras    DECIMAL(12,2) DEFAULT 0,
    comisiones      DECIMAL(12,2) DEFAULT 0,
    bonos           DECIMAL(12,2) DEFAULT 0,
    descuentos      DECIMAL(12,2) DEFAULT 0,
    total_bruto     DECIMAL(12,2),
    total_neto      DECIMAL(12,2),
    aportes         DECIMAL(12,2) DEFAULT 0,
    pagada          TINYINT DEFAULT 0,
    fecha_pago      DATE NULL,
    forma_pago      VARCHAR(40),
    notas           TEXT,
    archivo_pdf_url VARCHAR(255),
    FOREIGN KEY (id_empleado) REFERENCES empleados(id),
    INDEX (id_empleado, periodo_desde)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- USUARIOS DEL SISTEMA (login al panel admin) — separado de empleados
CREATE TABLE IF NOT EXISTS usuarios (
    id              INT AUTO_INCREMENT PRIMARY KEY,
    nick            VARCHAR(50) UNIQUE NOT NULL,
    password_hash   VARCHAR(255) NOT NULL,
    id_empleado     INT NULL,                        -- vinculado a empleado si corresponde
    id_tipo         INT NOT NULL,
    activo          TINYINT DEFAULT 1,
    ultimo_login    TIMESTAMP NULL,
    FOREIGN KEY (id_empleado) REFERENCES empleados(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS usuarios_tipos (
    id     INT PRIMARY KEY,
    nombre VARCHAR(40),
    descripcion VARCHAR(255)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

INSERT INTO usuarios_tipos (id, nombre, descripcion) VALUES
    (1,  'admin',        'Administrador total del sistema'),
    (2,  'encargado',    'Encargado: ve todo pero no modifica config'),
    (5,  'cajero',       'Solo cobra / cierra caja'),
    (6,  'cocinero',     'Solo ve panel de cocina'),
    (10, 'developer',    'Vos: acceso total + paneles dev');
