-- ============================================================================
-- Migración 01 — BD del módulo OT (Instalaciones) · tipo "Visita Paneles"
-- Tablas específicas para la OT de visita de factibilidad de paneles (ecosolar).
-- Otros tipos de OT usarán sus propias tablas a futuro.
-- BD local del módulo (separada del CRM). Usuario de conexión: perfectc_enlaces.
-- Motor InnoDB, utf8mb4. Ejecutar una vez.
-- ============================================================================

-- 1) Órdenes de Trabajo — Visita Paneles
CREATE TABLE IF NOT EXISTS ot_visita_paneles (
  id              INT AUTO_INCREMENT PRIMARY KEY,
  salesorder_no   VARCHAR(50)  NOT NULL,                 -- pedido vTiger (SalesOrder)
  crmid           VARCHAR(50)  NULL,                     -- id interno del SalesOrder
  cliente         VARCHAR(190) NULL,
  direccion       VARCHAR(255) NULL,                     -- ship_street
  comuna          VARCHAR(120) NULL,                     -- ship_city
  region          VARCHAR(120) NULL,                     -- cf_1030
  tecnico         VARCHAR(190) NULL,                     -- cf_900 (nombre/correo)
  vendedor_email  VARCHAR(190) NULL,                     -- Users.email1 del "Ingresado por"
  estado          ENUM('borrador','completa','enviada') NOT NULL DEFAULT 'borrador',
  datos_json      LONGTEXT     NULL,                     -- respuestas del formulario (todas las secciones)
  pdf_docid_crm   VARCHAR(50)  NULL,                     -- id del Documento (PDF) en el CRM
  creado_por      VARCHAR(120) NULL,
  fecha_creacion  DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP,
  fecha_update    DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  INDEX idx_so (salesorder_no),
  INDEX idx_estado (estado)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 2) Fotos/evidencias por sección — Visita Paneles
CREATE TABLE IF NOT EXISTS ot_visita_paneles_fotos (
  id          INT AUTO_INCREMENT PRIMARY KEY,
  ot_id       INT NOT NULL,
  seccion     VARCHAR(60)  NOT NULL,                     -- empalme, conductores, montaje_paneles, ...
  ruta_local  VARCHAR(255) NOT NULL,                     -- archivo subido (no versionado)
  crm_docid   VARCHAR(50)  NULL,                         -- id del Document en el CRM (tras subir)
  orden       INT NOT NULL DEFAULT 0,
  creado      DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  FOREIGN KEY (ot_id) REFERENCES ot_visita_paneles(id) ON DELETE CASCADE,
  INDEX idx_ot (ot_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 2b) Usuarios del módulo (login del técnico)
CREATE TABLE IF NOT EXISTS ot_usuarios (
  id        INT AUTO_INCREMENT PRIMARY KEY,
  username  VARCHAR(80)  NOT NULL,
  password  VARCHAR(255) NOT NULL,                       -- bcrypt
  nombre    VARCHAR(190) NULL,
  correo    VARCHAR(190) NULL,
  activo    TINYINT(1) NOT NULL DEFAULT 1,
  UNIQUE KEY uq_username (username)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 3) Valores de selección EDITABLES (compartidos entre tipos de OT; filtra por grupo)
CREATE TABLE IF NOT EXISTS ot_opciones (
  id      INT AUTO_INCREMENT PRIMARY KEY,
  grupo   VARCHAR(60)  NOT NULL,                         -- factibilidad, tipo_sistema, red, ...
  valor   VARCHAR(150) NOT NULL,
  orden   INT NOT NULL DEFAULT 0,
  activo  TINYINT(1) NOT NULL DEFAULT 1,
  UNIQUE KEY uq_grupo_valor (grupo, valor),
  INDEX idx_grupo (grupo)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

INSERT INTO ot_opciones (grupo, valor, orden) VALUES
  ('factibilidad','Factible',1),
  ('factibilidad','Infactible',2),
  ('factibilidad','Factible sujeto a obras',3),
  ('tipo_sistema','On grid',1),
  ('tipo_sistema','Off grid',2),
  ('tipo_sistema','Híbrido',3),
  ('red','Monofásica',1),
  ('red','Trifásica',2),
  ('tipo_medidor','Digital',1),
  ('tipo_medidor','Ruleta',2),
  ('tipo_estructura_fv','Coplanar',1),
  ('tipo_estructura_fv','Ajustable',2),
  ('tipo_estructura_fv','Coplanar y ajustable',3),
  ('posicion_modulos','Vertical',1),
  ('posicion_modulos','Horizontal',2),
  ('posicion_modulos','Vertical y horizontal',3),
  ('intensidad_wifi','Alta',1),
  ('intensidad_wifi','Media',2),
  ('intensidad_wifi','Baja',3),
  ('tipo_asesoria','Visita presencial',1),
  ('tipo_asesoria','Visita remota',2)
ON DUPLICATE KEY UPDATE valor = VALUES(valor);
