fnFeriados
Tabela com os feriados nacionais e os pontos facultativos federais do Brasil no ano informado.
let
fnFeriados = (y as number) as table =>
let
// Domingo de Páscoa (gregoriano)
a = Number.Mod(y, 19),
b = Number.IntegerDivide(y, 100),
c = Number.Mod(y, 100),
d = Number.IntegerDivide(b, 4),
e = Number.Mod(b, 4),
f = Number.IntegerDivide(b + 8, 25),
g = Number.IntegerDivide(b - f + 1, 3),
h = Number.Mod(19 * a + b - d - g + 15, 30),
i = Number.IntegerDivide(c, 4),
k = Number.Mod(c, 4),
l = Number.Mod(32 + 2 * e + 2 * i - h - k, 7),
m = Number.IntegerDivide(a + 11 * h + 22 * l, 451),
vPascoa = #date(y, Number.IntegerDivide(h + l - 7 * m + 114, 31), Number.Mod(h + l - 7 * m + 114, 31) + 1),
vFixos = {
{#date(y, 1, 1), "Confraternização Universal", "Feriado nacional"},
{#date(y, 4, 21), "Tiradentes", "Feriado nacional"},
{#date(y, 5, 1), "Dia do Trabalho", "Feriado nacional"},
{#date(y, 9, 7), "Independência do Brasil", "Feriado nacional"},
{#date(y, 10, 12), "Nossa Senhora Aparecida", "Feriado nacional"},
{#date(y, 11, 2), "Finados", "Feriado nacional"},
{#date(y, 11, 15), "Proclamação da República", "Feriado nacional"},
{#date(y, 12, 25), "Natal", "Feriado nacional"}
}
& (if y >= 2024 then {{#date(y, 11, 20), "Dia Nacional de Zumbi e da Consciência Negra", "Feriado nacional"}} else {}),
vMoveis = {
{Date.AddDays(vPascoa, -48), "Carnaval (segunda-feira)", "Ponto facultativo"},
{Date.AddDays(vPascoa, -47), "Carnaval (terça-feira)", "Ponto facultativo"},
{Date.AddDays(vPascoa, -2), "Paixão de Cristo", "Feriado nacional"},
{vPascoa, "Páscoa", "Data comemorativa"},
{Date.AddDays(vPascoa, 60), "Corpus Christi", "Ponto facultativo"}
},
vTabela = #table(type table [Data = date, Feriado = text, Tipo = text], vFixos & vMoveis)
in
Table.Sort(vTabela, {{"Data", Order.Ascending}}),
Documentacao = [
Documentation.Name = "fnFeriados",
Documentation.Description = "Feriados nacionais e pontos facultativos federais do ano informado.",
Documentation.LongDescription = "Colunas Data, Feriado e Tipo (Feriado nacional, Ponto facultativo ou Data comemorativa). Móveis calculados a partir da Páscoa. Consciência Negra incluída a partir de 2024.",
Documentation.Category = "Data e hora",
Documentation.Author = "Laennder Alves, adaptado por Paulo André Jesus",
Documentation.Version = "2.0",
Documentation.Examples = {
[Description = "Feriados de 2026", Code = "fnFeriados(2026)", Result = "Tabela com 14 linhas; Paixão de Cristo em 03/04/2026 e Corpus Christi em 04/06/2026"]
}
]
in
Value.ReplaceType(fnFeriados, Value.ReplaceMetadata(Value.Type(fnFeriados), Documentacao))