-- =============================================================================
-- Migración:    0030_create_convenios_y_sucursales_velatorios_tables
-- Sprint:       1.5a — Necesidad Inmediata (NI)
-- Tablas:       convenios, sucursales, velatorios
-- Aplica en:    BD de cada tenant (innovium_<slug>)
-- Dependencias: 0028 (comunas) para FKs de sucursales/velatorios.
--
-- Descripción:
--   Tres tablas operativas que cada tenant administra desde el panel admin:
--
--   · convenios   — descuentos institucionales (Funcionarios Públicos,
--                   Sindicatos, etc.). Vacía al inicio. /admin/convenios.
--
--   · sucursales  — oficinas/sedes de la funeraria. Casa Matriz se
--                   siembra automáticamente al tenant:create.
--                   /admin/sucursales.
--
--   · velatorios  — locales velatorios propios o asociados.
--                   Vacía al inicio. /admin/velatorios.
--
-- Notas de diseño:
--   - Las 3 con soft delete (eliminado_en): pueden borrarse vía UI
--     y queremos preservar trazabilidad de contratos antiguos.
--   - sucursales y velatorios tienen FK opcional a comunas.
-- =============================================================================

CREATE TABLE convenios (
    id                    BIGINT UNSIGNED NOT NULL AUTO_INCREMENT
                          COMMENT 'PK auto-incremental.',
    nombre                VARCHAR(150)    NOT NULL
                          COMMENT 'Nombre del convenio (ej: "Funcionarios Públicos", "Sindicato YY").',
    descuento_porcentaje  DECIMAL(5,2)    NOT NULL DEFAULT 0
                          COMMENT 'Porcentaje 0.00-100.00. Validar en código que sea 0-100.',
    activo                TINYINT(1)      NOT NULL DEFAULT 1,
    notas                 TEXT                NULL
                          COMMENT 'Detalles internos (vigencia, contacto, etc.).',
    creado_en             DATETIME        NOT NULL DEFAULT CURRENT_TIMESTAMP,
    actualizado_en        DATETIME        NOT NULL DEFAULT CURRENT_TIMESTAMP
                                                   ON UPDATE CURRENT_TIMESTAMP,
    eliminado_en          DATETIME            NULL
                          COMMENT 'UTC del soft-delete. NULL = activo.',
    PRIMARY KEY (id),
    KEY idx_convenios_activo (activo, eliminado_en)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
  COMMENT='Convenios institucionales con descuento porcentual.';


CREATE TABLE sucursales (
    id              BIGINT UNSIGNED NOT NULL AUTO_INCREMENT
                    COMMENT 'PK auto-incremental.',
    nombre          VARCHAR(100)    NOT NULL
                    COMMENT 'Nombre de la sucursal (ej: "Casa Matriz", "Sucursal Providencia").',
    direccion       VARCHAR(200)        NULL
                    COMMENT 'Dirección física opcional.',
    telefono        VARCHAR(15)         NULL
                    COMMENT 'Teléfono de la sucursal.',
    comuna_id       BIGINT UNSIGNED     NULL
                    COMMENT 'FK → comunas.id (SET NULL).',
    activo          TINYINT(1)      NOT NULL DEFAULT 1,
    creado_en       DATETIME        NOT NULL DEFAULT CURRENT_TIMESTAMP,
    actualizado_en  DATETIME        NOT NULL DEFAULT CURRENT_TIMESTAMP
                                             ON UPDATE CURRENT_TIMESTAMP,
    eliminado_en    DATETIME            NULL,
    PRIMARY KEY (id),
    KEY idx_sucursales_activo (activo, eliminado_en),
    KEY idx_sucursales_comuna (comuna_id),
    CONSTRAINT fk_sucursales_comuna
        FOREIGN KEY (comuna_id) REFERENCES comunas (id)
        ON DELETE SET NULL ON UPDATE RESTRICT
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
  COMMENT='Sucursales/oficinas de la funeraria. "Casa Matriz" sembrada al tenant:create.';


CREATE TABLE velatorios (
    id                  BIGINT UNSIGNED NOT NULL AUTO_INCREMENT
                        COMMENT 'PK auto-incremental.',
    nombre              VARCHAR(150)    NOT NULL
                        COMMENT 'Nombre del velatorio (ej: "Velatorio Las Condes", "Capilla del Carmen").',
    direccion           VARCHAR(200)        NULL,
    comuna_id           BIGINT UNSIGNED     NULL
                        COMMENT 'FK → comunas.id (SET NULL).',
    capacidad_personas  INT                 NULL
                        COMMENT 'Capacidad estimada (para mostrar al vendedor).',
    activo              TINYINT(1)      NOT NULL DEFAULT 1,
    creado_en           DATETIME        NOT NULL DEFAULT CURRENT_TIMESTAMP,
    actualizado_en      DATETIME        NOT NULL DEFAULT CURRENT_TIMESTAMP
                                                 ON UPDATE CURRENT_TIMESTAMP,
    eliminado_en        DATETIME            NULL,
    PRIMARY KEY (id),
    KEY idx_velatorios_activo (activo, eliminado_en),
    KEY idx_velatorios_comuna (comuna_id),
    CONSTRAINT fk_velatorios_comuna
        FOREIGN KEY (comuna_id) REFERENCES comunas (id)
        ON DELETE SET NULL ON UPDATE RESTRICT
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
  COMMENT='Velatorios propios o asociados. Vacía al inicio, admin la llena.';
