Passageiros Intermediário 8 min de leitura

Passageiros - Assentos e Acomodações

Cobre como o admin atribui assentos pelo mapa visual do veículo, como o passageiro escolhe o próprio assento pela área do cliente quando a excursão libera a feature, as regras de capacidade e tipo do assento (normal, semi-leito, executivo, leito) e como gerar o mapa em PDF. A alocação em quartos do hotel (acomodações) tem fluxo próprio e é tratada no artigo de hospedagem.

Atualizado em 12/08/2026

Passageiros - Assentos e Acomodações

O que é

Esta página descreve como o assento de cada passageiro é definido em um veículo da excursão. O assento é gravado no campo assento do passageiro e fica associado ao transporte_id correspondente - por isso o mesmo número pode existir em veículos diferentes da mesma excursão, mas nunca duas vezes no mesmo veículo.

Existem dois fluxos paralelos que escrevem nesse campo: o admin atribui ou ajusta os assentos pelo mapa do veículo dentro da listagem de Passageiros, e o passageiro pode escolher o próprio assento pela área do cliente quando a excursão libera a feature. Em ambos os fluxos o assento precisa pertencer ao layout cadastrado em Cadastros > Veículos e respeitar o tipo da categoria.

Quartos do hotel não entram aqui. O termo "acomodações" normalmente se refere a quartos de hospedagem, que têm tela e fluxo próprios. Consulte Hospedagem - Distribuição de Quartos.

Como usar

Atribuir assento pelo admin (mapa visual)

  1. Vá em Viagens (Excursões) no menu lateral e abra a excursão desejada.
  2. Acesse a aba Passageiros.
  3. Em cada bloco de transporte (um por veículo cadastrado) clique no ícone de Mapa de Assentos no cabeçalho.
  4. O sistema carrega o layout do veículo (grid de poltronas por andar, com piso inferior e piso superior em ônibus double-decker).
  5. Clique em uma poltrona livre. O modal lista os passageiros sem assento - incluindo passageiros sem transporte definido e passageiros de outros veículos da mesma excursão.
  6. Selecione o passageiro e confirme. O assento é gravado e o mapa é recarregado.

Cores no mapa:

  • Disponível - poltrona livre, do tipo compatível com a categoria.
  • Ocupado - já tem passageiro vinculado (passa o mouse para ver nome, telefone, embarque e status).
  • Guia - assento reservado para guia escalado naquele transporte.
  • Não selecionável - corredor, motorista, banheiro ou item de mobiliário do layout.

Atribuir/trocar assento pelo cadastro do passageiro

  1. Na lista de passageiros, clique no nome ou no ícone de editar.
  2. No modal, preencha o campo Assento com o número desejado.
  3. Salve. O sistema valida em transação com lockForUpdate e devolve erro se o número já estiver ocupado no mesmo veículo.

Liberar / remover atribuição

  1. Edite o passageiro.
  2. Deixe o campo Assento em branco e salve.
  3. A poltrona volta para o status "disponível" no mapa.

Escolha pelo passageiro (área do cliente)

Quando a excursão tem Permitir escolha de assento ativa, o passageiro entra em Minha Conta > Pedidos > {pedido} e clica em Escolher Assento. O sistema:

  1. Junta todos os pedidos do mesmo comprador para aquela excursão, mostrando todos os passageiros da família/grupo.
  2. Verifica regra de momento configurada para a excursão:
    • antes_pagamento - sempre liberado;
    • apos_pagamento - só com order.status em pago ou parcial;
    • x_dias_antes - só dentro do prazo escolha_assento_dias_antes.
  3. Respeita escolha_assento_a_partir_de (data/hora mínima para liberar).
  4. Bloqueia troca a menos de troca_ate_dias_antes dias da viagem.

O passageiro pode escolher os assentos em lote (vários passageiros no mesmo envio) e o sistema valida cada um individualmente.

Imprimir mapa para o motorista/guia

  1. Na listagem de Passageiros da excursão, acesse a exportação Mapa de Assentos (PDF).
  2. O PDF gera um grid visual por andar de cada veículo + uma lista numerada (assento, nome, embarque).
  3. Opcionalmente filtre por transporte específico via parâmetro ?transporte={id}.

Casos especiais

Tipos de assento (normal, semi-leito, executivo, leito)

Cada item do layout do veículo tem um tipo. Quando a categoria do passageiro define um tipo_assento, o sistema só permite atribuir poltronas daquele tipo. Se nenhuma categoria da excursão usa tipo, qualquer categoria pode ocupar qualquer poltrona válida. Quando pelo menos uma categoria define tipo, as demais são tratadas como normal por default.

Tipos suportados no layout do veículo:

  • normal - assento comum.
  • semi_leito - semi-leito.
  • executivo - executivo.
  • leito - leito.

Mensagem típica: "Este assento não é do tipo {Leito}. Selecione um assento compatível com sua categoria."

