Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-01-2024
djatila djatila is offline
Registrado
 
Registrado: nov 2022
Posts: 6
Poder: 0
djatila Va por buen camino
Buenas,
Estoy en visual basic studio , he referenciado el wsdl para generar las clases. Pero estoy atascado intentando asignar valores al nodo altaFactuSistemaFacturacion.RegistroAltaFacturas , me da error el valor de tipo FacturasEmitidasType no se puede convertir en FacturasEmitidasType(), altaFactuSistemaFacturacion.cabecera si se asigna y aparece despues al serializar la clase.
Gracias de antemano.
Responder Con Cita
  #2  
Antiguo 07-01-2024
nincillo nincillo is offline
Miembro
 
Registrado: may 2017
Posts: 151
Poder: 8
nincillo Va por buen camino
Cita:
Empezado por djatila Ver Mensaje
Buenas,
Estoy en visual basic studio , he referenciado el wsdl para generar las clases. Pero estoy atascado intentando asignar valores al nodo altaFactuSistemaFacturacion.RegistroAltaFacturas , me da error el valor de tipo FacturasEmitidasType no se puede convertir en FacturasEmitidasType(), altaFactuSistemaFacturacion.cabecera si se asigna y aparece despues al serializar la clase.
Gracias de antemano.
¿Podrías poner un trozo de código donde se pueda ver como "llegas" a poder meter datos al nodo cabecera mediante el wsdl?. Es que yo en Delphi soy incapaz. Quizás viéndolo en otro lenguaje se me ocurra como hacerlo. (Aprovechando, ¿podrías decirme como importar un wsdl en Visual Basic Studio aunque sea por privado para no "mezclar" en ese hilo?)

Sobre tu pregunta, sino me confundo, al menos en Delphi, RegistroAltaFacturas es del tipo Array_Of_FacturasEmitidasType. Con lo cual FacturasEmitidasType entiendo que se corresponde a cada de las facturas que vamos a enviar en el "lote", y todas ellas las tenemos que ir metiendo en un array que es lo que luego pasamos como parámetro a la llamada AltaFactuSistemaFacturacion.
Responder Con Cita
  #3  
Antiguo 07-01-2024
djatila djatila is offline
Registrado
 
Registrado: nov 2022
Posts: 6
Poder: 0
djatila Va por buen camino
Cita:
Empezado por nincillo Ver Mensaje
¿Podrías poner un trozo de código donde se pueda ver como "llegas" a poder meter datos al nodo cabecera mediante el wsdl?. Es que yo en Delphi soy incapaz. Quizás viéndolo en otro lenguaje se me ocurra como hacerlo. (Aprovechando, ¿podrías decirme como importar un wsdl en Visual Basic Studio aunque sea por privado para no "mezclar" en ese hilo?)
Leí en un post anterior que aquí había gente también en visual basic, así que respondo por aquí, así espero que sirva a mas gente. (si molesta, avísenme)

Para importar el wsdl en visual basic studio
-Proyecto -Agregar referencia de servicio - botón avanzadas - botón agregar referencia web
-en direccion = SistemaFacturacion.wsdl
-botón flechita - cambiar el nombre de la clase si queréis yo puse MiSFI -y agregar referencia

También esta la opción con el comando xsd de generar las clases.vb con los ficheros xsd, pero esto no es necesario si se importo el wsdl.

Aqui te pongo como estoy haciendo para generar el xml , este codigo funciona hasta el cierre de la cabecera.

