@extends('layouts.admin.theme') @section('content') @php $routeBack = $routeBack ?? 'admin.projetosProgramas.index'; $routeBackQuery = $routeBackQuery ?? null; $routeRelatorio = $routeRelatorio ?? 'admin.projetosProgramas.relatorio'; $titulo = $titulo ?? __('Relatório dinâmico — Projetos e Programas'); $allowedColumns = $allowedColumns ?? []; $allowedGroups = $allowedGroups ?? []; $selectedColumns = $selectedColumns ?? []; $group1 = $group1 ?? null; $group2 = $group2 ?? null; $group3 = $group3 ?? null; $backQuery = $routeBackQuery ?? request()->except(['columns', 'group1', 'group2', 'group3']); $routeImprimir = ($routeRelatorio ?? '') === 'admin.dashboardEstrategico.projetosProgramas.relatorio' ? 'admin.dashboardEstrategico.projetosProgramas.relatorio.imprimir' : 'admin.projetosProgramas.relatorio.imprimir'; // Colunas de dados (exceto denominacao — sempre exibida na 1ª coluna) $colsData = array_filter( $selectedColumns, fn ($c) => $c !== 'denominacao' && isset($allowedColumns[$c]) ); // Total de colunas: 1 (nome) + cols dados + 3 (qtd, previsto, disponível) $totalColCount = 1 + count($colsData) + 3; $presets = [ 'padrao' => [ 'label' => __('Padrão'), 'columns' => ['denominacao', 'secretaria', 'bairro'], 'groups' => ['secretaria', 'bairro', ''], ], 'bairro' => [ 'label' => __('Bairro'), 'columns' => ['denominacao', 'secretaria'], 'groups' => ['bairro', '', ''], ], 'financeiro' => [ 'label' => __('Financeiro'), 'columns' => ['denominacao', 'secretaria', 'orcamento_previsto', 'orcamento_disponivel', 'situacao_cadastro'], 'groups' => ['secretaria', '', ''], ], 'execucao' => [ 'label' => __('Execução'), 'columns' => ['denominacao', 'secretaria', 'etapa', 'andamento', 'prazo'], 'groups' => ['secretaria', 'etapa', ''], ], ]; $depthClasses = ['', 'ps-3', 'ps-4', 'ps-5']; @endphp
{{-- Cabeçalho --}}

{{ $titulo }}

{{ __('Monte a visão que você precisa: escolha colunas, agrupe e gere.') }}

{{-- Formulário de configuração --}}
{{-- Seção 0: Visões rápidas --}}

{{ __('Visões rápidas') }}

@foreach($presets as $key => $preset) @endforeach

{{-- Seções 1 e 2 lado a lado em telas maiores --}}
{{-- Seção 1: Colunas --}}

{{ __('1. Colunas a exibir') }}

@foreach($allowedColumns as $key => $colLabel)
@endforeach

{{ __('A coluna "Denominação" é sempre exibida como primeiro campo.') }}

{{-- Seção 2: Agrupamento --}}

{{ __('2. Agrupar por (opcional)') }}

{{ __('Subtotais são gerados automaticamente por grupo.') }}


{{-- CTA --}}
@if(!empty($reportRows)) {{ __(':n registro(s) encontrado(s)', ['n' => $reportRows[array_key_last($reportRows)]['totals']['count'] ?? '—']) }} @endif
{{-- Resultado --}} @if(!empty($reportRows))
{{ __('Resultado') }}
@foreach($colsData as $colKey) @endforeach @foreach($reportRows as $row) @php $type = (string) ($row['type'] ?? 'data'); $depth = (int) ($row['depth'] ?? 0); $depthClass = $depthClasses[min($depth, 3)]; @endphp @if($type === 'group_header') {{-- Cabeçalho de grupo: label em colspan + totais à direita --}} @elseif($type === 'subtotal') {{-- Subtotal: label alinhado à direita + totais --}} @elseif($type === 'grand_total') {{-- Total geral --}} @else {{-- Linha de dado --}} @foreach($colsData as $colKey) @endforeach @endif @endforeach
{{ __('Projeto / Grupo') }}{{ $allowedColumns[$colKey] }}{{ __('Qtd.') }} {{ __('Prev.') }} {{ __('Disp.') }}
{{ $row['label'] ?? '' }} {{ $row['totals']['count'] ?? '' }} R$ {{ number_format((float)($row['totals']['orcamento_previsto'] ?? 0), 2, ',', '.') }} R$ {{ number_format((float)($row['totals']['orcamento_disponivel'] ?? 0), 2, ',', '.') }}
{{ __('Subtotal') }} {{ $row['totals']['count'] ?? '' }} R$ {{ number_format((float)($row['totals']['orcamento_previsto'] ?? 0), 2, ',', '.') }} R$ {{ number_format((float)($row['totals']['orcamento_disponivel'] ?? 0), 2, ',', '.') }}
{{ __('Total geral') }} {{ $row['totals']['count'] ?? '' }} R$ {{ number_format((float)($row['totals']['orcamento_previsto'] ?? 0), 2, ',', '.') }} R$ {{ number_format((float)($row['totals']['orcamento_disponivel'] ?? 0), 2, ',', '.') }}
{{ $row['label'] ?? '' }} @if($colKey === 'prazo') {!! nl2br(e($row['cols'][$colKey] ?? '')) !!} @else {{ $row['cols'][$colKey] ?? '' }} @endif 1 R$ {{ number_format((float)($row['totals']['orcamento_previsto'] ?? 0), 2, ',', '.') }} R$ {{ number_format((float)($row['totals']['orcamento_disponivel'] ?? 0), 2, ',', '.') }}
@elseif(request()->has('columns') || request()->has('group1'))
{{ __('Nenhum projeto encontrado para a configuração selecionada.') }}
@endif
@endsection