Para esta nueva versión del CFDI (3.3), el SAT ha realizado varios cambios, uno de ellos y talvez de los más importantes es incluir catálogos que permitan saber que dato se debe capturar en ciertos campos.
Desde Facturando, aplaudimos esta iniciativa de la autoridad, ya que da claridad sobre la información y se disminuye la probabilidad de error, además de que permite reutilizar los mismos en diferentes tipos de documentos (complementos).
El problema surge cuando éste se vuelve muy grande, y es que el catálogo (catCFDI.xsd), al día de hoy:
- Pesa 6.5 MB.
- Contiene 166 mil registros (aprox.)
Los catálogos más grandes son:
- Códigos postales con 95,777 registros
- Claves de productos con 52,839 registros
- Colonias con 9,999 registros
- Claves de unidades con 3,306 registros
- Patentes aduanales con 3,111 registros
Como podrás observar, son más de 165,000 registros en tan solo 6 catálogos y es posible que en un futuro se agreguen más registros.
El problema con estos 6 catálogos es que el proceso de generación toma mucho más tiempo, ya que toda esa información se debe cargar a memoria y usarla para validar un CFDI antes de generarlo.
Siendo conscientes de esta situación, hemos decidido buscar una alternativa, para continuar usando la validación contra el schema, pero usando el menor tiempo posible y creemos que lo hemos logrado.
Validación contra el schema Lite
Lo que hemos hecho es implementar un nuevo tipo de validación contra el schema, pero manteniendo bajos los tiempos de generación del CFDI, esta validación la hemos llamado LITE por que se aplica toda la validación, menos los catálogos anteriormente mencionados, lo bueno de esta solución es que:
- Se mantiene la validación contra el schema
- El tiempo de generación de un XML de reduce un 50 % comparado contra si se hiciera la validación completa (FULL).
- Se disminuye considerablemente el uso de memoria y procesador.
El único inconveniente, es que no se usan los catálogos mencionados anteriormente, por lo que podrás generar un Pre-CFDI no válido, al permitirse un valor incorrecto en alguno de estos campos, aunque debes tener en cuenta:
- Los datos (código postal, claves de productos, etc) al ser catálogos, seguramente el usuario los seleccionará de algún combobox o algo por el estilo y no los va a capturar manualmente, por lo que, la probabilidad de que se dé un error en esos datos es prácticamente nula.
- Una vez generado el XML, este es enviando al PAC, el cual debe hacer una validación completa del documento antes de generar el CFDI, por lo que, sí existiera un error, este lo detectaría y no lo timbraría, con esto se elimina la posibilidad de generar un CFDI no válido.
Validación FULL
Si consideras que lo mejor para tí, es que la librería haga una validación completa del XML antes de generarlo, como se venía haciendo en versiones anteriores, lo podrás hacer activando esta opción de forma manual, ya que la validación LITE es la que trae por defecto él producto, solo debes tener en cuenta que se incrementan los tiempos de generación (300 ms a 600 ms aprox) y el consumo de memoria de memoria y de procesador.
En los ejemplos que trae la librería se muestra como activar la validación FULL, si tienes dudas al respecto puedes contactarnos y con gusto te apoyaremos.
Como punto final, queremos comentarte que la validación LITE aplica para
- CFDI 3.3
- Complemento comercio exterior 1.1
- Recibo de pago 1.0
- Recibo de nómina
- Solamente para el proceso de generación, para el proceso de recepción (leer un XML) se aplica, siempre, la validación FULL
Si tienes alguna duda con respecto a este tema, te invitamos a que nos contactes por medio del foro que aparece en nuestra página www.facturando.mx donde con gusto un asesor te atenderá.
Hasta la próxima.