create or replace function fn_fco_tras_adm(p_compania   in char,
                                                p_trabajador in char,
                                                p_periodo    in char,
                                                p_tipo       in char)
  return fco_administradoras.codigo%type is
  Result fco_administradoras.codigo%type;
begin
  if p_tipo = 'AFP' then
    begin
      select a.codigo
        into result
        from fco_administradoras a, fco_traslados_fpo t
       where t.compania = p_compania
         and t.trabajador = p_trabajador
         and to_char(t.fecha_cambio, 'YYYYMM') = p_periodo
         and a.codigo = t.FPO_nueva
         and a.tipo = p_tipo;
    exception
      when no_data_found then
        return(' ');
    end;
  elsif p_tipo = 'EPS' then
    begin
      select a.codigo
        into result
        from fco_administradoras a, fco_traslados_eps t
       where t.compania = p_compania
         and t.trabajador = p_trabajador
         and to_char(t.fecha_cambio, 'YYYYMM') = p_periodo
         and a.codigo = t.eps_nueva
         and a.tipo = p_tipo;
    exception
      when no_data_found then
        return(' ');
    end;
  else
    result := ' ';
  end if;

  return(Result);
end fn_fco_tras_adm;
/