Código:
        Dim altaFactuSistemaFacturacion As New AltaFactuSistemaFacturacion
        'Cabecera
        Dim cabecera As New MiSFI.Cabecera
        Dim obligadoEmision As New MiSFI.PersonaFisicaJuridicaESType
        Dim tipoRegistroAEAT As New MiSFI.TipoRegistroAEATType
        '/Cabecera
        Dim registroAltaFacturas As New MiSFI.FacturasEmitidasType
        Dim RegistroFacturacion(2) As MiSFI.RegistroFacturacionType
        Dim datosControl As New MiSFI.DatosControlType
        'idFactura
        Dim idFactura As New MiSFI.IDFacturaExpedidaType 'MiSFI.IDFacturaARType
        Dim idEmisorFactura As New MiSFI.IDFacturaExpedidaTypeIDEmisorFactura
        '/idFactura
        Dim Destinatarios As New MiSFI.PersonaFisicaJuridicaType
        Dim idDestinatario As New MiSFI.PersonaFisicaJuridicaESType
        Dim detalleDesglose As New MiSFI.DetalleType ' DetalleDesglose
        Dim encadenamientoRegistroAnterior As New MiSFI.EncadenamientoFacturaAnteriorType '.EncadenamientoRegistroAnterior
        Dim idEmisorFacturaRegistroAnterior As New MiSFI.EncadenamientoFacturaAnteriorTypeIDEmisorFacturaRegistroAnterior  '.IDEmisorFacturaRegistroAnterior
        Dim sistemaInformatico As New MiSFI.SistemaInformaticoType
        'Cabecera
        cabecera.IDVersion = MiSFI.VersionType.Item10  '"1.0"
        obligadoEmision.NombreRazon = "XXXXX"
        obligadoEmision.NIF = "XXXXX"
        tipoRegistroAEAT = MiSFI.TipoRegistroAEATType.T0 ' "T0"
        cabecera.ObligadoEmision = obligadoEmision
        cabecera.TipoRegistroAEAT = tipoRegistroAEAT
        '/Cabecera
        'RegistroAltaFacturas
        'RegistroFacturacion
        'IDFactura
        idEmisorFactura.NIF = "XXXXX"
        idFactura.NumSerieFacturaEmisor = "12345"
        idFactura.FechaExpedicionFacturaEmisor = "13-11-2023"
        idFactura.IDEmisorFactura = idEmisorFactura
        '/IDfactura  

        'Estas dan error
        'RegistroFacturacion(0).IDFactura = idFactura
        'RegistroFacturacion(0).NombreRazonEmisor = "certificado uno telematicas"
        'RegistroFacturacion(0).TipoRegistroSIF = MiSFI.TipoRegistroSIFType.S0 ' "S0"
        'RegistroFacturacion(0).TipoFactura = MiSFI.ClaveTipoFacturaType.F1 '"F1"
        'RegistroFacturacion(0).DescripcionOperacion = "Descripc"

        idDestinatario.NombreRazon = "XXXXX"
        idDestinatario.NIF = "XXXXX"

        datosControl.Huella = "Huella"
        datosControl.TipoHash = "01"


        registroAltaFacturas.RegistroFacturacion = RegistroFacturacion(0)
        registroAltaFacturas.DatosControl = datosControl


        altaFactuSistemaFacturacion.Cabecera = cabecera
        'esta da error 
        'altaFactuSistemaFacturacion.RegistroAltaFacturas = registroAltaFacturas

        Dim ns As New XmlSerializerNamespaces()
        ns.Add("soapenv", ".......")
        ns.Add("sum", "........SuministroLR.xsd")
        ns.Add("sum1", ".......SuministroInformacion.xsd")

        'serializamos
        Dim serializer As New XmlSerializer(GetType(MiSFI.AltaFactuSistemaFacturacion))
        Using writer As New StreamWriter("C:\xml\archivo.xml")
            serializer.Serialize(writer, altaFactuSistemaFacturacion, ns)
        End Using
tuve que quitar las url porque no tengo permisos....

