CREATE TABLE IF NOT EXISTS facturacion_comprobante_eventos (
    id TINYINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    codigo VARCHAR(30) NOT NULL,
    descripcion VARCHAR(120) NOT NULL,
    comentario VARCHAR(255) NULL COMMENT 'Descripcion extendida del evento',
    estado TINYINT(1) NOT NULL DEFAULT 1,
    created_at DATETIME NOT NULL,
    updated_at DATETIME NULL,
    deleted_at DATETIME NULL,
    UNIQUE KEY uq_fact_comprobante_eventos_codigo (codigo)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT IGNORE INTO facturacion_comprobante_eventos
    (id, codigo, descripcion, comentario, estado, created_at)
VALUES
    (1, 'GENERADO', 'Generado', 'Se genero el XML del comprobante', 1, NOW()),
    (2, 'FIRMADO', 'Firmado', 'Se firmo el XML del comprobante', 1, NOW()),
    (3, 'ZIPIADO', 'Zipiado', 'Se comprimio el XML firmado en ZIP', 1, NOW()),
    (4, 'ENVIADO', 'Enviado', 'Se envio el ZIP a SUNAT u otro endpoint', 1, NOW()),
    (5, 'ACEPTADO', 'Aceptado', 'SUNAT acepto el comprobante', 1, NOW()),
    (6, 'RECHAZADO', 'Rechazado', 'SUNAT rechazo el comprobante', 1, NOW()),
    (7, 'ERROR', 'Error', 'Ocurrio un error durante el proceso', 1, NOW()),
    (8, 'VENCIDO', 'Vencido', 'El comprobante supero la fecha maxima de envio automatico', 1, NOW());

CREATE TABLE IF NOT EXISTS facturacion_comprobante_historial (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    comprobante_id BIGINT UNSIGNED NOT NULL,
    evento_id TINYINT UNSIGNED NOT NULL COMMENT 'Referencia a facturacion_comprobante_eventos.id',
    detalle VARCHAR(500) NULL,
    archivo_ruta VARCHAR(600) NULL,
    ticket VARCHAR(80) NULL COMMENT 'Ticket SUNAT cuando el evento lo genera',
    respuesta LONGTEXT NULL,
    created_by BIGINT UNSIGNED NULL,
    updated_by BIGINT UNSIGNED NULL,
    created_at DATETIME NOT NULL,
    updated_at DATETIME NULL,
    deleted_at DATETIME NULL,
    KEY idx_fact_hist_comprobante (comprobante_id),
    KEY idx_fact_hist_evento (evento_id),
    KEY idx_fact_hist_fecha (created_at),
    CONSTRAINT fk_fact_hist_comprobante FOREIGN KEY (comprobante_id) REFERENCES facturacion_comprobantes(id),
    CONSTRAINT fk_fact_hist_evento FOREIGN KEY (evento_id) REFERENCES facturacion_comprobante_eventos(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
