-- Esquema MySQL para Publi-Mundo. Ejecutar una vez en phpMyAdmin (base cai117_publis).

CREATE TABLE IF NOT EXISTS clients (
  id VARCHAR(36) PRIMARY KEY,
  nombre VARCHAR(255) NOT NULL,
  tipo VARCHAR(64) DEFAULT 'empresa',
  sector VARCHAR(255) DEFAULT '',
  telefono VARCHAR(64) DEFAULT '',
  email VARCHAR(255) DEFAULT '',
  direccion TEXT,
  notas TEXT,
  created_at VARCHAR(64) DEFAULT ''
);

CREATE TABLE IF NOT EXISTS campaigns (
  id VARCHAR(36) PRIMARY KEY,
  nombre VARCHAR(255) NOT NULL,
  cliente_id VARCHAR(36) NOT NULL,
  cliente_nombre VARCHAR(255) DEFAULT '',
  medio VARCHAR(128) DEFAULT '',
  fecha_inicio VARCHAR(64) DEFAULT '',
  fecha_fin VARCHAR(64) DEFAULT '',
  horario VARCHAR(255) DEFAULT '',
  presupuesto DECIMAL(14,2) DEFAULT 0,
  costo_interno DECIMAL(14,2) DEFAULT 0,
  estado VARCHAR(64) DEFAULT 'pendiente',
  descripcion TEXT,
  objetivos TEXT,
  mensaje TEXT,
  publico_objetivo TEXT,
  presupuesto_cliente DECIMAL(14,2) DEFAULT 0,
  gasto_medios_propios DECIMAL(14,2) DEFAULT 0,
  gasto_medios_externos DECIMAL(14,2) DEFAULT 0,
  gasto_produccion DECIMAL(14,2) DEFAULT 0,
  gasto_personal DECIMAL(14,2) DEFAULT 0,
  gasto_otros DECIMAL(14,2) DEFAULT 0,
  kpi_alcance DECIMAL(14,2) DEFAULT 0,
  kpi_interaccion DECIMAL(14,2) DEFAULT 0,
  kpi_conversiones DECIMAL(14,2) DEFAULT 0,
  kpi_roi DECIMAL(14,2) DEFAULT 0,
  created_at VARCHAR(64) DEFAULT ''
);

CREATE TABLE IF NOT EXISTS staff (
  id VARCHAR(36) PRIMARY KEY,
  nombre VARCHAR(255) NOT NULL,
  rol VARCHAR(128) NOT NULL,
  telefono VARCHAR(64) DEFAULT '',
  email VARCHAR(255) DEFAULT '',
  tarifa_hora DECIMAL(14,2) DEFAULT 0,
  horas_trabajadas DECIMAL(14,2) DEFAULT 0,
  estado VARCHAR(64) DEFAULT 'activo',
  created_at VARCHAR(64) DEFAULT ''
);

CREATE TABLE IF NOT EXISTS payments (
  id VARCHAR(36) PRIMARY KEY,
  campana_id VARCHAR(36) DEFAULT '',
  campana_nombre VARCHAR(255) DEFAULT '',
  cliente_id VARCHAR(36) DEFAULT '',
  cliente_nombre VARCHAR(255) DEFAULT '',
  monto DECIMAL(14,2) NOT NULL,
  tipo VARCHAR(64) DEFAULT 'ingreso',
  comprobante VARCHAR(64) DEFAULT 'recibo',
  estado VARCHAR(64) DEFAULT 'pendiente',
  descripcion TEXT,
  numero_comprobante VARCHAR(128) DEFAULT '',
  fecha VARCHAR(64) DEFAULT ''
);

CREATE TABLE IF NOT EXISTS messages (
  id VARCHAR(36) PRIMARY KEY,
  campana_id VARCHAR(36) NOT NULL,
  autor VARCHAR(255) NOT NULL,
  contenido TEXT NOT NULL,
  tipo VARCHAR(64) DEFAULT 'texto',
  timestamp VARCHAR(64) DEFAULT ''
);

CREATE TABLE IF NOT EXISTS tasks (
  id VARCHAR(36) PRIMARY KEY,
  campana_id VARCHAR(36) NOT NULL,
  titulo VARCHAR(255) NOT NULL,
  asignado_a VARCHAR(36) DEFAULT '',
  asignado_nombre VARCHAR(255) DEFAULT '',
  completada TINYINT(1) DEFAULT 0,
  estado_tarea VARCHAR(64) DEFAULT 'pendiente',
  prioridad VARCHAR(64) DEFAULT 'media',
  created_at VARCHAR(64) DEFAULT ''
);

CREATE TABLE IF NOT EXISTS strategy (
  id VARCHAR(36) PRIMARY KEY,
  titulo VARCHAR(255) NOT NULL,
  descripcion TEXT,
  tipo VARCHAR(64) DEFAULT 'objetivo',
  meta_valor DECIMAL(14,2) DEFAULT 0,
  valor_actual DECIMAL(14,2) DEFAULT 0,
  campana_id VARCHAR(36) DEFAULT '',
  created_at VARCHAR(64) DEFAULT ''
);

CREATE TABLE IF NOT EXISTS anuncios (
  id VARCHAR(36) PRIMARY KEY,
  campana_id VARCHAR(36) NOT NULL,
  medio VARCHAR(128) NOT NULL,
  tipo_medio VARCHAR(64) DEFAULT 'propio',
  nombre VARCHAR(255) DEFAULT '',
  descripcion TEXT,
  canal VARCHAR(255) DEFAULT '',
  tipo_prospecto VARCHAR(255) DEFAULT '',
  publico_objetivo TEXT,
  horarios TEXT,
  reproducciones INT DEFAULT 0,
  periodo_reproducciones VARCHAR(64) DEFAULT 'diario',
  bonificaciones INT DEFAULT 0,
  alcance_estimado INT DEFAULT 0,
  presupuesto DECIMAL(14,2) DEFAULT 0,
  fecha_inicio VARCHAR(64) DEFAULT '',
  fecha_fin VARCHAR(64) DEFAULT '',
  estado VARCHAR(64) DEFAULT 'pendiente',
  created_at VARCHAR(64) DEFAULT ''
);