Cita:
Empezado por nincillo Ver Mensaje
Sobre tu pregunta, sino me confundo, al menos en Delphi, RegistroAltaFacturas es del tipo Array_Of_FacturasEmitidasType. Con lo cual FacturasEmitidasType entiendo que se corresponde a cada de las facturas que vamos a enviar en el "lote", y todas ellas las tenemos que ir metiendo en un array que es lo que luego pasamos como parámetro a la llamada AltaFactuSistemaFacturacion.
Gracias por responder. pero en esas estoy y no lo consigo, algo estoy haciendo mal......
Responder Con Cita
  #4  
Antiguo 07-01-2024
nincillo nincillo is offline
Miembro
 
Registrado: may 2017
Posts: 151
Poder: 8
nincillo Va por buen camino
Cita:
Empezado por djatila Ver Mensaje
Leí en un post anterior que aquí había gente también en visual basic, así que respondo por aquí, así espero que sirva a mas gente. (si molesta, avísenme)

Para importar el wsdl en visual basic studio
-Proyecto -Agregar referencia de servicio - botón avanzadas - botón agregar referencia web
-en direccion = SistemaFacturacion.wsdl
-botón flechita - cambiar el nombre de la clase si queréis yo puse MiSFI -y agregar referencia

También esta la opción con el comando xsd de generar las clases.vb con los ficheros xsd, pero esto no es necesario si se importo el wsdl.

Aqui te pongo como estoy haciendo para generar el xml , este codigo funciona hasta el cierre de la cabecera.

Código:
        Dim altaFactuSistemaFacturacion As New AltaFactuSistemaFacturacion
        'Cabecera
        Dim cabecera As New MiSFI.Cabecera
        Dim obligadoEmision As New MiSFI.PersonaFisicaJuridicaESType
        Dim tipoRegistroAEAT As New MiSFI.TipoRegistroAEATType
        '/Cabecera
        Dim registroAltaFacturas As New MiSFI.FacturasEmitidasType
        Dim RegistroFacturacion(2) As MiSFI.RegistroFacturacionType
        Dim datosControl As New MiSFI.DatosControlType
        'idFactura
        Dim idFactura As New MiSFI.IDFacturaExpedidaType 'MiSFI.IDFacturaARType
        Dim idEmisorFactura As New MiSFI.IDFacturaExpedidaTypeIDEmisorFactura
        '/idFactura
        Dim Destinatarios As New MiSFI.PersonaFisicaJuridicaType
        Dim idDestinatario As New MiSFI.PersonaFisicaJuridicaESType
        Dim detalleDesglose As New MiSFI.DetalleType ' DetalleDesglose
        Dim encadenamientoRegistroAnterior As New MiSFI.EncadenamientoFacturaAnteriorType '.EncadenamientoRegistroAnterior
        Dim idEmisorFacturaRegistroAnterior As New MiSFI.EncadenamientoFacturaAnteriorTypeIDEmisorFacturaRegistroAnterior  '.IDEmisorFacturaRegistroAnterior
        Dim sistemaInformatico As New MiSFI.SistemaInformaticoType
        'Cabecera
        cabecera.IDVersion = MiSFI.VersionType.Item10  '"1.0"
        obligadoEmision.NombreRazon = "XXXXX"
        obligadoEmision.NIF = "XXXXX"
        tipoRegistroAEAT = MiSFI.TipoRegistroAEATType.T0 ' "T0"
        cabecera.ObligadoEmision = obligadoEmision
        cabecera.TipoRegistroAEAT = tipoRegistroAEAT
        '/Cabecera
        'RegistroAltaFacturas
        'RegistroFacturacion
        'IDFactura
        idEmisorFactura.NIF = "XXXXX"
        idFactura.NumSerieFacturaEmisor = "12345"
        idFactura.FechaExpedicionFacturaEmisor = "13-11-2023"
        idFactura.IDEmisorFactura = idEmisorFactura
        '/IDfactura  

        'Estas dan error
        'RegistroFacturacion(0).IDFactura = idFactura
        'RegistroFacturacion(0).NombreRazonEmisor = "certificado uno telematicas"
        'RegistroFacturacion(0).TipoRegistroSIF = MiSFI.TipoRegistroSIFType.S0 ' "S0"
        'RegistroFacturacion(0).TipoFactura = MiSFI.ClaveTipoFacturaType.F1 '"F1"
        'RegistroFacturacion(0).DescripcionOperacion = "Descripc"

        idDestinatario.NombreRazon = "XXXXX"
        idDestinatario.NIF = "XXXXX"

        datosControl.Huella = "Huella"
        datosControl.TipoHash = "01"


        registroAltaFacturas.RegistroFacturacion = RegistroFacturacion(0)
        registroAltaFacturas.DatosControl = datosControl


        altaFactuSistemaFacturacion.Cabecera = cabecera
        'esta da error 
        'altaFactuSistemaFacturacion.RegistroAltaFacturas = registroAltaFacturas

        Dim ns As New XmlSerializerNamespaces()
        ns.Add("soapenv", ".......")
        ns.Add("sum", "........SuministroLR.xsd")
        ns.Add("sum1", ".......SuministroInformacion.xsd")

        'serializamos
        Dim serializer As New XmlSerializer(GetType(MiSFI.AltaFactuSistemaFacturacion))
        Using writer As New StreamWriter("C:\xml\archivo.xml")
            serializer.Serialize(writer, altaFactuSistemaFacturacion, ns)
        End Using
