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)

ANDRES123 07-03-2017 18:08:21

Error JAVAX.SERVLET.SERVLETEXCEPTION
 
Gracias anticipadas por vuestra colaboración.

Estoy empezando a trabajar con el proyecto SII . Estoy probando las demos que habéis realizado.
Y cuando intento enviar los datos Me sale este error.

JAVAX.SERVLET.SERVLETEXCEPTION

Alguien sabe el motivo.

Gracias

batuzail 07-03-2017 18:48:00

Cita:

Empezado por batuzail (Mensaje 514089)
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.



Alguien puede decirme como lo ha hecho?

Saludos

Ya lo he conseguido .
Si a alguien le pase que pregunte que un poco largo.

Gracias

Francisco1973 09-03-2017 16:21:42

Suministro de cobros
 
Hola a todos, ¿ alguien ha conseguido enviar cobros ?. Yo lo hago a través del WSDL importer construyendo el objeto, en el XML que se genera obtengo:

-<Cobros xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInformacion.xsd">
-<Cobro xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroLR.xsd">
<Fecha xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInformacion.xsd">01-01-2017</Fecha>
<Importe xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInformacion.xsd">20</Importe>
<Medio xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInformacion.xsd">01</Medio>
<Cuenta_O_Medio xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInformacion.xsd">ES00000000????</Cuenta_O_Medio>
</Cobro>
</Cobros>

En hacienda me dicen que los xsd que he marcado en rojo están intercambiados, o sea, en Cobros ha de ser SuministroLR.xsd y en Cobro SuministroInformacion.xsd. ¿ A alguien le ha pasado esto ?
Por otro lado, ¿ Sabeis como quitar las etiquetas xmlns de cada nodo e incluirlas solo en la etiqueta Envelope ?
Saludos,

keys 09-03-2017 16:38:44

En los libros de cobros como los de pagos. El delphi no genera bien el fichero, falta un xmlns en uno de los nodos y la aeat genera un error. Para solucionarlo he tenido que cambiar el fichero XML por codigo para incluirlo. En concreto son el nodo <Cobro> y <Pago>.

en Cobro hay que poner esto.

<Cobro xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInformacion.xsd">

en pago hay que poner esto.

<Pago xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInformacion.xsd">

Los xmlns no se pueden ni se deben quitar ya que como no esten hacienda da error. En concreto en los cobros y pagos el error es que faltaba uno.

Se me olvidada. El nodo <cobros> y <pagos> no lleva xmlns

Igual es esto l oque te esta pasando.

Francisco1973 09-03-2017 16:44:52

Gracias por tu respuesta, es exactamente lo que me está pasando. ¿Y como lo cambias ? Tienes algún ejemplo?
Saludos

keys 09-03-2017 16:52:12

Lo que hago es en el objeto THTTPTRIO en el evento OnbeforeExecute capturar el xml y cambiarlo a mano.

Código Delphi [-]
    var
      ss:TFileStream;
      Fichero : TStringList;
      i : Integer;
     nficheroTemp : string;
   begin
     
     NficheroTemp := 'c:\tmp\LCFTemporal.Xml';
     if FileExists(NficheroTemp) then
         DeleteFile(NficheroTemp);

     ss := TFileStream.Create(NficheroTemp, fmCreate);
     SOAPRequest.Position := 0;
     ss.CopyFrom(SOAPRequest, SOAPRequest.size);
     ss.Free;
     SOAPRequest.Position := 0;

     Fichero := TStringList.Create;
     Fichero.LoadFromFile(NficheroTemp);
     for i := 0 to Fichero.Count - 1 do
       Fichero.Strings[i] := StringReplace(Fichero.Strings[i],'','', [rfReplaceAll]);
     Fichero.SaveToFile(NficheroTemp);

     SOAPRequest.Size:=0;
     ss:=TFileStream.Create(NficheroTemp, fmOpenRead);
     SOAPRequest.Position := 0;
     SOAPRequest.CopyFrom( ss, ss.Size);
     ss.Free;

     SOAPRequest.Position := 0;

Perdona el texto no sale bien en el codigo. es así

Fichero.Strings[i] := StringReplace(Fichero.Strings[i],'<Cobro>','<Cobro xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInformacion.xsd">', [rfReplaceAll]);

Por cierto esto tambien te sirve para guardar el xml en una carpeta y poder ver lo que estás enviando.

Nasca 09-03-2017 17:11:18

Yo sigo pensando, y haciendo, que es mejor olvidarse de los objetos y montar los xml a mano.
No es prácticamente código y terminas obviando todos esos detalles tontos.
El control sobre el resultado es completo.

Idem con las respuestas.

Y de carambola no generas dependencias de librerías externas al programa.

CMB 09-03-2017 17:48:53

Construir un XML y olvidarse de las clases
 
Cita:

Empezado por Nasca (Mensaje 514157)
Yo sigo pensando, y haciendo, que es mejor olvidarse de los objetos y montar los xml a mano.
No es prácticamente código y terminas obviando todos esos detalles tontos.
El control sobre el resultado es completo.
Idem con las respuestas.
Y de carambola no generas dependencias de librerías externas al programa.

