@extends('adminlte.app') @section('content') @php $periodoTitulo = ucfirst($dados['periodo_label']); $centroSelecionado = $dados['filtros']['centro_custo_id'] ? optional($centrosCusto->firstWhere('id', $dados['filtros']['centro_custo_id']))->nome_centro_custo : 'Todos'; $mesFiltro = $dados['filtros']['mes'] ?? now()->format('Y-m'); $mesAtual = \Carbon\Carbon::createFromFormat('Y-m', $mesFiltro)->startOfMonth(); $mesAnterior = $mesAtual->copy()->subMonth(); $mesAnterior2 = $mesAtual->copy()->subMonths(2); $ativosIntervencionados = collect($dados['concluidas'] ?? [])->pluck('manutenivel_id')->filter()->unique()->count(); $urgentes = collect($dados['por_validar'] ?? [])->where('prioridade', 'urgente')->count(); $totalPecas = collect($dados['concluidas'] ?? [])->sum(function ($os) { return (float) $os->custo_pecas; }); $totalMaoObra = collect($dados['concluidas'] ?? [])->sum(function ($os) { return (float) $os->custo_mao_obra; }); @endphp

Manutenção · relatório e validação

{{ $periodoTitulo }} · Centro de custo: {{ $centroSelecionado }}

@if ($message = Session::get('success'))
{{ $message }}
@endif @if ($message = Session::get('error'))
{{ $message }}
@endif
Mês atual Anterior Há 2 meses
Custo de manutenção · {{ $periodoTitulo }}
€ {{ number_format($dados['custo_total_mes'], 2, ',', '.') }}
Total acumulado no período
Concluídas e validadas
€ {{ number_format($dados['concluidas_validadas_valor'], 2, ',', '.') }}
{{ $dados['concluidas_validadas_count'] }} OS · {{ $ativosIntervencionados }} ativos
Por validar
€ {{ number_format($dados['por_validar_valor'], 2, ',', '.') }}
{{ $dados['por_validar_count'] }} OS aguardam aprovação
Preventivas a vencer (30d)
{{ $dados['preventivas_vencer_count'] }}
{{ $urgentes }} urgentes em validação

Custo por centro de custo · realizado vs. orçamento

@forelse($dados['centros'] as $index => $centro) @php $barClass = $index === 1 ? 'green' : ($index === 2 ? 'amber' : ''); $tagClass = $index === 1 ? 'green' : ($index === 2 ? 'amber' : ''); @endphp
{{ $centro['nome'] }}
{{ $centro['total_os'] }} OS
{{ number_format($centro['percentual'], 1, ',', '.') }}%
€ {{ number_format($centro['realizado'], 2, ',', '.') }}
RealizadoOrçamento € {{ number_format($centro['orcamento'], 2, ',', '.') }}
@empty
Sem dados no período selecionado.
@endforelse

Ordens de serviço por validar

OS aguardam aprovação na cadeia do centro de custo antes de gerar despesa.

{{ $dados['por_validar_count'] }} OS · € {{ number_format($dados['por_validar_valor'], 2, ',', '.') }}
{{ $periodoTitulo }}
do mês corrente
{{ $dados['por_validar_count'] }} OS{{ $urgentes }} urgente(s)aprovação pendente
pendente € {{ number_format($dados['por_validar_valor'], 2, ',', '.') }}
@forelse($dados['por_validar'] as $os) @empty @endforelse
OSAtivoTipoDataCusto est.EstadoAção
{{ $os->numero_os }} {{ optional($os->manutenivel)->matricula ?? optional($os->manutenivel)->nome ?? ('Ativo #' . $os->manutenivel_id) }} {{ ucfirst($os->tipo) }} {{ optional($os->data_solicitacao)->format('d/m/Y') }} € {{ number_format((float)$os->custo_total, 2, ',', '.') }} {{ $os->prioridade === 'urgente' ? 'urgente' : 'a aprovar' }}
@csrf
@csrf
Nenhuma OS por validar neste período.

Concluídas e validadas

OS encerradas no mês. A despesa foi gerada e o custo imputado ao centro de custo / cliente.

{{ $dados['concluidas_validadas_count'] }} OS · € {{ number_format($dados['concluidas_validadas_valor'], 2, ',', '.') }}
{{ $periodoTitulo }}
encerradas e validadas
{{ $dados['concluidas_validadas_count'] }} OS{{ $ativosIntervencionados }} ativosdespesa gerada
validada € {{ number_format($dados['concluidas_validadas_valor'], 2, ',', '.') }}
@forelse($dados['concluidas'] as $os) @empty @endforelse
OSAtivoTipoPeçasM. obraCustoDespesa
{{ $os->numero_os }} {{ optional($os->manutenivel)->matricula ?? optional($os->manutenivel)->nome ?? ('Ativo #' . $os->manutenivel_id) }} {{ ucfirst($os->tipo) }} € {{ number_format((float)$os->custo_pecas, 2, ',', '.') }} € {{ number_format((float)$os->custo_mao_obra, 2, ',', '.') }} € {{ number_format((float)$os->custo_total, 2, ',', '.') }} {{ $os->despesa_id ? 'gerada' : 'não' }}
Nenhuma OS concluída/validada no período.

Preventivas a vencer · por gatilho

Disparam por tempo, quilómetros, horas de uso ou litros abastecidos.

{{ $dados['preventivas_vencer_count'] }} planos
@forelse($dados['preventivas'] as $item) @empty @endforelse
AtivoPlanoGatilhoFaltaEstadoAção
{{ $item['ativo_nome'] }} {{ $item['tipo_servico'] }} {{ $item['gatilho'] }} {{ $item['faltante'] }} {{ $item['estado'] === 'critico' ? 'crítico' : ($item['estado'] === 'proximo' ? 'próximo' : 'no prazo') }} Abrir OS
Sem preventivas a vencer.
@endsection