La version 5.7 va a incoporar la posibilidad de guardar y recuperar en formato binario el TRegistroFactura
De esta forma es muy sencillo con apenas unas pocas instrucciones, crear una "cola" para ir procesando los registros de facturacion.
La demo incorporara el ejemplo de una cola de envio funcional que permite recibir en cualquier momento registros de facturacion en una carpeta e irlos procesando, segun el intervalo de la AEAT.
Código:
procedure TForm1.Guardarbinario1Click(Sender: TObject);
var
fila :integer;
factura :TRegistroFactura;
begin
fila:=stringGridFacturas.Row;
factura:=stringGrid_to_VerFactuD7( fila, false );
saveVeriFactuFile.FileName:=dirEnvio+'\'+factura.numSerieFactura+'.verifactu';
if saveVerifactuFile.execute then
veriFactuD7.saveFacturaToFile(factura,saveVeriFactuFile.filename);
end;
En este ejemplo, que viene de la demo se selecciona la fila de la excel cargada, se crea el registro de factura en stringGrid_to_VerFactuD7 y despues de la caja de dialogo de guardar como, se archiva en disco.
Con ese binario en el disco, un timer, puede capturarlo(s), enviarlo(s) y procesar resultados.
Código:
veriFactuD7.loadFacturaFromFile( factura, version, archivo);
n:=VeriFactuD7.addFactura( factura );
if n<=0 then
begin
showmessage('Error Añadiendo Factura '+factura.numSerieFactura+' Al Servidor');
if VeriFactuD7.ultimo_error_verifactu<>'' then
showmessage( VeriFactuD7.ultimo_error_verifactu );
end;
Guardas los binarios desde los diferentes puestos de facturacion, o un unico puesto a medida que facturan
La aplicacion "servidora" los encuentra en la carpeta y en el intervalo de tiempo
Código:
veriFactuD7.listFacturasFiles(dirEnvio, 'verifactu', listaEnvio);
esta funcion devuelve los binarios de la carpeta, ordenados por fecha y hora
Añade el registro inicial
Carga los binarios
Envia
Elimina los binarios procesados
Procesa resultados devueltos por la AEAT