@extends('layouts.app') @section('title', 'Solicitação ' . $solicitacao->numero_solicitacao . ' — Operador') @section('page_title', 'Solicitação ' . $solicitacao->numero_solicitacao) @section('content') @php $sc = $solicitacao->statusColor(); $colorMap = ['gray'=>'bg-gray-100 text-gray-700','blue'=>'bg-blue-100 text-blue-700','yellow'=>'bg-yellow-100 text-yellow-700','green'=>'bg-green-100 text-green-800','indigo'=>'bg-indigo-100 text-indigo-800','teal'=>'bg-teal-100 text-teal-800','red'=>'bg-red-100 text-red-700']; $badgeClass = $colorMap[$sc] ?? 'bg-gray-100 text-gray-700'; @endphp
{{ $solicitacao->assunto }}
@endifA solicitação só entra em execução quando as OS forem efetivamente geradas.
Antes de gerar as OS:
Após a geração, motorista, veículo, data/hora e status operacional devem ser ajustados diretamente nas respectivas OS. A regeneração automática é bloqueada para preservar rastreabilidade.
@endifConflito / coincidência de agenda identificado
Há {{ $totalCoincidencias }} ocorrência(s) no mesmo dia e horário em Solicitações, OS ou na base importada. Confira os detalhes abaixo antes de aprovar a alocação.
| # | Origem | Destino | Sonda | Data | Hora | Qtd | Peso | Cavalo | Carroceria | Motorista | Status | Salvar |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ $loop->iteration }} | {{ $item->origemLabel() }} | {{ $item->destinoLabel() }} | {{ $item->sondaLabel() }} | {{ $item->data_coleta?->format('d/m/Y') }} | {{ $item->hora_coleta ?? '—' }} | {{ $item->quantidade }} | {{ $item->carga_peso_ton !== null ? number_format((float)$item->carga_peso_ton, 3, ',', '.') . ' t' : '—' }} | {{-- Formulário de alocação inline --}}|||||
|
⚠
Mesmo dia e horário já constam em outra ocorrência
@foreach($dispItem['coincidencias_horario'] as $coincidencia)
{{ $coincidencia['numero'] }}
{{ $coincidencia['fonte'] === 'importacao' ? 'Importado' : ($coincidencia['fonte'] === 'os' ? 'OS' : 'Solicitação') }}
•{{ $coincidencia['cliente'] }}
•{{ $coincidencia['origem'] }} → {{ $coincidencia['destino'] }}
@if(!empty($coincidencia['motorista']))
•Motorista: {{ $coincidencia['motorista'] }}
@endif
@if(!empty($coincidencia['veiculo']))
•Cavalo: {{ $coincidencia['veiculo'] }}
@endif
•Status: {{ $coincidencia['status'] }}
@if($coincidencia['fonte'] === 'os')
Abrir OS
@elseif($coincidencia['fonte'] === 'solicitacao')
Abrir solicitação
@elseif(auth()->user()?->hasRole('superadmin'))
Auditar importado
@else
Registro importado
@endif
|
||||||||||||
| Nenhum item. | ||||||||||||
Há item(ns) com data/horário de coleta vencido
O sistema não gera sugestões nem permite nova alocação para esses itens. A solicitação deve ser corrigida antes de prosseguir.
Item {{ $loop->iteration }} — {{ $item->origemLabel() }} → {{ $item->destinoLabel() }} @if($item->data_coleta) · {{ $item->data_coleta->format('d/m/Y') }} @endif @if($item->hora_coleta) · {{ substr((string)$item->hora_coleta, 0, 5) }} @endif
@if(!$item->origem_id || !$item->destino_id)⚠ Score de rota desconsiderado porque origem e/ou destino ainda não possuem vínculo cadastral.
@endif{{ $sug->motorista->nome }}
{{ $sug->motorista->rankLabel() }} @if($sug->motorista->empresa) · {{ $sug->motorista->empresa }} @endif
Por que foi sugerido
Base histórica usada: {{ number_format($sug->historico_total, 0, ',', '.') }} operação(ões) · Importados: {{ number_format($sug->historico_importado, 0, ',', '.') }} · Sistema: {{ number_format($sug->historico_sistema, 0, ',', '.') }} @if(($sug->historico_aproximado ?? 0) > 0) · Alias/nome curto: {{ number_format($sug->historico_aproximado, 0, ',', '.') }} @endif · Rota: {{ $sug->viagens_rota }} · Cliente: {{ $sug->viagens_cliente }}
Atenção operacional
@foreach($sug->alertas as $alerta)• {{ $alerta }}
@endforeach