@once @endonce
Processando roteirizacao Estamos validando os dados selecionados e consultando os servicos configurados. Nao feche esta tela nem atualize o navegador ate o processamento terminar.
Carregando mapa e rotas... Estamos recuperando o planejamento e preparando a visualizacao completa das rotas. Aguarde alguns instantes e nao clique novamente em Abrir.
@if(($resultadoRoteirizacao['job']['status'] ?? null) === 'processando')
ArcGIS processando as rotas O lote ja foi enviado e estamos aguardando o retorno automatico do resultado. Tempo aguardando: | nao feche esta tela.
@endif @if($modalConfirmarRoteirizacao) @php $diasConfirmacao = [1 => 'segunda-feira', 2 => 'terca-feira', 3 => 'quarta-feira', 4 => 'quinta-feira', 5 => 'sexta-feira', 6 => 'sabado', 7 => 'domingo']; $diaConfirmacao = $dataConfirmarRoteirizacao ? ($diasConfirmacao[\Illuminate\Support\Carbon::parse($dataConfirmarRoteirizacao)->dayOfWeekIso] ?? '') : ''; @endphp
Gerar romaneios
Confirme quando estes movimentos devem ficar disponiveis para a operacao.
Esta e a ultima verificacao antes de criar os romaneios. Alterar a data aqui nao refaz a roteirizacao; apenas define o dia operacional dos movimentos gerados.
@error('dataConfirmarRoteirizacao')
{{ $message }}
@enderror
Dia selecionado: {{ $diaConfirmacao ?: 'selecione uma data' }} @if($dataConfirmarRoteirizacao) {{ \Illuminate\Support\Carbon::parse($dataConfirmarRoteirizacao)->format('d/m/Y') }} @endif
@endif
Filtros de roteirizacao
Filtros rapidos
@foreach($regioesCidadeOptions as $regiaoKey => $regiaoLabel) @endforeach
@if($filtroRegioesSelecionadas)
@foreach($filtroRegioesSelecionadas as $regiaoKey => $regiaoLabel) {{ $regiaoLabel }} @endforeach
@endif
Tipos de veiculos IA
@foreach($tiposVeiculos as $tipoVeiculo) @endforeach
@if($tiposVeiculosSelecionados)
@foreach($tiposVeiculosSelecionados as $tipoVeiculoId => $tipoVeiculoDescricao) {{ $tipoVeiculoDescricao }} @endforeach
@endif
Cidade
@foreach($cidadesSugestoes as $cidadeSugestao) @endforeach
@if($cidades)
@foreach($cidades as $cidadeFiltro) {{ $cidadeFiltro }} @endforeach
@endif
@if($modalHistoricoRotas)
Historico de roteirizacoes Ultimos {{ $historicoRoteirizacoes->count() }} lotes enviados ao ArcGIS
@forelse($historicoRoteirizacoes as $jobHistorico) @empty @endforelse
Job Data rota Filial Status Rotas Nao rot. Rot. criada Docs Veiculos Peso Envio Conclusao Acoes
#{{ $jobHistorico['id'] }}
{{ $jobHistorico['descricao'] }}
{{ $jobHistorico['data_rota'] }} {{ $jobHistorico['filial'] }} {{ $jobHistorico['status'] }} {{ number_format($jobHistorico['rotas'], 0, ',', '.') }} {{ number_format($jobHistorico['nao_alocadas'], 0, ',', '.') }} {{ number_format($jobHistorico['rotas_criadas'], 0, ',', '.') }} {{ number_format($jobHistorico['documentos'], 0, ',', '.') }} {{ number_format($jobHistorico['veiculos'], 0, ',', '.') }} {{ number_format($jobHistorico['peso'], 3, ',', '.') }} {{ $jobHistorico['submitted_at'] }} {{ $jobHistorico['completed_at'] }}
Nenhuma roteirizacao enviada ainda.
@endif @if($modoCentralRotas)
Rotas criadas {{ number_format($centralRoteirizacao['rotas'], 0, ',', '.') }}
Veiculos utilizados {{ number_format($centralRoteirizacao['veiculos'], 0, ',', '.') }}
Notas roteirizadas {{ number_format($centralRoteirizacao['documentos'], 0, ',', '.') }}
Nao roteirizadas {{ number_format($centralRoteirizacao['nao_alocadas'], 0, ',', '.') }}
Com lat / long {{ number_format($centralRoteirizacao['com_coordenada'], 0, ',', '.') }}
Rotas geradas Consulte lotes anteriores ou inicie uma nova roteirizacao sem carregar resultado antigo automaticamente.
@forelse($historicoRoteirizacoes as $jobHistorico) @empty @endforelse
Rota Data rota Filial Status Rotas Nao rot. Rot. criada Docs Veiculos Peso Envio Acoes
#{{ $jobHistorico['id'] }} {{ $jobHistorico['descricao'] }} {{ $jobHistorico['data_rota'] }} {{ $jobHistorico['filial'] }} {{ $jobHistorico['status'] }} {{ number_format($jobHistorico['rotas'], 0, ',', '.') }} {{ number_format($jobHistorico['nao_alocadas'], 0, ',', '.') }} {{ number_format($jobHistorico['rotas_criadas'], 0, ',', '.') }} {{ number_format($jobHistorico['documentos'], 0, ',', '.') }} {{ number_format($jobHistorico['veiculos'], 0, ',', '.') }} {{ number_format($jobHistorico['peso'], 3, ',', '.') }} {{ $jobHistorico['submitted_at'] }}
Nenhuma rota gerada ainda. Clique em montar nova rota para iniciar.
@else
Tratar sem geoposição
Selecionados{{ number_format($selectedCount, 0, ',', '.') }}
Peso selecao{{ number_format($selectedWeight, 3, ',', '.') }}
Veiculos IA{{ number_format($selectedVeiculosCount, 0, ',', '.') }}
Motoristas IA{{ number_format($selectedMotoristasCount, 0, ',', '.') }}
@if($this->modalIndicador)
{{ $modalTitulo }} {{ $modalNotas->count() }} documento(s) conforme filtros atuais
@forelse($modalNotas as $notaModal) @if($this->enderecoEdicaoNotaId === $notaModal['id']) @endif @empty @endforelse
Geo Mapa Importacao NF Remetente / Destinatario Endereco Volume Peso Valor NF
@if($notaModal['tem_coordenada']) {{ $notaModal['mapa_numero'] ?: 'P' }} @else @endif {{ $notaModal['mapa_numero'] ?: '-' }} {{ $notaModal['importada_at'] }} {{ $notaModal['numero_nf'] }} {{ $notaModal['remetente'] }} {{ $notaModal['destinatario'] }} {{ $notaModal['endereco'] }} {{ number_format((float) $notaModal['volume'], 0, ',', '.') }} {{ number_format($notaModal['peso'], 3, ',', '.') }} R$ {{ number_format($notaModal['valor'], 2, ',', '.') }}
Nenhum documento para este indicador.
@endif
@if($resultadoRoteirizacao['job']) @endif Filial: {{ $mapa['filial']['label'] ?? 'sem coordenada cadastrada' }} Pins documentos: {{ count($mapa['documentos']) }} Origem: {{ $mapa['filial']['origem'] ?? 'sem filial definida' }}
@if($resultadoRoteirizacao['job']) @endif
@if($resultadoRoteirizacao['job'])
Rotas criadas Total {{ count($resultadoRoteirizacao['rotas']) }} | Job TMS #{{ $resultadoRoteirizacao['job']['id'] }} | ArcGIS {{ $resultadoRoteirizacao['job']['job_id'] }} | enviado {{ $resultadoRoteirizacao['job']['submitted_at'] ?: '-' }} @if($resultadoRoteirizacao['job']['completed_at']) | concluido {{ $resultadoRoteirizacao['job']['completed_at'] }} @endif
{{ $resultadoRoteirizacao['job']['status'] }} @if($resultadoRoteirizacao['job']['status'] === 'concluido' && count($resultadoRoteirizacao['rotas'])) @endif @if($resultadoRoteirizacao['job']['status'] !== 'confirmado') @endif
@if($resultadoRoteirizacao['rotas'])
@foreach($resultadoRoteirizacao['rotas'] as $rota) @php($ocupacao = (float) ($rota['ocupacao'] ?? 0))
{{ $rota['placa'] }} · {{ $rota['veiculo_tipo'] ?: 'Veículo' }} {{ $rota['motorista_nome'] }}{{ $rota['motorista_documento'] ? ' · '.$rota['motorista_documento'] : '' }}
{{ number_format($ocupacao, 1, ',', '.') }}% ocupação
Movimentos{{ number_format($rota['paradas_count'], 0, ',', '.') }}
Tempo{{ $rota['tempo_minutos'] > 0 ? $rota['tempo_label'] : '-' }}
Distância{{ number_format($rota['distancia_km'], 2, ',', '.') }} km
Peso{{ number_format($rota['peso'], 3, ',', '.') }} kg
Capacidade{{ number_format((float) ($rota['capacidade'] ?? 0), 3, ',', '.') }} kg
0 Deposito de Partida {{ $janelaRota['hora_inicio'] }}
@forelse($rota['paradas'] as $parada)
{{ $parada['sequencia'] ?: $loop->iteration }} {{ preg_replace('/-\s*\d+\s*$/', '', $parada['nome']) }}{{ ($parada['documentos_count'] ?? 1) > 1 ? ' · '.$parada['documentos_count'].' NFs' : '' }} {{ $parada['inicio'] }}{{ $parada['saida'] !== '-' ? ' - '.$parada['saida'] : '' }}
@empty
? Sem paradas detalhadas -
@endforelse @if($rota['paradas'])
{{ count($rota['paradas']) + 1 }} Deposito de Chegada -
@endif
@endforeach
@else
Resultado ainda sem rotas armazenadas. A tela consultara automaticamente enquanto o job estiver processando. @if($resultadoRoteirizacao['job']['messages'])
{{ $resultadoRoteirizacao['job']['messages'] }} @endif
@endif
@if($resultadoRoteirizacao['nao_alocadas']) @foreach($resultadoRoteirizacao['nao_alocadas'] as $naoAlocada) @endforeach
NF Remetente / Destinatario Endereco Peso Retorno ArcGIS
{{ $naoAlocada['numero_nf'] }} @if($naoAlocada['nota_id']) ID {{ $naoAlocada['nota_id'] }} @endif {{ $naoAlocada['remetente'] }} {{ $naoAlocada['destinatario'] }} {{ $naoAlocada['endereco'] }} {{ number_format((float) $naoAlocada['peso'], 3, ',', '.') }} kg {{ $naoAlocada['motivo'] }}
@else
Nenhuma nota pendente de roteirizacao neste retorno.
@endif
Visão ampliada das rotas
{{ count($resultadoRoteirizacao['rotas']) }} rota(s) {{ number_format((int) $resultadoRoteirizacao['job']['documentos'], 0, ',', '.') }} documento(s) {{ collect($resultadoRoteirizacao['nao_alocadas'])->sum(fn ($item) => max(1, (int) ($item['documentos_count'] ?? 1))) }} não roteirizado(s)
@if($resultadoRoteirizacao['job']['status'] === 'concluido' && count($resultadoRoteirizacao['rotas'])) @endif
@foreach($resultadoRoteirizacao['rotas'] as $rota) @php($ocupacao = (float) ($rota['ocupacao'] ?? 0))
{{ $rota['placa'] }} · {{ $rota['veiculo_tipo'] ?: 'Veículo' }} {{ $rota['motorista_nome'] }}{{ $rota['motorista_documento'] ? ' · '.$rota['motorista_documento'] : '' }}
{{ number_format($ocupacao, 1, ',', '.') }}% ocupação
Movimentos{{ number_format($rota['paradas_count'], 0, ',', '.') }}
Tempo{{ $rota['tempo_minutos'] > 0 ? $rota['tempo_label'] : '-' }}
Distância{{ number_format($rota['distancia_km'], 2, ',', '.') }} km
Peso{{ number_format($rota['peso'], 3, ',', '.') }} kg
Capacidade{{ number_format((float) ($rota['capacidade'] ?? 0), 3, ',', '.') }} kg
0 Depósito de Partida {{ $janelaRota['hora_inicio'] }}
@foreach($rota['paradas'] as $parada)
{{ $parada['sequencia'] ?: $loop->iteration }} {{ preg_replace('/-\s*\d+\s*$/', '', $parada['nome']) }}{{ ($parada['documentos_count'] ?? 1) > 1 ? ' · '.$parada['documentos_count'].' NFs' : '' }} {{ $parada['inicio'] }}{{ $parada['saida'] !== '-' ? ' - '.$parada['saida'] : '' }}
@endforeach @if($rota['paradas'])
{{ count($rota['paradas']) + 1 }} Depósito de Chegada -
@endif
@endforeach
@endif
@endif