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)

espinete 06-11-2019 17:22:18

Bueno, ya he conseguido enviar facturas en el entorno de pruebas.

He tenido que adaptar el proyecto de ejemplo que hay en el FTP del foro para que funcione con Delphi Rio y pelearme un poco con los certificados (uso los componentes de SecureBlackBox), pero he conseguido por fin enviar facturas.

También tuve que modificar algunas cosas del proyecto original ya que desde que se publicó el WSDL ha tenido bastantes cambios.

El único problema que veo es que las facturas de prueba que he enviado, no me aparecen en el servicio de consulta de facturas enviadas (https://www7.aeat.es/wlpl/SSII-FACT/SvFExpedidasQuery).
Sin embargo, si hago el envío de prueba desde el servicio de pruebas de la AEAT (https://www7.aeat.es/static_files/co...teWSAEAT2.html), entonces sí me aparece la factura como enviada.
Enviarse sí se envían porque si intento enviarla otra vez, me dice que está duplicada.

En Delphi Rio, el componente HTTPRIO "facilita" las cosas a la hora de asignar el certificado. En el evento HTTPRIO1HTTPWebNode1NeedClientCertificate() es posible asignar el certificado que queramos usar:

Código:

procedure TForm1.HTTPRIO1HTTPWebNode1NeedClientCertificate(
  const Sender: TObject; const ARequest: TURLRequest;
  const ACertificateList: TCertificateList; var AnIndex: Integer);
begin
    anindex:=comboCertificate.SelectedItemIndex;
end;

El problema es que la lista de certificados que obtengo en TCertificateList es distinta a la que obtengo con SecureBlackBox, así que hacer la asignación de certificado se me complica un poco.

He leído también que hay distintos WSDL para según qué comunidades autónomas? (Canarias, por el IGIC). ¿Esa información está en el portal de la AEAT o en otro?

pablog2k 07-11-2019 08:13:07

lo del SII de canarias lo tienes aqui:
http://www.gobiernodecanarias.org/tr...sii/inicio.jsp
los otros, buscando un poco por google también aparecen.
saludos

keys 07-11-2019 08:15:54

Hola. Cada hacienda tiene sus propios wsdl, menos navarra que tiene los mismos que la aeat pero cambiando el servidor. Para canarias los puedes encontrar en la aeat.

Navarra : http://www.navarra.es/home_es/Gobier...on+del+IVA.htm

Bizkaia : http://www.bizkaia.eus/home2/Temas/D...0616&Idioma=CA

Araba : http://www.araba.eus/cs/Satellite?c=...contenidoFinal

Gipuzkoa : https://www.gipuzkoa.eus/es/web/ogas...uestos/iva/sii

Un Saludo.

espinete 07-11-2019 10:04:47

O sea, que no está toda la información donde mismo. Cada Hacienda regional tiene la suya propia? Y hay que enviar las facturas a una Hacienda u otra según la localización del emisor? Importando varios wsld en la misma aplicación?

Todo bien

espinete 07-11-2019 18:26:59

Ahora que ya puedo enviar facturas (aún me falta tener en cuenta el tipo de factura, exentas, con varios IVAs, rectificativas, etc.), y ya no hay tanta ansiedad porque esto funcione, tengo un par de dudas.

* Cuando envío una factura, obtengo el estado "Correcto", pero el campo CSV está en blanco.
Solo cuando la vuelvo a enviar (duplicada) me devuelve algo en el campo CSV.
Me imagino que tendremos que guardar en nuestros registros el CSV o algún ID único para cada factura, para hacer consultas, etc, pero no sé si se usa el CSV o por qué me llega en blanco.

* Me ha quedado claro que hay que enviar tanto las facturas emitidas (ventas/ingresos) como las recibidas (compras/gastos), ya que el SII es en realidad para el Libro del IVA. Disculpen la pregunta, pero llevo 2 años integrando las facturas electrónicas de casi toda Sudamérica y allá solo se envían las facturas de venta y los tíckets (es con otra finalidad, claro).

* También he visto que, además de las facturas, hay que enviar los cobros y los pagos.
Entiendo que, por ejemplo, si tenemos una factura de 1000 Euros, a 30, 60 y 90 días, iremos enviando cronológicamente primero la factura y luego, llegado el momento, el primer cobro, el segundo y el tercero?

Es muy diferente al envío de facturas en Sudamérica: allá se envía incluso la factura con TODAS las líneas (artículos), se indica la forma de pago, etc.

Agradezco vuestro tiempo.

Un saludo

xamminf 08-11-2019 09:12:10

En este foro ha habido mucha ayuda... técnica... pero cada uno nos hemos tenido que inventar la forma de tratar con el SII. Cada uno lo habrá hecho a su manera.


Cita:

* Cuando envío una factura, obtengo el estado "Correcto", pero el campo CSV está en blanco.
Solo cuando la vuelvo a enviar (duplicada) me devuelve algo en el campo CSV.
Me imagino que tendremos que guardar en nuestros registros el CSV o algún ID único para cada factura, para hacer consultas, etc, pero no sé si se usa el CSV o por qué me llega en blanco.
En el primer envio ya tendrías que tener el CSV. Te recomiendo guardar el CSV por si alguna vez hubiera un problema con alguna factura. Será la garantía de que tu tienes razón.


Cita:

* Me ha quedado claro que hay que enviar tanto las facturas emitidas (ventas/ingresos) como las recibidas (compras/gastos), ya que el SII es en realidad para el Libro del IVA. Disculpen la pregunta, pero llevo 2 años integrando las facturas electrónicas de casi toda Sudamérica y allá solo se envían las facturas de venta y los tíckets (es con otra finalidad, claro).
En realidad no hay preguntas. Y si, se envian facturas emitidas y recibidas



Cita:

* También he visto que, además de las facturas, hay que enviar los cobros y los pagos.
Entiendo que, por ejemplo, si tenemos una factura de 1000 Euros, a 30, 60 y 90 días, iremos enviando cronológicamente primero la factura y luego, llegado el momento, el primer cobro, el segundo y el tercero?
El envio de cobros y pagos creo que sólo es para aquellos que están en Régimen de Caja. Yo no envio ni cobros ni pagos.

espinete 08-11-2019 11:59:28

¿Alguien sabe por qué el CSV me viene en blanco tras hacer el envío, aunque efectivamente está enviada?

Si la vuelvo a enviar me dice "duplicada" (y aquí sí obtengo el CSV), pero en el primer envío el CSV está en blanco.

Este es el código que uso para el envío:

Código:

  try
      result := GetsiiSOAP(true,'',HTTPRIO1).SuministroLRFacturasEmitidas(ASuministroLRFacturasEmitidas);

      for i := low(result.RespuestaLinea) to High(result.RespuestaLinea) do
      begin
          with result.RespuestaLinea[i] do
          begin
              Memo1.lines.add('factura: ' + IDFactura.NumSerieFacturaEmisor + ' ' + IDFactura.NumSerieFacturaEmisorResumenFin + ' ' + IDFactura.FechaExpedicionFacturaEmisor);
              Memo1.lines.add('CSV: ' + CSV);
              if EstadoRegistro <> EstadoRegistroType(0) then
              begin
                  Memo1.lines.add('Error no.: ' + InttoStr(CodigoErrorRegistro));
                  Memo1.lines.add(DescripcionErrorRegistro);
              end;
          end;
      end;
  except
      On E:Exception do
          MessageDlg(E.Message, mtError, [mbOK], 0);
  end;

Y esto es lo que obtengo:

factura: A-451260 06/11/2019
CSV:

newtron 08-11-2019 12:01:59

Cita:

Empezado por espinete (Mensaje 534353)
¿Alguien sabe por qué el CSV me viene en blanco tras hacer el envío, aunque efectivamente está enviada?

Si la vuelvo a enviar me dice "duplicada" (y aquí sí obtengo el CSV), pero en el primer envío el CSV está en blanco.

Este es el código que uso para el envío:

Código:

  try
      result := GetsiiSOAP(true,'',HTTPRIO1).SuministroLRFacturasEmitidas(ASuministroLRFacturasEmitidas);

      for i := low(result.RespuestaLinea) to High(result.RespuestaLinea) do
      begin
          with result.RespuestaLinea[i] do
          begin
              Memo1.lines.add('factura: ' + IDFactura.NumSerieFacturaEmisor + ' ' + IDFactura.NumSerieFacturaEmisorResumenFin + ' ' + IDFactura.FechaExpedicionFacturaEmisor);
              Memo1.lines.add('CSV: ' + CSV);
              if EstadoRegistro <> EstadoRegistroType(0) then
              begin
                  Memo1.lines.add('Error no.: ' + InttoStr(CodigoErrorRegistro));
                  Memo1.lines.add(DescripcionErrorRegistro);
              end;
          end;
      end;
  except
      On E:Exception do
          MessageDlg(E.Message, mtError, [mbOK], 0);
  end;

Y esto es lo que obtengo:

factura: A-451260 06/11/2019
CSV:


Y... ¿dónde asignas el valor a la variable CSV?

espinete 08-11-2019 12:03:36

No es una variable. Pertenece a "result.RespuestaLinea[i]" (está dentro del "with")

Es como si pusiera result.RespuestaLinea[i].CSV, que de hecho también lo he probado por si acaso y también lo recibo en blanco.

espinete 08-11-2019 12:07:38

Hay otro CSV dentro de "result".

Con result.CSV sí obtengo el CSV.

Con [i]result.RespuestaLinea.CSV me viene en blanco.

¿Será que cuando enviamos SOLO una factura, el CSV que sirve es el result.CSV, pero cuando enviamos varias, hay que usar el de [i]result.RespuestaLinea.CSV, ya que cada factura tendrá el suyo?

newtron 08-11-2019 12:15:57

Cita:

Empezado por espinete (Mensaje 534356)
Hay otro CSV dentro de "result".

Con result.CSV sí obtengo el CSV.

Con [i]result.RespuestaLinea.CSV me viene en blanco.

¿Será que cuando enviamos SOLO una factura, el CSV que sirve es el result.CSV, pero cuando enviamos varias, hay que usar el de [i]result.RespuestaLinea.CSV, ya que cada factura tendrá el suyo?


Afirmativo. Cada factura tiene su CSV aunque no recuerdo si pone el mismo por cada tanda o es distinto.

didou 11-11-2019 11:15:47

Cita:

Empezado por espinete (Mensaje 534356)
Hay otro CSV dentro de "result".

Con result.CSV sí obtengo el CSV.

Con [i]result.RespuestaLinea.CSV me viene en blanco.

¿Será que cuando enviamos SOLO una factura, el CSV que sirve es el result.CSV, pero cuando enviamos varias, hay que usar el de [i]result.RespuestaLinea.CSV, ya que cada factura tendrá el suyo?

Buenos días, yo tampoco recibo el CSV de cada factura, alguien lo ha conseguido??

lithium76 18-11-2019 19:34:26

Delphi RIO y certicicados varios
 
Buenas tardes!

Después de actualizar Delphi a RIO (10.3.2) y conseguir que funcionara la cosa con los certificados os paso a explicar mi problemilla.

He conseguido que la cosa vaya bien usando como por aquí se ha mencionado anteriormente el evento HTTPRIO1HTTPWebNode1NeedClientCertificate donde yo procedo a asignar el certificado que el usuario elige.

La cosa es que una vez pasa por este evento y asigna un certificado si se vuelve a ejectutar la petición, este evento ya no se ejecuta más. Entiendo que ya no necesita certificado alguno porque se le asignó uno previamente. Pero si yo quisiera cambiarlo porque, por ejemplo, el usuario ha escogido un certificado que es válido pero no es el que necesita para la Agencia Tributaria, hay alguna manera de resetear para que vuelva a pasar por ese evento y asignarle así un certificado diferente? hay alguna manera que yo desconozco de asignarle otro certificado ? he mirado por ahí pero no encuentro nada que me funcione.

Gracias por adelantado.

keys 19-11-2019 08:13:29

Cita:

Empezado por lithium76 (Mensaje 534420)
Buenas tardes!

Después de actualizar Delphi a RIO (10.3.2) y conseguir que funcionara la cosa con los certificados os paso a explicar mi problemilla.

He conseguido que la cosa vaya bien usando como por aquí se ha mencionado anteriormente el evento HTTPRIO1HTTPWebNode1NeedClientCertificate donde yo procedo a asignar el certificado que el usuario elige.

La cosa es que una vez pasa por este evento y asigna un certificado si se vuelve a ejectutar la petición, este evento ya no se ejecuta más. Entiendo que ya no necesita certificado alguno porque se le asignó uno previamente. Pero si yo quisiera cambiarlo porque, por ejemplo, el usuario ha escogido un certificado que es válido pero no es el que necesita para la Agencia Tributaria, hay alguna manera de resetear para que vuelva a pasar por ese evento y asignarle así un certificado diferente? hay alguna manera que yo desconozco de asignarle otro certificado ? he mirado por ahí pero no encuentro nada que me funcione.

Gracias por adelantado.

Hola. Yo lo que hago es destruir los objetos THTTPRIO después de cada envío y utilizar uno nuevo.

Un Saludo.

lithium76 19-11-2019 13:17:24

Cita:

Empezado por keys (Mensaje 534423)
Hola. Yo lo que hago es destruir los objetos THTTPRIO después de cada envío y utilizar uno nuevo.

Un Saludo.

Muchas gracias por responder. Probaré así. Pensaba que existía alguna manera de desligar el certificado sin necesidad de usar un nuevo objeto pero de la manera que dices me aseguro que salte el evento en cada envío.

Noe277 20-11-2019 11:18:05

Hola. Tengo una duda.

Tengo un cliente Extracomunitario.
Cita:

<siiLR:FacturaExpedida>
<sii:TipoFactura>F1</sii:TipoFactura>
<sii:ClaveRegimenEspecialOTrascendencia>02</sii:ClaveRegimenEspecialOTrascendencia>
<sii:DescripcionOperacion>Entrega Mercancias</sii:DescripcionOperacion>
<sii:Contraparte>
<sii:NombreRazon>La razon social</sii:NombreRazon>
<sii:IDOtro>
<sii:CodigoPais>PA</sii:CodigoPais>
<sii:IDType>06</sii:IDType>
<sii:ID>21818011770431</sii:ID>
</sii:IDOtro>
</sii:Contraparte>
<sii:TipoDesglose>
<sii:DesgloseTipoOperacion>
<sii:Entrega>
<sii:NoSujeta>
<sii:ImporteTAIReglasLocalizacion>344.94</sii:ImporteTAIReglasLocalizacion>
</sii:NoSujeta>
</sii:Entrega>
</sii:DesgloseTipoOperacion>
</sii:TipoDesglose>
</siiLR:FacturaExpedida>
Me da el siguiente error
1252 Si la única clave de régimen especial es 02 y el TipoComunicacion no es A5 ni A6, sólo se puede indicar operación Sujeta/Exenta para el tipo de desglose [Factura] [Prestación de servicios] [Entrega de bienes

No entiendo porque las operaciones extracomunitarias están no sujetas y es una entrega

pablog2k 20-11-2019 16:41:35

si te sirve de ayuda, en las faqs del SII indica como introducir una factura a un cliente extracomuntario (exportación supongo que te refieres)

https://www.agenciatributaria.es/AEA...ecuentes.shtml

https://www.agenciatributaria.es/AEA...tacion__.shtml

Noe277 25-11-2019 11:36:23

Proveedor extranjero
 
Cita:

Empezado por pablog2k (Mensaje 534444)
si te sirve de ayuda, en las faqs del SII indica como introducir una factura a un cliente extracomuntario (exportación supongo que te refieres)

https://www.agenciatributaria.es/AEA...ecuentes.shtml

https://www.agenciatributaria.es/AEA...tacion__.shtml


Gracias ya he conseguido enviarlo.

Jaketon 02-12-2019 15:48:53

Buenas, alguno tiene un ejemplo de una adquisición extracomunitaria (importación)

Saludos.

jmadrid 12-12-2019 14:05:15

Web Service de SILICIE
 
¿ Alguien conoce algún foro sobre el nuevo SILICIE de la Agencia Tributaria ?


La franja horaria es GMT +2. Ahora son las 13:11:27.

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