-- =============================================================
-- LIS 05 — Motor de precios y convenios
-- Crea: lab_tarifas_id, lab_tarifas, lab_empresas,
--        lab_empresa_subgrupos, lab_examenes_empresa
-- =============================================================

-- -----------------------------------------------------------
-- Catálogo de tarifas
-- -----------------------------------------------------------
CREATE TABLE IF NOT EXISTS lab_tarifas_id (
    id              INT             NOT NULL,
    nombre          VARCHAR(150)    NOT NULL,
    tarifa_origen   INT             DEFAULT NULL
        COMMENT 'Si != NULL, esta tarifa = tarifa_origen * (1 + porcentaje/100)',
    porcentaje      DECIMAL(8,4)    NOT NULL DEFAULT 0
        COMMENT '0 = precios fijos, >0 = derivada porcentualmente',
    PRIMARY KEY (id),
    KEY idx_origen (tarifa_origen)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
  COMMENT='Catálogo de tarifas — replica TARIFAID Firebird';

-- -----------------------------------------------------------
-- Precios por examen y tarifa
-- -----------------------------------------------------------
CREATE TABLE IF NOT EXISTS lab_tarifas (
    id              INT UNSIGNED    NOT NULL AUTO_INCREMENT,
    cod_examen_legacy VARCHAR(20)   NOT NULL   COMMENT 'CODIGO original Firebird para trazabilidad',
    exam_tipo_id    INT UNSIGNED    DEFAULT NULL,
    tarifa_id       INT             NOT NULL,
    valor           DECIMAL(12,2)   NOT NULL,
    recargo_urg     DECIMAL(12,2)   NOT NULL DEFAULT 0,
    recargo_fes     DECIMAL(12,2)   NOT NULL DEFAULT 0,
    recargo_esp     DECIMAL(12,2)   NOT NULL DEFAULT 0,
    PRIMARY KEY (id),
    UNIQUE KEY uq_examen_tarifa (exam_tipo_id, tarifa_id),
    KEY idx_legacy  (cod_examen_legacy),
    KEY idx_tarifa  (tarifa_id),
    CONSTRAINT fk_tar_tarifa FOREIGN KEY (tarifa_id)
        REFERENCES lab_tarifas_id (id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
  COMMENT='Precios por examen y tarifa — replica TARIFA Firebird';

-- -----------------------------------------------------------
-- Empresas / convenios
-- -----------------------------------------------------------
CREATE TABLE IF NOT EXISTS lab_empresas (
    nit                     VARCHAR(20)  NOT NULL,
    nombre                  VARCHAR(200) NOT NULL,
    razon_social            VARCHAR(200) DEFAULT NULL,
    tarifa_id               INT          DEFAULT NULL,
    descuento_pct           DECIMAL(8,4) NOT NULL DEFAULT 0,
    codigo_eps              VARCHAR(20)  DEFAULT NULL,
    tipo_usuario            VARCHAR(10)  DEFAULT NULL   COMMENT 'Tipo usuario para facturación',
    tipo_usuario_sispro     VARCHAR(10)  DEFAULT NULL,
    cod_contrato            VARCHAR(50)  DEFAULT NULL,
    cod_tercero             VARCHAR(50)  DEFAULT NULL,
    centro_costo            VARCHAR(50)  DEFAULT NULL,
    req_autoriza            TINYINT(1)   NOT NULL DEFAULT 0
        COMMENT '1 = exige número de autorización en recepción',
    activa                  TINYINT(1)   NOT NULL DEFAULT 1,
    PRIMARY KEY (nit),
    KEY idx_tarifa (tarifa_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
  COMMENT='Empresas y convenios — replica EMPRESA Firebird';

-- -----------------------------------------------------------
-- Subgrupos de empresa
-- -----------------------------------------------------------
CREATE TABLE IF NOT EXISTS lab_empresa_subgrupos (
    id              INT UNSIGNED    NOT NULL AUTO_INCREMENT,
    nit_empresa     VARCHAR(20)     NOT NULL,
    subgrupo        VARCHAR(100)    NOT NULL,
    tarifa_id       INT             DEFAULT NULL,
    ref_subgrupo    VARCHAR(50)     DEFAULT NULL,
    cod_contrato    VARCHAR(50)     DEFAULT NULL,
    PRIMARY KEY (id),
    UNIQUE KEY uq_empresa_sub (nit_empresa, subgrupo),
    KEY idx_tarifa (tarifa_id),
    CONSTRAINT fk_esub_empresa FOREIGN KEY (nit_empresa)
        REFERENCES lab_empresas (nit) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
  COMMENT='Subgrupos por empresa — replica EMPRESA_SUB Firebird';

-- -----------------------------------------------------------
-- Códigos de examen alternos por empresa (para interfaces)
-- -----------------------------------------------------------
CREATE TABLE IF NOT EXISTS lab_examenes_empresa (
    nit_empresa         VARCHAR(20)  NOT NULL,
    cod_examen_legacy   VARCHAR(20)  NOT NULL,
    exam_tipo_id        INT UNSIGNED DEFAULT NULL,
    codigo_empresa      VARCHAR(50)  NOT NULL,
    PRIMARY KEY (nit_empresa, cod_examen_legacy),
    KEY idx_exam (exam_tipo_id),
    CONSTRAINT fk_ee_empresa FOREIGN KEY (nit_empresa)
        REFERENCES lab_empresas (nit) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
  COMMENT='Códigos alternos por empresa — replica EXAMEN_EMP Firebird';
