-- Esquema completo de la base compartida del portal (sistemaspro_compartida).
-- Importar UNA SOLA VEZ, por phpMyAdmin (pestaña "Importar"), en la base
-- vacía que crees desde cPanel > Bases de datos MySQL.
--
-- Después de importar esto, el superadmin todavía NO existe — corré
-- "Run JS Script" (o Terminal) con: node scripts/seed-superadmin.js
-- Login por defecto: admin@sistemaspro.info / Admin1234! (cambiala después).

SET NAMES utf8mb4;

CREATE TABLE `sistemas` (
  `id` int NOT NULL AUTO_INCREMENT,
  `nombre` varchar(120) COLLATE utf8mb4_unicode_ci NOT NULL,
  `slug` varchar(60) COLLATE utf8mb4_unicode_ci NOT NULL,
  `descripcion` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `createdAt` datetime NOT NULL,
  `updatedAt` datetime NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `slug` (`slug`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE `clientes` (
  `id` int NOT NULL AUTO_INCREMENT,
  `nombre` varchar(120) COLLATE utf8mb4_unicode_ci NOT NULL,
  `slug` varchar(60) COLLATE utf8mb4_unicode_ci NOT NULL,
  `correo_contacto` varchar(160) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `activo` tinyint(1) NOT NULL DEFAULT '1',
  `createdAt` datetime NOT NULL,
  `updatedAt` datetime NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `slug` (`slug`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE `cuentas_cobro` (
  `id` int NOT NULL AUTO_INCREMENT,
  `pais` enum('VE','CO') COLLATE utf8mb4_unicode_ci NOT NULL,
  `nombre` varchar(80) COLLATE utf8mb4_unicode_ci NOT NULL,
  `tipo` enum('transferencia','pago_movil','nequi','otro') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'otro',
  `datos_pago` text COLLATE utf8mb4_unicode_ci NOT NULL,
  `activa` tinyint(1) NOT NULL DEFAULT '1',
  `orden` int NOT NULL DEFAULT '0',
  `createdAt` datetime NOT NULL,
  `updatedAt` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE `licencias` (
  `id` int NOT NULL AUTO_INCREMENT,
  `bd_host` varchar(120) COLLATE utf8mb4_unicode_ci NOT NULL,
  `bd_nombre` varchar(120) COLLATE utf8mb4_unicode_ci NOT NULL,
  `bd_usuario` varchar(120) COLLATE utf8mb4_unicode_ci NOT NULL,
  `bd_password` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `url_base` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `fecha_inicio` date NOT NULL,
  `fecha_vencimiento` date DEFAULT NULL,
  `periodicidad` enum('mensual','trimestral','anual') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'mensual',
  `precio` decimal(10,2) DEFAULT NULL,
  `token_seguimiento` varchar(40) COLLATE utf8mb4_unicode_ci NOT NULL,
  `activa` tinyint(1) NOT NULL DEFAULT '1',
  `createdAt` datetime NOT NULL,
  `updatedAt` datetime NOT NULL,
  `cliente_id` int DEFAULT NULL,
  `sistema_id` int DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uq_licencias_token` (`token_seguimiento`),
  KEY `cliente_id` (`cliente_id`),
  KEY `sistema_id` (`sistema_id`),
  CONSTRAINT `licencias_ibfk_1` FOREIGN KEY (`cliente_id`) REFERENCES `clientes` (`id`) ON DELETE SET NULL ON UPDATE CASCADE,
  CONSTRAINT `licencias_ibfk_2` FOREIGN KEY (`sistema_id`) REFERENCES `sistemas` (`id`) ON DELETE SET NULL ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE `pagos` (
  `id` int NOT NULL AUTO_INCREMENT,
  `monto` decimal(10,2) NOT NULL,
  `fecha_pago` date NOT NULL,
  `metodo` enum('transferencia','zelle','efectivo','paypal','otro') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'otro',
  `notas` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `estado` enum('pendiente','aprobado','rechazado') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'aprobado',
  `comprobante_url` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `cuenta_cobro_id` int DEFAULT NULL,
  `paypal_order_id` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `createdAt` datetime NOT NULL,
  `updatedAt` datetime NOT NULL,
  `licencia_id` int DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `licencia_id` (`licencia_id`),
  KEY `fk_pagos_cuenta_cobro` (`cuenta_cobro_id`),
  CONSTRAINT `fk_pagos_cuenta_cobro` FOREIGN KEY (`cuenta_cobro_id`) REFERENCES `cuentas_cobro` (`id`),
  CONSTRAINT `pagos_ibfk_1` FOREIGN KEY (`licencia_id`) REFERENCES `licencias` (`id`) ON DELETE SET NULL ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE `usuarios` (
  `id` int NOT NULL AUTO_INCREMENT,
  `nombre` varchar(120) COLLATE utf8mb4_unicode_ci NOT NULL,
  `correo` varchar(160) COLLATE utf8mb4_unicode_ci NOT NULL,
  `clave_hash` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
  `rol` enum('superadmin','admin') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'admin',
  `activo` tinyint(1) NOT NULL DEFAULT '1',
  `createdAt` datetime NOT NULL,
  `updatedAt` datetime NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `correo` (`correo`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- La tabla "sessions" NO hace falta crearla a mano: express-mysql-session
-- la crea sola en el primer arranque (createDatabaseTable: true en index.js).

INSERT INTO `sistemas` (`nombre`, `slug`, `descripcion`, `createdAt`, `updatedAt`)
VALUES ('Trokkmart', 'trokkmart', 'Tienda online: catalogo publico + panel privado de productos y marca.', NOW(), NOW());