tuve que quitar las url porque no tengo permisos....



Gracias por responder. pero en esas estoy y no lo consigo, algo estoy haciendo mal......
A ver si te sirve de ayuda. Así lo tengo yo en Delphi, pero lo gracioso es que sigo sin tener el elemento Cabecera...:
Código:
var
  regFactura : FacturasEmitidasType;
  result : Array_Of_RespuestaExpedidaType;
  arrayFacturasS : Array_Of_FacturasEmitidasType;

begin
  regFactura := FacturasEmitidasType.Create;

      regFactura.RegistroFacturacion := RegistroFacturacionType.Create;
...
        regFactura.RegistroFacturacion.IDFactura := IDFacturaExpedidaType.Create;
            regFactura.RegistroFacturacion.IDFactura.NumSerieFacturaEmisor := '23/123456';
....
try
    SetLength(arrayFacturas, 1);
    arrayFacturas[0] := regFactura;
    result := GetsfSOAP(true, '', HTTPRIO1).AltaFactuSistemaFacturacion(ArrayFacturas);
  finally
    regFactura.Destroy;
  end;
¿Podrías publicar de alguna manera el fichero que te genera al importar el wsdl a ver si encuentro las diferencias con el que genera en Delphi?.
Responder Con Cita
  #5  
Antiguo 07-01-2024
djatila djatila is offline
Registrado
 
Registrado: nov 2022
Posts: 6
Poder: 0
djatila Va por buen camino
ya lo conseguí.

Código:
<AltaFactuSistemaFacturacion xmlns:soapenv="......./envelope/"
xmlns:sum="............/SuministroLR.xsd"
 xmlns:sum1="...................................../SuministroInformacion.xsd">
