Después del lanzamiento estable de Egeek.Sifen 0.3.0 comenzamos el siguiente incremento del core open source: el soporte stateless para eventos SIFEN v150. El primer paso no fue generar ni enviar eventos, sino asegurar una base normativa reproducible para todo lo que vendrá después.

El problema que estamos resolviendo

Los eventos SIFEN utilizan un conjunto propio de esquemas XML y dependencias transitivas. Depender de que esos archivos estén disponibles en Internet durante la ejecución haría que la validación fuera frágil y difícil de reproducir. Además, una diferencia aparentemente pequeña entre versiones de los XSD puede cambiar qué documentos son válidos.

Por eso el core necesita conservar un paquete oficial identificado, verificable y capaz de compilar completamente sin acceso a la red.

Lo incorporado

  • Doce XSD oficiales de eventos SIFEN v150 como recursos embebidos.
  • Un manifiesto de procedencia con URL de origen, fecha de obtención y hash SHA-256 de cada artefacto.
  • Resolución completa de imports e includes y compilación offline del conjunto de esquemas.
  • Una copia de referencia del WSDL, separada de la validación en tiempo de ejecución.
  • Pruebas de integridad para detectar cualquier cambio accidental en los recursos.
  • Una corrección en la selección de catálogos para permitir que los esquemas de documentos electrónicos y eventos convivan sin ambigüedades.

Cómo lo verificamos

La suite completa finalizó con 233 pruebas aprobadas, 14 pruebas opt-in omitidas y ningún error. El pipeline de integración continua también aprobó restore, build y test. El cierre transitivo del paquete se compiló sin realizar solicitudes de red.

Limitaciones actuales

Este avance todavía no habilita la generación, firma ni transmisión de eventos. No fue posible completar la reverificación del WSDL mediante mTLS en el entorno utilizado. Se conserva una captura oficial obtenida previamente; el WSDL se usa únicamente como referencia y no participa en el runtime.

Las futuras pruebas de integración con servicios reales se ejecutarán solamente en el ambiente TEST de SIFEN. No automatizaremos cancelaciones, inutilizaciones ni otros eventos contra producción.

Los ocho eventos que vamos a implementar

El alcance inicial de la versión 0.4.0 incluye cuatro eventos realizados por el emisor:

  • Cancelación: solicita la cancelación de un DTE mediante su CDC y el motivo correspondiente.
  • Inutilización de numeración: inutiliza un rango de números de un timbrado, establecimiento, punto de expedición y tipo de documento.
  • Nominación de Factura Electrónica: incorpora los datos de nominación admitidos para una FE.
  • Actualización de transporte: comunica cambios permitidos en los datos de transporte asociados a un DTE.

También incluye cuatro eventos realizados por el receptor:

  • Notificación de recepción: informa la recepción del documento y los datos requeridos por SIFEN.
  • Conformidad total o parcial: confirma completamente el DTE o registra una conformidad parcial con la fecha estimada correspondiente.
  • Disconformidad: comunica el desacuerdo del receptor y su motivo.
  • Desconocimiento: declara que el receptor desconoce la operación documentada.

El endoso y los eventos internos o especializados de la administración tributaria quedan fuera de esta primera versión.

Próximos pasos

El siguiente bloque implementará la firma XMLDSig específica sobre #IdEvento, incluida la firma local de múltiples eventos. Después construiremos el pipeline común de generación y validación para los ocho eventos inicialmente planificados, el envío de hasta 15 eventos firmados y su exposición segura mediante Web API.

El código fuente puede consultarse en el repositorio público de Egeek.Sifen. La referencia normativa oficial está disponible en la documentación técnica de e-Kuatia.

Por Miguel

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *