Será que alguma das variáveis usadas no calculo do HASH é NULL ? Talvez você precise usar o coalesce...
Também, notei que que você não está usando o prefixo "new."
CREATE OR ALTER TRIGGER BIU_DOCUMENTO_HASH FOR DOCUMENTO
ACTIVE BEFORE INSERT OR UPDATE POSITION 0
AS
begin
new.HASH = hash( RDB$GET_CONTEXT('USER_SESSION', 'IB_KEY' )||
new.codloja||new.codterminal||new.codturno||new.coo||
new.denominacao||coalesce(new.contador,0)||new.numgnf||
new.datahora_inicio||coalesce(new.datahora_fim,cast('1-1-1' as timestamp))||
new.codcliente||new.codautorizado||coalesce(new.documento_cli,'')||coalesce(new.nome_cli,'')||
new.subtotal||new.desconto_acrescimo||coalesce(new.total_pago,0)||new.troco||
new.cancelado||new.trunca ) ;
end[/code]