-- --------------------------------------------------------
-- Versión del servidor:         8.4.3 - MySQL Community Server - GPL
-- SO del servidor:              Win64
-- HeidiSQL Versión:             12.8.0.6908
-- --------------------------------------------------------



-- Volcando estructura de base de datos para neg_control_asistencia
CREATE DATABASE IF NOT EXISTS `neg_control_asistencia` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */ /*!80016 DEFAULT ENCRYPTION='N' */;
USE `neg_control_asistencia`;

-- Volcando estructura para tabla neg_control_asistencia.asistencia
CREATE TABLE IF NOT EXISTS `asistencia` (
  `id` int NOT NULL AUTO_INCREMENT,
  `empleado_id` int NOT NULL,
  `fecha` date NOT NULL,
  `hora_entrada` time DEFAULT NULL,
  `hora_salida` time DEFAULT NULL,
  `estado` enum('presente','tardanza','falta','permiso','vacaciones') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'presente',
  `horas_trabajadas` decimal(5,2) DEFAULT '0.00',
  `minutos_tardanza` int DEFAULT '0',
  `observacion` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `metodo` enum('biometrico','qr','barras','pin','web','manual') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'manual',
  `dispositivo` varchar(80) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uq_empleado_fecha` (`empleado_id`,`fecha`),
  CONSTRAINT `asistencia_ibfk_1` FOREIGN KEY (`empleado_id`) REFERENCES `empleados` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Volcando datos para la tabla neg_control_asistencia.asistencia: ~15 rows (aproximadamente)
DELETE FROM `asistencia`;
INSERT INTO `asistencia` (`id`, `empleado_id`, `fecha`, `hora_entrada`, `hora_salida`, `estado`, `horas_trabajadas`, `minutos_tardanza`, `observacion`, `created_at`, `metodo`, `dispositivo`) VALUES
	(1, 1, '2026-06-29', '07:55:00', '17:05:00', 'presente', 9.00, 0, NULL, '2026-07-01 13:04:14', 'manual', NULL),
	(2, 2, '2026-06-29', '08:02:00', '17:10:00', 'presente', 9.00, 0, NULL, '2026-07-01 13:04:14', 'manual', NULL),
	(3, 3, '2026-06-29', '08:25:00', '17:00:00', 'tardanza', 8.50, 25, NULL, '2026-07-01 13:04:14', 'manual', NULL),
	(4, 4, '2026-06-29', '07:50:00', '17:30:00', 'presente', 9.50, 0, NULL, '2026-07-01 13:04:14', 'manual', NULL),
	(5, 5, '2026-06-29', NULL, NULL, 'falta', 0.00, 0, NULL, '2026-07-01 13:04:14', 'manual', NULL),
	(6, 6, '2026-06-29', '13:05:00', '22:00:00', 'presente', 9.00, 0, NULL, '2026-07-01 13:04:14', 'manual', NULL),
	(7, 7, '2026-06-29', '09:10:00', '18:00:00', 'tardanza', 8.80, 10, NULL, '2026-07-01 13:04:14', 'manual', NULL),
	(8, 8, '2026-06-29', '07:58:00', '17:02:00', 'presente', 9.00, 0, NULL, '2026-07-01 13:04:14', 'manual', NULL),
	(9, 1, '2026-06-30', '07:59:00', '17:00:00', 'presente', 9.00, 0, NULL, '2026-07-01 13:04:14', 'manual', NULL),
	(10, 2, '2026-06-30', '08:00:00', '17:05:00', 'presente', 9.00, 0, NULL, '2026-07-01 13:04:14', 'manual', NULL),
	(11, 3, '2026-06-30', '08:05:00', '17:00:00', 'presente', 8.90, 0, NULL, '2026-07-01 13:04:14', 'manual', NULL),
	(12, 4, '2026-06-30', '08:40:00', '17:20:00', 'tardanza', 8.60, 40, NULL, '2026-07-01 13:04:14', 'manual', NULL),
	(13, 6, '2026-06-30', '13:00:00', '22:00:00', 'presente', 9.00, 0, NULL, '2026-07-01 13:04:14', 'manual', NULL),
	(14, 7, '2026-06-30', '09:05:00', '18:05:00', 'presente', 9.00, 0, NULL, '2026-07-01 13:04:14', 'manual', NULL),
	(15, 8, '2026-06-30', '07:55:00', '17:00:00', 'presente', 9.00, 0, NULL, '2026-07-01 13:04:14', 'manual', NULL);

-- Volcando estructura para tabla neg_control_asistencia.cargos
CREATE TABLE IF NOT EXISTS `cargos` (
  `id` int NOT NULL AUTO_INCREMENT,
  `nombre` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
  `departamento_id` int DEFAULT NULL,
  `salario_base` decimal(10,2) DEFAULT '0.00',
  `activo` tinyint(1) NOT NULL DEFAULT '1',
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `departamento_id` (`departamento_id`),
  CONSTRAINT `cargos_ibfk_1` FOREIGN KEY (`departamento_id`) REFERENCES `departamentos` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Volcando datos para la tabla neg_control_asistencia.cargos: ~8 rows (aproximadamente)
DELETE FROM `cargos`;
INSERT INTO `cargos` (`id`, `nombre`, `departamento_id`, `salario_base`, `activo`, `created_at`) VALUES
	(1, 'Gerente General', 1, 12000.00, 1, '2026-07-01 13:04:14'),
	(2, 'Jefe de RR.HH.', 2, 7500.00, 1, '2026-07-01 13:04:14'),
	(3, 'Analista de RR.HH.', 2, 4200.00, 1, '2026-07-01 13:04:14'),
	(4, 'Líder de Desarrollo', 3, 8500.00, 1, '2026-07-01 13:04:14'),
	(5, 'Desarrollador', 3, 5500.00, 1, '2026-07-01 13:04:14'),
	(6, 'Soporte Técnico', 3, 3800.00, 1, '2026-07-01 13:04:14'),
	(7, 'Ejecutivo de Ventas', 4, 3500.00, 1, '2026-07-01 13:04:14'),
	(8, 'Contador', 5, 6000.00, 1, '2026-07-01 13:04:14');

-- Volcando estructura para tabla neg_control_asistencia.departamentos
CREATE TABLE IF NOT EXISTS `departamentos` (
  `id` int NOT NULL AUTO_INCREMENT,
  `nombre` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
  `descripcion` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `ubicacion` varchar(120) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `activo` tinyint(1) NOT NULL DEFAULT '1',
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Volcando datos para la tabla neg_control_asistencia.departamentos: ~5 rows (aproximadamente)
DELETE FROM `departamentos`;
INSERT INTO `departamentos` (`id`, `nombre`, `descripcion`, `ubicacion`, `activo`, `created_at`) VALUES
	(1, 'Gerencia', 'Dirección y gestión general', 'Piso 5', 1, '2026-07-01 13:04:14'),
	(2, 'Recursos Humanos', 'Gestión del personal y planillas', 'Piso 4', 1, '2026-07-01 13:04:14'),
	(3, 'Tecnología', 'Desarrollo y soporte de sistemas', 'Piso 3', 1, '2026-07-01 13:04:14'),
	(4, 'Ventas', 'Atención comercial y clientes', 'Piso 2', 1, '2026-07-01 13:04:14'),
	(5, 'Contabilidad', 'Finanzas, tesorería y contabilidad', 'Piso 4', 1, '2026-07-01 13:04:14');

-- Volcando estructura para tabla neg_control_asistencia.permisos
CREATE TABLE IF NOT EXISTS `permisos` (
  `id` int NOT NULL AUTO_INCREMENT,
  `empleado_id` int NOT NULL,
  `tipo` enum('personal','medico','familiar','estudios','otro') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'personal',
  `fecha_inicio` date NOT NULL,
  `fecha_fin` date NOT NULL,
  `motivo` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `estado` enum('pendiente','aprobado','rechazado') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'pendiente',
  `aprobado_por` int DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `empleado_id` (`empleado_id`),
  KEY `aprobado_por` (`aprobado_por`),
  CONSTRAINT `permisos_ibfk_1` FOREIGN KEY (`empleado_id`) REFERENCES `empleados` (`id`) ON DELETE CASCADE,
  CONSTRAINT `permisos_ibfk_2` FOREIGN KEY (`aprobado_por`) REFERENCES `usuarios` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Volcando datos para la tabla neg_control_asistencia.permisos: ~3 rows (aproximadamente)
DELETE FROM `permisos`;
INSERT INTO `permisos` (`id`, `empleado_id`, `tipo`, `fecha_inicio`, `fecha_fin`, `motivo`, `estado`, `aprobado_por`, `created_at`) VALUES
	(1, 3, 'medico', '2026-07-03', '2026-07-03', 'Cita médica programada', 'aprobado', 2, '2026-07-01 13:04:14'),
	(2, 6, 'personal', '2026-07-10', '2026-07-10', 'Trámite personal', 'pendiente', NULL, '2026-07-01 13:04:14'),
	(3, 7, 'familiar', '2026-06-28', '2026-06-28', 'Asunto familiar', 'rechazado', 2, '2026-07-01 13:04:14');

-- Volcando estructura para tabla neg_control_asistencia.turnos
CREATE TABLE IF NOT EXISTS `turnos` (
  `id` int NOT NULL AUTO_INCREMENT,
  `nombre` varchar(80) COLLATE utf8mb4_unicode_ci NOT NULL,
  `hora_entrada` time NOT NULL,
  `hora_salida` time NOT NULL,
  `tolerancia_min` int NOT NULL DEFAULT '10',
  `dias_laborales` varchar(40) COLLATE utf8mb4_unicode_ci DEFAULT 'Lun-Vie',
  `activo` tinyint(1) NOT NULL DEFAULT '1',
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Volcando datos para la tabla neg_control_asistencia.turnos: ~3 rows (aproximadamente)
DELETE FROM `turnos`;
INSERT INTO `turnos` (`id`, `nombre`, `hora_entrada`, `hora_salida`, `tolerancia_min`, `dias_laborales`, `activo`, `created_at`) VALUES
	(1, 'Turno Mañana', '08:00:00', '17:00:00', 10, 'Lun-Vie', 1, '2026-07-01 13:04:14'),
	(2, 'Turno Tarde', '13:00:00', '22:00:00', 10, 'Lun-Vie', 1, '2026-07-01 13:04:14'),
	(3, 'Turno Comercial', '09:00:00', '18:00:00', 15, 'Lun-Sab', 1, '2026-07-01 13:04:14');

-- Volcando estructura para tabla neg_control_asistencia.vacaciones
CREATE TABLE IF NOT EXISTS `vacaciones` (
  `id` int NOT NULL AUTO_INCREMENT,
  `empleado_id` int NOT NULL,
  `fecha_inicio` date NOT NULL,
  `fecha_fin` date NOT NULL,
  `dias` int NOT NULL,
  `periodo` varchar(9) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `estado` enum('pendiente','aprobado','rechazado','gozado') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'pendiente',
  `aprobado_por` int DEFAULT NULL,
  `observacion` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `empleado_id` (`empleado_id`),
  KEY `aprobado_por` (`aprobado_por`),
  CONSTRAINT `vacaciones_ibfk_1` FOREIGN KEY (`empleado_id`) REFERENCES `empleados` (`id`) ON DELETE CASCADE,
  CONSTRAINT `vacaciones_ibfk_2` FOREIGN KEY (`aprobado_por`) REFERENCES `usuarios` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Volcando datos para la tabla neg_control_asistencia.vacaciones: ~3 rows (aproximadamente)
DELETE FROM `vacaciones`;
INSERT INTO `vacaciones` (`id`, `empleado_id`, `fecha_inicio`, `fecha_fin`, `dias`, `periodo`, `estado`, `aprobado_por`, `observacion`, `created_at`) VALUES
	(1, 4, '2026-07-15', '2026-07-29', 15, '2025-2026', 'aprobado', 2, NULL, '2026-07-01 13:04:14'),
	(2, 8, '2026-08-01', '2026-08-15', 15, '2025-2026', 'pendiente', NULL, NULL, '2026-07-01 13:04:14'),
	(3, 2, '2026-06-01', '2026-06-15', 15, '2024-2025', 'gozado', 1, NULL, '2026-07-01 13:04:14');