Yo lo estoy haciendo así y me encuentro muy cómodo. Construir un XML con los namespaces que correspondan y los contenidos correctos es la mar de fácil. Un rato, con un poco de paciencia, y ya queda para siempre. Y si algún día hay que tocar algo, pues son unos minutos.

No soy un gran experto en Delphi aunque me defiendo bastante bien, pero no comprendo el interés que hay con tantos líos de clases y dependencias. Llevas toda la razón, El control sobre el resultado es completo. Y el envío a la AEAT me funciona a la perfección tanto con facturas emitidas como recibidas. Por lo menos de momento :)

Francisco1973 09-03-2017 18:13:42

Gracias Keys, funciona perfectamente !!

newtron 09-03-2017 18:21:42

Hola de nuevo.

¿Alguien ha resuelto las facturas de venta por alquileres de locales comerciales? No soy capaz de crear los objetos.

Me da error en esta línea:

Código Delphi [-]
          ARegistroLRFacturasEmitidas[N].FacturaExpedida.DatosInmueble:=DatosInmueble2.create;

Gracias y un saludo

Francisco1973 09-03-2017 18:28:56

Te pongo un ejemplo:
SetLength(ADatosInmueble, Inmuebles.RowsFetched);
Inmuebles.First;
for L := 0 to Inmuebles.RowsFetched - 1 do
Begin
ADatosInmueble[L]:=DetalleInmueble.Create;
ADatosInmueble[L].SituacionInmueble:=SituacionInmuebleType(InmueblesSITUACION.Value - 1);
ADatosInmueble[L].ReferenciaCatastral:=InmueblesREFCATASTRAL.Value;
Inmuebles.Next;
End;

ARegLRFacturasEmitidas[i].FacturaExpedida.DatosInmueble:=ADatosInmueble;

newtron 09-03-2017 18:40:49

Gracias por tu pronta respuesta.

Me da errores al intentar implantar tu ejemplo. ¿Cómo has declarado el array ADatosInmueble?

Gracias y un saludo

Edito: Ya lo he resuelto. Pero yo pregunto... ¿cómo averiguas que hay que crear un array con los valores para asignarlos?

newtron 09-03-2017 19:22:19

Y vuelvo con el tema....

¿Habéis probado a pasar una factura de alquiler de local de negocio sin referencia catastral? a mi me da error porque dice que no está informado la referencia catastral. :confused::confused:

Saludos

Nasca 09-03-2017 19:50:59

Cita:

Empezado por newtron (Mensaje 514168)
Y vuelvo con el tema....

¿Habéis probado a pasar una factura de alquiler de local de negocio sin referencia catastral? a mi me da error porque dice que no está informado la referencia catastral. :confused::confused:

Saludos

Revisa ClaveRegimenEspecialOTrascendencia, con 13 no debería ser obligatorio.

keys 10-03-2017 08:54:55

En las claves regimen especialOtrascendencia 13, 14, 15. Es obligatorio la referencia catastral a no ser que en situación del inmueble tengas la clave 3 situaciones anteriores pero sin referencia catastral

Un Saludo.

newtron 10-03-2017 08:57:56

Cita:

Empezado por keys (Mensaje 514183)
En las claves regimen especialOtrascendencia 13, 14, 15. Es obligatorio la referencia catastral a no ser que en situación del inmueble tengas la clave 3 situaciones anteriores pero sin referencia catastral

Un Saludo.

Eso entiendo pero estoy haciendo una prueba con clave 13 y 3 y me da error si no le meto la referencia catastral.

¿Podría alguien hacer una prueba a ver si estoy equivocado o algo falla?

Gracias y un saludo

keys 10-03-2017 09:13:12

Hola. Tienes razón. Si pones las claves 13, 14, y 15. Obliga a poner la referencia aunque la situación sea 3. Si te fijas en la descripcion pone que si es 13,14,15 son obligatorios los dos campos.

Creo que es una consulta para enviar a Hacienda.

Nasca 10-03-2017 09:20:07

Según sus FAQ:

http://www.agenciatributaria.es/AEAT...negocio_.shtml

Cita:

El arrendador registrará la factura expedida con la clave de régimen especial “13” o “14” según el arrendamiento esté o no sujeto a retención. En el caso de que se trate de un arrendamiento no sujeto a retención deberá cumplimentar adicionalmente los campos correspondientes a la situación del inmueble y a la referencia catastral.
El arrendatario se limitará a registrar la factura recibida con la clave de régimen especial “15”.

La 13 no debería dar error.

Pero igualmente estoy haciendo pruebas usando 4 combinaciones: 13-con ref, 13-sin ref, 14-con ref y 14-sin ref
Y me devuelve un error de validación general, no llega a pasar el filtro general de validación contra el xsd.

keys 10-03-2017 14:08:27

Respuesta de hacienda sobre las referencias catastrales.

este tema se soluciona en la próxima versión publicada (0.6) que entra en vigor el 15 de marzo.

Nasca 10-03-2017 14:46:03

La verdad es que tenía toda la pinta de ser algo así.


La franja horaria es GMT +2. Ahora son las 21:24:31.

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