Ver Mensaje Individual
  #3  
Antiguo 08-07-2025
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.437
Reputación: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por espinete Ver Mensaje
El problema que tengo es que no consigo guardar el RF como XML, ya que me hará falta más tarde cuando haga el envío.

1. Es decir, el software genera el RF, el QR, etc. y marca la factura como "pendiente de enviar"
2. Luego otra aplicación o servicio que está siempre abierta, comprueba las facturas pendientes, crea el bloque (con las que estén listas) y realiza el envío.

...

¿Cómo lo habéis hecho vosotros?

Sé que "simulando el envío" en el evento OnBeforeExecute del componente HTTPRIO puedo guardar el XML de salida, pero no sé si es la mejor opción o si hay otra manera.
Ya se ha comentado otras veces.
Según la documentación y para evitar problemas posteriores (sobre todo con fechas y horas) el RF se debe generar en el mismo momento de emitir la factura.
Lo más sencillo es, como has dicho, en el OneforeExecure.

En el ejemplo de [seccion_31] tienes el código sencillo que lo hace. Captura el evento con el siguinte procedimiento:
https://www.clubdelphi.com/foros/showthread.php?t=97004
Código Delphi [-]
procedure TEventosHttpPrio.BeforeExecute(const MethodName: string; SOAPRequest: TStream);
var
      ss  :TFileStream;
      sTmp:TStringList;
      CertStream: TMemoryStream;
      sesion:integer;
begin
      if fileNameBefore<>'' then
      begin
          sTmp := TStringList.Create;
          sTMP.SaveToStream(SOAPRequest);
          try
              SOAPRequest.Position := 0;
              sTmp.LoadFromStream(SOAPRequest);
              sTmp.text:=FormatXMLData(sTMP.Text);
              sTmp.SaveToFile(fileNameBefore);

          finally
              FreeAndNil(sTmp);
          end;
      end;

      if simular then abort;
end;

Una vez los tienes todos almacenados.
LA APP2 sólo tienes que recogerlos, montar el paquete y enviarlo.

NOTA: En el código lo guarda a fichero, nosotros en nuestroi caso lo enviamos a B.D. también.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita