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 15-12-2023
nincillo nincillo is offline
Miembro
 
Registrado: may 2017
Posts: 151
Poder: 8
nincillo Va por buen camino
Cita:
Empezado por iMia Ver Mensaje
Buenas a todos de nuevo,
los que hemos tenido "la suerte" de implementar el TBAI, volvemos a las andadas...

Estoy empezando a mirar la info que acaba de salir, para ver que podré aprovechar del TBAI y no puedo parsear los xsd del documento principal.

el wsdl sin problemas,

El primer xsd sí,
https://prewww2.aeat.es/static_files...nformacion.xsd


pero el resto no...

https://prewww2.aeat.es/static_files...ministroLR.xsd

ni

https://prewww2.aeat.es/static_files...Suministro.xsd


¿Os ha funcionado a los demás?

¿A qué te refieres de si os está funcionando?

Yo estoy intentando utilizarlos desde Delphi 2007 y me salta un mensaje de errro de Empty Documento cuando hago la llamada para dar de alta una factura.

Gracias.
Responder Con Cita
  #2  
Antiguo 15-12-2023
nincillo nincillo is offline
Miembro
 
Registrado: may 2017
Posts: 151
Poder: 8
nincillo Va por buen camino
Cita:
Empezado por nincillo Ver Mensaje
¿A qué te refieres de si os está funcionando?

Yo estoy intentando utilizarlos desde Delphi 2007 y me salta un mensaje de errro de Empty Documento cuando hago la llamada para dar de alta una factura.

Gracias.
Como ya han pasado más de 25 minutos ya no puedo editar el mensaje original, así que sigo en este otro post.

Estoy intentando importar los wsdl desde dos versiones diferentes de Delphi:
+ Delphi 2007, al intentar importarlos me dice: Error [Empty document].
+ Delphi 11, importar me los permite importar, pero luego, al compilar me da error en dos líneas en las que me dice que los literales de tipo string no pueden medir más de 255 caracteres y de ahí no paso.


¿Alguien los ha importado recientemente?. ¿Ha podido sin problema?

Gracias y un saludo.

Edito: He retocado las líneas que se suponen que miden demasiado (no se que implicaciones traerá luego), pero el caso es que al darle a enviar una petición, me dice "URL Pendiente de definir", con lo cual de momento tampoco podemos probar nada por este "lado".

Última edición por nincillo fecha: 15-12-2023 a las 14:01:21.
Responder Con Cita
  #3  
Antiguo 15-12-2023
manelb manelb is offline
Miembro
 
Registrado: mar 2017
Posts: 281
Poder: 8
manelb Va por buen camino
Cita:
Empezado por nincillo Ver Mensaje
+ Delphi 11, importar me los permite importar, pero luego, al compilar me da error en dos líneas en las que me dice que los literales de tipo string no pueden medir más de 255 caracteres y de ahí no paso.
En unes pruebas que hice hace un tiempo, recuerdo que me daba ese error de compilación.

Lo que hice en ese momento para continuar con las pruebas fue descomponer la línea en varias cadenas y funcionó. Pude compilar y continuar con mis pruebas.

Código Delphi [-]
'cadena de mas de …….  255 caracteres';
se convirtió en
Código Delphi [-]
'cadena de mas de …'+'….  255 caracteres';

Si nadie ofrece una solución más elegante, a mí me funcionó.

Saludos
Responder Con Cita
  #4  
Antiguo 15-12-2023
nincillo nincillo is offline
Miembro
 
Registrado: may 2017
Posts: 151
Poder: 8
nincillo Va por buen camino
Cita:
Empezado por manelb Ver Mensaje
En unes pruebas que hice hace un tiempo, recuerdo que me daba ese error de compilación.

Lo que hice en ese momento para continuar con las pruebas fue descomponer la línea en varias cadenas y funcionó. Pude compilar y continuar con mis pruebas.

Código Delphi [-]
'cadena de mas de …….  255 caracteres';
se convirtió en
Código Delphi [-]
'cadena de mas de …'+'….  255 caracteres';

