Hola a todos!

El siguiente post está dedicado a aquellos que quieren validar los XML que generen por medio de la Facturación Electrónica de SUNAT.

Como muchos ya deben de haberse percatado, estos XML tienen espacios de nombres que sólo los entiende la entidad peruana SUNAT, lo cual puede ser un poco complejo buscar esta información en Google.

Felizmente, encontré la forma de validar dicha operación y sobretodo gratis.
Ahora también pueden usar las herramientas de Altova, pero para mi gusto personal es demasiado cara.

La solución

Para mi caso usaré Notepad++ como editor de texto y sus ya tan conocidos plugins que se pueden instalar. En este caso hablo de XML Tools.

Al principio me pareció un poco dificil entender la herramienta, pero poco a poco fui descubriendo que es un buen complemento a tener en cuenta siempre que usemos este editor ligero sobre Windows.

Una vez instalado, basta con colocar el XML del documento electrónico en una carpeta cualquier de su respectivo disco, y crear una una subcarpeta “common” y ahi copiar los archivos XSD que pueden encontrar aquí.

Luego en el Menú Plugins, seleccionar la opción XML Tools, y luego escoger “Validate now”, se mostrará una ventana en el cual pide escoger el XSD para la validación, y dado que son muchos XSD escribiremos lo siguiente:

  • common\UBLPE-Invoice-1.0.xsd para las facturas y boletas
  • common\UBL-CreditNote-2.0.xsd para las Notas de Crédito
  • common\UBL-DebitNote-2.0.0.xsd para las Notas de Débito

xmltools

El hecho de haber colocado los demás XSD dentro de la carpeta common hará que el proceso de validación de XML Tools busque los demás XSD relacionados y completará todas las dependencias.

Si tienes el código de error 0306 – No se puede leer (parsear) el XML al enviar el documento a través del Servicio Web, entonces con esta validación ya evitarás dicho error.

[Actualización]

Si por el contrario, cuando el XML tiene un valor no reconocido por los XSD te saldrá una ventana así:

validacionerror

Por ejemplo, a propósito en el tag TaxAmount le puse un valor 1000,0.0 lo cual evidentemente no es válido.

Si te ha servido este post, no dudes en compartirlo.

El conocimiento se comparte, así todos aprenderemos.
Un saludo.

Anuncios