If OBJECT_ID('dbo.sp_fco_rep_cir') IS NOT NULL
 DROP PROCEDURE dbo.sp_fco_rep_cir
GO
CREATE PROCEDURE dbo.sp_fco_rep_cir  
(  
    @psi_id_rep  smallint,
    @pvc_usuario varchar(30),
    @pti_cod_rep tinyint,
    @pch_trab_dde char(10) = '',
    @pch_trab_hta char(10) = '',
    @pch_agr_1 char(10) = '',
    @pch_agr_2 char(10) = '',
    @pch_agr_3 char(10) = '',
    @pch_dato_dde char(10) = '',
    @pch_dato_hta char(10) = '',--hasta aqui serian parametros fijos
    @pch_compania char(4),  
    @pch_sucursal char(10),  
    @psi_anio smallint,
    @pdt_fecha_exp char(8)
)  
/***********************************************************/  
/*** Modulo:  Modulo Fiscal Colombiano ADAM V3           ***/  
/*** Descripcion: Certificado de Ingresos y Retenciones  ***/  
/*** Autor: Juan Carlos Leguizamon                       ***/  
/*** Con base en revisiones de Diana Rios, John Sánchez, ***/
/*** Laura Guzmán, Yesenia González y Silvia Cortés      ***/
/*** Fecha: 15-NOV-07                                    ***/  
/*** Revision:  GRUPO GRASCO                             ***/  
/*** Aplica para todos los clientes SQL excepto Coca Cola***/
/***********************************************************/  
AS  
Declare 
    @vti_trab_dde tinyint,
    @vti_trab_hta tinyint,
    @vch_agr_sal char(3),
    @vch_agr_ces char(3),
    @vti_tip_gas tinyint,
    @vsi_cnc_gas smallint,
    @vch_agr_gas char(3),
    @vch_agr_pen char(3),
    @vch_agr_oti char(3),
    @vch_agr_EPS char(3),
    @vch_agr_AFP char(3),
    @vch_agr_VOL char(3),
    @vti_tip_rtf tinyint,
    @vsi_cnc_rtf smallint,
    @vch_agr_rtf char(3),
    @vvc_var_cheque varchar(15),
    @vdc_tope_che decimal(19,6),
    @vch_agr_che char(3),
    @vch_por_suc char(2),
    @vdc_sal decimal(19,6),
    @vdc_ces decimal(19,6),
    @vdc_gas decimal(19,6),
    @vdc_pen decimal(19,6),
    @vdc_oti decimal(19,6),
    @vdc_eps decimal(19,6),
    @vdc_fpo decimal(19,6),
    @vdc_vol decimal(19,6),
    @vdc_rtf decimal(19,6),
    @vdc_che decimal(19,6),
    @vsi_dif_dias smallint,
    @vdt_desde smalldatetime,
    @vdt_hasta smalldatetime,
    @vch_dato_2 char(10),
    @vch_dato_3 char(10),
    @vsi_numero smallint,
    -- Variables para el cursor
    @cch_trabajador char(10),
    @cdt_ingreso smalldatetime,
    @cdt_baja smalldatetime,
    @cch_sucursal char(10),
    @cch_dato_1 char(10)
