IF OBJECT_ID('dbo.fn_fco_salario') IS NOT NULL
    DROP FUNCTION dbo.fn_fco_salario
GO
CREATE FUNCTION dbo.fn_fco_salario
(
    @pch_compania char(4),
    @pch_trabajador char(10),
    @pch_periodo char(6)
)
RETURNS decimal(9,0)
-- JCL. Junio de 2005
-- Devuelve el salario a un período dado
AS
BEGIN
    DECLARE @vdc_salario decimal(15,6),
			@vdc_minimo decimal(15,6)

    SELECT TOP 1 @vdc_salario = salario
    FROM historico_sueldos x
    WHERE x.compania = @pch_compania AND x.trabajador = @pch_trabajador 
      AND @pch_periodo >= CONVERT(char(6), x.fecha, 112)
    ORDER BY CONVERT(char(8), x.fecha, 112) + RTRIM(x.secuencia) DESC

    SELECT @vdc_minimo = real
	FROM parametros_rh
	WHERE compania = @pch_compania
	  AND parametro_rh = 'sal_minimo'
      AND secuencia_parametro = 1

    IF @vdc_salario < @vdc_minimo SET @vdc_salario = @vdc_minimo

    IF @vdc_salario > 25 * @vdc_minimo SET @vdc_salario = 25 * @vdc_minimo

    RETURN ISNULL(ROUND(@vdc_salario,0), 0)
END
GO
GRANT EXECUTE ON dbo.fn_fco_salario TO PUBLIC
GO