IF OBJECT_ID('dbo.fn_fco_tarifa_ARP') IS NOT NULL
    DROP FUNCTION dbo.fn_fco_tarifa_ARP
GO
CREATE FUNCTION dbo.fn_fco_tarifa_ARP
(  
    @pch_compania char(4),  
    @pch_trabajador char(10)      
)  
RETURNS decimal(9,8)  
AS  
BEGIN  
    DECLARE   
        @vch_agt_CTR char(10),     -- Centro de Trabajo  
        @vdc_aux decimal(19,6),  
        @vdc_porcentaje decimal(9,8),  
        @vvc_metodo varchar(20),  
        @vti_metodo tinyint,  
        @vvc_var_tra varchar(20),  
        @vti_secuencia tinyint,  
        @vsi_impuesto smallint,  
        @vch_agr_tra char(10),  
        @vch_dato char(10)  
  
    SELECT @vch_agt_CTR = dato FROM vw_fdt_parametros   
    WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'autoliq' AND secuencia = 24  
  
    SELECT @vvc_metodo = dato FROM vw_fdt_parametros  
    WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'autoliq' AND secuencia = 33  
  
    SELECT @vvc_var_tra = dato FROM vw_fdt_parametros  
    WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'autoliq' AND secuencia = 34  
  
    SELECT @vsi_impuesto = CONVERT(smallint, dato) FROM vw_fdt_parametros  
    WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'autoliq' AND secuencia = 35  
  
    SELECT @vch_agr_tra = LEFT(LTRIM(dato), 10) FROM vw_fdt_parametros  
    WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'autoliq' AND secuencia = 36  
  
    SET @vvc_metodo = ISNULL(@vvc_metodo, '1')  
    IF ISNUMERIC(LEFT(@vvc_metodo,1)) = 1  
        SET @vti_metodo = CONVERT(tinyint, LEFT(@vvc_metodo,1))  
    ELSE  
        SET @vti_metodo = 1  
  
    SET @vvc_var_tra = ISNULL(@vvc_var_tra, '00')  
    IF ISNUMERIC(LEFT(@vvc_var_tra,2)) = 1  
        SET @vti_secuencia = CONVERT(tinyint, LEFT(@vvc_var_tra,2))  
    ELSE  
        SET @vti_secuencia = 0  
  
    IF @vti_metodo = 1  -- Método Sugerido: CTR en [rel_trab_agr] y % en fco_centros_trabajo  
        SELECT @vdc_aux = a.tarifa  
        FROM vw_fco_centros_trabajo a  
        INNER JOIN rel_trab_agr b ON a.compania = b.compania AND a.centro_trabajo = b.dato  
        WHERE a.compania = @pch_compania   
          AND b.agrupacion = @vch_agt_CTR  
          AND b.trabajador = @pch_trabajador  
  
    IF @vti_metodo = 2 -- Método Coca Cola: % en variable del trabajador  
        SELECT @vdc_aux = variable_trabajador / 10  
        FROM variables_trabajador  
        WHERE compania = @pch_compania  
          AND trabajador = @pch_trabajador  
          AND secuencia = @vti_secuencia  
  
    IF @vti_metodo = 3 -- Otros clientes: Nivel en variable y % en tabla de impuestos  
    BEGIN  
        -- Nivel  
        SELECT @vdc_aux = variable_trabajador  
        FROM variables_trabajador  
        WHERE compania = @pch_compania  
          AND trabajador = @pch_trabajador  
          AND secuencia = @vti_secuencia  
  
        -- Porcentaje  
        SELECT @vdc_aux = porcentaje  / 100000  -- /100000 PARA Andina Trim JCL Junio 21/06
        FROM impuestos  
        WHERE impuesto = @vsi_impuesto  
          AND @vdc_aux BETWEEN limite_inferior AND limite_superior  
    END  
  
    IF @vti_metodo = 4 -- Método Colcafé y La Bastilla  
    BEGIN  
        -- Nivel  
        SELECT @vch_dato = dato  
        FROM rel_trab_agr  
        WHERE compania = @pch_compania  
          AND trabajador = @pch_trabajador  
          AND agrupacion = @vch_agr_tra  
  
        IF ISNUMERIC(@vch_dato) = 1 SET @vdc_aux = CONVERT(decimal, @vch_dato) ELSE SET @vdc_aux = 0  
  
        -- Porcentaje  
        SELECT @vdc_aux = porcentaje / 100000  
        FROM impuestos  
        WHERE impuesto = @vsi_impuesto  
          AND @vdc_aux BETWEEN limite_inferior AND limite_superior  
    END  
  
    IF @vdc_aux > 1 SET @vdc_aux = @vdc_aux / 100  
    IF @vdc_aux > 1 SET @vdc_aux = 0  
  
    SET @vdc_porcentaje = @vdc_aux  
  
    RETURN ISNULL(@vdc_porcentaje, 0)  
END  
GO
GRANT EXECUTE ON dbo.fn_fco_tarifa_ARP TO PUBLIC
GO
