lunes, agosto 15, 2011

HowTo: Timbrar usando el servicio de Buzon Fiscal

Para timbrar un documento xml usando el servicio de BuzonFiscal utilizando la version 2.6 o superior de las librerias CFDI.NET revisa el sitio oficial:

http://gooru.mx/Noticias/tabid/69/EntryId/33/CFDI-NET-Timbrar-usando-BuzonFiscal.aspx

Nos mudamos a Gooru.mx

Para futuras solicitudes de informacion, descargas, noticias relacionadas con los componentes CFD.NET / CFDI.NET, por favor visiten www.gooru.mx

los correos siguen siendo :

contacto [arroba] humbertomartinez.com
hm [arroba] gooru.mx

:D

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

lunes, mayo 30, 2011

Addenda de AMECE usando las librerias CFD / CFDI

Con las librerias CFD, es muy sencillo agregar addendas a un CFD o CFDI incrustando un fragmento de XML a manera de string .

Sin embargo tambien existe la posibilidad de utilizar una serie de objetos previamente construidos por nuestra parte y serializarlos para hacer las cosas aun mas sencillas.

En este ejemplo estoy utilizando un objeto que representa la especificacion de addenda de la AMECE, para construir el xml que necesito incrustar en mi CFD

Este es el ejemplo que me envian

image

Desde visual studio solo tengo que escribir el siguiente codigo

'crea el objeto de la addenda
Dim addenda As New CFD.Addendas.AMECE.Addenda.AddendaRequestForPayment

With addenda
'atributos
.DeliveryDate = "2010-12-17"
.documentStatus = "ORIGINAL"
.documentStructureVersion = "AMC7.1"
.contentVersion = "1.3.1"
.type = "SimpleInvoiceType"

'ELEMENTO: <requestForPaymentIdentification>
.requestForPaymentIdentification = New List(Of CFD.Addendas.AMECE.Addenda.AddendaRequestForPaymentRequestForPaymentIdentification)
Dim pi As New CFD.Addendas.AMECE.Addenda.AddendaRequestForPaymentRequestForPaymentIdentification
pi.entityType = "INVOICE"
pi.uniqueCreatorIdentification = "ABC9999999"
.requestForPaymentIdentification.Add(pi)

'ELEMENTO: <specialInstruction>
.specialInstruction = New List(Of CFD.Addendas.AMECE.Addenda.AddendaRequestForPaymentSpecialInstruction)
Dim si As New CFD.Addendas.AMECE.Addenda.AddendaRequestForPaymentSpecialInstruction
si.code = "SOC"
si.text = "1000"
.specialInstruction.Add(si)

'ELEMENTO: <orderIdentification>
.orderIdentification = New List(Of CFD.Addendas.AMECE.Addenda.referenceIdentification)
Dim oi As New CFD.Addendas.AMECE.Addenda.referenceIdentification
oi.type = "ON"
oi.Value = "45000888722"
.orderIdentification.Add(oi)

End With

y el resultado en XML es


image


para incrustarlo en el el CFD, usa el metodo AgregaXMLAddenda()


cfd.AgregaXMLAddenda(addenda.Serialize, False, False)

miércoles, abril 20, 2011

Its LightSwitch, im in love.

Soy fan de las herramientas para productividad entonces no es ninguna sorpresa que en cuanto supe de LightSwitch de Visual Studio 2010, inmediatamente lo descargue y comence a jugar con el.

Las ventajas que le veo hasta ahora son:

  1. Estas usando visual studio para generar aplicaciones casi instantaneas
  2. Puedes extender de manera natural las aplicaciones escribiendo tu propio codigo
  3. Las aplicaciones son generadas con SilverLight, lo que te permite publicarlas para el escritorio o ambiente web sin tener que hacer practicamente ningun ajuste
  4. Visual Studio LighSwitch te permite publicar tus aplicaciones directamente sobre Azure!!!

Ahora, no todo es miel, tambien hay algunas cosas que no estan TAN COOL

  1. Debido a que las aplicaciones son generadas con SilverLight, no puedes importar directamente tus librerias existentes .NET, unicamente se permiten referencias a librerias compiladas especificamente para SilverLight
  2. No hay un disenador de pantallas en la manera en que visual studio me tiene acostumbrado, tienes que usar unos templates ya preestablecidos y aunque en teoria puedes generar tus propios templates aun no lo he intentado. (Esto en parte es buena senal, porque he podido hacer lo que necesito SIN tener que generar mis propios templates).

En resumen, creo que esta version BETA 2 va muy bien,  y definitivamente es un producto al que no hay que perder de vista.

Visual Studio 2010 LightSwitch Developer Center

martes, abril 12, 2011

CFD / CFDI : Facil con la libreria .NET

Sabias que tambien puedes generar los archivos XML requeridos por el servicio de timbrado (PAC) usando la libreria? Solo descarga la version de evaluacion y usa la libreria Gooru.Componentes.CFDI

        Dim micomprobante As New CFDI.Comprobante
With micomprobante
.TruncarDecimales = True
.TruncarDecimalesLongitud = 2
.AgregaDatosEmisor("DEMO101010A1A", "EMPRESA S.A. de C.V.", _
"AV. JUAREZ", "1111", "", _
"CENTRO", "64000", "MONTERREY", _
"NUEVO LEON", "MONTERREY", "MEXICO", "", True)

.AgregaDatosReceptor("PEPJ750101A1A", "JUAN PEREZ PEREZ", _
"AV UNIVERSIDAD", "123", _
"", "CENTRO", _
"64000", "MONTERREY", "NUEVO LEON", _
"MONTERREY", "MEXICO", "")

.formaDePago = "PAGO EN UNA SOLA EXHIBICION"
.fecha = Now
.tipoDeComprobante = CFDI.ComprobanteTipoDeComprobante.ingreso
.AgregaConcepto(1, "CAPSULAS", "", "VIBRAMICINA 100MG 10", 244)
.AgregaImpuesto(CFDI.ComprobanteImpuestosTrasladoImpuesto.IVA, 16)
.folio = 1
.serie = ""
End With

lunes, enero 31, 2011

How To: Agregar Impuesto Local

Este es un ejemplo de como agregar impuestos locales al comprobante fiscal digital

 
With miComprobante
     Dim imploc As New CFD.ImpuestosLocales
     imploc.AgregaRetencion(New CFD.ImpuestosLocalesRetencionesLocales("IVA", 16, 1000))
     imploc.AgregaTraslado(New CFD.ImpuestosLocalesTrasladosLocales("ISR", 2, 100))
     .Complemento = New CFD.ComprobanteComplemento()
     .Complemento.Any = imploc.Serialize
End With

miércoles, enero 05, 2011

How To : Determinar errores en el proceso de generacion de comprobantes o reporte mensual

Para examinar los posibles errores en la generacion de los comprobantes fiscales digitales y el reporte mensual,  las funciones

  • CFD.MotorCFD.ProcesarComprobantes
  • CFD.Generar.ReporteMensual

Regresan un objeto de tipo CFD.ResultadoProceso, este objeto tiene una propiedad de tipo booleano llamada Errores esta propiedad nos muestra si dentro del proceso se encontro algun problema. 

Ademas el objeto CFD.ResultadoProceso cuenta con 2 colecciones de tipo CFD.Comprobante

  • ComprobantesGenerados
  • ComprobantesNOGenerados

Examinando la propiedad ErrorGeneracion de cada uno de los objetos en la lista de ComprobantesNOGenerados podemos averiguar por que no se genero el comprobante.

image

Ahora intentalo con el reporte mensual

image