IF OBJECT_ID('dbo.sp_fco_calcula_aportes') IS NOT NULL
    DROP PROCEDURE dbo.sp_fco_calcula_aportes
GO
CREATE PROCEDURE dbo.sp_fco_calcula_aportes  
(  
    @psi_random smallint,  
    @pch_compania char(4),  
    @pdc_AFP_IBC decimal(9),  
    @pti_AFP_dias tinyint,  
    @pdc_EPS_IBC decimal(9),  
    @pti_EPS_dias tinyint,  
    @pdc_ARP_IBC decimal(9),  
    @pti_ARP_dias tinyint,  
    @pdc_ARP_tarifa decimal(9,8),  
    @pdc_CCF_IBC decimal(9),
    @pti_CCF_dias tinyint
  
)  
/*************************************************************************/  
-- Modulo Fiscal Colombiano 2.0 ADAM V3  
-- Descripcion: Calcula los aportes en la sesión Aportantes por Fuera de Nómina  
--              (fantasmas) según los parámetros indicados por el usuario  
--              y teniendo en cuenta los porcentajes definidos en ADAM  
-- Autor: Juan Carlos Leguizamon  
-- Fecha: Junio 2005  
-- Revisiones:  Julio 24/2006 Calculo del FSP por subcuenta, inclusion dias CCF
/*************************************************************************/  
AS  
BEGIN  
    DECLARE  
        @vch_var_SaT char(2),      -- Variable Salud Trabajador  
        @vch_var_SaE char(2),      -- Variable Salud Empleador  
        @vch_var_PeT char(2),      -- Variable Pensión Trabajador  
        @vch_var_PeE char(2),      -- Variable Pensión Empleador  
        @vch_var_FSP char(2),      -- Variable Aporte FSP  
        @vch_var_FSP_Tope char(2), -- Variable Aporte FSP  
        @vch_var_CCF char(2),      -- Variable Aporte CCF  
        @vch_var_SENA char(2),     -- Variable Aporte SENA  
        @vch_var_ICBF char(2),     -- Variable Aporte ICBF  
        @vdc_tar_EPS decimal(6,5), -- Tarifa Salud  
        @vdc_tar_AFP decimal(6,5), -- Tarifa Pensión  
        @vdc_tar_FSP decimal(6,5), -- Tarifa Fondo de Solidaridad Pensional  
        @vdc_tar_FSP_Tope decimal(6,5), -- Tope Salarios para FSP  
        @vdc_tar_CCF decimal(6,5), -- Tarifa Cajas de Compensación  
        @vdc_tar_SENA decimal(6,5),-- Tarifa SENA  
        @vdc_tar_ICBF decimal(6,5),-- Tarifa ICBF  
        @vdc_sal_min decimal(19,6) -- Salario Mínimo  
  
    SELECT @vch_var_SaT = dato FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'autoliq' AND secuencia = 25  
    SELECT @vch_var_SaE = dato FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'autoliq' AND secuencia = 26  
    SELECT @vch_var_PeT = dato FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'autoliq' AND secuencia = 27  
    SELECT @vch_var_PeE = dato FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'autoliq' AND secuencia = 28  
    SELECT @vch_var_FSP = dato FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'autoliq' AND secuencia = 39  
    SELECT @vch_var_FSP_Tope = dato FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'autoliq' AND secuencia = 38  
    SELECT @vch_var_CCF = dato FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'parafiscal' AND secuencia = 9  
    SELECT @vch_var_SENA = dato FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'parafiscal' AND secuencia = 10  
    SELECT @vch_var_ICBF = dato FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'parafiscal' AND secuencia = 11  
    SELECT @vdc_sal_min = real FROM parametros_rh WHERE compania = @pch_compania AND parametro_rh = 'Sal_Minimo' AND secuencia_parametro = 1     
  
    SET @vdc_tar_EPS = ISNULL(dbo.fn_fco_var_nom(@pch_compania, @vch_var_SaT, 0) + dbo.fn_fco_var_nom(@pch_compania, @vch_var_SaE, 0), 0.12)  
    SET @vdc_tar_AFP = ISNULL(dbo.fn_fco_var_nom(@pch_compania, @vch_var_PeT, 0) + dbo.fn_fco_var_nom(@pch_compania, @vch_var_PeE, 0), 0.15)  
    SET @vdc_tar_FSP = ISNULL(dbo.fn_fco_var_nom(@pch_compania, @vch_var_FSP, 0), 0.01)  
  
    SET @vdc_tar_FSP_Tope = ISNULL(dbo.fn_fco_var_nom(@pch_compania, @vch_var_FSP_Tope, 1), 4)  
    SET @vdc_tar_CCF = ISNULL(dbo.fn_fco_var_nom(@pch_compania, @vch_var_CCF, 0), 0.04)  
    SET @vdc_tar_SENA = ISNULL(dbo.fn_fco_var_nom(@pch_compania, @vch_var_SENA, 0), 0.02)  
    SET @vdc_tar_ICBF = ISNULL(dbo.fn_fco_var_nom(@pch_compania, @vch_var_ICBF, 0), 0.03)  
  
    DELETE fco_fantasmas_aux WHERE random = @psi_random  
    INSERT INTO fco_fantasmas_aux   
    (random, AFP_Aporte, FSP_Aporte_sol, FSP_Aporte_sub, EPS_Aporte, ARP_Aporte, CCF_Aporte, SENA_Aporte, ICBF_Aporte)  
    SELECT  
    @psi_random,  
    Round((@pdc_AFP_IBC * @vdc_tar_AFP * (@pti_AFP_dias/30.00000) - 1)/100,0) * 100,  
    CASE WHEN @pdc_AFP_IBC >= (@vdc_sal_min * @vdc_tar_FSP_Tope) THEN 
        Round((@pdc_AFP_IBC * @vdc_tar_FSP * 0.5 * (@pti_AFP_dias/30.00000) - 1)/100,0) * 100 ELSE 0 END,  
    CASE WHEN @pdc_AFP_IBC >= (@vdc_sal_min * @vdc_tar_FSP_Tope) THEN 
        Round((@pdc_AFP_IBC * @vdc_tar_FSP * 0.5 * (@pti_AFP_dias/30.00000) - 1)/100,0) * 100 ELSE 0 END,  
    Round((@pdc_EPS_IBC * @vdc_tar_EPS * (@pti_EPS_dias/30.00000) - 1)/100,0) * 100,  
    Round((@pdc_ARP_IBC * @pdc_ARP_tarifa * (@pti_ARP_dias/30.00000) - 1)/100,0) * 100,  
    Round((@pdc_CCF_IBC * @vdc_tar_CCF * (@pti_CCF_dias/30.00000) - 1)/100,0) * 100,  
    Round((@pdc_CCF_IBC * @vdc_tar_SENA * (@pti_CCF_dias/30.00000) - 1)/100,0) * 100,  
    Round((@pdc_CCF_IBC * @vdc_tar_ICBF * (@pti_CCF_dias/30.00000) - 1)/100,0) * 100  
END  
GO
GRANT EXECUTE ON dbo.sp_fco_calcula_aportes TO PUBLIC
GO