Si nadie ofrece una solución más elegante, a mí me funcionó.

Saludos
Lo probaré... Gracias.
Pero de momento, pocas pruebas de envío se pueden hacer porque no tienen definida la url. ¿Verdad?.
Responder Con Cita
  #5  
Antiguo 16-12-2023
nincillo nincillo is offline
Miembro
 
Registrado: may 2017
Posts: 151
Poder: 8
nincillo Va por buen camino
Cita:
Empezado por nincillo Ver Mensaje
Lo probaré... Gracias.
Pero de momento, pocas pruebas de envío se pueden hacer porque no tienen definida la url. ¿Verdad?.

Me funcionó el "truco" que me sugeriste. Muchas gracias de nuevo.
Ahora he atascado en otro punto.
A ver si alguien me puede ayudar.
Estoy empezando a rellenar los diferentes apartados de la factura antes de enviarla y he atascado al llegar al punto "Desglose", que se supone que es un Array of Detail.

Este es el código que llevo desarrollado hasta ahora.

Código:
procedure TForm2.BtnEnvioFacturaClick(Sender: TObject);
var
  regFactura : FacturasEmitidasType;
  result : Array_Of_RespuestaExpedidaType;
  arrayFacturas : Array_Of_FacturasEmitidasType;
  arrayDetalles : array of DetalleType;
  detalle : DetalleType;
begin

  regFactura := FacturasEmitidasType.Create;
  regFactura.DatosControl := DatosControlType.Create;

  regFactura.RegistroFacturacion := RegistroFacturacionType.Create;

    regFactura.RegistroFacturacion.PeriodoLiquidacion := PeriodoLiquidacion.Create;
      regFactura.RegistroFacturacion.PeriodoLiquidacion.Ejercicio := '23';
      regFactura.RegistroFacturacion.PeriodoLiquidacion.Periodo := TipoPeriodoType(1); // Empieza a contar desde 0

    regFactura.RegistroFacturacion.IDFactura := IDFacturaExpedidaType.Create;
      regFactura.RegistroFacturacion.IDFactura.NumSerieFacturaEmisor := '23/123456';
      regFactura.RegistroFacturacion.IDFactura.FechaExpedicionFacturaEmisor := '31/12/23';
      regFactura.RegistroFacturacion.IDFactura.IDEmisorFactura := IDEmisorFactura2.Create;
        regFactura.RegistroFacturacion.IDFactura.IDEmisorFactura.NIF := '3333333';

    regFactura.RegistroFacturacion.DescripcionOperacion := 'vneta de mercaderías';

      regFactura.RegistroFacturacion.Desglose := DesgloseType.Create();

        detalle:= DetalleType.Create;
          detalle.CuotaRepercutida := '100';
          detalle.TipoImpositivo := '21';

        SetLength(arrayDetalles, 1);
        arrayDetalles[0] := detalle;

        regFactura.RegistroFacturacion.Desglose[0] := detalle;

  try
    SetLength(arrayFacturas, 1);
    arrayFacturas[0] := regFactura;
    result := GetsfSOAP(true, '', HTTPRIO1).AltaFactuSistemaFacturacion(arrayFacturas);
  finally
    regFactura.Destroy;
  end;


end;
Responder Con Cita
  #6  
Antiguo 18-12-2023
javipes javipes is offline
Miembro
 
Registrado: jul 2007
Posts: 14
Poder: 0
javipes Va por buen camino
y si pruebas con
Código:
setlength(regfactura.RegistroFacturacion.desglose,1);

antes de hacer
Código:
regFactura.RegistroFacturacion.Desglose[0] := DesgloseType.Create();
Responder Con Cita
  #7  
Antiguo 18-12-2023
nincillo nincillo is offline
Miembro
 
Registrado: may 2017
Posts: 151
Poder: 8
nincillo Va por buen camino
Cita:
Empezado por javipes Ver Mensaje
y si pruebas con
Código:
setlength(regfactura.RegistroFacturacion.desglose,1);

