Cita:
Empezado por espinete
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.