BEGIN
    Set @vti_trab_dde = 0
    If IsNull(LTrim(RTrim(@pch_trab_dde)), '') <> ''
        Set @vti_trab_dde = 1
    
    Set @vti_trab_hta = 0
    If IsNull(LTrim(RTrim(@pch_trab_hta)), '') <> ''
        Set @vti_trab_hta = 1

    Set @pch_dato_dde = IsNull(LTRim(RTrim(@pch_dato_dde)), '')
    Set @pch_dato_hta = IsNull(LTRim(RTrim(@pch_dato_hta)), '')
    
    /* Recuperar los parametros */
    -- Salarios
    Select @vch_agr_sal = dato From vw_fdt_parametros 
    Where pais = 'COL' And compania = @pch_compania And parametro = 'retencion' And secuencia = 1  

    -- Cesantías e intereses de cesantías
    Select @vch_agr_ces = dato From vw_fdt_parametros 
    Where pais = 'COL' And compania = @pch_compania And parametro = 'retencion' And secuencia = 3  

    -- Gastos de representación
    Select @vti_tip_gas = tipo From vw_fdt_parametros
    Where pais = 'COL' And compania = @pch_compania And parametro = 'retencion' And secuencia = 4    
    If @vti_tip_gas = 0
        Select @vsi_cnc_gas = dato From vw_fdt_parametros
        Where pais = 'COL' And compania = @pch_compania And parametro = 'retencion' And secuencia = 4
    Else
        Select @vch_agr_gas = dato From vw_fdt_parametros
        Where pais = 'COL' And compania = @pch_compania And parametro = 'retencion' And secuencia = 4
    
    -- Pensiones de jubilación, vejez o invalidez
    Select @vch_agr_pen = dato From vw_fdt_parametros
    Where pais = 'COL' And compania = @pch_compania And parametro = 'retencion' And secuencia = 5
    
    -- Otros ingresos originados en la relación laboral
    Select @vch_agr_oti = dato From vw_fdt_parametros
    Where pais = 'COL' And compania = @pch_compania And parametro = 'retencion' And secuencia = 6
    
    -- Aportes obligatorios por salud
    Select @vch_agr_EPS = dato From vw_fdt_parametros 
    Where pais = 'COL' And compania = @pch_compania And parametro = 'retencion' And secuencia = 18
    
    -- Aportes obligatorios a fondos de pensiones y solidaridad pensional
    Select @vch_agr_AFP = dato From vw_fdt_parametros 
    Where pais = 'COL' And compania = @pch_compania And parametro = 'retencion' And secuencia = 17
    
    -- Aportes voluntarios a fondos de pensiones y cuentas AFC
    Select @vch_agr_VOL = dato From vw_fdt_parametros 
    Where pais = 'COL' And compania = @pch_compania And parametro = 'retencion' And secuencia = 19
    
    -- Retención en la Fuente
    Select @vti_tip_rtf = tipo From vw_fdt_parametros  
    Where pais = 'COL' And compania = @pch_compania And parametro = 'retencion' And secuencia = 7
    If @vti_tip_rtf = 0  
        Select @vsi_cnc_rtf = dato From vw_fdt_parametros  
        Where pais = 'COL' And compania = @pch_compania And parametro = 'retencion' And secuencia = 7  
    Else
        Select @vch_agr_rtf = dato From vw_fdt_parametros  
        Where pais = 'COL' And compania = @pch_compania And parametro = 'retencion' And secuencia = 7  
    
    /* Tope de los cheques canasta */
    Select @vdc_tope_che = real * (Select Top 1 salario_minimo From hist_sal_min_zona Where zona = 'A' And Year(fecha) = @psi_anio)
    From parametros_rh
    Where parametro_rh = 
        (Select 'var_nom_' + LTrim(RTrim(IsNull(dato, ''))) From vw_fdt_parametros
         Where pais = 'COL' And compania = @pch_compania And parametro = 'retencion' And secuencia = 20)
      And compania = @pch_compania
    Set @vdc_tope_che = IsNull(@vdc_tope_che, 0)
    
    /* Cheques Canasta */
    Select @vch_agr_che = dato From vw_fdt_parametros
    Where pais = 'COL' And compania = @pch_compania And parametro = 'retencion' And secuencia = 21
    
    /* Generar por Sucursales */
    Select @vch_por_suc = Upper(dato) From vw_fdt_parametros
    Where pais = 'COL' And compania = @pch_compania And parametro = 'retencion' And secuencia = 22
    Set @vch_por_suc = IsNull(@vch_por_suc, 'NO')
    
    /* Borrar los datos actuales */
    Delete fco_cir_det Where id_rep = @psi_id_rep And usuariow = @pvc_usuario And cod_rep = @pti_cod_rep
    Delete fco_cir_cab Where id_rep = @psi_id_rep And usuariow = @pvc_usuario And cod_rep = @pti_cod_rep
    
    /* INSERTAR los nuevos datos */
    /* Datos de la Cabecera */
    Insert Into fco_cir_cab (id_rep, usuariow, cod_rep, compania, sucursal, anio, fecha_exp)
    Select @psi_id_rep, @pvc_usuario, @pti_cod_rep, @pch_compania, @pch_sucursal, @psi_anio, @pdt_fecha_exp
    
    /* Datos del Detalle */
    If IsNull(RTrim(@pch_agr_1), '') <> ''
        Declare cr_detalle Cursor For
        Select tg.trabajador, tg.fecha_ingreso, tg.fecha_baja, @pch_sucursal, rta.dato
        From trabajadores_grales tg
        Inner Join vw_fco_div_trabajador suc On tg.compania = suc.compania And tg.trabajador = suc.trabajador
        Inner Join rel_trab_agr rta On rta.compania= tg.compania And rta.trabajador = tg.trabajador
        Where tg.compania = @pch_compania
          And Year(tg.fecha_ingreso) <= @psi_anio
          And (tg.fecha_baja Is Null Or Year(tg.fecha_baja) >= @psi_anio)
          And ((suc.dato = @pch_sucursal And @vch_por_suc = 'SI') Or @vch_por_suc <> 'SI')
          And ((tg.trabajador >= @pch_trab_dde And @vti_trab_dde = 1) Or @vti_trab_dde = 0)
          And ((tg.trabajador <= @pch_trab_hta And @vti_trab_hta = 1) Or @vti_trab_hta = 0)
          And rta.agrupacion = @pch_agr_1
          And ((rta.dato >= @pch_dato_dde And @pch_dato_dde <> '') Or @pch_dato_dde = '')
          And ((rta.dato <= @pch_dato_hta And @pch_dato_hta <> '') Or @pch_dato_hta = '')
        Order By suc.dato, tg.trabajador
    Else
        Declare cr_detalle Cursor For
        Select tg.trabajador, tg.fecha_ingreso, tg.fecha_baja, @pch_sucursal, ''
        From trabajadores_grales tg
        Inner Join vw_fco_div_trabajador suc On tg.compania = suc.compania And tg.trabajador = suc.trabajador
        Where tg.compania = @pch_compania
          And Year(tg.fecha_ingreso) <= @psi_anio
          And (tg.fecha_baja Is Null Or Year(tg.fecha_baja) >= @psi_anio)
          And ((suc.dato = @pch_sucursal And @vch_por_suc = 'SI') Or @vch_por_suc <> 'SI')
          And ((tg.trabajador >= @pch_trab_dde And @vti_trab_dde = 1) Or @vti_trab_dde = 0)
          And ((tg.trabajador <= @pch_trab_hta And @vti_trab_hta = 1) Or @vti_trab_hta = 0)
        Order By suc.dato, tg.trabajador

    Set @vsi_numero = 0

    Open cr_detalle    
    Fetch Next From cr_detalle Into @cch_trabajador, @cdt_ingreso, @cdt_baja, @cch_sucursal, @cch_dato_1
    
    While @@Fetch_Status = 0                
    Begin      
        /* Inicializando variables */
        Select @vdc_sal = 0, @vdc_ces = 0, @vdc_gas = 0, @vdc_pen = 0, @vdc_oti = 0, @vdc_eps = 0, @vdc_fpo = 0, @vdc_vol = 0, @vdc_rtf = 0                
        
        If Year(@cdt_ingreso) = @psi_anio
            Set @vdt_desde = @cdt_ingreso                
        Else                
            Set @vdt_desde = Convert(smalldatetime, RTrim(@psi_anio) + '0101')                
