Ver Mensaje Individual
  #504  
Antiguo 18-07-2025
Avatar de DarkDudae
DarkDudae DarkDudae is offline
Miembro
 
Registrado: abr 2006
Posts: 177
Reputación: 21
DarkDudae Va por buen camino
Cita:
Empezado por Matorral Ver Mensaje
Quería comentaros, por si le sirve a alguien, que estoy utilizando el evento onRegTrasEspera para gestionar la cola de envío, y va de cine.

Mi software es de hostelería y comercio, y en principio había pensado en realizar los envíos cada vez que se cobra una factura, pero no las tenia todas conmigo, porque en muchos bares y comercios realizan varios cobros por minuto, y quien sabe si los banearían.

Para gestionar la cola de envíos hago lo siguiente:

Cuando cobro una factura compruebo la propiedad AutoEspera. Si está a False la pongo a true y realizo el envío. Y si esta a True guardo la factura en la cola (FIFO) sin realizar envío.

Código Delphi [-]
        if VerifactuD7.AutoEspera=false then begin    // si esta a false se puede enviar
          try
            HazAvisoVerifactu('Enviando registro de facturación ... ');

            VerifactuD7.AutoEspera:=true;    // ponemos en marcha onTrasEspera

            enviarVerifactu_Simplificada( cSer,cTicket,'A'); // Enviamos Verifactu

            CierraAvisoVerifactu(Proc_Ventas);

          except
            showmessage('Fallo al enviar Factura');
          end;
        end
        else
          Graba_Pendiente_Envio(cSerieTickets,TTicket.FieldByName('SERIE').AsString,TTicket.FieldByName('CODIG  O').AsString,'S', 'N', 'N', 'N');

Luego en el evento onTrasEspera, si hay registros pendientes realizo el envío de las facturas guardadas en cola y si no hay registros pendientes de envío vuelvo a poner a False la propiedad AutoEspera.

Código Delphi [-]
/////// VERIFACTU
// autoenvio automatico de facturas pendientes REGISTROSPENDIENTESENVIO.DB
procedure TProc_Ventas.OnTrasEsperaD7( Sender: TObject );
begin

  if TRegistrosPendientesEnvio.IsEmpty then
    VerifactuD7.AutoEspera:=False
  else
    enviarVerifactu_Pendientes;

end;

Espero que le pueda servir a alguien.
Vaya, me ha alegrado ver que mi pequeña aportación al componente le ha servido a alguien. Pensaba que era el único que usaba algo así.
Comentarte que el componente intercepta el tiempo de espera entre operaciones devuelto en cada envío desde la AEAT para modificar el timer interno que se usa antes de lanzar el evento OnTrasEspera. Se incorporó para hacer exactamente lo que estás haciendo y lo estás usando de forma muy similar a la que lo hago yo mismo.

Un saludo!
__________________
El recuerdo es la prisión en la que el alma sueña pasado, cuando no vive el presente, ni quiere un futuro.