create or replace procedure sp_fco_pi_fantasmas(p_compania in char,
                                                     p_anio     in number,
                                                     p_mes      in number,
                                                     p_sucursal in char) is
  v_rec_detalle fco_integrada_det%rowtype;
  vsi_secuencia fco_integrada_det.secuencia%type;
  v_cont        number := 0;

  cursor c1(c_compania char, c_anio number, c_mes number, c_sucursal char) return fco_integrada_det%rowtype is
    select c_compania,
           c_anio,
           c_mes,
           c_sucursal,
           a.trabajador,
           0,
           tipo_id,
           nro_id,
           '0' dc,
           tipo_cotizante,
           0,
           ' ',
           ' ',
           ' ',
           ' ',
           primer_apellido,
           segundo_apellido,
           primer_nombre,
           segundo_nombre,
           ' ',
           ' ',
           ' ',
           ' ',
           ' ',
           ' ',
           ' ',
           ' ',
           ' ',
           ' ',
           ' ',
           ' ',
           ' ',
           ' ',
           ' ',
           ' ',
           NVL(AFP, ' '),
           ' ',
           NVL(EPS, ' '),
           ' ',
           NVL(CCF, ' '),
           dias_AFP,
           dias_EPS,
           dias_ARP,
           0,
           salario,
           IBC_AFP,
           IBC_EPS,
           IBC_ARP,
           IBC_CCF,
           0,
           pkg_fco_gral.vdc_tar_AFP,
           aporte_afp,
           0,
           0,
           0,
           aporte_FSP_sol,
           aporte_FSP_sub,
           pkg_fco_gral.vdc_tar_EPS,
           aporte_EPS,
           UPC_adicional,
           ' ',
           0,
           ' ',
           0,
           tarifa_ARP,
           decode(ISNUMERIC(CTR), 1, CTR, 0),
           aporte_ARP,
           pkg_fco_gral.vdc_tar_CCF,
           aporte_CCF,
           pkg_fco_gral.vdc_tar_SENA,
           aporte_SENA,
           pkg_fco_gral.vdc_tar_ICBF,
           aporte_ICBF,
           pkg_fco_gral.vdc_tar_ESAP,
           aporte_ESAP,
           pkg_fco_gral.vdc_tar_MEdu,
           aporte_MEdu,
           2,
           0,
           ' ',
           0
      from fco_fantasmas a
     where a.compania = c_compania
       and (sucursal = c_sucursal or c_sucursal is null)
       and a.eps || a.Afp is not null
       and ((a.anio - 2000) * 12 + a.mes) >= ((c_anio - 2000) * 12 + c_mes);
begin
  select max(secuencia)
    into vsi_secuencia
    from fco_integrada_det
   where compania = p_compania
     and anio = p_anio
     and mes = p_mes
     and (sucursal = p_sucursal or p_sucursal is null);

  open c1(p_compania, p_anio, p_mes, p_sucursal);
  loop
    fetch c1
      into v_rec_detalle;
    exit when c1%notfound;
    v_cont                  := v_cont + 1;
    v_rec_detalle.secuencia := vsi_secuencia + v_cont;
    insert into fco_integrada_det 
    (compania,
    anio,
    mes,
    sucursal,
    trabajador,
    secuencia,
    tipo_documento,
    nro_id,
    digito_chequeo,
    tipo_cotizante,
    subtipo_cotizante,
    extranjero_no_pension,
    residente_en_exterior,
    departamento,
    municipio,
    primer_apellido,
    segundo_apellido,
    primer_nombre,
    segundo_nombre,
    nov_ing,
    nov_ret,
    nov_tde,
    nov_tae,
    nov_tdp,
    nov_tap,
    nov_vsp,
    nov_vte,
    nov_vst,
    nov_sln,
    nov_ige,
    nov_lma,
    nov_vac,
    nov_avp,
    nov_vct,
    nov_irp,
    cod_afp,
    cod_afp_tras,
    cod_eps,
    cod_eps_tras,
    cod_ccf,
    dias_afp,
    dias_eps,
    dias_arp,
    dias_ccf,
    salario,
    ibc_afp,
    ibc_eps,
    ibc_arp,
    ibc_ccf,
    ibc_referencia,
    tarifa_afp,
    aporte_afp,
    voluntario_afp,
    voluntario_afp_cia,
    aporte_total_afp,
    aporte_fsp,
    valor_no_retenido,
    tarifa_eps,
    aporte_eps,
    upc_adicional,
    nro_aut_ige,
    vlr_aut_ige,
    nro_aut_lma,
    vlr_aut_lma,
    tarifa_arp,
    centro_trabajo,
    aporte_arp,
    tarifa_ccf,
    aporte_ccf,
    tarifa_sena,
    aporte_sena,
    tarifa_icbf,
    aporte_icbf,
    tarifa_esap,
    aporte_esap,
    tarifa_medu,
    aporte_medu,
    origen,
    eliminada,
    integral,
    aporte_fsp_subsistencia)
    values 
    (v_rec_detalle.compania,
    v_rec_detalle.anio,
    v_rec_detalle.mes,
    v_rec_detalle.sucursal,
    v_rec_detalle.trabajador,
    v_rec_detalle.secuencia,
    v_rec_detalle.tipo_documento,
    v_rec_detalle.nro_id,
    v_rec_detalle.digito_chequeo,
    v_rec_detalle.tipo_cotizante,
    v_rec_detalle.subtipo_cotizante,
    v_rec_detalle.extranjero_no_pension,
    v_rec_detalle.residente_en_exterior,
    v_rec_detalle.departamento,
    v_rec_detalle.municipio,
    v_rec_detalle.primer_apellido,
    v_rec_detalle.segundo_apellido,
    v_rec_detalle.primer_nombre,
    v_rec_detalle.segundo_nombre,
    v_rec_detalle.nov_ing,
    v_rec_detalle.nov_ret,
    v_rec_detalle.nov_tde,
    v_rec_detalle.nov_tae,
    v_rec_detalle.nov_tdp,
    v_rec_detalle.nov_tap,
    v_rec_detalle.nov_vsp,
    v_rec_detalle.nov_vte,
    v_rec_detalle.nov_vst,
    v_rec_detalle.nov_sln,
    v_rec_detalle.nov_ige,
    v_rec_detalle.nov_lma,
    v_rec_detalle.nov_vac,
    v_rec_detalle.nov_avp,
    v_rec_detalle.nov_vct,
    v_rec_detalle.nov_irp,
    v_rec_detalle.cod_afp,
    v_rec_detalle.cod_afp_tras,
    v_rec_detalle.cod_eps,
    v_rec_detalle.cod_eps_tras,
    v_rec_detalle.cod_ccf,
    v_rec_detalle.dias_afp,
    v_rec_detalle.dias_eps,
    v_rec_detalle.dias_arp,
    v_rec_detalle.dias_ccf,
    v_rec_detalle.salario,
    v_rec_detalle.ibc_afp,
    v_rec_detalle.ibc_eps,
    v_rec_detalle.ibc_arp,
    v_rec_detalle.ibc_ccf,
    v_rec_detalle.ibc_referencia,
    v_rec_detalle.tarifa_afp,
    v_rec_detalle.aporte_afp,
    v_rec_detalle.voluntario_afp,
    v_rec_detalle.voluntario_afp_cia,
    v_rec_detalle.aporte_total_afp,
    v_rec_detalle.aporte_fsp,
    v_rec_detalle.valor_no_retenido,
    v_rec_detalle.tarifa_eps,
    v_rec_detalle.aporte_eps,
    v_rec_detalle.upc_adicional,
    v_rec_detalle.nro_aut_ige,
    v_rec_detalle.vlr_aut_ige,
    v_rec_detalle.nro_aut_lma,
    v_rec_detalle.vlr_aut_lma,
    v_rec_detalle.tarifa_arp,
    v_rec_detalle.centro_trabajo,
    v_rec_detalle.aporte_arp,
    v_rec_detalle.tarifa_ccf,
    v_rec_detalle.aporte_ccf,
    v_rec_detalle.tarifa_sena,
    v_rec_detalle.aporte_sena,
    v_rec_detalle.tarifa_icbf,
    v_rec_detalle.aporte_icbf,
    v_rec_detalle.tarifa_esap,
    v_rec_detalle.aporte_esap,
    v_rec_detalle.tarifa_medu,
    v_rec_detalle.aporte_medu,
    v_rec_detalle.origen,
    v_rec_detalle.eliminada,
    v_rec_detalle.integral,
    v_rec_detalle.aporte_fsp_subsistencia);
  end loop;
  close c1;

end sp_fco_pi_fantasmas;
/
