Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   SII -Nuevo sistema de la Agencia Tributaria española de envío de datos vía Webservice (https://www.clubdelphi.com/foros/showthread.php?t=91252)

CMB 03-03-2017 21:19:44

Cita:

Empezado por paquimd (Mensaje 513967)
Entiendo que tú lo que haces es construir un objeto que es el que envías. Nosotros lo que intentamos hacer, yo en principio estoy probando con el de ejemplo de la AEAT, es subir un archivo .xml que estamos deserializando. Para ello tiene que ser con el formato que envié esta mañana:
Saludos

Perdonad mi ignorancia pero no sé ni siquiera qué significa deserializando. Para mí es mucho más sencillo. Con mi Delphi construyo un XML exactamente igual que los ejemplos que pone la AEAT (con datos reales, NIF, nombre, etc), lo envío, y en un segundo recibo la respuesta. Todo correcto, o parcialmente, o todas las facturas duplicadas, da igual, pero la cosa funciona, tanto para emitidas como recibidas.

Copia y pega uno de los ejemplos del fichero SII_Descripcion_ServicioWeb_v0.5_es_es.pdf, tal cual, le pones datos de verdad, y lo envías. Recibirás la respuesta de inmediato (a menos que estén de obras, como el miércoles y jueves pasados :D ).

Saludos,

newtron 04-03-2017 19:45:19

Hola a tod@s.

He tenido esto unos días aparcado y ahora estoy tratando de ultimar (por lo menos) el tema de las facturas emitidas.

Cuando hay que indicar el código de pais en el caso de un cliente extranjero ¿hay que poner forzosamente el número?, que por cierto no sé de dónde se saca, ¿no hay forma de poner las letras del país? o en su defecto, ¿hay alguna tabla que los relacione?

Saludos

bartag 04-03-2017 20:38:32

Según la página 63 del documento 'SII_Descripcion_ServicioWeb_v0.5_es_es.pdf':

'CodigoPais -> Código del país asociado contraparte de la operación (cliente) de facturas expedidas -> Alfanumérico(2) (ISO 3166-1 alpha-2 codes) L17'

Y dentro del contenido 'L17 -> Código de País' (página 117) te aparecen las letra y la columna con el nombre país.

Al menos para las intracomunitarias, el código de país en .NET aparece con el código de letra de la página 117 (por ejemplo 'CountryMiembroType.DE' para Alemania).

jlegido 05-03-2017 11:06:11

Cita:

Empezado por bartag (Mensaje 513969)
Yo he hecho pruebas partiendo de un xml y deserializando/enviando posteriormente tras cumplimentar los datos deseados y no me ha dado problemas.

Creo que el error de las cabeceras os puede venir porque:
- El objeto deserializer no admite campos soap. Por dicho motivo y como bien dices, debes tomar la parte del xml que comprende el nodo <SuministroLRFacturasEmitidas>
- No le estáis pasando el namespace al XmlSerializer.

El mío lo tengo así (para el registro facturas emitidas):
Código:

Dim x As New XmlSerializer(_SuministroLRFacturasEmitidas.GetType, "https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroLR.xsd") ', "https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroLR.xsd")

            ' A FileStream is needed to read the XML document.
            Dim filename As String = "facturaEmitidaMODEL.XML"


            Using reader As New FileStream(filename, FileMode.Open)
                _SuministroLRFacturasEmitidas = CType(x.Deserialize(reader), SuministroLRFacturasEmitidas)
            End Using

Todo lo anterior es -si no te he entendido mal- para hacer el envío partiendo de un xml previo...


Para los que lo hacemos en VB.NET, esta claro que el .xml a enviar empieza o comprende el nodo <siiLR:SuministroLRFacturasEmtidas>, y que tiene que tener la siguiente estructura para poder ser enviado a AEAT:
Código:

<siiLR:SuministroLRFacturasEmitidas>
  <sii:Cabecera>
    <sii:IDVersionSii>0.1</sii:IDVersionSii>
        <sii:Titular>
        …

Yo entiendo que los prefijos –espacios de nombres- siiLR y sii en los diferentes elemntos son obligatorios.

Despues hemos de Deserializar dicho xml para asociarlo/cargarlo en un objeto tipo SuministroLRFacturasEmitidas que es el que enviaremos a AEAT (en mi caso Dim testF As New SuministroLRFacturasEmitidas)
Pero, y aquí viene el problema, en el xml hay 2 espacios de nombres: siiLR y sii que de alguna manera hay que indicar que se tengan en cuenta.
yo he intentado tu solucion bartag, es decir:

Código:

Dim x As New XmlSerializer(testF.GetType, "https://w**2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroLR.xsd") ', "https://w**2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroLR.xsd")
Dim reader As New FileStream(filename, FileMode.Open)
  testF = CType(x.Deserialize(reader), SuministroLRFacturasEmitidas)

pero no me funciona.
Que puede estar mal?. Si a ti te funciona, ¿puedes poner el codigo mas amplio?
Observo que en Dim x As New XmlSerializer(testF.GetType, "https://w**.agenciatributaria..., repites la misma cadena, aunque supongo que lo correcto como segunda cadena seria poner:
https://**2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInformacion.xsd,
lo he probado tambien asi, pero sigue sin funcionar.

Muchas gracias por tu ayuda

P.D. donde pongo ** me refiero a una enlace (No tengo permiso para poner enlaces de forma normal)

bartag 05-03-2017 11:57:27

1 Archivos Adjunto(s)
Te pongo el código que utilizo. Básicamente lo que hace es tomar un archivo xml y lo envía. Debes por favor cumplimentar previamente los campos de dicho archivo pues en caso contrario te dará errores de validación.

Código:

        ' ----------------------------------------------------------------------------------------
        Dim store As Security.Cryptography.X509Certificates.X509Store = New Security.Cryptography.X509Certificates.X509Store("My")
        store.Open(Security.Cryptography.X509Certificates.OpenFlags.ReadOnly)

        Dim CertificadoCorrecto As New System.Security.Cryptography.X509Certificates.X509Certificate2
       
        For Each x In store.Certificates
            ListCert = ListCert & vbNewLine
        Next
        'RichTextBox1.Text = ListCert

        CertificadoCorrecto = store.Certificates(CInt(TextBoxNumeroOrdenCertificado.Text)) '(5)

        ' Objeto que almacenara la respuesta de la funcion del Web Service
        Dim resp As New ServiceReference1.RespuestaLRFEmitidasType

        ' Ws
        Dim Ws As New ServiceReference1.siiSOAPClient

        Ws.ClientCredentials.ClientCertificate.Certificate = CertificadoCorrecto
        Ws.ClientCredentials.UseIdentityConfiguration = True

        ' Asignamos el certificado:
        Ws.ClientCredentials.ClientCertificate.Certificate = CertificadoCorrecto
        ' ----------------------------------------------------------------------------------------


        ' ----------------------------------------------------------------------------------------
        Dim _SuministroLRFacturasEmitidas As New SuministroLRFacturasEmitidas
        '--------------------------------------------------------------------------
       
        Try

            Dim x As New XmlSerializer(_SuministroLRFacturasEmitidas.GetType, "https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroLR.xsd")

            ' A FileStream is needed to read the XML document.
            Dim filename As String = "facturaEmitidaMODEL.XML"


            Using reader As New FileStream(filename, FileMode.Open)
                _SuministroLRFacturasEmitidas = CType(x.Deserialize(reader), SuministroLRFacturasEmitidas)
            End Using

            ' SI QUEREMOS SOBREESCRIBIR EL XML ANTES DE ENVIAR:
            ' SOBREESCRIBIMOS DATS FORM ANTES SEND:
            _SuministroLRFacturasEmitidas.Cabecera.Titular.NombreRazon = Trim(TextBoxRazonSocialEmisor.Text)
            _SuministroLRFacturasEmitidas.Cabecera.Titular.NIF = Trim(TextBoxNIFEmisor.Text)

          '(...)

          '// se hace la llamada a la funcion suministrada por el WS
            resp = Ws.SuministroLRFacturasEmitidas(_SuministroLRFacturasEmitidas)

            Catch ex As Exception
            MsgBox(ex.Message)
            Respuesta2RichTextBox = ex.Message
        Finally
            'Me.Cursor = Cursors.Default
            'Threading.Thread.Sleep(5000)
            'ProgressBar1.Style = ProgressBarStyle.Continuous
            ''ProgressBar1.Value = ProgressBar1.Maximum
        End Try

Te adjunto también el archivo xml que debes cumplimentar donde indica '[A CUMPLIMENTAR]'.

Con esto, se toma la factura del archivo (fíjate que solamente tiene el nodo '<SuministroLRFacturasEmitidas>' y nada del encabezado SOAP para que no dé error al aplicar el Deserialize) y nos la convierte en un objeto serializado donde podemos acceder a los campos de la clase antes de enviar si lo deseamos; en caso contrario se envía y la propia llamada se encarga de insertar las cabeceras, los namespaces, etc.

jlegido 05-03-2017 20:28:34

Cita:

Empezado por bartag (Mensaje 514008)
Te pongo el código que utilizo. Básicamente lo que hace es tomar un archivo xml y lo envía. Debes por favor cumplimentar previamente los campos de dicho archivo pues en caso contrario te dará errores de validación.

Código:

        ' ----------------------------------------------------------------------------------------
        Dim store As Security.Cryptography.X509Certificates.X509Store = New Security.Cryptography.X509Certificates.X509Store("My")
        store.Open(Security.Cryptography.X509Certificates.OpenFlags.ReadOnly)

        Dim CertificadoCorrecto As New System.Security.Cryptography.X509Certificates.X509Certificate2
       
        For Each x In store.Certificates
            ListCert = ListCert & vbNewLine
        Next
        'RichTextBox1.Text = ListCert

        CertificadoCorrecto = store.Certificates(CInt(TextBoxNumeroOrdenCertificado.Text)) '(5)

        ' Objeto que almacenara la respuesta de la funcion del Web Service
        Dim resp As New ServiceReference1.RespuestaLRFEmitidasType

        ' Ws
        Dim Ws As New ServiceReference1.siiSOAPClient

        Ws.ClientCredentials.ClientCertificate.Certificate = CertificadoCorrecto
        Ws.ClientCredentials.UseIdentityConfiguration = True

        ' Asignamos el certificado:
        Ws.ClientCredentials.ClientCertificate.Certificate = CertificadoCorrecto
        ' ----------------------------------------------------------------------------------------


        ' ----------------------------------------------------------------------------------------
        Dim _SuministroLRFacturasEmitidas As New SuministroLRFacturasEmitidas
        '--------------------------------------------------------------------------
       
        Try

            Dim x As New XmlSerializer(_SuministroLRFacturasEmitidas.GetType, "https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroLR.xsd")

            ' A FileStream is needed to read the XML document.
            Dim filename As String = "facturaEmitidaMODEL.XML"


            Using reader As New FileStream(filename, FileMode.Open)
                _SuministroLRFacturasEmitidas = CType(x.Deserialize(reader), SuministroLRFacturasEmitidas)
            End Using

            ' SI QUEREMOS SOBREESCRIBIR EL XML ANTES DE ENVIAR:
            ' SOBREESCRIBIMOS DATS FORM ANTES SEND:
            _SuministroLRFacturasEmitidas.Cabecera.Titular.NombreRazon = Trim(TextBoxRazonSocialEmisor.Text)
            _SuministroLRFacturasEmitidas.Cabecera.Titular.NIF = Trim(TextBoxNIFEmisor.Text)

          '(...)

          '// se hace la llamada a la funcion suministrada por el WS
            resp = Ws.SuministroLRFacturasEmitidas(_SuministroLRFacturasEmitidas)

            Catch ex As Exception
            MsgBox(ex.Message)
            Respuesta2RichTextBox = ex.Message
        Finally
            'Me.Cursor = Cursors.Default
            'Threading.Thread.Sleep(5000)
            'ProgressBar1.Style = ProgressBarStyle.Continuous
            ''ProgressBar1.Value = ProgressBar1.Maximum
        End Try

Te adjunto también el archivo xml que debes cumplimentar donde indica '[A CUMPLIMENTAR]'.

Con esto, se toma la factura del archivo (fíjate que solamente tiene el nodo '<SuministroLRFacturasEmitidas>' y nada del encabezado SOAP para que no dé error al aplicar el Deserialize) y nos la convierte en un objeto serializado donde podemos acceder a los campos de la clase antes de enviar si lo deseamos; en caso contrario se envía y la propia llamada se encarga de insertar las cabeceras, los namespaces, etc.



Hola bartag.

Muchas gracias por tu rapida respuesta y tu aparte de codigo. Me habia encallado en ese tema y se supone que mañana debo hacer pruebas reales.

Me ha clarificado bastante tu codigo despues de analizarlo con detenimiento, y sobre todo tu frase “y la propia llamada se encarga de insertar las cabeceras, los namespaces, etc.”.

Finalmente he conseguido enviar y recibir respuesta de AEAT, aunque en la respuesta no recibo el esperado XML sino el siguiente texto:-pongo solo la parte inicial-

Código:

El tipo de contenido text/html del mensaje de respuesta no coincide con el tipo de contenido del enlace (text/xml; charset=utf-8). Si usa un codificador personalizado, asegúrese de que el método IsContentTypeSupported se implemente correctamente. Los primeros 1024 bytes de la respuesta fueron: '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
Y aunque he estado trabajando en App.config par modificar los bindings no he conseguido pasar de ahí de momento
No se si tu tambien has pasado por ese punto.

Salu2

newtron 06-03-2017 09:24:59

Cita:

Empezado por bartag (Mensaje 513998)
Según la página 63 del documento 'SII_Descripcion_ServicioWeb_v0.5_es_es.pdf':

'CodigoPais -> Código del país asociado contraparte de la operación (cliente) de facturas expedidas -> Alfanumérico(2) (ISO 3166-1 alpha-2 codes) L17'

Y dentro del contenido 'L17 -> Código de País' (página 117) te aparecen las letra y la columna con el nombre país.

Al menos para las intracomunitarias, el código de país en .NET aparece con el código de letra de la página 117 (por ejemplo 'CountryMiembroType.DE' para Alemania).

He visto ese apartado del documento, el problema es que (por lo menos en delphi) hay que poner el número que corresponde al país, no puedes asignar directamente las letras. Yo preguntaba si había alguna forma de asignar directamente las letras p.e. :

CountryMiembroType:='DE' o algo parecido

dimony 06-03-2017 09:46:23

Error al enviar
 
Hola a tod@s, en primer lugar muchas gracias por la ayuda que estais suministrando a la comunidad de afectados por el señor Montoro.
Esta maña me disponia a hacer el envio de una factura de prueba y me salta el siguiente error:

Código:

Codigo[-913].UNSUCCESSFUL EXECUTION CAUSED BY DEADLOCK OR TIMEOUT. REASON CODE 00C900BA, TYPE OF RESOURCE 00002006, AND RESOURCE NAME DBBUIDEN.TSBUIDEN.00000000. SQLCODE=-913, SQLSTATE=57033, DRIVER=4.19.57
¿Se puede tratar de un error de la AEAT?
Gracias.

keys 06-03-2017 09:48:10

Cita:

Empezado por newtron (Mensaje 514017)
He visto ese apartado del documento, el problema es que (por lo menos en delphi) hay que poner el número que corresponde al país, no puedes asignar directamente las letras. Yo preguntaba si había alguna forma de asignar directamente las letras p.e. :

CountryMiembroType:='DE' o algo parecido

Hola, la aeat quiere el orden del páis dentro de la tabla y no el nombre. Lo único que puedes hacer es sobrecargar la clase o hacer tu una función que pasandole las letras del pais te lo convierta a el codigo, que es lo que yo he hecho.

Un SAludo.

keys 06-03-2017 09:54:40

Cita:

Empezado por dimony (Mensaje 514019)
Hola a tod@s, en primer lugar muchas gracias por la ayuda que estais suministrando a la comunidad de afectados por el señor Montoro.
Esta maña me disponia a hacer el envio de una factura de prueba y me salta el siguiente error:

Código:

Codigo[-913].UNSUCCESSFUL EXECUTION CAUSED BY DEADLOCK OR TIMEOUT. REASON CODE 00C900BA, TYPE OF RESOURCE 00002006, AND RESOURCE NAME DBBUIDEN.TSBUIDEN.00000000. SQLCODE=-913, SQLSTATE=57033, DRIVER=4.19.57
¿Se puede tratar de un error de la AEAT?
Gracias.

Yo creo que es un problema de la aeat. Me ocurre lo mismo tanto desde nuestro programa como desde Wizdler.

Un saludo.

newtron 06-03-2017 10:01:04

Cita:

Empezado por keys (Mensaje 514020)
Hola, la aeat quiere el orden del páis dentro de la tabla y no el nombre. Lo único que puedes hacer es sobrecargar la clase o hacer tu una función que pasandole las letras del pais te lo convierta a el codigo, que es lo que yo he hecho.

Un SAludo.

Ya imaginaba que tendría que hacer algo parecido, gracias.

Por otro lado el servidor de la aeat no está muy fino, este sábado he estado haciendo pruebas y me daba errores en una de cada 2 ó 3 veces, no exactamente ese pero claramente era un problema del servidor.

Saludos

bartag 06-03-2017 15:21:54

Cita:

Empezado por jlegido (Mensaje 514010)
Hola bartag.

Muchas gracias por tu rapida respuesta y tu aparte de codigo. Me habia encallado en ese tema y se supone que mañana debo hacer pruebas reales.

Me ha clarificado bastante tu codigo despues de analizarlo con detenimiento, y sobre todo tu frase “y la propia llamada se encarga de insertar las cabeceras, los namespaces, etc.”.

Finalmente he conseguido enviar y recibir respuesta de AEAT, aunque en la respuesta no recibo el esperado XML sino el siguiente texto:-pongo solo la parte inicial-

Código:

El tipo de contenido text/html del mensaje de respuesta no coincide con el tipo de contenido del enlace (text/xml; charset=utf-8). Si usa un codificador personalizado, asegúrese de que el método IsContentTypeSupported se implemente correctamente. Los primeros 1024 bytes de la respuesta fueron: '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
Y aunque he estado trabajando en App.config par modificar los bindings no he conseguido pasar de ahí de momento
No se si tu tambien has pasado por ese punto.

Salu2

Has modificado el App.config indicando que use certificados y la versión SOAP 1.1?
Ahora no estoy en casa. Esta noche te paso el archivo por si pudiera venir de ahí el error.

bartag 06-03-2017 21:07:32

1 Archivos Adjunto(s)
Subo el archivo App.config.

Saludos

jlegido 06-03-2017 21:54:34

Como siempre “Muchas gracias” bartag por tu aporte y rápida respuesta.
Voy a mirarela en detalle y entenderla, pues veo que tut tienes tres <binding> diferentes.
Ya veo que uno de ellos, el siiBinding2, en realidad es un elemento sin contenido, que se ha quedado ahí, y probablemente tambien el siiBinding que es el que se crea inicialmente.
Ya habia buscado posibles soluciones y lo que tu pones coincide con alguna de las soluciones que halle, , que es crear el
<customBinding>
<binding name="siiBinding">
<textMessageEncoding messageVersion="Soap11" />
<httpsTransport />
</binding>
</customBinding>
Para definirle el protocolo Soap11.
Hos se supone que ya iba a tener el certificado y hacer pruebas reales, pero no lo tendre hasta el miercoles.
Ya te diré como va
Salu2

Carlos Garcia C 07-03-2017 12:46:02

SII Pruebas
 
Me presento soy Carlos y soy contable, siguiendo las 13 paginas de este foro he incluido los ejemplos y no tengo una respuesta válida por parte de AEAT. por último he copiado intergramente el ejemplo abajo indicado y recibo la Respuesta del servidor tambien fallida, ver abajo incluida.
¿podéis ayudarme a facilitarme un ejemplo que os haya funcionado, para ver posteriormente las consultas a los libros.
8.1.1.1.Ejemplo mensaje XML de alta, en la pagina 132 de 180 del
SII – Suministro Inmediato de Información
Autor : AEAT Fecha: 27/01/2017 Versión: 0.5



Gracias anticipadas por vuestra comprensión y colaboración.

CMB 07-03-2017 13:04:32

Cita:

Empezado por Carlos Garcia C (Mensaje 514068)
Me presento soy Carlos y soy contable, siguiendo las 13 paginas de este foro he incluido los ejemplos y no tengo una respuesta válida por parte de AEAT. por último he copiado intergramente el ejemplo abajo indicado y recibo la Respuesta del servidor tambien fallida, ver abajo incluida.
¿podéis ayudarme a facilitarme un ejemplo que os haya funcionado, para ver posteriormente las consultas a los libros.
8.1.1.1.Ejemplo mensaje XML de alta, en la pagina 132 de 180 del
SII – Suministro Inmediato de Información
Autor : AEAT Fecha: 27/01/2017 Versión: 0.5
Gracias anticipadas por vuestra comprensión y colaboración.

El ejemplo a que te refieres funciona bien con dos condiciones. (1) Que tengas en tu ordenador un certificado digital que coincida con el nombre y NIF del emisor (y si no es así, cambia los datos del emisor), y (2) Que los datos de las facturas incluidas contengan nombre y NIF registrados por Hacienda. No valen datos ficticios como los que incluye el ejemplo por razones obvias.

Pruébalo y publica la respuesta que recibes.

Saludos,

batuzail 07-03-2017 16:03:43

Cita:

Empezado por CMB (Mensaje 514069)
El ejemplo a que te refieres funciona bien con dos condiciones. (1) Que tengas en tu ordenador un certificado digital que coincida con el nombre y NIF del emisor (y si no es así, cambia los datos del emisor), y (2) Que los datos de las facturas incluidas contengan nombre y NIF registrados por Hacienda. No valen datos ficticios como los que incluye el ejemplo por razones obvias.

Pruébalo y publica la respuesta que recibes.

Saludos,

En referencia al certificado, para un grupo de empresas es necesario un certificado para cada empresa o es posible usar uno para todas cambiando los datos del emisor?

Carlos Garcia C 07-03-2017 16:13:12

SII Pruebas
 
1º- Muchas gracias por vuestros comentarios
2º- Vuelvo a tomar el 8.1.1.1, y me incluyo los datos reales.
3º- Aseguro el Certificado
4º- La Respuesta del Servidor es exactamente la misma; de nuevo la adjunto:



No se que puede fallarme..
De nuevo gracias anticipadas por vuestra colaboración.

keys 07-03-2017 16:21:55

Cita:

Empezado por batuzail (Mensaje 514081)
En referencia al certificado, para un grupo de empresas es necesario un certificado para cada empresa o es posible usar uno para todas cambiando los datos del emisor?

Los certifificados validos son los mismos que hay ahora mismo para presentar cualquier impuesto en hacienda. Si con ese certificado puedes presentar declaraciones de otras empresas (por ejmplo el 303 de iva), podrás presentar el sii de esa empresa.

Sino tendrás que tener un certificado distinto para cada empresa a presentar.


Un Saludo.

batuzail 07-03-2017 17:59:35

Gracias Keys.
Alguno que lo este haciendo en C#, lo tengo hecho en VB y me funciona, lo quiero pasar a C# y tengo un problema al redimensionar los arrays, en VB con Redim no tenia problemas pero en C# no me es posible redimensionar.

Cita:

SII_DetalleIVA.TipoImpositivo = "21";
SII_DetalleIVA.BaseImponible = "22.07";
SII_DetalleIVA.CuotaRepercutida = "4.63";
SII_DetalleIVA.TipoRecargoEquivalencia = "0";
SII_DetalleIVA.CuotaRecargoEquivalencia = "0";
//ReDim SII_SujetaNoExenta.DesgloseIVA (0)
Array.Resize(ref SII_SujetaNoExenta.DesgloseIVA , 2);

SII_SujetaNoExenta.DesgloseIVA[0] = SII_DetalleIVA;
Alguien puede decirme como lo ha hecho?

Saludos


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

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