Creación de un Archivo XML (CFDI) con Visual Basic 2010 (.NET 4). Con prefijos y NameSpace automáticos.
Using ArchivoXML As XmlWriter = XmlWriter.Create("CFDIdePrueba.XML")
Dim Prefijo As String = "cfdi", EspacioDeNombre As String = "http://www.sat.gob.mx/cfd/3"
With ArchivoXML
.WriteStartElement(prefix:=Prefijo, localName:="Comprobante", ns:=EspacioDeNombre)
.WriteAttributeString(prefix:="xsi", localName:="schemaLocation", ns:="http://www.w3.org/2001/XMLSchema-instance", value:="http://www.sat.gob.mx/cfd/3 cfdv3.xsd")
.WriteAttributeString("version", "3.0")
.WriteAttributeString("folio", "000001")
.WriteAttributeString("fecha", DateAndTime.Now.ToString("s"))
.WriteAttributeString("sello", "Sello Digital Aquí")
.WriteAttributeString("formaDePago", "PAGO EN UNA SOLA EXHIBICION")
.WriteAttributeString("noCertificado", "30001000000100000800")
.WriteAttributeString("certificado", Convert.ToBase64String(CerSAT.GetRawCertData)) 'Ver Tema "Extracción del Número de Certificado del SAT en Visual Basic".
.WriteAttributeString("condicionesDePago", "CONTADO/CRÉDITO")
.WriteAttributeString("subTotal", "488.50")
.WriteAttributeString("descuento", "0.00")
.WriteAttributeString("total", "488.50")
.WriteAttributeString("metodoDePago", "Efectivo")
.WriteAttributeString("tipoDeComprobante", "ingreso")
'Emisor -----------------------------------
'.WriteStartElement("Emisor")
.WriteStartElement(prefix:=Prefijo, localName:="Emisor", ns:=EspacioDeNombre)
.WriteAttributeString("rfc", "XAXX010101")
.WriteAttributeString("nombre", "COMPAÑIA DE PRUEBA")
'DomicilioFiscal ---
'.WriteStartElement("DomicilioFiscal")
.WriteStartElement(prefix:=Prefijo, localName:="DomicilioFiscal", ns:=EspacioDeNombre)
.WriteAttributeString("calle", "Domicilio Prueba")
.WriteAttributeString("colonia", "Domicilio Prueba")
.WriteAttributeString("municipio", "Domicilio Prueba")
.WriteAttributeString("estado", "Domicilio Prueba")
.WriteAttributeString("pais", "MEXICO")
.WriteAttributeString("codigoPostal", "99000")
.WriteEndElement()
'---
.WriteEndElement()
'------------------------------------------ Emisor
'Receptor ---------------------------------
'.WriteStartElement("Receptor")
.WriteStartElement(prefix:=Prefijo, localName:="Receptor", ns:=EspacioDeNombre)
.WriteAttributeString("rfc", "XAXX010101")
.WriteAttributeString("nombre", "COMPAÑIA DE PRUEBA")
'Domicilio ---
'.WriteStartElement("Domicilio")
.WriteStartElement(prefix:=Prefijo, localName:="DomicilioFiscal", ns:=EspacioDeNombre)
.WriteAttributeString("calle", "Domicilio Prueba")
.WriteAttributeString("colonia", "Domicilio Prueba")
.WriteAttributeString("municipio", "Domicilio Prueba")
.WriteAttributeString("estado", "Domicilio Prueba")
.WriteAttributeString("pais", "MEXICO")
.WriteAttributeString("codigoPostal", "99000")
.WriteEndElement()
'---
.WriteEndElement()
'------------------------------------------ Receptor
'Partidas ---------------------------------
'.WriteStartElement("Conceptos")
.WriteStartElement(prefix:=Prefijo, localName:="Conceptos", ns:=EspacioDeNombre)
'Partida 1 ---
'.WriteStartElement("Concepto")
.WriteStartElement(prefix:=Prefijo, localName:="Concepto", ns:=EspacioDeNombre)
.WriteAttributeString("cantidad", "1")
.WriteAttributeString("unidad", "PIEZA")
.WriteAttributeString("noIdentificacion", "Código 123")
.WriteAttributeString("descripcion", "ARTÍCULO DE PRUEBA 1")
.WriteAttributeString("valorUnitario", "123.45")
.WriteAttributeString("importe", "123.45")
'Aquí va la información de aduanas.
.WriteEndElement()
'---
'Partida 2 ---
'.WriteStartElement("Concepto")
.WriteStartElement(prefix:=Prefijo, localName:="Concepto", ns:=EspacioDeNombre)
.WriteAttributeString("cantidad", "1")
.WriteAttributeString("unidad", "PIEZA")
.WriteAttributeString("noIdentificacion", "Código 987")
.WriteAttributeString("descripcion", "ARTÍCULO DE PRUEBA 2")
.WriteAttributeString("valorUnitario", "99.55")
.WriteAttributeString("importe", "99.55")
'Aquí va la información de aduanas.
.WriteEndElement()
'---
.WriteEndElement()
'------------------------------------------ Partidas
'Impuestos --------------------------------
'.WriteStartElement("Impuestos")
.WriteStartElement(prefix:=Prefijo, localName:="Impuestos", ns:=EspacioDeNombre)
.WriteAttributeString("totalImpuestosTrasladados", "9.55")
'Traslados ---
'.WriteStartElement("Traslados")
.WriteStartElement(prefix:=Prefijo, localName:="Traslados", ns:=EspacioDeNombre)
'Traslado -
'.WriteStartElement("Traslado")
.WriteStartElement(prefix:=Prefijo, localName:="Traslado", ns:=EspacioDeNombre)
.WriteAttributeString("impuesto", "IVA")
.WriteAttributeString("tasa", "16.00")
.WriteAttributeString("importe", "9.55")
.WriteEndElement()
'- Traslado
.WriteEndElement()
'--- Traslados
.WriteEndElement()
'------------------------------------------ Impuestos
.WriteEndDocument()
.Flush() 'Graba datos.
.Close()
End With
End Using
'--------------------------------------------------------------------------------------------------
A mi me costó mucho trabajo hacerlo, espero les sea útil. Saludos!

