IF OBJECT_ID('dbo.fn_fco_sueldo') IS NOT NULL
    DROP FUNCTION dbo.fn_fco_sueldo
GO
CREATE FUNCTION dbo.fn_fco_sueldo
(
    @pch_compania char(4),
    @pch_trabajador char(10),
    @psi_anio smallint,
    @pti_mes tinyint
)
RETURNS decimal(9,0)
AS
BEGIN
    DECLARE 
        @vdc_sueldo decimal(14,2),
        @vdt_ini_mes smalldatetime,
        @vdt_fin_mes smalldatetime,
        @vdc_minimo decimal(14,2)

    SET @vdt_ini_mes = Convert(smalldatetime, RTrim(@psi_anio) + Right('00' + RTrim(@pti_mes), 2) + '01')
    SET @vdt_fin_mes = DateAdd(d, -1, DateAdd(m, 1, @vdt_ini_mes))    

    SELECT TOP 1 @vdc_sueldo = salario
    FROM historico_sueldos
    WHERE compania = @pch_compania
      AND trabajador = @pch_trabajador
      AND fecha <= @vdt_fin_mes
    ORDER BY fecha DESC

    SELECT @vdc_minimo = real FROM parametros_rh WHERE compania = @pch_compania AND parametro_rh = 'Sal_Minimo'

    -- Esto lo había hecho Laura para Grasco y lo dejo porque debe servir de algo:/*LAG 20050202 */  
    IF @vdc_sueldo = @vdc_minimo
        SET @vdc_sueldo = Round((@vdc_sueldo + 1)/1000,0) * 1000 
    ELSE
        SET @vdc_sueldo = Round((@vdc_sueldo - 1)/1000,0) * 1000 
    
    RETURN ISNULL(@vdc_sueldo, 0)
END
GO
GRANT EXECUTE ON fn_fco_sueldo TO PUBLIC
GO
