# Tela de Rotas — Como Usar

Guia prático das principais ações para operar rotas de entrega no dia a dia.

---

## Fluxo típico

1. Acesse **Operação > Rotas** (`/routes`).
2. Defina período, status e tipo de transportadora para trazer a visão correta.
3. Use filtros avançados para localizar rotas por motorista, número de pedido ou status de entrega.
4. Clique em uma rota para abrir o painel lateral com detalhes, lista de entregas e mapa.
5. Use o menu ⋮ para executar ações individuais na rota.
6. Para criar uma nova rota, clique em **Nova rota** no cabeçalho.

---

## Filtrar e localizar rotas

### Filtros principais

- **Status** — filtre por CRIADA, EM EXECUÇÃO, CANCELADA, PEDIDOS CONCLUÍDOS ou FINALIZADA
- **Entregue por** — filtre por frota própria ou transportadoras integradas
- **Período** — janela de datas (padrão: últimos 7 dias)
- **Filtros avançados** — nome da rota, motorista, documento, pedido e status de entrega
**Período padrão:** A tela carrega com os últimos 7 dias selecionados. Se uma rota não aparecer na listagem, verifique se a data de criação está dentro do período selecionado e amplie o intervalo se necessário.

---

## Acompanhar uma rota

Clique em qualquer linha da tabela para abrir o painel lateral com:

- Lista de entregas e status individual de cada uma
- Motorista responsável
- Visualização do trajeto no mapa

A URL é atualizada com `?route_id=` — você pode compartilhar ou copiar o link para abrir diretamente a rota em questão.

---

## Ações por rota

### Atribuir ou trocar motorista

Disponível quando a rota está nos status **CRIADA** ou **EM EXECUÇÃO**, desde que nenhuma entrega esteja com status de sucesso ou falha.

1. Abra o menu ⋮ da rota.
2. Clique em **Atribuir motorista** ou **Trocar motorista**.
3. Selecione o motorista desejado (deve pertencer ao seller group da rota).
4. Confirme.

### Solicitar coleta

Disponível quando a rota ainda não tem motorista atribuído e todos os pedidos pertencem a uma única filial. Acionar essa opção encaminha a rota para uma transportadora integrada.

### Duplicar rota

Cria uma nova rota com os mesmos pedidos e configurações. Disponível para a maioria dos status, exceto **EM EXECUÇÃO** e **PEDIDOS CONCLUÍDOS**.

### Cancelar rota
**Ação irreversível:** Cancelar uma rota não pode ser desfeito. Os pedidos vinculados retornam ao estado pendente, mas a rota é permanentemente cancelada.

---

## Criar uma rota

### Como acessar

Clique em **Nova rota** no canto superior direito da tela de Rotas. A URL muda para `/routes/create`.

### Layout da tela

A tela de criação é dividida em **dois painéis simultâneos**:

| Painel | O que contém |
| ------ | ------------ |
| **Esquerdo** | Modo de criação, campos de configuração e mapa com prévia do trajeto |
| **Direito** | Tabela de pedidos disponíveis para seleção, com filtros |

### Modos de criação

| Modo | Quando usar |
| ---- | ----------- |
| **Frota Própria** | A entrega será feita por motoristas próprios. Você configura motorista, armazém de início e, opcionalmente, armazém de fim. |
| **Transportadora** | A entrega será terceirizada via transportadora integrada. Você seleciona a filial, o método de entrega e se o veículo deve retornar ao depósito. |

---

### Campos — Frota Própria

| Campo | Obrigatório | Observações |
| ----- | ----------- | ----------- |
| **Motorista** | Não | Se não informado na criação, pode ser atribuído depois pelo menu ⋮ na lista de rotas |
| **Início da Rota** (armazém) | Sim | Define o ponto de partida. Deve pertencer ao seller group |
| **Fim da Rota** (armazém) | Não | Define o ponto de retorno. Se omitido, a rota não terá destino final configurado |

### Campos — Transportadora

| Campo | Obrigatório | Observações |
| ----- | ----------- | ----------- |
| **Filial** | Sim | Filial de origem dos pedidos |
| **Método** | Sim | Modalidade ou serviço da transportadora integrada |
| **Retorno obrigatório** | Não | Toggle que exige o retorno do veículo ao depósito de origem após as entregas |

---

### Selecionar pedidos

No painel direito, use os filtros para localizar e selecionar os pedidos a incluir na rota:

- **Busca** por número do pedido, nome do cliente ou filial
- **Marcadores** — filtre por tags aplicadas aos pedidos
- **Filial** — filtre por filial de origem
- **Período** — ajuste o intervalo de datas
- **Filtros avançados** — opções adicionais de filtragem
**Limite de pedidos:** Cada rota suporta no máximo **200 pedidos**. A barra de progresso no topo do painel direito exibe o contador em tempo real (ex.: `12/200`).
**Visualizar apenas selecionados:** Use o ícone de olho (👁) ao lado do contador para alternar entre exibir todos os pedidos disponíveis ou apenas os já selecionados.

---

### Sugerir rota e prévia

| Ação | O que faz |
| ---- | --------- |
| **Sugerir rota** | Consulta o serviço de roteirização (Mapbox) para calcular a sequência otimizada de entregas. Requer armazém de início selecionado e ao menos um pedido escolhido. |
| **Prévia de rota** | Exibe o trajeto calculado no mapa à esquerda antes de confirmar a criação. |

### Confirmar criação

Após configurar a rota e selecionar os pedidos, clique em **Criar Rota** (botão no canto inferior direito). O sistema valida os dados e cria a rota. Você é redirecionado de volta para a tela de listagem.

---

### Validações e restrições
**Note:** - Mínimo de **1 pedido** por rota
- Máximo de **200 pedidos** por rota
- Todos os pedidos devem estar em um status roteável
- Todos os pedidos devem pertencer ao mesmo seller group
- O motorista e os armazéns selecionados devem pertencer ao seller group

### Erros durante a criação

| Código | O que significa |
| ------ | --------------- |
| `ORDERS_NOT_ROUTEABLE` | Um ou mais pedidos selecionados não estão em status roteável |
| `DIFFERENT_SELLER_IDS` | Pedidos de seller groups diferentes foram incluídos na seleção |
| `COULD_NOT_SUGGEST_ROUTE_WITH_MUST_HAVE_ORDERS` | O otimizador não conseguiu incluir todos os pedidos obrigatórios na sugestão |
| `COULD_NOT_SUGGEST_ROUTE_WITH_CURRENT_CONFIG` | A configuração atual (armazéns, pedidos) não permite gerar uma sugestão de rota |

---

## Boas práticas operacionais

- Verifique o **status dos pedidos** antes de selecioná-los — apenas pedidos em status roteável podem ser incluídos.
- Defina o **armazém de início** antes de usar **Sugerir rota** — ele é o ponto de partida do cálculo.
- Use **Prévia de rota** para validar visualmente o trajeto antes de confirmar.
- Se o motorista não estiver disponível no momento da criação, deixe o campo em branco e atribua depois pelo menu ⋮ na listagem.

---

## Próximos passos

- [**Troubleshooting**](https://abbiamo-guide.netlify.app/go/products/rotas/troubleshooting/) — botão desabilitado, erros de criação e outros problemas comuns.