Function que a partir de uma Data Inicial e a quantidade de dias, calcula o próximo dia útil desconsiderando feriados. (Baseado nas tabelas do CorporeRM)
CREATE FUNCTION dbo.FNC_CALCULADIASQTDADE ( @DATAINICIAL DATETIME,
@QUANTIDADE INT)
RETURNS DATETIME
AS
BEGIN
DECLARE @DATATMP DATETIME,
@CONTADOR INT
SET @DATATMP = @DATAINICIAL
SET @CONTADOR = 1
WHILE @CONTADOR < @QUANTIDADE
BEGIN
IF (DATENAME(DW,@DATATMP) NOT IN ('SATURDAY','SUNDAY')
AND NOT EXISTS (SELECT *
FROM GFERIADO
WHERE YEAR(DIAFERIADO) = YEAR(@DATATMP)
AND MONTH(DIAFERIADO) = MONTH(@DATATMP)
AND DAY(DIAFERIADO) = DAY(@DATATMP)))
BEGIN
SET @CONTADOR = @CONTADOR+1
END
SET @DATATMP = @DATATMP+1
END
RETURN (@DATATMP)
END