Hola.
Yo hago lo siguiente:
Genero la factura en formato pdf, la firmo y la envío por correo electrónico. La firma de la factura la realiza el método Firma. Fíjate que el método firma necesita del archivo origen a firmar, el número de NIF del emisor de la factura (debe estar instalado el certificado digital) y el archivo resultante ya firmado.
utilizo el siguiente código:
Código Delphi
[-]
var
Inicio, Final: WideString;
Aeat: Variant;
begin
dmSgp.Export1.Report := Listado;
dmSgp.Export1.ExportQRPDF(varDirExe+ 'Temp\'+ NombreFacTel, True, False);
Inicio := varDirExe+ 'Temp\'+ NombreFacTel+ '.pdf';
Final := varDirExe+ 'Temp\'+ NombreFacTel+ '.F64';;
Aeat := CreateOleObject('AeatFact.AeatFactCtl');
try
CodiFirma := Aeat.FIRMA(Inicio, NifEmi, Final);
if Copy(CodiFirma, 1, 2) <> '00' then
Mensaje('ERROR en la generación de la Factura telématica.'+ #13+ Copy(CodiFirma, 4, 100)+ '.')
else begin
CopyFile(PChar(varDirExe+ 'Temp\'+ NombreFacTel+ '.F64'), PChar(varDirIni+ '\FacturasEmitidas\'+ NombreFacTel+ '.F64'), False);
with dmSgp.sqlSgp do begin
sql.Clear;
sql.Add('insert into sgp20Fte values (:Num, 0, es)');
ParamByName('Num').AsInteger := Factura;
ParamByName('Des').AsString := NombreFacTel+ '.F64';
ExecSql;
end;
fMensaje.EnviaEmilio(varAsunto, Nombre, Eml, varDirIni+ '\FacturasEmitidas\'+ NombreFacTel+'.F64', TexAsu, True, 0);
end;
finally
Aeat := Unassigned;
end;
end;
Bueno, coméntame cualquier cosa si lo necesitas.
Adolfo Bonis Mora
Adolfo