<sum1:Cabecera>
<sum1:IDVersion>1.0</sum1:IDVersion>
<sum1:ObligadoEmision>
<sum1:NombreRazon>XXXXX</sum1:NombreRazon>
<sum1:NIF>XXXXX</sum1:NIF>
</sum1:ObligadoEmision>
<sum1:TipoRegistroAEAT>T0</sum1:TipoRegistroAEAT>
</sum1:Cabecera>
<sum:RegistroAltaFacturas>
<sum:RegistroFacturacion>
<sum1:IDFactura>
<sum1:IDEmisorFactura>
<sum1:NIF>XXXXX</sum1:NIF>
</sum1:IDEmisorFactura>
<sum1:NumSerieFacturaEmisor>12345</sum1:NumSerieFacturaEmisor>
<sum1:FechaExpedicionFacturaEmisor>13-11-2023</sum1:FechaExpedicionFacturaEmisor>
</sum1:IDFactura>
<sum1:NombreRazonEmisor>certificado uno telematicas</sum1:NombreRazonEmisor>
<sum1:TipoRegistroSIF>S0</sum1:TipoRegistroSIF>
<sum1:TipoFactura>F1</sum1:TipoFactura>
<sum1:DescripcionOperacion>Descripc</sum1:DescripcionOperacion>
<sum1:HusoHorarioGenRegistro>01</sum1:HusoHorarioGenRegistro>
</sum:RegistroFacturacion>
<sum:DatosControl>
<sum1:Huella>Huella</sum1:Huella>
<sum1:TipoHash>01</sum1:TipoHash>
</sum:DatosControl>
</sum:RegistroAltaFacturas>
</AltaFactuSistemaFacturacion>
(tuve que quitar las url)

ahora voy a rellenar los demás campos.

Cita:
Empezado por nincillo Ver Mensaje
¿Podrías publicar de alguna manera el fichero que te genera al importar el wsdl a ver si encuentro las diferencias con el que genera en Delphi?.
te lo intento pasar por privado que es un tocho
Responder Con Cita
  #6  
Antiguo 08-01-2024
nincillo nincillo is offline
Miembro
 
Registrado: may 2017
Posts: 151
Poder: 8
nincillo Va por buen camino
Cita:
Empezado por djatila Ver Mensaje
Te lo intento pasar por privado que es un tocho
Recibido. Muchísimas gracias.

Estoy comparando y lo que tú me mandas tiene mucho más contenido que el que me ha generado a mi importándolo desde Delphi.

No solo no encuentro la cabecera que en el tuyo si:

Código:
'''<remarks/>
    <System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.8.9037.0"),  _
     System.SerializableAttribute(),  _
     System.Diagnostics.DebuggerStepThroughAttribute(),  _
     System.ComponentModel.DesignerCategoryAttribute("code"),  _
     System.Xml.Serialization.XmlTypeAttribute([Namespace]:="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicacion"& _ 
        "es/es/aeat/tike/cont/ws/SuministroInformacion.xsd")>  _
    Partial Public Class Cabecera
        
        Private iDVersionField As VersionType
        
        Private obligadoEmisionField As PersonaFisicaJuridicaESType
        
        Private tipoRegistroAEATField As TipoRegistroAEATType
        
        Private fechaFinVeriFactuField As String
        
        '''<remarks/>
        Public Property IDVersion() As VersionType
            Get
                Return Me.iDVersionField
            End Get
            Set
                Me.iDVersionField = value
            End Set
        End Property
        
        '''<remarks/>
        Public Property ObligadoEmision() As PersonaFisicaJuridicaESType
            Get
                Return Me.obligadoEmisionField
            End Get
            Set
                Me.obligadoEmisionField = value
            End Set
        End Property
        
        '''<remarks/>
        Public Property TipoRegistroAEAT() As TipoRegistroAEATType
            Get
                Return Me.tipoRegistroAEATField
            End Get
            Set
                Me.tipoRegistroAEATField = value
            End Set
        End Property
        
        '''<remarks/>
        Public Property FechaFinVeriFactu() As String
            Get
                Return Me.fechaFinVeriFactuField
            End Get
            Set
                Me.fechaFinVeriFactuField = value
            End Set
        End Property
    End Class
    
    '''<remarks/>
Sino que, algo tan sencillo como la definición de VersionType tampoco está.

