sábado, 4 de abril de 2015

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)