# Bloqueio semanal e exceção de feriados

> Documentação para vendedores da Unefesta.
> Versão HTML: https://www.unefesta.com.br/documentacao-vendedor/calendarios/bloqueio-semanal-e-excecao-de-feriados

Como bloquear dias fixos da semana em um produto/serviço e, opcionalmente, liberar esses dias quando caírem em feriado.

## Visão geral

Existem **dois níveis** de configuração:

| Onde | O que configura |
|------|-----------------|
| **Produto/serviço** | Quais dias da semana ficam bloqueados e se feriados desbloqueiam esses dias |
| **Calendário** | Feriados extras (municipais, datas especiais da loja) |

O **horário de funcionamento** do calendário continua valendo em todos os casos. Bloquear segunda no produto/serviço não substitui o horário comercial — os dois filtros se aplicam juntos.

---

## Bloqueio por dia da semana (produto/serviço)

Disponível quando o produto/serviço tem **calendário habilitado**.

Na seção **Calendário** → **Dias da semana bloqueados**, marque os dias que devem ficar indisponíveis **toda semana**:

- Bloquear domingo, segunda, terça, etc.

### Comportamento

- Dias marcados somem da grade de disponibilidade para o comprador.
- A consulta de disponibilidade **pula** para o próximo dia liberado.
- Vale para reservas por **hora** ou por **dia**.
- Em **kits**, a regra de cada componente é respeitada na interseção de disponibilidade.

### Exemplo

Buffet que não atende às segundas: marque **Bloquear segunda**. Toda segunda-feira comum ficará indisponível para aquele produto/serviço.

---

## Exceto feriados (produto/serviço)

Checkbox **Exceto feriados**, na mesma seção dos dias bloqueados.

| Exceto feriados | Dia bloqueado que cai em feriado |
|-----------------|----------------------------------|
| Desmarcado (padrão) | Continua **indisponível** |
| Marcado | Fica **disponível** para aquele dia (se passar nas demais regras) |

Quando marcado, o sistema ignora o bloqueio semanal **apenas** nas datas consideradas feriado.

### O que ainda é verificado

Mesmo com **Exceto feriados** ativo, o dia precisa passar em:

- Horário de funcionamento do calendário
- Bloqueios manuais e reservas já existentes (slots)
- Estoque, se habilitado
- Prazo mínimo de antecedência (`minBefore`) e dias de produção

### Exemplo

Locação que não atende domingos, mas quer abrir no Natal:

1. Marque **Bloquear domingo**
2. Marque **Exceto feriados**
3. No **25/12** (domingo), o item pode aparecer disponível se o horário comercial e o estoque permitirem.

---

## Feriados considerados

### Fechamos em feriados (calendário)

Checkbox **Fechamos em feriados**, junto aos horários de funcionamento do calendário.

| Fechamos em feriados | Comportamento |
|----------------------|---------------|
| Desmarcado (padrão) | Feriados **não** bloqueiam reserva. Continuam valendo só para **Exceto feriados** no produto. |
| Marcado | Feriados nacionais e extras ficam **indisponíveis** (como fora do expediente). Também **não contam** no prazo de produção. |

Com a opção marcada, **Exceto feriados** no produto **não** reabre o dia — a loja está fechada.

### Feriados nacionais (automático)

Feriados **nacionais brasileiros** (fixos e móveis — Carnaval, Sexta-feira Santa, Corpus Christi, etc.) são carregados automaticamente pelo sistema. **Não é necessário cadastrá-los.**

### Feriados extras (calendário)

No cadastro ou edição do **calendário**, seção **Feriados extras**:

- **Data** (obrigatória)
- **Nome** (opcional), ex.: "Aniversário da cidade", "Ponto facultativo"

Use para feriados **locais** ou datas especiais que não estão na lista nacional.

Na **página do calendário** (visualização):

- Consulte a **lista oficial de feriados nacionais** por ano
- Veja os feriados extras já cadastrados
- **Copiar feriados extras** de outro calendário seu (sem duplicar datas)

Na **lista de calendários** (`/seller/calendar`):

- Botão **Sincronizar em todos os calendários** — une todos os feriados extras existentes em qualquer calendário seu e replica o conjunto em cada calendário (sem duplicar datas por calendário)

Com **Fechamos em feriados**, essas datas fecham a agenda. Sem a opção, só valem para produtos/serviços com **Exceto feriados** ativo e vinculados àquele calendário.

### Vários calendários no mesmo produto/serviço

Se o item usa mais de um calendário, a exceção de feriado é avaliada **por calendário** na consulta. Um feriado extra cadastrado só no Calendário A libera o dia bloqueado quando a disponibilidade passa pelo Calendário A.

---

## Resumo prático

```text
Dia bloqueado no produto/serviço?
  └─ Não → segue fluxo normal (ainda pode fechar se closedOnHolidays)
  └─ Sim
       └─ Exceto feriados ativo E calendário NÃO fecha em feriados?
            └─ Não → dia indisponível (blocked_weekday)
            └─ Sim
                 └─ Data é feriado nacional OU feriado extra do calendário?
                      └─ Sim → não aplica bloqueio semanal (ainda passa por horário, slots, estoque, closedOnHolidays)
                      └─ Não → dia indisponível

Calendário com “Fechamos em feriados”?
  └─ Sim → feriado nacional/extra = closed_holiday (indisponível)
```

---

## Perguntas frequentes

### Posso desativar feriados nacionais e usar só os meus?

Não na versão atual. Os nacionais são sempre considerados quando **Exceto feriados** está ativo. Para datas específicas, use **Feriados extras** no calendário.

### O bloqueio semanal funciona sem calendário habilitado?

Não. Dias bloqueados e **Exceto feriados** só se aplicam a produtos/serviços com **calendário habilitado**.

### Feriado liberado mas o horário comercial não inclui aquele dia

O dia continua **indisponível**. O horário de funcionamento do calendário tem prioridade sobre a exceção de feriado.

### Bloqueio manual no calendário vs. bloqueio semanal

- **Bloqueio semanal (produto/serviço):** recorrente, por dia da semana (ex.: toda segunda).
- **Bloqueio no calendário:** data específica ou período pontual (ex.: férias de 10 a 20 de janeiro).

Os dois podem coexistir.

---

## Reserva atravessando dias bloqueados no meio

No **calendário**, a opção **Permitir reserva com dias bloqueados no meio** (`allowBlockedDaysInMiddle`) vale para reservas com duração em **dias**.

| Cenário | Sem a opção | Com a opção |
|---------|-------------|-------------|
| Sex→ter com sáb/dom bloqueados no produto/serviço | Indisponível | Disponível (extremos livres) |
| Sex→ter com reserva/estoque no sábado | Indisponível | Continua indisponível |
| Sex→sáb (sábado é o último dia e está bloqueado) | Indisponível | Indisponível |

Diferença vs **Exceto feriados** (no produto/serviço): feriados liberam **um dia pontual** do bloqueio semanal. A opção do calendário permite **atravessar** dias estruturalmente fechados **no meio** do período. As duas se complementam.

Premissa: precificação e o slot cobrem o span completo (incluindo o meio atravessado).

---

## Documentação relacionada

- [Criando calendários](./criando-calendarios.md) — inclui feriados extras
- [Estoque e disponibilidade](../anuncios/estoque-disponibilidade.md) — regras gerais de consulta
- [Encomendas e disponibilidade](./encomendas-e-disponibilidade.md) — tipo de uso e lead com frete
- [Guia de configuração de calendários](./guia-de-configuracao-de-calendarios.md) — casos de uso com e sem estoque
