@if($movimentoModalAba === 'resumo')
@foreach(['Status' => strtoupper(str_replace('_', ' ', $movimentoModal['status'])), 'Documento' => $movimentoModal['documento'], 'Romaneio' => $movimentoModal['romaneio'], 'Remetente' => $movimentoModal['remetente'], 'Destinatário' => $movimentoModal['destinatario'], 'Previsão' => $movimentoModal['previsao'] ?: '-', 'Chegada' => $movimentoModal['chegada'] ?: '-', 'Ocorrência' => $movimentoModal['ocorrencia_data'] ?: '-', 'Baixa' => $movimentoModal['baixa'] ?: '-', 'Recebedor' => $movimentoModal['recebedor'], 'Endereço' => $movimentoModal['endereco'] ?: '-'] as $label => $valor)
{{ $label }} {{ $valor }}
@endforeach
@if($movimentoModal['agendamento'] ?? null)
Agendamento {{ strtoupper($movimentoModal['agendamento']['status']) }}
{{ $movimentoModal['agendamento']['data'] }}{{ $movimentoModal['agendamento']['hora_inicio'] ? ' · '.$movimentoModal['agendamento']['hora_inicio'] : '' }}{{ $movimentoModal['agendamento']['hora_fim'] ? '–'.$movimentoModal['agendamento']['hora_fim'] : '' }}
@if($movimentoModal['agendamento']['senha'])
Senha: {{ $movimentoModal['agendamento']['senha'] }}
@endif
@if($movimentoModal['agendamento']['observacao'])
{{ $movimentoModal['agendamento']['observacao'] }}
@endif
@endif
@elseif($movimentoModalAba === 'status')
@if($movimentoModal['status'] === 'cancelada')
Movimento cancelado
{{ $movimentoModal['cancelamento']['motivo'] ?: 'Motivo nao informado' }}
{{ $movimentoModal['cancelamento']['usuario'] ?: 'Usuario nao informado' }} · {{ $movimentoModal['cancelamento']['data'] ?: '-' }}
@if(auth()->user()?->isTenantAdmin())
Reativar como EM ROTA Use quando o movimento tiver sido cancelado por engano. O histórico acima será preservado.
@error('reativacaoForm.motivo')
{{ $message }} @enderror
Reativar movimento Reativando...
@endif
@else
@php($ocorrenciaAtualResumo = collect($movimentoModal['ocorrencias'])->first())
@if($movimentoModal['status'] === 'ocorrencia' && $ocorrenciaAtualResumo)
Ocorrência atual · {{ $ocorrenciaAtualResumo['motivo'] }}
{{ $ocorrenciaAtualResumo['descricao'] ?: 'Ocorrência sem descrição informada.' }}
{{ $ocorrenciaAtualResumo['data'] ?: '-' }}
{{ $ocorrenciaAtualResumo['tratada'] ? 'Tratada: '.($ocorrenciaAtualResumo['tratativa'] ?: 'sem descrição') : 'Pendente de tratamento' }}
@endif
@foreach(($movimentoModal['tipo'] === 'coleta' ? ['coletada' => 'Coletado', 'ocorrencia' => 'Ocorrência', 'em_rota' => 'Em rota'] : ['entregue' => 'Entregue', 'ocorrencia' => 'Ocorrência', 'em_rota' => 'Em rota']) as $valor => $label)
@php($corStatus = $valor === 'ocorrencia' ? ['#f59e0b','#fffbeb','#92400e'] : ($valor === 'em_rota' ? ['#7e22ce','#faf5ff','#6b21a8'] : ['#16a34a','#f0fdf4','#166534']))
{{ $label }}
@endforeach
Data e hora
@error('movimentoForm.data_hora'){{ $message }} @enderror
@if($movimentoModal['tipo'] === 'nota')
Chave da NF
@endif
@if(($movimentoForm['status'] ?? '') === 'entregue')
Recebedor
Documento do recebedor
@endif
@if(($movimentoForm['status'] ?? '') === 'ocorrencia')
Motivo da ocorrência
Selecione o motivo @foreach($ocorrenciaMotivos as $idMotivo => $descricaoMotivo){{ $descricaoMotivo }} @endforeach
@error('movimentoForm.ocorrencia_motivo_id'){{ $message }} @enderror
Detalhes da ocorrência
@error('movimentoForm.ocorrencia_descricao'){{ $message }} @enderror
@if($movimentoModal['tipo'] === 'nota')
Itens envolvidos (opcional) Selecione um produto importado ou inclua manualmente. + Incluir item
@if(!($movimentoModal['ocorrencia_itens_ready'] ?? false))
Execute a migration de ocorrências por item para utilizar esta opção.
@else
@if(empty($ocorrenciaItensForm))
Esta NF não possui itens importados. Use + Incluir item .
@endif
@foreach($ocorrenciaItensForm as $indice => $itemForm)
@if($itemForm['manual']??false)
Buscar ✕
@if($produtoBuscaIndice===$indice)
@forelse($produtoBuscaResultados as $produto){{$produto['codigo']}} {{$produto['descricao']}} {{$produto['unidade']}} · {{$produto['remetente']?:'Catálogo geral'}} @emptyNenhum produto encontrado. Ao salvar, este SKU será criado no catálogo. @endforelse
@endif
@else
{{$itemForm['codigo']?:'Sem SKU'}} · {{$itemForm['descricao']}} Documento: {{number_format((float)$itemForm['valor_documento'],4,',','.')}} {{$itemForm['unidade']}}
@endif
@if($itemForm['selecionado']??false)
DivergênciaSelecione Diferença de peso Diferença de quantidade Falta Avaria Quebra Qualidade Outro @error("ocorrenciaItensForm.$indice.tipo_divergencia"){{$message}} @enderror
MediçãoQuantidade Peso
Na nota
Entregue
@php($saldoItem=max(0,(float)($itemForm['valor_documento']??0)-(float)($itemForm['valor_entregue']??0)))
Saldo: {{number_format($saldoItem,4,',','.')}} {{$itemForm['unidade']}}
@endif
@endforeach
@endif
@endif
Pendência e reentrega serão geradas automaticamente conforme a configuração do motivo.
@endif
Arraste ou selecione comprovantes JPG, PNG, WebP ou PDF · até 10 MB por arquivo
Carregando arquivo...
@error('movimentoUploads.*'){{ $message }} @enderror
Cancelar esta {{ $movimentoModal['tipo'] === 'coleta' ? 'coleta' : 'entrega' }} O item permanecera no historico, sairá dos totais ativos e será preparado para remocao no aplicativo.
@error('cancelamentoForm.motivo')
{{ $message }} @enderror
Cancelar movimento Cancelando...
@endif
@elseif($movimentoModalAba === 'ocorrencia')
@forelse($movimentoModal['ocorrencias'] as $ocorrencia)
{{ $ocorrencia['descricao'] ?: 'Ocorrência registrada' }} {{ $ocorrencia['data'] ?: '-' }}
{{ $ocorrencia['tratada'] ? 'Tratada: '.($ocorrencia['tratativa'] ?: 'sem descrição') : 'Pendente de tratamento' }}
@if(!empty($ocorrencia['itens']))
@foreach($ocorrencia['itens'] as $itemOcorrencia)
{{$itemOcorrencia['codigo']?:'Sem SKU'}} · {{$itemOcorrencia['descricao']}} {{strtoupper(str_replace('_',' ',$itemOcorrencia['tipo']))}} · {{$itemOcorrencia['observacao']?:'Sem observação'}} Saldo {{number_format($itemOcorrencia['saldo'],4,',','.')}} {{$itemOcorrencia['unidade']}} {{strtoupper(str_replace('_',' ',$itemOcorrencia['status']))}} @if(!in_array($itemOcorrencia['status'],['reposto','indenizado','cancelada'],true))Tratar item @endif
@endforeach
@endif
@empty
Nenhuma ocorrência registrada.
@endforelse
@if($movimentoModal['reentrega'])
Marcado para reentrega @endif
@php($ocorrenciaComPendencia = collect($movimentoModal['ocorrencias'])->first(fn ($item) => ! empty($item['pendencia'])))
@if($ocorrenciaComPendencia)
@php($pendencia = $ocorrenciaComPendencia['pendencia'])
Situação@foreach(['aberta'=>'Aberta','em_analise'=>'Em análise','aguardando_cliente'=>'Aguardando cliente','aguardando_motorista'=>'Aguardando motorista','aguardando_transportador'=>'Aguardando transportador','resolvida'=>'Resolvida','cancelada'=>'Cancelada'] as $valor=>$label){{ $label }} @endforeach
Parte envolvida@foreach(['cliente'=>'Cliente','transportador'=>'Transportador','motorista'=>'Motorista','remetente'=>'Remetente','destinatario'=>'Destinatário','nao_definido'=>'Não definido'] as $valor=>$label){{ $label }} @endforeach
Prazo para retorno
Novo andamento / solução@error('pendenciaForm.descricao'){{ $message }} @enderror
Salvar andamento
@if($pendencia['historicos'])
Ver histórico da pendência ({{ count($pendencia['historicos']) }}) @foreach($pendencia['historicos'] as $historico)
{{ $historico['data'] }} · {{ $historico['usuario'] ?: 'Sistema' }} {{ $historico['descricao'] }}
@endforeach
@endif
@elseif(! empty($movimentoModal['ocorrencias']))
Manter como pendência A mercadoria ficará aguardando uma decisão, sem ser enviada para uma nova rota.
Parte envolvida@foreach(['cliente'=>'Cliente','transportador'=>'Transportador','motorista'=>'Motorista','remetente'=>'Remetente','destinatario'=>'Destinatário','nao_definido'=>'Não definido'] as $valor=>$label){{ $label }} @endforeach
PrioridadeBaixa Normal Alta Crítica
Prazo para retorno
Motivo / orientação inicial@error('pendenciaForm.descricao'){{ $message }} @enderror
Manter como pendência
@endif
Programar reentrega Mova este documento para uma nova data ou para um romaneio já aberto.
Nova data Ou vincular a romaneio abertoCriar na data informada preservando o romaneio @foreach($movimentoModal['romaneios_destino'] as $destino){{ $destino['label'] }} @endforeach
Instrução / justificativa@error('reentregaForm.descricao'){{ $message }} @enderror
@error('reentregaForm.data'){{ $message }} @enderror
Programar reentrega
@elseif($movimentoModalAba === 'comprovantes')
@php($primeiroComprovante = $movimentoModal['comprovantes'][0] ?? null)
@if($primeiroComprovante)
@foreach($movimentoModal['comprovantes'] as $comprovante)
@php($corValidacao = match($comprovante['validacao']) {'aprovado'=>'#16a34a','reprovado'=>'#dc2626',default=>'#64748b'})
{{ $comprovante['pdf'] ? 'PDF' : 'IMAGEM' }} · {{ $comprovante['data'] ?: '-' }}
{{ $comprovante['validacao'] }} Excluir
Aprovar Reprovar
@endforeach
@else
Nenhum comprovante vinculado.
@endif
Adicionar comprovantesCarregando arquivos...
@error('movimentoUploads.*')
{{ $message }} @enderror
Adicionar arquivos
@elseif($movimentoModalAba === 'despesas')
@if($tiposDespesasAdicionais->isEmpty())
Cadastre e ative as opções em Administração → Tipos de despesas. Se já estiverem cadastradas, execute a migration de despesas adicionais deste tenant.
@else
Nova despesa adicional Vinculada ao documento, romaneio, motorista e veículo.
TipoSelecione @foreach($tiposDespesasAdicionais as $tipoDespesa){{ $tipoDespesa->nome }}{{ $tipoDespesa->exige_comprovante ? ' · comprovante obrigatório' : '' }} @endforeach @error('despesaForm.tipo_despesa_adicional_id'){{ $message }} @enderror
Valor @error('despesaForm.valor'){{ $message }} @enderror
Data e hora
Responsável@foreach(['transportador'=>'Transportador','cliente'=>'Cliente','motorista'=>'Motorista','remetente'=>'Remetente','destinatario'=>'Destinatário','terceiro'=>'Terceiro','nao_definido'=>'Não definido'] as $valor=>$label){{ $label }} @endforeach
Descrição / justificativa@error('despesaForm.descricao'){{ $message }} @enderror
Comprovantes da despesa · JPG, PNG, WebP ou PDFCarregando arquivos... @error('despesaUploads'){{ $message }} @enderror @error('despesaUploads.*'){{ $message }} @enderror
Adicionar despesa
@endif
Despesas deste item {{ count($movimentoModal['despesas']) }} lançamento(s)
@forelse($movimentoModal['despesas'] as $despesa)
@php($corDespesa = match($despesa['status']) {'aprovada'=>'#16a34a','reprovada'=>'#dc2626','paga'=>'#2563eb',default=>'#d97706'})
{{ $despesa['tipo'] }} · R$ {{ number_format($despesa['valor'], 2, ',', '.') }} {{ $despesa['data'] }} · Responsável: {{ ucfirst(str_replace('_', ' ', $despesa['responsavel'])) }} · {{ $despesa['usuario'] ?: 'Sistema' }}
{{ $despesa['status'] }}
{{ $despesa['descricao'] }}
@if($despesa['comprovantes'])@endif
@if(! in_array($despesa['status'], ['aprovada','paga']) || ($despesa['status'] === 'aprovada' && ! $despesa['financeiro_lancamento_id']))
{{ $despesa['status'] === 'aprovada' ? 'Gerar financeiro' : 'Aprovar' }} @endif
@if(! in_array($despesa['status'], ['reprovada','paga']))
Reprovar @endif
@if($despesa['financeiro_lancamento_id'])
Financeiro #{{ $despesa['financeiro_lancamento_id'] }} @endif
@if($despesa['status'] !== 'paga')
Excluir @endif
@empty
Nenhuma despesa adicional lançada para este item.
@endforelse
@elseif($movimentoModalAba === 'localizacao')
@if($movimentoModal['latitude'] && $movimentoModal['longitude'])
Ponto registrado {{ $movimentoModal['latitude'] }}, {{ $movimentoModal['longitude'] }} Abrir no mapa
@else
Este movimento ainda não possui latitude e longitude.
@endif
@else
@forelse($movimentoModal['eventos'] as $evento)
{{ $evento['data'] ?: '-' }} {{ strtoupper(str_replace('_', ' ', $evento['evento'])) }} {{ $evento['descricao'] ?: trim(($evento['status_anterior'] ?: '-').' → '.($evento['status_novo'] ?: '-')) }}
@empty
Nenhum evento operacional registrado.
@endforelse
@endif