martes, mayo 31, 2011

CFDI: Paso a paso con la libreria CFDI.NET

Pues bien, en respuesta a las preguntas acerca de como implementar la libreria CFDI.NET para generar un CFDI de principio a fin, aqui les dejo este post.

Una vez que agregues las referencias de la dll en visual studio, tienes que crear un objeto de tipo Comprobante de la siguiente manera:

Dim micomprobante As New CFDI.Comprobante

With micomprobante
.TruncarDecimales = True
.TruncarDecimalesLongitud = 2
.AgregaDatosEmisor("AAA010101AAA", "Empresa Demo", "Padre Mier", 1640, "", "Obispado", 53400, "Monterrey", "Nuevo Leon", "", "Mexico", "", True)
.AgregaDatosReceptor("CLI010101AAA", "Cliente Demo", "Padre Mier", 5512, "", "", 64060, "Monterrey", "Nuevo Leon", "", "Mexico", "")
.tipoDeComprobante = CFDI.ComprobanteTipoDeComprobante.ingreso
.formaDePago = "Pago en una sola exhibición"
.fecha = New Date(2011, 1, 8, 0, 16, 40)
.folio = 66
.tipoDeComprobante = CFDI.ComprobanteTipoDeComprobante.ingreso
.AgregaConcepto(2, 2, 2, 2, 2, "123456", "GDL", New Date(2010, 12, 12, 6, 0, 0))
.AgregaImpuesto(CFDI.ComprobanteImpuestosTrasladoImpuesto.IVA, 16)
.serie = ""
End With
Ahora crea el motor para generar los archivos que han de ser enviados al PAC
'crea el motor usando los certificados del demo del SAT
Dim mCFDI As New CFDI.MotorCFDI(archivocertificado, archivoLlave, _ contrasena,directorioDestino)

'agrega el comprobante al motor
mCFDI.Comprobantes.Add(micomprobante)

Dim resultado As CFDI.ResultadoProceso = mCFDI.GenerarArchivosPAC(True, False)


Envia los archivos usando el metodo que te proporcione el PAC, ese codigo depende de cada PAC. una vez que hayas recibido los archivos timbrados, puedes agregar las addendas

'vacia los comprobantes del motor
mCFDI.Comprobantes.Clear()

'procesa los archivos recibidos
For Each archivoRecibidoPAC As String In listaArchivosRecibidosPAC
'regenera el objeto a partir de un archivo fisico
Dim comprobanteConTimbre As CFDI.Comprobante = CFDI.Comprobante.DeserializeFromFile(archivoRecibidoPAC)

'para el demo, tengo la addenda en un txt
Dim textoXMLAddenda As String
Using
sr As New IO.StreamReader(archivoAddenda)
textoXMLAddenda = sr.ReadToEnd
End Using

'agrega el texto del xml que quieres adicionar al comprobante
comprobanteConTimbre.AgregaXMLAddenda(textoXMLAddenda)

'guarda el archivo con la addenda incluida, en este caso estoy sobreescribiendo el del PAC
comprobanteConTimbre.Serialize.Save(archivoRecibidoPAC)

'agrega el comprobante a la lista que se va a procesar para los PDF’s
mCFDI.Comprobantes.Add(comprobanteConTimbre)
Next

Por ultimo, genera el PDF

'reprocesa los comprobantes para generar los archivos del TFD y CBB
resultado = mCFDI.GenerarArchivosXMLPDF(False, False)

'establece cual sera el archivo de formado para los CFDI's
CFD.PDF.Globales.ArchivoREPX = "C:\MiFormatoCFDI.repx"

'envia los resultados al motor de PDF's
CFD.PDF.Generar.ArchivosPDF(resultado.ArchivosXMLPDF())

Cuando generas el PDF, se genera un archivo extension .pdf.xml, en este se incluyen algunos valores que seran de utilidad a la hora de generar el archivo PDF, por ejemplo, las cadenas original y de TFD


image


image



Ahi tienen, eso es todo lo que hay que hacer para generar archivos XML validos usando la libreria, sin problemas. Espero sus comentarios

8 comentarios:

  1. Anónimo5:26 p.m.

    Hola Humberto tengo el siguiente problema; si genero el archivo xml con el RFC demo no tengo bronca pero al usar mi licencia me sale este error: Folios Generados : 0 comprobante(s)No se encontró ninguna licencia para el El RFC 'ZZZ071009XI4' Sabes a que se debe esto?
    probe poniendo la licencia CFI Y CFDI antes o despues del motor y nada sigo con el error

    ResponderBorrar
  2. Anónimo6:04 p.m.

    Requieres una licencia para usar tu RFC, escribeme al correo : contacto[arroba]humbertomartinez.com

    saludos.

    ResponderBorrar
  3. Anónimo9:47 a.m.

    Hola Humberto,
    al generar la factura en la cadena original veo que en algunos incluye la descripcion y monto de la factura.
    en mi caso no solo genera una cadena original en todas lo mismo.
    ¿Es correcto esto?

    ResponderBorrar
  4. Hola amigo, tengo una duda esto lo generas apartir de un modulo como aplicacion de consola o un windows forms o puede ser de la misma forma?

    ResponderBorrar
  5. Anónimo3:42 p.m.

    Tengo un sistema que me hace una factura acumulando datos en una grilla y otros en campos de texto, quisiera saber que hacer para generar factura electrónica a partir de esto. estoy utilizando visual 2010, gracias de antemano

    ResponderBorrar
  6. Humberto Martinez espero estes bien, en mi caso tengo que agregar adendas a una factura generada, en que me recomiendas programar y mucho te agradecere tu respuesta y tiempo

    Vicente Reyes vtrmti@outlook.com

    ResponderBorrar
  7. Anónimo10:24 p.m.

    Es compatible con asp y asp.net ?
    mi correo es victorgallegos@yahoo.com

    ResponderBorrar
  8. Hola no puedo descargar la librería si podrías proporcionármela, gracias

    ResponderBorrar