Creo que hay un error en la función asignaTipoNif, en la línea
"if factura.clientetipoNIF='ES' then"
quedaría así:
Código Delphi
[-]
procedure asignaTipoNif(var factura:TRegistroFactura);
begin
if factura.clientetipoNIF<>'' then exit;
if factura.clienteCodPais='ES' then
factura.clientetipoNIF:='02'
else
if CodpaisEuropea(factura.clienteCodPais) then
factura.clientetipoNIF:='04'
else
factura.clientetipoNIF:='06';
end;