Facturación Electrónica
Desde hace algún tiempo
en México es obligatorio la facturación electrónica que a groso modo es la obligación
del contribuyen de emitir facturas, notas de crédito, recibos de nómina y demás comprobantes fiscales en un formato electrónico
siguiendo cuidadosamente un conjunto de reglas establecidas por el SAT, (Anexo 20); firmar el archivo con nuestro Certificado de Sello Digital (CDS) y enviarlo a un PAC para que nos lo valide y firme el SAT.
Si bien existen infinidad de soluciones en el mercado para
la generación de facturas y demás comprobantes Digitales por Internet (CFDIs),
muchas veces nos vemos en la necesidad de tener que desarrollar una solución propia
para dar respuesta a requerimientos muy específicos de nuestros usuario o
lograr la integración con los actuales sistemas que se encuentran en la
empresa, sea cual sea el caso si tu estas interesado en aprender a generar por
tus propios medios el archivo XML y la representación impresa del mismo este
blog te será de gran ayuda.
Dimensionando el trabajo
Si bien es cierto que la generación de Facturas electrónicas
no es un proceso sencillo tampoco te dejes espantar ni mucho menos te desanimes
solo debes armarte con paciencia, curiosidad y algunas herramientas informáticas.
¿Si somos los que lo hemos logrado por
que tu no lo harías?.
Las herramientas que utilizaremos son las siguientes pero no
te preocupes por tenerlas todas en este momento con forme avance en tu proyecto
las puedes ir descargando
1.-Visual estudio 2012 (Preferentmente)
2.-Heramienta XSD en línea de comandos
3.-Open SSL
4.-Itex Sharp
Pasos Para crear el CFDI
1.- Crear el archivo XML con toda la información requerida por
el SAT (emisor, receptor, conceptos etc. Descarga el anexo 20 que será tu libro
de cabecera durante casi todo el proyecto)
2.-Crear la cadena de verificación (esto es un resumen del documento creado en el paso anterior)
3.-Firmar la cadena de verificación con la FIEL o el CSD (Aquí las cosas se pondrían un poco ruda pero gracias a Dios hay mucha gente que colabora en la red y disponemos de una librería open source para esta tarea,Open SSL)
4.-Incorporar la cadena Firmada al XML creado
5.-Enviar el XML para ser sellado por el SAT
Si no hubo ningún error debemos crear la representación impresa
del XML
Divide y Vencerás
Lo primero en lo que nos enfocaremos en crear el archivo XML, despues en sellar el documento y finalmente en crear el PDF.
Para la creación del XML hay varias alternativas, en nuestro caso optaremos por la serialización-deserialización que en pocas palabras podemos definir de la siguiente manera:
Serializar: Consisten en representar un objeo y su estado en un lenguaje especifico, los lenguajes mas comunes para la serialización son JSON y XML.
Deserializar: Consiste en el proceso inverso, es decir tomar la definición del XML o JSON y crear un
objeto o instancia de clase.
Junto con estos conceptos entra en escena nuestra primer herramienta
xsd.exe tool Esta es una herramienta que viene integrada en el .Net Framework Software Developmen Kit y nos permite crear una clase a paritr de un XSD. Asi es partiendo de una definicion en XML podemos obtener una o más clases que representen el esquema definido en el archivo XSD
Esta es la manera en la que obtendremos nuestras clases a partir del XSD que nos da el SAT (desde http://www.sat.gob.mx/sitio_internet/cfd/3/cfdv32.xsd)
Para la creación del XML hay varias alternativas, en nuestro caso optaremos por la serialización-deserialización que en pocas palabras podemos definir de la siguiente manera:
Serializar: Consisten en representar un objeo y su estado en un lenguaje especifico, los lenguajes mas comunes para la serialización son JSON y XML.
Deserializar: Consiste en el proceso inverso, es decir tomar la definición del XML o JSON y crear un
objeto o instancia de clase.
Junto con estos conceptos entra en escena nuestra primer herramienta
xsd.exe tool Esta es una herramienta que viene integrada en el .Net Framework Software Developmen Kit y nos permite crear una clase a paritr de un XSD. Asi es partiendo de una definicion en XML podemos obtener una o más clases que representen el esquema definido en el archivo XSD
Esta es la manera en la que obtendremos nuestras clases a partir del XSD que nos da el SAT (desde http://www.sat.gob.mx/sitio_internet/cfd/3/cfdv32.xsd)