@forelse($romaneios as $romaneio)
@php
$documentosTotal = (int) ($romaneio['documentos_total'] ?? $romaneio['notas']);
$documentosConcluidos = (int) ($romaneio['documentos_concluidos'] ?? $romaneio['concluidas']);
$percentual = $documentosTotal > 0 ? round(($documentosConcluidos / $documentosTotal) * 100) : 0;
$placaLimpa = strtoupper(preg_replace('/[^A-Z0-9]/', '', $romaneio['placa']));
$finalPlaca = substr($placaLimpa, -1);
$temRodizio = in_array($finalPlaca, $finaisRodizio, true);
$rodizioBg = $temRodizio ? '#fff7ed' : '#f1f5f9';
$rodizioColor = $temRodizio ? '#ea580c' : '#cbd5e1';
$rodizioBorder = $temRodizio ? '#fed7aa' : 'rgba(148,163,184,.28)';
$agendaAtiva = filled($romaneio['agenda_at']);
$agendaStyle = $agendaAtiva
? ['#dbeafe', '#2563eb', 'Com agendamento']
: ['#f1f5f9', '#cbd5e1', 'Sem agendamento de entrega'];
$relogioAtivo = $romaneio['tem_status_chegada'] && $romaneio['status'] !== 'entregue';
$chegadaMinutos = max(0, (int) ($romaneio['chegada_minutos'] ?? 0));
$relogioCritico = $relogioAtivo && ($chegadaMinutos > $tempoMaximoChegada);
$relogioBg = $relogioAtivo ? ($relogioCritico ? '#fee2e2' : '#dbeafe') : '#f1f5f9';
$relogioColor = $relogioAtivo ? ($relogioCritico ? '#dc2626' : '#2563eb') : '#cbd5e1';
$statusOperacional = $romaneio['status_operacional'] ?? $romaneio['status'];
$tempoChegadaLabel = $chegadaMinutos >= 60
? intdiv($chegadaMinutos, 60).'H '.($chegadaMinutos % 60).'MIN'
: $chegadaMinutos.' MIN';
$statusLabel = match ($statusOperacional) {
'ocorrencia' => 'OCORRÊNCIA '.(int) ($romaneio['notas_ocorrencia_pendentes'] ?? 0),
'chegada' => $relogioCritico ? $tempoChegadaLabel : 'CHEGADA',
'em_rota' => 'EM ROTA',
'aberta' => 'ABERTO',
default => strtoupper(str_replace('_', ' ', $statusOperacional)),
};
$statusBadgeStyle = match ($statusOperacional) {
'ocorrencia' => ['#fef3c7', '#92400e'],
'chegada' => ['#dbeafe', '#1d4ed8'],
'finalizado' => ['#dcfce7', '#15803d'],
'em_rota' => ['#f3e8ff', '#7e22ce'],
default => ['#fef3c7', '#92400e'],
};
$capacidadeKg = (float) ($romaneio['capacidade_kg'] ?? 0);
$ocupacaoPercentual = $romaneio['ocupacao_percentual'] ?? null;
$ocupacaoCor = match (true) {
$ocupacaoPercentual === null => '#cbd5e1',
$ocupacaoPercentual > 100 => '#dc2626',
$ocupacaoPercentual >= 85 => '#f59e0b',
default => '#22c55e',
};
$diariaVeiculo = (float) ($romaneio['diaria_veiculo'] ?? 0);
$freteTotal = (float) ($romaneio['valor_frete_total'] ?? 0);
$appAcesso = $romaneio['app_acesso'] ?? null;
$appAcessou = (bool) ($appAcesso['acessou'] ?? false);
$appAcessoBg = $appAcessou ? '#dcfce7' : '#f1f5f9';
$appAcessoColor = $appAcessou ? '#16a34a' : '#cbd5e1';
$appAcessoTitle = $appAcessou
? 'Acessou o APP: '.($appAcesso['ultimo_acesso'] ?? '-').(($appAcesso['versao'] ?? null) ? ' | Versao '.$appAcesso['versao'] : '')
: 'Motorista ainda nao acessou o aplicativo nesta data';
$appAcessoLabel = $appAcessou ? 'Acessou o APP' : 'Acesso APP';
$supervisorId = (int) ($romaneio['supervisor_user_id'] ?? 0);
$supervisaoMinha = $supervisorId === (int) auth()->id();
$supervisaoOcupada = $supervisorId !== 0 && ! $supervisaoMinha;
$supervisaoTitle = $supervisaoMinha ? 'Duplo clique para liberar da sua supervisao' : ($supervisaoOcupada ? 'Sob supervisao de '.($romaneio['supervisor_nome'] ?: 'outro usuario') : 'Duplo clique para marcar supervisao!');
@endphp
BRASIL
BR
{{ $romaneio['placa'] }}
@if($supervisorId !== 0){{ $romaneio['supervisor_nome'] }} @endif
Manifesto
{{ $romaneio['romaneio'] ?: '-' }}
Integracao
{{ $romaneio['data_romaneio'] ?: '-' }}
Veiculo
{{ strtoupper($romaneio['tipo_veiculo'] ?: '-') }}
Utilizado
@if($ocupacaoPercentual === null)
-
@else
{{ number_format((float) $ocupacaoPercentual, 1, ',', '.') }}%
@endif
Carga
{{ number_format($romaneio['peso_total'], 3, ',', '.') }}
Capacidade
{{ $capacidadeKg > 0 ? number_format($capacidadeKg, 0, ',', '.').' kg' : '-' }}
-
@svg('heroicon-o-key', 'fi-icon fi-size-sm', ['style' => 'width:14px;height:14px;'])
@svg('heroicon-o-map', 'fi-icon fi-size-sm', ['style' => 'width:14px;height:14px;'])
@svg('heroicon-o-chat-bubble-left-right', 'fi-icon fi-size-sm', ['style' => 'width:14px;height:14px;'])
{{ $romaneio['entregas'] }}
{{ $romaneio['coletas'] }}
{{ $romaneio['transferencias'] }}
{{ $romaneio['reentregas'] }}
{{ $documentosTotal }}
@if($statusOperacional === 'ocorrencia')
{{ $statusLabel }}
@else
{{ $statusLabel }}
@endif
i
@svg('heroicon-o-ellipsis-horizontal', 'fi-icon fi-size-sm', ['style' => 'width:16px;height:16px;'])
@empty
Nenhum romaneio ativo encontrado.
@endforelse