-- ====================================================================
-- ESQUEMA DE BASE DE DATOS MYSQL: MDM LOGÍSTICA VALMORCA
-- Compatible con cPanel / phpMyAdmin / MySQL 5.7+ / MariaDB 10.3+ / MySQL 8.0+
-- ====================================================================

-- NOTA PARA CPANEL:
-- Si estás importando directamente desde phpMyAdmin dentro de tu base de datos
-- ya creada (ej. tuusuario_valmorca_mdm), no requieres CREATE DATABASE.
-- Las sentencias CREATE TABLE crearán automáticamente toda la estructura.

-- 1. Tabla de Viajes Asignados a Tablets
CREATE TABLE IF NOT EXISTS `viajes_asignados` (
  `id` INT AUTO_INCREMENT PRIMARY KEY,
  `numero_viaje_jde` VARCHAR(50) NOT NULL,
  `tablet_cuenta` VARCHAR(100) NOT NULL,
  `cedula_chofer` VARCHAR(30) DEFAULT NULL,
  `nombre_chofer` VARCHAR(150) DEFAULT NULL,
  `placa_vehiculo` VARCHAR(20) DEFAULT NULL,
  `estado` ENUM('ASIGNADO', 'EN_RUTA', 'COMPLETADO', 'CANCELADO') DEFAULT 'ASIGNADO',
  `fecha_asignacion` DATETIME NOT NULL,
  `fecha_cierre` DATETIME DEFAULT NULL,
  INDEX `idx_tablet_estado` (`tablet_cuenta`, `estado`),
  INDEX `idx_viaje_jde` (`numero_viaje_jde`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- 2. Tabla de Facturas del Viaje, Secuencia del Chofer y Estado de Entrega
CREATE TABLE IF NOT EXISTS `viajes_facturas_orden` (
  `id` INT AUTO_INCREMENT PRIMARY KEY,
  `viaje_id` INT NOT NULL,
  `numero_factura` VARCHAR(50) NOT NULL,
  `tipo_documento` VARCHAR(10) DEFAULT 'RI',
  `codigo_cliente` VARCHAR(30) DEFAULT NULL,
  `nombre_cliente` VARCHAR(150) NOT NULL,
  `rif_cliente` VARCHAR(30) DEFAULT NULL,
  `cod_sicm` VARCHAR(30) DEFAULT NULL,
  `direccion` TEXT DEFAULT NULL,
  `sector` VARCHAR(100) DEFAULT NULL,
  `bultos` INT DEFAULT 0,
  `unidades` DECIMAL(12,2) DEFAULT 0.00,
  `peso_kg` DECIMAL(10,2) DEFAULT 0.00,
  `monto_total` DECIMAL(14,2) DEFAULT 0.00,
  `orden_secuencia` INT DEFAULT 0,
  `estatus_entrega` ENUM('PENDIENTE', 'DESPACHADO', 'NO_DESPACHADO') DEFAULT 'PENDIENTE',
  `latitud_entrega` DECIMAL(10,8) DEFAULT NULL,
  `longitud_entrega` DECIMAL(11,8) DEFAULT NULL,
  `fecha_hora_entrega` DATETIME DEFAULT NULL,
  `motivo_no_entrega` VARCHAR(255) DEFAULT NULL,
  FOREIGN KEY (`viaje_id`) REFERENCES `viajes_asignados` (`id`) ON DELETE CASCADE,
  INDEX `idx_viaje_orden` (`viaje_id`, `orden_secuencia`),
  INDEX `idx_num_factura` (`numero_factura`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- 3. Tabla de Telemetría GPS (Historial de Ruta)
CREATE TABLE IF NOT EXISTS `viajes_tracking_gps` (
  `id` BIGINT AUTO_INCREMENT PRIMARY KEY,
  `viaje_id` INT NOT NULL,
  `tablet_cuenta` VARCHAR(100) NOT NULL,
  `latitud` DECIMAL(10,8) NOT NULL,
  `longitud` DECIMAL(11,8) NOT NULL,
  `velocidad` FLOAT DEFAULT 0,
  `bateria` INT DEFAULT 100,
  `fecha_hora_gps` DATETIME NOT NULL,
  FOREIGN KEY (`viaje_id`) REFERENCES `viajes_asignados` (`id`) ON DELETE CASCADE,
  INDEX `idx_viaje_fecha` (`viaje_id`, `fecha_hora_gps`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- 4. Tabla de Usuarios y Autenticación (Método 2: Dynamic JWT)
CREATE TABLE IF NOT EXISTS `usuarios` (
  `id` INT AUTO_INCREMENT PRIMARY KEY,
  `email` VARCHAR(100) NOT NULL UNIQUE,
  `password_hash` VARCHAR(255) NOT NULL,
  `nombre` VARCHAR(150) NOT NULL,
  `rol` ENUM('ADMINISTRADOR', 'TRANSPORTISTA', 'OPERADOR') DEFAULT 'TRANSPORTISTA',
  `cedula` VARCHAR(30) DEFAULT NULL,
  `placa` VARCHAR(20) DEFAULT NULL,
  `activo` TINYINT(1) DEFAULT 1,
  `ultimo_acceso` DATETIME DEFAULT NULL,
  `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  `updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  INDEX `idx_usuario_email` (`email`),
  INDEX `idx_usuario_rol` (`rol`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Cuentas Iniciales para Tablets de Transporte y Administrador
-- Contraseña por defecto: "Valmorca2026*"
INSERT INTO `usuarios` (`email`, `password_hash`, `nombre`, `rol`, `cedula`, `placa`, `activo`) VALUES
('admin@valmorca.com.ve', '22d551d8eb3c0aed62886433fb213718c73dbd787296fa378504b5c031a7efb3', 'Administrador Logística', 'ADMINISTRADOR', NULL, NULL, 1),
('transporte01@valmorca.com.ve', '22d551d8eb3c0aed62886433fb213718c73dbd787296fa378504b5c031a7efb3', 'DENNY AGUANNE', 'TRANSPORTISTA', '163', '094 - F-350 2014 AZUL A81CY4A', 1),
('transporte02@valmorca.com.ve', '22d551d8eb3c0aed62886433fb213718c73dbd787296fa378504b5c031a7efb3', 'José Rodríguez', 'TRANSPORTISTA', 'V-87654321', 'B34CD5E', 1),
('transporte03@valmorca.com.ve', '22d551d8eb3c0aed62886433fb213718c73dbd787296fa378504b5c031a7efb3', 'Carlos Mendoza', 'TRANSPORTISTA', 'V-11223344', 'C56EF7G', 1),
('transporte04@valmorca.com.ve', '22d551d8eb3c0aed62886433fb213718c73dbd787296fa378504b5c031a7efb3', 'Pedro Pérez', 'TRANSPORTISTA', 'V-12345678', 'A12BC3D', 1)
ON DUPLICATE KEY UPDATE `nombre` = VALUES(`nombre`);