Código:
    '''<remarks/>
    <System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.8.9037.0"),  _
     System.SerializableAttribute(),  _
     System.Xml.Serialization.XmlTypeAttribute([Namespace]:="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicacion"& _ 
        "es/es/aeat/tike/cont/ws/SuministroInformacion.xsd")>  _
    Public Enum VersionType
        
        '''<remarks/>
        <System.Xml.Serialization.XmlEnumAttribute("1.0")>  _
        Item10
    End Enum
    
    '''<remarks/>

¿Podrías mandar el link del wsdl que estás importando a ver si es que no estoy cogiendo el correcto?

¿Es normal que el mismo wsdl al importarlo desde dos lenguajes diferentes se "coma" cosas?

Un poco más abajo están las siguientes definiciones:

Código:
'''<remarks/>
    <System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.8.9037.0"),  _
     System.SerializableAttribute(),  _
     System.Diagnostics.DebuggerStepThroughAttribute(),  _
     System.ComponentModel.DesignerCategoryAttribute("code"),  _
     System.Xml.Serialization.XmlTypeAttribute(AnonymousType:=true, [Namespace]:="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicacion"& _ 
        "es/es/aeat/tike/cont/ws/SuministroLR.xsd")>  _
    Partial Public Class AltaFactuSistemaFacturacion
        Inherits SistemaFacturacionAltaFact
        
        Private registroAltaFacturasField() As FacturasEmitidasType
        
        '''<remarks/>
        <System.Xml.Serialization.XmlElementAttribute("RegistroAltaFacturas")>  _
        Public Property RegistroAltaFacturas() As FacturasEmitidasType()
            Get
                Return Me.registroAltaFacturasField
            End Get
            Set
                Me.registroAltaFacturasField = value
            End Set
        End Property
    End Class

    '''<remarks/>
    <System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.8.9037.0"),  _
     System.SerializableAttribute(),  _
     System.Diagnostics.DebuggerStepThroughAttribute(),  _
     System.ComponentModel.DesignerCategoryAttribute("code"),  _
     System.Xml.Serialization.XmlTypeAttribute([Namespace]:="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicacion"& _ 
        "es/es/aeat/tike/cont/ws/SuministroInformacion.xsd")>  _
    Partial Public Class SistemaFacturacionAltaFact
        
        Private cabeceraField As Cabecera
        
        '''<remarks/>
        Public Property Cabecera() As Cabecera
            Get
                Return Me.cabeceraField
            End Get
            Set
                Me.cabeceraField = value
            End Set
        End Property
    End Class
    
    '''<remarks/>
Responder Con Cita
  #7  
Antiguo 08-01-2024
djatila djatila is offline
Registrado
 
Registrado: nov 2022
Posts: 6
Poder: 0
djatila Va por buen camino
Cita:
Empezado por nincillo Ver Mensaje

¿Podrías mandar el link del wsdl que estás importando a ver si es que no estoy cogiendo el correcto?
https://prewww2.aeat.es/static_files...cturacion.wsdl

Última edición por Neftali [Germán.Estévez] fecha: 08-01-2024 a las 13:54:19. Razón: Añadir URL
Responder Con Cita
  #8  
Antiguo 08-01-2024
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por djatila Ver Mensaje
Leí en un post anterior que aquí había gente también en visual basic, así que respondo por aquí, así espero que sirva a mas gente. (si molesta, avísenme)

No molesta en absoluto.
Aunque este es un foro principalmente sobre Delphi, caben mensajes de otros lenguajes, Y aunque hay foros específicos de cada lenguaje, en temas como este, LeyAntifraude (SII o TicketBAI) se permite publicar en textos y códigos en otros lenguajes de programación, porque "prima" el tema sobre el que va el hilo (LeyAntifraude).
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Hijo de Informáticos gluglu Humor 3 13-03-2007 11:05:35
Adictos informaticos ... Trigger Humor 2 11-10-2004 12:18:32
Nosotros los Informáticos Trigger Humor 1 10-10-2004 14:58:09
Patrón de los Informáticos. obiwuan Varios 20 10-09-2003 14:44:54
Chistes Informaticos jhonny Humor 2 11-08-2003 21:59:09


La franja horaria es GMT +2. Ahora son las 18:18:23.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi