# Prafrot – Manutenção: regras de backend

Regras que o **backend** deve implementar para alinhar com o frontend da tela de Manutenção (Prafrot).

---

## 1. Garantir que, ao atualizar um registro, as datas não fiquem vazias

- **Rota**: `PUT /manutencao_frota/:id`
- **Regra**: ao receber um payload de atualização, **não sobrescrever** com valor vazio campos de data que já existem no registro.
- **Campos de data**: `data_solicitacao`, `data_agendamento`, `data_parada_veiculo`, `previcao_entrega`, `data_finalizacao`, `data_retirada`.
- **Comportamento esperado**: se o cliente envia `data_finalizacao: ""` ou omite o campo, o backend mantém o valor atual em banco. Apenas valores não vazios (ex.: `"2025-01-15"`) devem alterar o registro.

O frontend já preserva datas existentes ao montar o payload de edição; o backend deve seguir a mesma lógica para evitar limpar datas acidentalmente.

---

## 2. Validar que todas as datas estejam preenchidas antes de permitir fechar uma manutenção

- **Rota**: `PUT /manutencao_frota/fechar_manutencao/:id`
- **Regra**: **recusar** o fechamento (ex.: 400) se alguma das datas abaixo estiver vazia:
  - `data_solicitacao`
  - `data_agendamento`
  - `data_parada_veiculo`
  - `previcao_entrega`
  - `data_finalizacao`
  - `data_retirada`
- **Resposta sugerida**: mensagem clara indicando quais datas estão faltando (ex.: `"Não é possível fechar: preencha Data Solicitação, Data Finalização."`).

O frontend já valida essas mesmas datas antes de chamar o fechamento; a validação no backend é obrigatória para segurança e consistência.

---

## 3. Formatar campos de orçamento como moeda (backend)

- **Campos**: `orcamento_inicial`, `orcamento_final`, `dif_orcamento`.
- **Regra**: armazenar e expor **valores numéricos** (ex.: `1234.56`). O frontend formata em pt-BR (R$ 1.234,56) na exibição.
- **APIs**: aceitar número em `POST /manutencao_frota` e `PUT /manutencao_frota/:id`; retornar número nos JSONs de listagem e detalhe.

---

## 4. Auto-preenchimento de datas no formulário (frontend)

O frontend já trata:

- Normalização de datas ao carregar para edição (ISO, `YYYY-MM-DD`, `DD/MM/YYYY` → `YYYY-MM-DD`).
- Uso de `type="date"` com valores normalizados para evitar campos vazios por formato incorreto.

O backend deve retornar datas em formato **ISO** ou **YYYY-MM-DD** quando possível, para facilitar o preenchimento correto no formulário.
