Código SQL
[-]
select a.codigo, a.numero_cv, a.tipo_transaccion
from tb_compras_ventas a
where
(:cod_cliente = -1 or a.ref_cliente=:cod_cliente)
el where que te entiendo es el anterior, no hace falta case ni nada más, coloco esos dos entre parentesis para que se solucione como una sola condición pensando que necesites luego agregar un and o algo más.
Respecto a un case en un where sería así:
Código SQL
[-]
select a.codigo, a.numero_cv, a.tipo_transaccion
from tb_compras_ventas a
where case when :cod_cliente>-1 then a.ref_cliente else -1 end = :cod_cliente
Osea, cuando el parametro :cod_cliente sea mayor a -1 manda el valor del campo llamado ref_cliente si no, mande un -1