create or replace procedure sp_fco_get_datos_pens(p_compania              in char,
                                                  p_trabajador            in char,
                                                  p_tipo_pension          out number,
                                                  p_compartida            out char,
                                                  p_caus_ape1             out varchar2,
                                                  p_caus_ape2             out varchar2,
                                                  p_caus_nom1             out varchar2,
                                                  p_caus_nom2             out varchar2,
                                                  p_caus_tdoc             out char,
                                                  p_caus_id               out varchar2,
                                                  p_tipo_pensionado       out char,
                                                  p_residente_en_exterior out char,
                                                  p_situa_en_exterior     out char,
                                                  p_departamento          out char,
                                                  p_municipio             out char) is

  v_tipo_pension          fco_pi_pens_rt2.tipo_pension%type;
  v_compartida            fco_pi_pens_rt2.pension_compartida%type;
  v_caus_ape1             fco_pi_pens_rt2.caus_ape1%type;
  v_caus_ape2             fco_pi_pens_rt2.caus_ape2%type;
  v_caus_nom1             fco_pi_pens_rt2.caus_nom1%type;
  v_caus_nom2             fco_pi_pens_rt2.caus_nom2%type;
  v_caus_tdoc             fco_pi_pens_rt2.caus_tdoc%type;
  v_caus_id               fco_pi_pens_rt2.caus_id%type;
  v_tipo_pensionado       fco_pi_pens_rt2.tipo_pensionado%type;
  v_residente_en_exterior fco_pi_pens_rt2.residente_en_exterior%type;
  v_situa_en_exterior     fco_pi_pens_rt2.situa_en_exterior%type;
  v_departamento          fco_pi_pens_rt2.departamento%type;
  v_municipio             fco_pi_pens_rt2.municipio%type;

begin
  begin
    select nvl(p.tipo_pension, 13),
           p.compartida,
           p.caus_ape1,
           p.caus_ape2,
           p.caus_nom1,
           p.caus_nom2,
           p.caus_tdoc,
           decode(p.caus_id, 0, ' ', p.caus_id),
           nvl(p.tipo_pensionado, '3'),
           p.residente_en_exterior,
           p.situa_en_exterior
      into v_tipo_pension,
           v_compartida,
           v_caus_ape1,
           v_caus_ape2,
           v_caus_nom1,
           v_caus_nom2,
           v_caus_tdoc,
           v_caus_id,
           v_tipo_pensionado,
           v_residente_en_exterior,
           v_situa_en_exterior
      from vw_fco_info_pensionados p
     where p.compania = p_compania
       and p.trabajador = p_trabajador;
  exception
    when no_data_found then
      v_tipo_pension          := '13';
      v_compartida            := 'N';
      v_caus_ape1             := null;
      v_caus_ape2             := null;
      v_caus_nom1             := null;
      v_caus_nom2             := null;
      v_caus_tdoc             := null;
      v_caus_id               := ' ';
      v_tipo_pensionado       := '03';
      v_residente_en_exterior := 'N';
      v_situa_en_exterior     := 'N';
  end;

  begin
    select p.dpto_tra, p.muni_tra
      into v_departamento, v_municipio
      from vw_fco_muni_tra p
     where p.compania = p_compania
       and p.trabajador = p_trabajador;
  exception
    when no_data_found then
      v_departamento := null;
      v_municipio    := null;
  end;

  p_tipo_pension          := v_tipo_pension;
  p_compartida            := v_compartida;
  p_caus_ape1             := v_caus_ape1;
  p_caus_ape2             := v_caus_ape2;
  p_caus_nom1             := v_caus_nom1;
  p_caus_nom2             := v_caus_nom2;
  p_caus_tdoc             := v_caus_tdoc;
  p_caus_id               := v_caus_id;
  p_tipo_pensionado       := v_tipo_pensionado;
  p_residente_en_exterior := v_residente_en_exterior;
  p_situa_en_exterior     := v_situa_en_exterior;
  p_departamento          := v_departamento;
  p_municipio             := v_municipio;

end sp_fco_get_datos_pens;
/