antes de hacer
Código:
regFactura.RegistroFacturacion.Desglose[0] := DesgloseType.Create();
No había visto este mensaje antes de enviar el como lo solucioné.

De todas formas voy a probarlo.

Muchas gracias.
Responder Con Cita
  #8  
Antiguo 18-12-2023
nincillo nincillo is offline
Miembro
 
Registrado: may 2017
Posts: 151
Poder: 8
nincillo Va por buen camino
Cita:
Empezado por nincillo Ver Mensaje
Me funcionó el "truco" que me sugeriste. Muchas gracias de nuevo.
Ahora he atascado en otro punto.
A ver si alguien me puede ayudar.
Estoy empezando a rellenar los diferentes apartados de la factura antes de enviarla y he atascado al llegar al punto "Desglose", que se supone que es un Array of Detail.

Este es el código que llevo desarrollado hasta ahora.

Código:
procedure TForm2.BtnEnvioFacturaClick(Sender: TObject);
var
  regFactura : FacturasEmitidasType;
  result : Array_Of_RespuestaExpedidaType;
  arrayFacturas : Array_Of_FacturasEmitidasType;
  arrayDetalles : array of DetalleType;
  detalle : DetalleType;
begin

  regFactura := FacturasEmitidasType.Create;
  regFactura.DatosControl := DatosControlType.Create;

  regFactura.RegistroFacturacion := RegistroFacturacionType.Create;

    regFactura.RegistroFacturacion.PeriodoLiquidacion := PeriodoLiquidacion.Create;
      regFactura.RegistroFacturacion.PeriodoLiquidacion.Ejercicio := '23';
      regFactura.RegistroFacturacion.PeriodoLiquidacion.Periodo := TipoPeriodoType(1); // Empieza a contar desde 0

    regFactura.RegistroFacturacion.IDFactura := IDFacturaExpedidaType.Create;
      regFactura.RegistroFacturacion.IDFactura.NumSerieFacturaEmisor := '23/123456';
      regFactura.RegistroFacturacion.IDFactura.FechaExpedicionFacturaEmisor := '31/12/23';
      regFactura.RegistroFacturacion.IDFactura.IDEmisorFactura := IDEmisorFactura2.Create;
        regFactura.RegistroFacturacion.IDFactura.IDEmisorFactura.NIF := '3333333';

    regFactura.RegistroFacturacion.DescripcionOperacion := 'vneta de mercaderías';

      regFactura.RegistroFacturacion.Desglose := DesgloseType.Create();

        detalle:= DetalleType.Create;
          detalle.CuotaRepercutida := '100';
          detalle.TipoImpositivo := '21';

        SetLength(arrayDetalles, 1);
        arrayDetalles[0] := detalle;

        regFactura.RegistroFacturacion.Desglose[0] := detalle;

  try
    SetLength(arrayFacturas, 1);
    arrayFacturas[0] := regFactura;
    result := GetsfSOAP(true, '', HTTPRIO1).AltaFactuSistemaFacturacion(arrayFacturas);
  finally
    regFactura.Destroy;
  end;


end;
Me respondo a mi mismo por si le puede servir a alguién:

Código:
          // <- Rellenos los datos de las diferentes bases DetalleType
            detalle1:= DetalleType.Create;
              detalle1.ClaveRegimen := IdOperacionesTrascendenciaTributariaType._01;                                
              detalle1.CalificacionOperacion := CalificacionOperacionType.S1;                                       
              detalle1.OperacionExenta := OperacionExentaType.E0;                                                      
              detalle1.TipoImpositivo := '21';
              detalle1.BaseImponibleOimporteNoSujeto := '123';
              detalle1.BaseImponibleACoste := '111';                                                                  
              detalle1.CuotaRepercutida := '100';
              detalle1.TipoRecargoEquivalencia := '0';
              detalle1.CuotaRecargoEquivalencia := '0';


            detalle2:= DetalleType.Create;
              detalle2.CuotaRepercutida := '200';
              detalle2.TipoImpositivo := '10';

            // Los añado todos en un array
            SetLength(arrayDetalles, 2);
              arrayDetalles[0] := detalle1;
              arrayDetalles[1] := detalle2;

            // Cargo el array con todas las posibles bases en el apartado Desglose
            regFactura.RegistroFacturacion.Desglose := arrayDetalles; // := deta .Create;