Trocar o veículo do transporte mantendo passageiros

Ao trocar o veículo de um excursao_transporte, o sistema mantém os passageiros nos mesmos números de assento se o novo veículo tiver capacidade equivalente. Quando o novo veículo é menor, passageiros em assentos inexistentes ficam "órfãos" - o sistema detecta isso e pede confirmação explícita antes da troca, listando os passageiros que ficarão sem assento e precisarão ser realocados manualmente.

Excursão sem layout cadastrado no veículo

Se o veículo não tem veiculo_layouts cadastrado (cadastrado em Cadastros > Veículos > Layout), o mapa não é renderizado e o campo Assento vira texto livre. Isso é usado para transportes sem mapa formal (fretado pontual, "Sem Veículo" cadastrado só por nome e vagas).

Veículo de dois andares

Layouts com andar = 2 são renderizados em dois grids separados, rotulados como Piso Inferior e Piso Superior. A numeração dos assentos é única no veículo inteiro.

Pacote de viagem (sem transporte)

Excursões marcadas como tipo_excursao = pacote_viagem não usam mapa de assentos. O método podeEscolherAssento retorna false imediatamente para passageiros vinculados a esse tipo de excursão e a área do cliente não exibe a opção.

Assento reservado para guia

Guias escalados em um transporte (excursao_guias.assento) ocupam o assento no mapa com o rótulo Guia. Esse assento não pode ser atribuído a passageiros enquanto o guia estiver vinculado. Para liberar, remova o assento do guia em Guias > Atribuir ou desvincule o guia do transporte.

Acomodações em hotel

Para distribuir passageiros em quartos de hospedagem (rooming list), use o módulo Hospedagem (módulo hospedagem). A alocação de quartos é independente do assento no veículo: um passageiro pode ter assento 12 no ônibus e cama 2 no quarto duplo "203". Veja Hospedagem - Distribuição de Quartos.

Erros comuns e como resolver

  • "O assento {12} já está ocupado neste veículo. Selecione outro assento." - Causa: outro passageiro ativo (confirmado/pendente) ou um guia já tem esse número no mesmo excursao_transporte. Solução: escolher outro número ou liberar o assento do ocupante atual antes.
  • "Assento inválido. Por favor, selecione um assento válido no mapa." - Causa: o número informado não existe no layout do veículo (ou está marcado como tipo = vazio, corredor, motorista). Solução: clicar diretamente em uma poltrona do mapa visual.
  • "O veículo não possui mapa de assentos configurado." - Causa: veículo cadastrado sem layout. Solução: ir em Cadastros > Veículos > {veículo} > Layout e aplicar um template (Ônibus 44, Leito 28, Van 15 etc.) ou desenhar custom.
  • "A seleção de assentos estará disponível após a confirmação do pagamento." - Causa: excursão configurada com momento_escolha = apos_pagamento e o pedido ainda está pendente. Solução: confirmar pagamento ou ajustar a configuração da excursão.
  • "Alteração de assento não permitida a menos de {2} dias da viagem." - Causa: passou do prazo troca_ate_dias_antes. Solução: ajustar via admin (admin não respeita esse prazo) ou aumentar o prazo na configuração.
  • "A seleção de assentos estará disponível a partir de DD/MM/AAAA às HH:MM." - Causa: escolha_assento_a_partir_de configurada para data futura. Solução: aguardar a data ou alterar a configuração.
  • orphan_seats ao trocar veículo - Causa: capacidade do novo veículo é menor que o maior número de assento ocupado no veículo antigo. Solução: confirmar a troca aceitando que os passageiros listados ficarão sem assento, e depois realocá-los manualmente no novo layout.

Onde encontrar

  • URL: /admin/excursoes/{excursao}/passageiros
  • Endpoint do mapa (admin): GET /admin/excursoes/{excursao}/transportes/{transporte}/assentos
  • Endpoint do mapa (cliente): GET /cliente/pedidos/{codigo}/assentos
  • Exportação PDF: GET /admin/excursoes/{excursao}/passageiros/mapa-assentos/pdf?transporte={id}
  • Caminho no menu: Viagens (Excursões) > {excursão} > Passageiros
  • Permissões necessárias: ver as viagens para visualizar o mapa, editar as viagens para atribuir/alterar assentos
  • Módulo necessário: nenhum (assentos fazem parte do core de excursões)

Veja também

  • Cadastrar Passageiro - o assento pode ser preenchido já no cadastro.
  • Gerenciar Passageiros - visão da listagem agrupada por transporte.
  • Excursões - Gerenciar Transportes - cadastrar e trocar veículos sem perder os assentos atribuídos.
  • Hospedagem - Distribuição de Quartos - alocar os mesmos passageiros em quartos do hotel.

Este artigo foi útil?

Obrigado pelo seu feedback!

Neste artigo

Comece a usar agora

Crie sua conta e teste grátis por 7 dias, com acesso a todas as funcionalidades.

Testar Grátis