Agregar Addenda Soriana a XML cargado en VB.NET

2,642 views
Skip to first unread message

Antonio mendez

unread,
Sep 10, 2012, 4:59:42 PM9/10/12
to vfp-factura-ele...@googlegroups.com
Hola Amigos, tengo una duda, en la cual requiero me aclaren porfavor.

Pasa que el sistema actual generan la factura elect, foliada y sellada correctamente entonces genera el xml.
No programa en VFP y estoy a medias en VB.NET 2010, lo que hice fue crear una subrutina que carga desde un dir un archivo  Addenda.xml por ejemplo y lo muetra en una caja de texto bien formado, creo el nodo addenda el cual capturo los datos desde un windows forms y al generarlo me lee el xml que cargo y genera y lee el aml que capture con la estrucrura de <Addenda></Addenda>, de ahi eh investigado y aun no encuentro desde hace 3 semanas como pegar ese texto con una subrutina o funcion que al dar pegar este copie la estructura dela caja de texto addenda y la pegue en la estructura leida del XML que leia y cargue, y al darle guardar Forme uno solo.

Espero haberme explicado.

Saludos...

Alejandro Castrejon

unread,
Sep 10, 2012, 5:09:16 PM9/10/12
to vfp-factura-ele...@googlegroups.com
Hola Antonio, Eres de Hermosillo?

Saludos,
Alejandro Castrejon


--
Has recibido este mensaje porque estás suscrito al grupo "vfp-factura-electronica-mexico" de Grupos de Google.
Para ver este debate en la Web, visita https://groups.google.com/d/msg/vfp-factura-electronica-mexico/-/0Ps17s_GuH4J.
Para publicar una entrada en este grupo, envía un correo electrónico a vfp-factura-ele...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a vfp-factura-electroni...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/vfp-factura-electronica-mexico?hl=es.

Antonio mendez

unread,
Sep 10, 2012, 5:16:19 PM9/10/12
to vfp-factura-ele...@googlegroups.com
No, Soy de Reynosa.
Saludos...

Alejandro Castrejon

unread,
Sep 10, 2012, 5:22:54 PM9/10/12
to vfp-factura-ele...@googlegroups.com
¿A ver si entiendo bien deseas insertar una addenda a un XML ya creado, todo esto en .NET?

Antonio mendez

unread,
Sep 10, 2012, 5:34:13 PM9/10/12
to vfp-factura-ele...@googlegroups.com

SI, LA FACTELECT.XML esta correcta pero esta generada de un sistema VFP9, el cual tomo el XML y lo cargo y leo en untexbox y con otra subrutina creo la addenda que capturo mediante un windows form, entoncs al crearlo genera otro xml supongamos Addenda.xml y su contenido lo quiero agregar a el XML cargado, pero no se como copiar y pegar asi de secillo o me diante una subrutina tome el contenido solamente del Addenda.xml y lo inserte en el otro ya timbrado pero leyendolo y localizando el ultimo nodo y lo anada despues de algun otro cierto?
AHorita pondre como lo leo y como creo la addenda.


El lunes, 10 de septiembre de 2012 16:22:55 UTC-5, Alejandro escribió:
¿A ver si entiendo bien deseas insertar una addenda a un XML ya creado, todo esto en .NET?
El 10 de septiembre de 2012 14:16, Antonio mendez <mediador...@gmail.com> escribió:
No, Soy de Reynosa.
Saludos...

El 10 de septiembre de 2012 16:09, Alejandro Castrejon <castrejon...@gmail.com> escribió:
Hola Antonio, Eres de Hermosillo?

Saludos,
Alejandro Castrejon

El 10 de septiembre de 2012 13:59, Antonio mendez <mediador...@gmail.com> escribió:
Hola Amigos, tengo una duda, en la cual requiero me aclaren porfavor.

Pasa que el sistema actual generan la factura elect, foliada y sellada correctamente entonces genera el xml.
No programa en VFP y estoy a medias en VB.NET 2010, lo que hice fue crear una subrutina que carga desde un dir un archivo  Addenda.xml por ejemplo y lo muetra en una caja de texto bien formado, creo el nodo addenda el cual capturo los datos desde un windows forms y al generarlo me lee el xml que cargo y genera y lee el aml que capture con la estrucrura de <Addenda></Addenda>, de ahi eh investigado y aun no encuentro desde hace 3 semanas como pegar ese texto con una subrutina o funcion que al dar pegar este copie la estructura dela caja de texto addenda y la pegue en la estructura leida del XML que leia y cargue, y al darle guardar Forme uno solo.

Espero haberme explicado.

Saludos...

