Una vez enviado es muy sencillo cargar el resultado.
Este es un extracto del ejemplo incluido que carga desde la excel:
Se envia, y se obtiene el resultado en el record resultado
Si no se puede si quiera enviar, devuelve false, si hay envio devuelve true, y en resultado carga lo devuelto por la aeat
Código:
if VeriFactuD7.envio(resultado) then // enviarlo !!
procesarEnvio(resultado) // procesar el resultado (mostrar en pantalla, y guardarlo en xmlFacturas)
else
begin
memoRes.lines.add('El Envio No Ha Podido Ser Realizado');
memoRes.lines.add(resultado.EstadoEnvio);
memoRes.lines.add(resultado.error);
end;
///////////////////////////////////////////////////////////
procedure TForm1.procesarEnvio(resultado:TResultadoEnvio);
var
desError,error,estado,factura, emisor:string;
j:integer;
_ok,_oke,_err:integer;
begin
memoXML.Lines.LoadFromFile(xmlEnvio);
memoXML.Text:=FormatXMLData(memoXML.Text);
memoRes.lines.clear;
memoRes.lines.Add('Se ha realizado el envío');
memoRes.Lines.Add('');
memoRes.Lines.Add('Estado Del Envio:'+resultado.EstadoEnvio );
memoRes.lines.Add('CSV: ' + resultado.CSV);
memoRes.lines.Add('TimeStamp: ' + resultado.Fecha+' '+resultado.Hora);
memoRes.Lines.Add('');
_ok :=0; // nº facturas OK
_oke :=0; // nº facturas OK ( pero aceptadas con errores )
_err :=0; // nº facturas con errores (no aceptadas)
for j:=0 to resultado.nFacturas-1 do
begin
factura := resultado.facturas[j].NumSerieFactura;
emisor := resultado.facturas[j].IDEmisorFactura;
estado := resultado.facturas[j].estado;
error := inttostr(resultado.facturas[j].errorcodigo);
desError := resultado.facturas[j].descripcionError;
memoRes.Lines.Add( factura + ' ' + estado + ' '+error+' '+desError ); // ver en pantalla
if resultado.facturas[j].OK then // Es correcto ó aceptado con errores
begin
// colocar el csv y huella en la factura
if facturasEnviadas.locate('emisor;NumSerieFactura',vararrayof([emisor, factura ]),[]) then
begin
FacturasEnviadas.edit;
FacturasEnviadas.fieldbyName('csv').text :=resultado.CSV;
FacturasEnviadas.FieldByName('huella').text :=resultado.facturas[j].huellaFactura;
FacturasEnviadas.fieldbyName('situacion').text:=estado;
FacturasEnviadas.post;
end;
if resultado.facturas[j].aceptadoConErrores then inc(_oke) else inc(_ok);
end
else
inc(_err); // Es erronea
end;
memoRes.Lines.Add('');
memoRes.Lines.Add('Facturas Aceptadas: '+inttostr(_ok) );
memoRes.Lines.Add('Facturas Aceptadas Con Errores: '+inttostr(_oke) );
memoRes.Lines.Add('Facturas Con Errores: '+inttostr(_err) );
// tiempo de espera:
if resultado.tiempoDeEspera<>'' then memoRes.Lines.Add('Se Ha Establecido Un Tiempo De Espera Proximo Envio De '+resultado.tiempoDeEspera);
end;
En el array resultado.facturas esta incluidas el resultado para cada factura.
Solo hay que recorerlo y colocar los datos devueltos:
Código:
for j:=0 to resultado.nFacturas-1 do
begin
factura := resultado.facturas[j].NumSerieFactura;
emisor := resultado.facturas[j].IDEmisorFactura;
estado := resultado.facturas[j].estado;
error := inttostr(resultado.facturas[j].errorcodigo);
desError := resultado.facturas[j].descripcionError;