/*
        If Exists (Select 1 From historial_laboral

select * from historial_laboral
where tipo_incidencia = 'DG'
and codigo_incidencia In ('0000000001', '0000000012')
*/        
        If Year(@cdt_baja) = @psi_anio                 
            Set @vdt_hasta = @cdt_baja                
        Else                
            Set @vdt_hasta = Convert(smalldatetime, RTrim(@psi_anio) + '1231')                
        
        /* SALARIOS */                
        Select @vdc_sal = 
        acum_imp_mes_01 + acum_imp_mes_02 + acum_imp_mes_03 + acum_imp_mes_04 + acum_imp_mes_05 + acum_imp_mes_06 +
        acum_imp_mes_07 + acum_imp_mes_08 + acum_imp_mes_09 + acum_imp_mes_10 + acum_imp_mes_11 + acum_imp_mes_12
        From acumulados_mensuales
        Where compania = @pch_compania
          And trabajador = @cch_trabajador
          And agr_conceptos = @vch_agr_sal 
          And concepto = 0 
          And anio = @psi_anio
        
        /* CESANTÍAS E INTERESES DE CESANTÍAS EFECTIVAMENTE PAGADAS */                
        Select @vdc_ces =                
        acum_imp_mes_01 + acum_imp_mes_02 + acum_imp_mes_03 + acum_imp_mes_04 + acum_imp_mes_05 + acum_imp_mes_06 +
        acum_imp_mes_07 + acum_imp_mes_08 + acum_imp_mes_09 + acum_imp_mes_10 + acum_imp_mes_11 + acum_imp_mes_12
        From acumulados_mensuales
        Where compania = @pch_compania
          And trabajador = @cch_trabajador
          And agr_conceptos = @vch_agr_ces
          And concepto = 0
          And anio = @psi_anio
        
        /* GASTOS DE REPRESENTACIÓN */        
        Select @vdc_gas = 
        acum_imp_mes_01 + acum_imp_mes_02 + acum_imp_mes_03 + acum_imp_mes_04 + acum_imp_mes_05 + acum_imp_mes_06 +
        acum_imp_mes_07 + acum_imp_mes_08 + acum_imp_mes_09 + acum_imp_mes_10 + acum_imp_mes_11 + acum_imp_mes_12
        From acumulados_mensuales
        Where compania = @pch_compania
          And trabajador = @cch_trabajador
          And agr_conceptos = Case When @vti_tip_gas = 0 Then '' Else @vch_agr_gas End
          And concepto = Case When @vti_tip_gas = 0 Then @vsi_cnc_gas Else 0 End
          And anio = @psi_anio
                
        /* PENSIONES DE JUBILACIÓN, VEJEZ O INVALIDEZ */                
        Select @vdc_pen = 
        acum_imp_mes_01 + acum_imp_mes_02 + acum_imp_mes_03 + acum_imp_mes_04 + acum_imp_mes_05 + acum_imp_mes_06 +
        acum_imp_mes_07 + acum_imp_mes_08 + acum_imp_mes_09 + acum_imp_mes_10 + acum_imp_mes_11 + acum_imp_mes_12
        From acumulados_mensuales
        Where compania = @pch_compania
          And trabajador = @cch_trabajador
          And agr_conceptos = @vch_agr_pen
          And concepto = 0
          And anio = @psi_anio
        
        /* OTROS INGRESOS ORIGINADOS EN LA RELACIÓN LABORAL */                
        Select @vdc_oti =                
        acum_imp_mes_01 + acum_imp_mes_02 + acum_imp_mes_03 + acum_imp_mes_04 + acum_imp_mes_05 + acum_imp_mes_06 +
        acum_imp_mes_07 + acum_imp_mes_08 + acum_imp_mes_09 + acum_imp_mes_10 + acum_imp_mes_11 + acum_imp_mes_12
        From acumulados_mensuales
        Where compania = @pch_compania
          And trabajador = @cch_trabajador
          And agr_conceptos = @vch_agr_oti
          And concepto = 0
          And anio = @psi_anio
        
        /* APORTES OBLIGATORIOS POR SALUD */                
        Select @vdc_eps =                
        acum_imp_mes_01 + acum_imp_mes_02 + acum_imp_mes_03 + acum_imp_mes_04 + acum_imp_mes_05 + acum_imp_mes_06 +
        acum_imp_mes_07 + acum_imp_mes_08 + acum_imp_mes_09 + acum_imp_mes_10 + acum_imp_mes_11 + acum_imp_mes_12
        From acumulados_mensuales
        Where compania = @pch_compania
          And trabajador = @cch_trabajador
          And agr_conceptos = @vch_agr_eps
          And concepto = 0
          And anio = @psi_anio
        
        /* APORTES OBLIGATORIOS A FONDOS DE PENSIONES Y SOLIDARIDAD PENSIONAL */                
        Select @vdc_fpo =                
        acum_imp_mes_01 + acum_imp_mes_02 + acum_imp_mes_03 + acum_imp_mes_04 + acum_imp_mes_05 + acum_imp_mes_06 +
        acum_imp_mes_07 + acum_imp_mes_08 + acum_imp_mes_09 + acum_imp_mes_10 + acum_imp_mes_11 + acum_imp_mes_12
        From acumulados_mensuales
        Where compania = @pch_compania
          And trabajador = @cch_trabajador
          And agr_conceptos = @vch_agr_AFP
          And concepto = 0
          And anio = @psi_anio
        
        /* APORTES VOLUNTARIOS A FONDOS DE PENSIONES Y CUENTAS AFC */                
        Select @vdc_vol =                
        acum_imp_mes_01 + acum_imp_mes_02 + acum_imp_mes_03 + acum_imp_mes_04 + acum_imp_mes_05 + acum_imp_mes_06 +
        acum_imp_mes_07 + acum_imp_mes_08 + acum_imp_mes_09 + acum_imp_mes_10 + acum_imp_mes_11 + acum_imp_mes_12
        From acumulados_mensuales
        Where compania = @pch_compania
          And trabajador = @cch_trabajador
          And agr_conceptos = @vch_agr_vol
          And concepto = 0
          And anio = @psi_anio
        
        /* VALOR DE LA RETENCIÓN EN LA FUENTE */
        Select @vdc_rtf =
        acum_imp_mes_01 + acum_imp_mes_02 + acum_imp_mes_03 + acum_imp_mes_04 + acum_imp_mes_05 + acum_imp_mes_06 +
        acum_imp_mes_07 + acum_imp_mes_08 + acum_imp_mes_09 + acum_imp_mes_10 + acum_imp_mes_11 + acum_imp_mes_12
        From acumulados_mensuales
        Where compania = @pch_compania
          And trabajador = @cch_trabajador
          And agr_conceptos = Case When @vti_tip_rtf = 0 Then '' Else @vch_agr_rtf End
          And concepto = Case When @vti_tip_rtf = 0 Then @vsi_cnc_rtf Else 0 End
          And anio = @psi_anio
        
        /* CHEQUES CANASTA */
        Select @vdc_che = 
        acum_imp_mes_01 + acum_imp_mes_02 + acum_imp_mes_03 + acum_imp_mes_04 + acum_imp_mes_05 + acum_imp_mes_06 +
        acum_imp_mes_07 + acum_imp_mes_08 + acum_imp_mes_09 + acum_imp_mes_10 + acum_imp_mes_11 + acum_imp_mes_12
        From acumulados_mensuales
        Where compania = @pch_compania
          And trabajador = @cch_trabajador
          And agr_conceptos = @vch_agr_che
          And concepto = 0
          And anio = @psi_anio
        
        /* Dato de la agrupación 2 */
        If IsNull(RTrim(@pch_agr_2), '') <> ''
            Select @vch_dato_2 = dato From rel_trab_agr
            Where compania = @pch_compania And trabajador = @cch_trabajador And agrupacion = @pch_agr_2

        /* Dato de la agrupación 3 */
        If IsNull(RTrim(@pch_agr_3), '') <> ''
            Select @vch_dato_3 = dato From rel_trab_agr
            Where compania = @pch_compania And trabajador = @cch_trabajador And agrupacion = @pch_agr_3

        /* Hallando la diferencia en dias entre desde y hasta */            
        If @vdc_che > 0            
        Begin
            Set @vsi_dif_dias = ((Year(@vdt_hasta) * 360) +
                                 (Month(@vdt_hasta) * 30) +
                                 (Case Day(@vdt_hasta) When 31 Then 30
                                                       When 28 Then Case Month(@vdt_hasta) When 2 Then 30 Else Day(@vdt_hasta) End
                                                       Else Day(@vdt_hasta) 
                                  End)) -
                                ((Year(@vdt_desde) * 360) +
                                 (Month(@vdt_desde) * 30) +
                                 (Case Day(@vdt_desde) When 31 Then 30 
                                                       When 28 Then Case Month(@vdt_desde) When 2 Then 30 Else Day(@vdt_desde) End 
                                                       Else Day(@vdt_desde)
                                  End)) + 1
            If (@vdc_sal / @vsi_dif_dias) < @vdc_tope_che / 30            
                Set @vdc_sal = @vdc_sal - @vdc_che            
        End            
        
        /* SI LA SUMA DE TODOS LOS VALORES ES MAYOR A CERO, GENERE LOS REGISTROS PARA EL CERTIFICADO */              
        If IsNull(@vdc_sal, 0) + IsNull(@vdc_ces, 0) + IsNull(@vdc_gas, 0) + IsNull(@vdc_pen, 0) +               
           IsNull(@vdc_oti, 0) + IsNull(@vdc_eps, 0) + IsNull(@vdc_fpo, 0) +               
           IsNull(@vdc_vol, 0) + IsNull(@vdc_rtf, 0) > 0                
        Begin
            Set @vsi_numero = @vsi_numero + 1
            /* REDONDEAR VALORES AL MULTIPLO DE MIL MAS CERCANO */
            SET @vdc_sal = Round((@vdc_sal - 1)/1000,0)*1000
            SET @vdc_ces = Round((@vdc_ces - 1)/1000,0)*1000
            SET @vdc_gas = Round((@vdc_gas - 1)/1000,0)*1000
            SET @vdc_pen = Round((@vdc_pen - 1)/1000,0)*1000
            SET @vdc_oti = Round((@vdc_oti - 1)/1000,0)*1000
            SET @vdc_eps = Round((@vdc_eps - 1)/1000,0)*1000
            SET @vdc_fpo = Round((@vdc_fpo - 1)/1000,0)*1000
            SET @vdc_vol = Round((@vdc_vol - 1)/1000,0)*1000
            SET @vdc_rtf = Round((@vdc_rtf - 1)/1000,0)*1000
        
            /* INSERTAR SALARIOS - CASILLA 37 */
            Insert Into fco_cir_det
            (id_rep, usuariow, cod_rep, compania, sucursal, anio, numero, trabajador, fecha_desde, fecha_hasta, casilla, valor, dato1, dato2, dato3)
            Select
                @psi_id_rep, @pvc_usuario, @pti_cod_rep, @pch_compania, @pch_sucursal, @psi_anio, @vsi_numero,
                @cch_trabajador, @vdt_desde, @vdt_hasta, 37, IsNull(@vdc_sal, 0), @cch_dato_1, @vch_dato_2, @vch_dato_3
            
            /* INSERTAR CESANTIAS E INTERESES DE CESANTIAS EFECTIVAMENTE PAGADAS - CASILLA 38 */
            Insert Into fco_cir_det
            (id_rep, usuariow, cod_rep, compania, sucursal, anio, numero, trabajador, fecha_desde, fecha_hasta, casilla, valor, dato1, dato2, dato3)
            Select
                @psi_id_rep, @pvc_usuario, @pti_cod_rep, @pch_compania, @pch_sucursal, @psi_anio, @vsi_numero,
                @cch_trabajador, @vdt_desde, @vdt_hasta, 38, IsNull(@vdc_ces, 0), @cch_dato_1, @vch_dato_2, @vch_dato_3
            
            /* INSERTAR GASTOS DE REPRESENTACION - CASILLA 39 */
            Insert Into fco_cir_det
            (id_rep, usuariow, cod_rep, compania, sucursal, anio, numero, trabajador, fecha_desde, fecha_hasta, casilla, valor, dato1, dato2, dato3)
            Select 
                @psi_id_rep, @pvc_usuario, @pti_cod_rep, @pch_compania, @pch_sucursal, @psi_anio, @vsi_numero, 
                @cch_trabajador, @vdt_desde, @vdt_hasta, 39, IsNull(@vdc_gas, 0), @cch_dato_1, @vch_dato_2, @vch_dato_3
            
            /* INSERTAR PENSIONES DE JUBILIACION, VEJEZ O INVALIDEZ - CASILLA 40 */              
            Insert Into fco_cir_det
            (id_rep, usuariow, cod_rep, compania, sucursal, anio, numero, trabajador, fecha_desde, fecha_hasta, casilla, valor, dato1, dato2, dato3)
            Select 
                @psi_id_rep, @pvc_usuario, @pti_cod_rep, @pch_compania, @pch_sucursal, @psi_anio, @vsi_numero, 
                @cch_trabajador, @vdt_desde, @vdt_hasta, 40, IsNull(@vdc_pen, 0), @cch_dato_1, @vch_dato_2, @vch_dato_3
            
            /* INSERTAR OTROS INGRESOS ORIGINADOS EN LA RELACION LABORAL - CASILLA 41 */              
            Insert Into fco_cir_det
            (id_rep, usuariow, cod_rep, compania, sucursal, anio, numero, trabajador, fecha_desde, fecha_hasta, casilla, valor, dato1, dato2, dato3)
            Select
                @psi_id_rep, @pvc_usuario, @pti_cod_rep, @pch_compania, @pch_sucursal, @psi_anio, @vsi_numero,
                @cch_trabajador, @vdt_desde, @vdt_hasta, 41, IsNull(@vdc_oti, 0), @cch_dato_1, @vch_dato_2, @vch_dato_3
            
            /* INSERTAR APORTES OBLIGATORIOS POR SALUD - CASILLA 43 */
            Insert Into fco_cir_det
            (id_rep, usuariow, cod_rep, compania, sucursal, anio, numero, trabajador, fecha_desde, fecha_hasta, casilla, valor, dato1, dato2, dato3)
            Select
                @psi_id_rep, @pvc_usuario, @pti_cod_rep, @pch_compania, @pch_sucursal, @psi_anio, @vsi_numero,
                @cch_trabajador, @vdt_desde, @vdt_hasta, 43, IsNull(@vdc_eps, 0), @cch_dato_1, @vch_dato_2, @vch_dato_3
            
            /* INSERTAR APORTES OBLIGATORIOS A FONDOS DE PENSIONES Y SOLIDARIDAD PENSIONAL - CASILLA 44 */
            Insert Into fco_cir_det
            (id_rep, usuariow, cod_rep, compania, sucursal, anio, numero, trabajador, fecha_desde, fecha_hasta, casilla, valor, dato1, dato2, dato3)
            Select
                @psi_id_rep, @pvc_usuario, @pti_cod_rep, @pch_compania, @pch_sucursal, @psi_anio, @vsi_numero,
                @cch_trabajador, @vdt_desde, @vdt_hasta, 44, IsNull(@vdc_fpo, 0), @cch_dato_1, @vch_dato_2, @vch_dato_3
            
            /* INSERTAR APORTES VOLUNTARIOS A FONDOS DE PENSIONES Y CUENTAS AFC - CASILLA 45 */
            Insert Into fco_cir_det
            (id_rep, usuariow, cod_rep, compania, sucursal, anio, numero, trabajador, fecha_desde, fecha_hasta, casilla, valor, dato1, dato2, dato3)
            Select
                @psi_id_rep, @pvc_usuario, @pti_cod_rep, @pch_compania, @pch_sucursal, @psi_anio, @vsi_numero,
                @cch_trabajador, @vdt_desde, @vdt_hasta, 45, IsNull(@vdc_vol, 0), @cch_dato_1, @vch_dato_2, @vch_dato_3
            
            /* INSERTAR RETENCION EN LA FUENTE - CASILLA 46 */
            Insert Into fco_cir_det
            (id_rep, usuariow, cod_rep, compania, sucursal, anio, numero, trabajador, fecha_desde, fecha_hasta, casilla, valor, dato1, dato2, dato3)
            Select
                @psi_id_rep, @pvc_usuario, @pti_cod_rep, @pch_compania, @pch_sucursal, @psi_anio, @vsi_numero,
                @cch_trabajador, @vdt_desde, @vdt_hasta, 46, IsNull(@vdc_rtf, 0), @cch_dato_1, @vch_dato_2, @vch_dato_3
        End
        Fetch Next From cr_detalle Into @cch_trabajador, @cdt_ingreso, @cdt_baja, @cch_sucursal, @cch_dato_1
    End
    Close cr_detalle
    Deallocate cr_detalle
End
Go
Grant Execute On dbo.sp_fco_rep_cir To Public
Go