--
Has recibido este mensaje porque estás suscrito al grupo "vfp-factura-electronica-mexico" de Grupos de Google.
Para ver este debate en la Web, visita https://groups.google.com/d/msg/vfp-factura-electronica-mexico/-/0Ps17s_GuH4J.
Para publicar una entrada en este grupo, envía un correo electrónico a vfp-factura-electronica-mex...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a vfp-factura-electronica-mexico+unsubscribe@googlegroups.com

Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/vfp-factura-electronica-mexico?hl=es.

--
Has recibido este mensaje porque estás suscrito al grupo "vfp-factura-electronica-mexico" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a vfp-factura-electronica-mex...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a vfp-factura-electronica-mexico+unsubscribe@googlegroups.com

Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/vfp-factura-electronica-mexico?hl=es.

--
Has recibido este mensaje porque estás suscrito al grupo "vfp-factura-electronica-mexico" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a vfp-factura-electronica-mex...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a vfp-factura-electronica-mexico+unsubscribe@googlegroups.com

Antonio mendez

unread,
Sep 10, 2012, 5:56:10 PM9/10/12
to vfp-factura-ele...@googlegroups.com
Pongo mi subrutina para leer el XML TIMBRAO Y FOLIADO en un texbox.

Sub SubLeerArchivoXml()

        'Declaro variable para leer archivo Xml
        Dim reader As XmlTextReader = New XmlTextReader("c:\Addenda\Archivos\addenda.xml")

        'Ciclo de lectura
        Do While (reader.Read())
            Select Case reader.NodeType
                Case XmlNodeType.Element 'Mostrar comienzo del elemento.
                    txtContenido.Text += "<" + reader.Name
                    If reader.HasAttributes Then 'If attributes exist
                        While reader.MoveToNextAttribute()
                            'Mostrar nombre y valor del atributo.
                            txtContenido.Text += Space(1) + reader.Name + "=" + reader.Value
                        End While
                    End If
                    txtContenido.Text += ">" + vbCrLf
                Case XmlNodeType.Text 'Mostrar el texto de cada elemento.
                    txtContenido.Text += reader.Value
                Case XmlNodeType.EndElement 'Mostrar final del elemento.
                    txtContenido.Text += "</" + reader.Name
                    txtContenido.Text += ">" + vbCrLf
            End Select
        Loop

        'Para en el ultimo nodo

        'Call subCopiaPega()

        'Aki debe inicar el modificar



        'Import the last book node from doc2 into the original document.
        ' Dim newAddenda As XmlNode = doc.ImportNode(doc2.DocumentElement.LastChild, True)

        'doc.DocumentElement.AppendChild(newBook)


        'Cierra el Archivo
        reader.Close()

     
    End Sub


Y con este creo mi Addenda XML:

Sub SubCrearArchivoXml()

        'Declaro variable array para los libros
        Dim objAddenda As New stcAddenda
        Dim objAddendas As New ArrayList


        'Variable para el Archivo Xlml
        Dim myXmlTextWriter As XmlTextWriter = New XmlTextWriter("c:\Addenda\Archivos\addenda2.xml", System.Text.Encoding.UTF8)

        'Anado objAddenda
        'Anado unas caracteristicas de Addenda
        objAddenda.TipoAddenda = CBOTADENDA.Text
        objAddenda.Concepto = CBOCONCEPTO.Text
        objAddenda.NumTienda = TXTUNEG.Text
        objAddenda.NumProveedor = TXTNPROV.Text
        objAddenda.FolioRef = TXTFOREF.Text

        'AGREGO ADDENDA A COLECCION
        objAddendas.Add(objAddenda)

    

  


        'Formatea indentado el archivo
        myXmlTextWriter.Formatting = System.Xml.Formatting.Indented

        'Si escribe la inicializacion del Archivo
        myXmlTextWriter.WriteStartDocument(True)

        'Escribe un Comentario
        ' myXmlTextWriter.WriteComment("Esto es Fragmento de Addenda")

        'Crear el elemento principal del documento
        myXmlTextWriter.WriteStartElement("Complemento")
        myXmlTextWriter.WriteAttributeString("id", "identificador")

      

      
        '---------------------------ADDENDA-------------------------------

        'Ciclo para incluir los elementos de la colección
        For Each oAddenda As stcAddenda In objAddendas

            'Escribe el inicio del elemento cfdi: Addenda
            myXmlTextWriter.WriteStartElement("Addenda")


            'Crear un elemento llamado 'TipoAddenda' con un nodo de texto
            myXmlTextWriter.WriteStartElement("TipoAddenda")

            'Escribe el Titulo
            ' myXmlTextWriter.WriteString(oAddenda.TipoAddenda)

            'Crear un elemento llamado 'cfdi:Concepto' con un nodo de texto
            ' y cerrarlo en una línea.
            myXmlTextWriter.WriteElementString("TipoAddenda", oAddenda.TipoAddenda)


            'Cierra el elemento.
            myXmlTextWriter.WriteEndElement()

            'Crear un elemento llamado 'Concepto'.
            myXmlTextWriter.WriteStartElement("Concepto")

            'Crear un elemento llamado 'cfdi:Concepto' con un nodo de texto
            ' y cerrarlo en una línea.
            myXmlTextWriter.WriteElementString("Concepto", oAddenda.Concepto)

            'Crear un elemento llamado 'last-name' con un nodo de texto.
            'myXmlTextWriter.WriteElementString("cfdi:Concepto", oAddenda.Concepto)

            'Crear un elemento llamado 'UProveedor'.
            myXmlTextWriter.WriteStartElement("NumProveedor")

            'Crear un elemento llamado 'cfdi:Concepto' con un nodo de texto
            ' y cerrarlo en una línea.
            myXmlTextWriter.WriteElementString("NumProveedor", oAddenda.NumProveedor)

            'Crear un elemento llamado 'UProveedor'.
            myXmlTextWriter.WriteStartElement("NumTienda")

            'Crear un elemento llamado 'cfdi:NumTienda' con un nodo de texto
            ' y cerrarlo en una línea.
            myXmlTextWriter.WriteElementString("NumTienda", oAddenda.NumTienda)

            'Crear un elemento llamado 'UProveedor'.
            myXmlTextWriter.WriteStartElement("FolioRef")

            'Crear un elemento llamado 'cfdi:Concepto' con un nodo de texto
            ' y cerrarlo en una línea.
            myXmlTextWriter.WriteElementString("FolioRef", oAddenda.FolioRef)

            'Cerrar el elemento primario.
            myXmlTextWriter.WriteEndElement()


            'Cerrar el elemento primario.
            myXmlTextWriter.WriteEndElement()

            'Cerra el 3

            myXmlTextWriter.WriteEndElement()

            'Cerrar el 4
            myXmlTextWriter.WriteEndElement()

            'Cerrar el 5

            ' myXmlTextWriter.WriteEndElement()

        Next

        'Forza grabación a Disco
        myXmlTextWriter.Flush()

        'Cierra el Archivo
        myXmlTextWriter.Close()

    End Sub

'* CARGO Y LEO LA ADDENDA.XML
Sub SubLeerXmlAddenda()

        'Declaro variable para leer archivo Xml
        Dim reader As XmlTextReader = New XmlTextReader("c:\Addenda\Archivos\addenda3.xml")

        'Ciclo de lectura
        Do While (reader.Read())
            Select Case reader.NodeType
                Case XmlNodeType.Element 'Mostrar comienzo del elemento.
                    rtbEditor.Text += "<" + reader.Name
                    If reader.HasAttributes Then 'If attributes exist
                        While reader.MoveToNextAttribute()
                            'Mostrar nombre y valor del atributo.
                            txtContenido.Text += Space(1) + reader.Name + "=" + reader.Value
                        End While
                    End If
                    rtbEditor.Text += ">" + vbCrLf
                Case XmlNodeType.Text 'Mostrar el texto de cada elemento.
                    rtbEditor.Text += reader.Value
                Case XmlNodeType.EndElement 'Mostrar final del elemento.
                    rtbEditor.Text += "</" + reader.Name
                    rtbEditor.Text += ">" + vbCrLf
            End Select
        Loop

      

        'Cierra el Archivo
        reader.Close()

    End Sub

Y hasta aqui tengo cargado el XML y la addenda creada y leida en un texbox al igual que el XML Timbrado.
De ahi como hacerle para agregarle lo creado al XML leido?
Saludos...


Alejandro Castrejon

unread,
Sep 10, 2012, 7:06:03 PM9/10/12
to vfp-factura-ele...@googlegroups.com
  1. leer el xml en una variable 
  2. buscas la posicion de la string "</Comprobante>"
  3. Haces un substring de la posicion 0 hasta la posicion obtenida el paso anterior
  4. a la string resultante le sumas la string de la addenda mas "</Comprobante>"
  5. Grabas el string resultante como el XML con addenda

Para ver este debate en la Web, visita https://groups.google.com/d/msg/vfp-factura-electronica-mexico/-/yty1dmMo2F4J.

Para publicar una entrada en este grupo, envía un correo electrónico a vfp-factura-ele...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a vfp-factura-electroni...@googlegroups.com

Antonio mendez