DESCARGA SOFTWARE PARA FACTURA ELECTRONICA DE AQUI.
Facturacion, Validacion, Addendas, Librerias de programacion, etc.
CARTA PORTE V3.1
ECODEX TIENE ESTOS NUEVOS DATOS DE CONTACTO :
Comercializacion y Ventas - Evelia Vicke evicke@ecodex.com.mx 33-16-03-03-48
Soporte - Humberto Guerrero soporte@ecodex.com.mx 33-34-90-46-03
.
Archivo XML (CFDI) en Visual Basic 2010 (.NET 4).
-
- Mensajes: 6
- Registrado: Mié Ene 18, 2012 8:30 pm
- Dado
- Mensajes: 15981
- Registrado: Mar Jul 06, 2010 7:56 pm
Re: Archivo XML (CFDI) en Visual Basic 2010 (.NET 4).
@pimelsoft
He visto que haz estado muy activo PUBLICANDO TU CODIGO QUE CON TANTO ESFUERZO HAZ DESARROLLADO, y quiero enviarte un enorme GRACIAS por compartirlo.
Si MEXICO no es tan grande como deberia es porque hace falta MAS GENTE COMO TU. =)
Saludos.
Admin.
He visto que haz estado muy activo PUBLICANDO TU CODIGO QUE CON TANTO ESFUERZO HAZ DESARROLLADO, y quiero enviarte un enorme GRACIAS por compartirlo.
Si MEXICO no es tan grande como deberia es porque hace falta MAS GENTE COMO TU. =)
Saludos.
Admin.
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!
-
- Mensajes: 6
- Registrado: Mié Ene 18, 2012 8:30 pm
Re: Archivo XML (CFDI) en Visual Basic 2010 (.NET 4).
Otra ventaja de utilizar XmlWriter es que no es necesario utilizar las secuencias de escape (& " < > '), ni para los acentos, ni “Ñ”, ya que este método garantiza la creación de un archivo XML válido que automáticamente escribe dichas secuencias.