Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Proyecto SIF/Veri*Factu/Ley Antifraude > Envío de registros y sus respuestas
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-03-2025
Avatar de ramherfer
ramherfer ramherfer is offline
Miembro
 
Registrado: may 2013
Ubicación: Valencia
Posts: 128
Poder: 12
ramherfer Va por buen camino
Cita:
Empezado por seccion_31 Ver Mensaje
Podrías hacer una consulta simple
No quisiera hacer consultas muy recurrentes para no tener conflictos, voy a intentarlo y antes de hacer un envio consultar.

gracias por informar con el tema del log.
__________________
Se humilde para admitir tus errores, inteligente para aprender de ellos y maduro para corregirlos.
Responder Con Cita
  #2  
Antiguo 22-03-2025
Avatar de seccion_31
seccion_31 seccion_31 is offline
Miembro
 
Registrado: ene 2017
Posts: 292
Poder: 9
seccion_31 Va por buen camino
Cita:
Empezado por ramherfer Ver Mensaje
No quisiera hacer consultas muy recurrentes para no tener conflictos, voy a intentarlo y antes de hacer un envio consultar.

gracias por informar con el tema del log.
también me había planteado comprobar el estado de la AEAT pero solo al abrir el programa.

Incluso habia pensado hacer una función de ese tipo, a ver si hay otra forma...

Con otro tema: Pensé en validar el.vies y está la función dentro, pero no me válida casi nunca y lo dejé por imposible.


Slds,!
Responder Con Cita
  #3  
Antiguo 22-03-2025
Avatar de ramherfer
ramherfer ramherfer is offline
Miembro
 
Registrado: may 2013
Ubicación: Valencia
Posts: 128
Poder: 12
ramherfer Va por buen camino
Voy de momento a usar esta función con la URL del Endpoint de la AEAT

Código Delphi [-]
function VerificarServicioSOAP(const URL: string; Intentos: Integer): Boolean;
var
  HTTP: TIdHTTP;
  SSLHandler: TIdSSLIOHandlerSocketOpenSSL;
  I: Integer;
begin
  Result := False; 
  HTTP := TIdHTTP.Create(nil);
  SSLHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
  try
    HTTP.IOHandler := SSLHandler;
    HTTP.ReadTimeout := 5000; 

    for I := 1 to Intentos do
    begin
      try
        HTTP.Head(URL);
        Result := True; // El servicio está activo
        Exit;
      except
        on E: EIdException do
          ; // Oculta cualquier error de Indy
        on E: Exception do
          ; // Oculta otros errores generales
      end;
    end;
  finally
    SSLHandler.Free;
    HTTP.Free;
  end;
end;

Con un elemento visual en verde si está activo y en rojo si NO está activo en el statusBar.
Esto en el hilo principal de la aplicación y si al ir a remitir facturas a la señora AEAT si está inactivo que ni lo intente.
Ya que en estos momentos está caido lo tengo a modo de pruebas
__________________
Se humilde para admitir tus errores, inteligente para aprender de ellos y maduro para corregirlos.
Responder Con Cita
  #4  
Antiguo 22-03-2025
Avatar de seccion_31
seccion_31 seccion_31 is offline
Miembro
 
Registrado: ene 2017
Posts: 292
Poder: 9
seccion_31 Va por buen camino
Cita:
Empezado por ramherfer Ver Mensaje
Voy de momento a usar esta función con la URL del Endpoint de la AEAT

Código Delphi [-]
function VerificarServicioSOAP(const URL: string; Intentos: Integer): Boolean;
var
  HTTP: TIdHTTP;
  SSLHandler: TIdSSLIOHandlerSocketOpenSSL;
  I: Integer;
begin
  Result := False; 
  HTTP := TIdHTTP.Create(nil);
  SSLHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
  try
    HTTP.IOHandler := SSLHandler;
    HTTP.ReadTimeout := 5000; 

    for I := 1 to Intentos do
    begin
      try
        HTTP.Head(URL);
        Result := True; // El servicio está activo
        Exit;
      except
        on E: EIdException do
          ; // Oculta cualquier error de Indy
        on E: Exception do
          ; // Oculta otros errores generales
      end;
    end;
  finally
    SSLHandler.Free;
    HTTP.Free;
  end;
end;

Con un elemento visual en verde si está activo y en rojo si NO está activo en el statusBar.
Esto en el hilo principal de la aplicación y si al ir a remitir facturas a la señora AEAT si está inactivo que ni lo intente.
Ya que en estos momentos está caido lo tengo a modo de pruebas
Con tu permiso lo coloco en el componente

Slds !
Responder Con Cita
  #5  
Antiguo 22-03-2025
Avatar de seccion_31
seccion_31 seccion_31 is offline
Miembro
 
Registrado: ene 2017
Posts: 292
Poder: 9
seccion_31 Va por buen camino
verificar que la AEAT esta ahi.

He usado el codigo de ramherfer con algun cambio para que me funcionara, y hoy da como activa la web de la aeat cuando tiene un error, el tipico del fin de semana:

Cita:
Descripción: UNSUCCESSFUL EXECUTION CAUSED BY AN UNAVAILABLE RESOURCE. REASON 00C90081, TYPE OF RESOURCE 00000210, AND RESOURCE NAME DBTCCSOR.TSTCCSOR.00000001. SQLCODE=-904, SQLSTATE=57011, DRIVER=4.33.43
La pagina existe, y por tanto aparece como activa, pero con error. Entrar en analizar su contenido me parece un poco exagerado. Es mi opinión. Ademas de necesitar las dlls adiciones para que funcione el ssl.

Por lo que creo que es mejor incorporar una consulta, la mas simple, de un día determinado, por ejemplo del día siguiente. (no se si dejara).

Otro tema es la frecuencia de revision planteada.

Saludos !

Nota: ya esta incpororada la funcion, para ello consulta una factura, llamada PING en el periodo y fecha actuales con el certificado de la sesion. Es inmediato y seguro.

Última edición por seccion_31 fecha: 22-03-2025 a las 17:16:00.
Responder Con Cita
  #6  
Antiguo 22-03-2025
mqm mqm is offline
Miembro
 
Registrado: nov 2006
Posts: 41
Poder: 0
mqm Va por buen camino
Buenas session_31.
Yo lo que hago en tu componente es lo que dices, una consulta inexstente y listo.

Código Delphi [-]
procedure TForm1.VerificaConexíonClick(Sender: TObject);
var
   ejercicio, periodo, numero: string;
   desde, hasta: TDatetime;
   resultado: TConsultaResultado;
begin
   // Datos esenciales de inicio de sesion para consulta
   VeriFactuD7.Certificado               := comboCertificados.text;
   VerifactuD7.Emisor.NombreRazonEmisor  := editEmisor.Text;
   VerifactuD7.Emisor.nifEmisor          := editNIFEmisor.Text;
   VerifactuD7.Simular                   := false;
   VerifactuD7.urlEndPoint               := editURL.text;

   // si se filtra por sistema informatico colocar los datos
   if filtroSIF.checked then
   begin
       VerifactuD7.SistemaInformatico.razonSocial       := editRazonSocial.Text;
       VerifactuD7.SistemaInformatico.nif               := editNIF.Text;
       VerifactuD7.SistemaInformatico.nombre            := editNombre.Text;
       VerifactuD7.SistemaInformatico.ID                := editID.Text;
       VerifactuD7.SistemaInformatico.Version           := editVersion.Text;
       VerifactuD7.SistemaInformatico.NumeroInstalacion := editInstalacion.Text;
   end;

   // Archivo XML vacío que se guardará como referencia de la consulta
   VeriFactuD7.filenameXML_Envio       := xmlEnvioConsulta;
   VeriFactuD7.filenameXML_Respuesta   := xmlRespuestaConsulta; 

   // Iniciar Sesión
   if not VeriFactuD7.inicio then
   begin
       ShowMessage('Error Iniciando Sesion');
       Exit;
   end;

     // Asignar parámetros mínimos válidos
     ejercicio := IntToStr(YearOf(Now));   // Año actual
     periodo := FormatDateTime('mm', Now); // Mes actual
     numero := '';                         // Consulta sin número específico
     desde := Now;                         // Fecha actual como ejemplo
     hasta := Now;                         // Mismo día para una consulta mínima válida

   // Intentar la consulta vacía
   if VeriFactuD7.consulta(ejercicio, periodo, numero, desde, hasta, filtroSIF.Checked, resultado) then
   begin
       ShowMessage('Conexión exitosa con el servidor.');
   end
   else
   begin
       ShowMessage('Error en la conexión: ' + resultado.errorDes);
   end;

   // Terminar sesión
   VeriFactuD7.final('');
end;
Responder Con Cita
  #7  
Antiguo 22-03-2025
Avatar de seccion_31
seccion_31 seccion_31 is offline
Miembro
 
Registrado: ene 2017
Posts: 292
Poder: 9
seccion_31 Va por buen camino
si, creo que la consulta inexistente es lo mejor.

ahora se reducira a:

Código:
            VeriFactuD7.Certificado              :=comboCertificados.text;
            VerifactuD7.Emisor.NombreRazonEmisor :=editEmisor.Text;
            VerifactuD7.Emisor.nifEmisor         :=editNIFEmisor.Text;
            VerifactuD7.urlEndPoint              :=editURL.text;   // endpoint de la AEAT

            if veriFactuD7.VerifactuActivo then
                statusBar1.panels[1].Text:='AEAT Activa'
            else
                statusBar1.panels[1].Text:='AEAT Inactiva';

y si tienes el certificado ya cargado mucho menos codigo. Sin iniciar sesion.

Ya esta incluido el ejemplo en la Demo

Y la publicare la semana del 31 ; ) como version 2.1 con los cambios que vayan apareciendo.

Saludos !

: )

y buenas tardes

Última edición por seccion_31 fecha: 22-03-2025 a las 17:47:04.
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
Verifactu o por requerimiento (no-verifactu) ¿decisión del usuario? Maska10 Temas legales 2 07-12-2024 12:34:47
Demo de una applicación para una estación de enfermera con RAD Studio AgustinOrtu La Taberna 1 21-07-2015 17:41:35
Demo Delphi, EMail Caral Internet 1 19-12-2006 00:37:56
Demo de delphi 2005 mazinger Varios 2 18-12-2004 09:23:09
El Rave que viene con Delphi es una Demo? apicito Impresión 0 04-06-2003 11:33:36


La franja horaria es GMT +2. Ahora son las 19:15:30.


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