unread,
Sep 10, 2012, 7:37:27 PM9/10/12
to vfp-factura-ele...@googlegroups.com
Solo para reconfirmar dudas.

  1. leer el xml en una variable (El XML timbrado cierto)
  2. buscas la posicion de la string "</Comprobante>" (un ciclo If "Palabra a buscar" then colocar un substring el cual tome el valor </Comprobante> y le sume la cadena addenda + la etiketa "</Comprobante>" y de ahi ya guardar el xml junto con la adenda.
  1. Haces un substring de la posicion 0 hasta la posicion obtenida el paso anterior
  2. a la string resultante le sumas la string de la addenda mas "</Comprobante>"
  3. Grabas el string resultante como el XML con addenda


    Vere la funcion substring para obetenr esos daots.

    Por lo pronot gracias manana te aviso como me fue.

    Alejandro Castrejon

    Para publicar una entrada en este grupo, envía un correo electrónico a vfp-factura-electronica-mexico@googlegroups.com.

    Para anular tu suscripción a este grupo, envía un correo electrónico a vfp-factura-electronica-mexico+unsubscribe@googlegroups.com
    Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/vfp-factura-electronica-mexico?hl=es.

    --
    Has recibido este mensaje porque estás suscrito al grupo "vfp-factura-electronica-mexico" de Grupos de Google.
    Para publicar una entrada en este grupo, envía un correo electrónico a vfp-factura-electronica-mexico@googlegroups.com.

    Para anular tu suscripción a este grupo, envía un correo electrónico a vfp-factura-electronica-mexico+unsubscribe@googlegroups.com
    Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/vfp-factura-electronica-mexico?hl=es.

    --
    Has recibido este mensaje porque estás suscrito al grupo "vfp-factura-electronica-mexico" de Grupos de Google.
    Para publicar una entrada en este grupo, envía un correo electrónico a vfp-factura-electronica-mexico@googlegroups.com.

    Para anular tu suscripción a este grupo, envía un correo electrónico a vfp-factura-electronica-mexico+unsubscribe@googlegroups.com
    Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/vfp-factura-electronica-mexico?hl=es.

    --
    Has recibido este mensaje porque estás suscrito al grupo "vfp-factura-electronica-mexico" de Grupos de Google.
    Para ver este debate en la Web, visita https://groups.google.com/d/msg/vfp-factura-electronica-mexico/-/yty1dmMo2F4J.

    Jorge Villamil

    unread,
    Jan 22, 2013, 10:09:04 PM1/22/13
    to vfp-factura-ele...@googlegroups.com
    Solo quiero comentar que los pasos aquí descritos funcionan de maravilla y una solución rápida y simple
    Por cierto, yo si estoy en Hermosillo, gracias y saludos...
    Alejandro Castrejon

    Para publicar una entrada en este grupo, envía un correo electrónico a vfp-factura-electronica-mexico@googlegroups.com.

    Para anular tu suscripción a este grupo, envía un correo electrónico a vfp-factura-electronica-mexico+unsubscribe@googlegroups.com
    Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/vfp-factura-electronica-mexico?hl=es.

    --
    Has recibido este mensaje porque estás suscrito al grupo "vfp-factura-electronica-mexico" de Grupos de Google.
    Para publicar una entrada en este grupo, envía un correo electrónico a vfp-factura-electronica-mexico@googlegroups.com.

    Para anular tu suscripción a este grupo, envía un correo electrónico a vfp-factura-electronica-mexico+unsubscribe@googlegroups.com
    Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/vfp-factura-electronica-mexico?hl=es.

    --
    Has recibido este mensaje porque estás suscrito al grupo "vfp-factura-electronica-mexico" de Grupos de Google.
    Para publicar una entrada en este grupo, envía un correo electrónico a vfp-factura-electronica-mexico@googlegroups.com.

    Para anular tu suscripción a este grupo, envía un correo electrónico a vfp-factura-electronica-mexico+unsubscribe@googlegroups.com
    Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/vfp-factura-electronica-mexico?hl=es.

    --
    Has recibido este mensaje porque estás suscrito al grupo "vfp-factura-electronica-mexico" de Grupos de Google.
    Para ver este debate en la Web, visita https://groups.google.com/d/msg/vfp-factura-electronica-mexico/-/yty1dmMo2F4J.

    Marcos Antonio Rios Angulo

    unread,
    Oct 11, 2013, 2:31:22 PM10/11/13
    to vfp-factura-ele...@googlegroups.com
    Buenos días!
    Encontré estos textos entre las paginas de internet, y un amigo tiene un problema similar, solo que nosotros no sabemos nada de programación, alguno de ustedes nos puede ofrecer una solución?
    de antemano gracias!

    Jorge Villamil

    unread,
    Oct 11, 2013, 3:48:44 PM10/11/13
    to vfp-factura-ele...@googlegroups.com
    Con gusto... que es lo que necesitas?
    Nosotros desarrollamos una solución y la empezamos a comercializar....


    De cualquier manera, te dejo mis datos por si quieres mandarme un correo y ya checamos que es lo que necesitas

    Saludos....
    Reply all
    Reply to author
    Forward
    0 new messages