Por favor, ¿alguien que tenga Delphi 2007 podría intentar cargar a día de hoy los WSDL haber si puede o si le da error de "Document Empty"?.

Yo recuerdo haberlos importado hace unos meses sin problema, pero algo han modificado desde entonces que ahora no soy capaz.

Gracias.
Responder Con Cita
  #9  
Antiguo 18-12-2023
nincillo nincillo is offline
Miembro
 
Registrado: may 2017
Posts: 151
Poder: 8
nincillo Va por buen camino
Cita:
Empezado por nincillo Ver Mensaje
Me respondo a mi mismo por si le puede servir a alguién:

Código:
          // <- Rellenos los datos de las diferentes bases DetalleType
            detalle1:= DetalleType.Create;
              detalle1.ClaveRegimen := IdOperacionesTrascendenciaTributariaType._01;                                
              detalle1.CalificacionOperacion := CalificacionOperacionType.S1;                                       
              detalle1.OperacionExenta := OperacionExentaType.E0;                                                      
              detalle1.TipoImpositivo := '21';
              detalle1.BaseImponibleOimporteNoSujeto := '123';
              detalle1.BaseImponibleACoste := '111';                                                                  
              detalle1.CuotaRepercutida := '100';
              detalle1.TipoRecargoEquivalencia := '0';
              detalle1.CuotaRecargoEquivalencia := '0';


            detalle2:= DetalleType.Create;
              detalle2.CuotaRepercutida := '200';
              detalle2.TipoImpositivo := '10';

            // Los añado todos en un array
            SetLength(arrayDetalles, 2);
              arrayDetalles[0] := detalle1;
              arrayDetalles[1] := detalle2;

            // Cargo el array con todas las posibles bases en el apartado Desglose
            regFactura.RegistroFacturacion.Desglose := arrayDetalles; // := deta .Create;


Por favor, ¿alguien que tenga Delphi 2007 podría intentar cargar a día de hoy los WSDL haber si puede o si le da error de "Document Empty"?.

Yo recuerdo haberlos importado hace unos meses sin problema, pero algo han modificado desde entonces que ahora no soy capaz.

Gracias.
Ahora he conseguido ver algo más tras descargarme el wsdl previamente a un fichero local.

Ahora no me da error, pero no me lo importa "completo". Al ver el código fuente generado, veo lo siguiente a ver si puede servir de ayuda:
Código:
  // ************************************************************************ //
  // Namespace : https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SistemaFacturacion.wsdl
  // transport : http://schemas.xmlsoap.org/soap/http
  // style     : document
  // binding   : sfBinding
  // service   : siiService
  // port      : SistemaFacturacion
  // URL       : URL Pendiente de definir
  // ************************************************************************ //
  sfSOAP = interface(IInvokable)
  ['{B0562959-AF9B-3247-F911-0C4058390FB8}']

    // Cannot unwrap:
    //     - Input part does not refer to an element
    //     - Output part does not refer to an element
    function  AltaFactuSistemaFacturacion(const AltaFactuSistemaFacturacion: AltaFactuSistemaFacturacion): RespuestaAltaFactuSistemaFacturacion; stdcall;

    // Cannot unwrap:
    //     - Input part does not refer to an element
    //     - Output part does not refer to an element
    function  BajaFactuSistemaFacturacion(const BajaFactuSistemaFacturacion: BajaFactuSistemaFacturacion): RespuestaBajaFactuSistemaFacturacion; stdcall;
  end;
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 14:35:48.


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