Archivo XML (CFDI) en Visual Basic 2010 (.NET 4).
Publicado: Mié Ene 18, 2012 9:40 pm
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!
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!