ALTER FUNCTION dbo.fn_fco_tarifa_ARP   --TSEN
(    
    @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 b.compania IN (a.compania, CASE WHEN @pch_compania = 'JABC' THEN 'X' ELSE 'TSEN' END) 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 IN (@pch_compania, CASE WHEN @pch_compania = 'JABC' THEN 'X' ELSE 'TSEN' END)
          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 IN (@pch_compania, CASE WHEN @pch_compania = 'JABC' THEN 'X' ELSE 'TSEN' END)
          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 IN (@pch_compania, CASE WHEN @pch_compania = 'JABC' THEN 'X' ELSE 'TSEN' END)
          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    
