@extends('layouts.app') @section('title', 'Dashboard - Sistema de Conciliação Bancária') @section('header')

Dashboard Financeiro

Visão geral das suas movimentações e conciliações bancárias

@endsection @section('header-actions')
@endsection @section('content')
Contas Ativas

{{ $stats['active_accounts'] ?? 0 }}

100% operacionais
Transações Pendentes

{{ $stats['pending_transactions'] ?? 0 }}

Aguardando processamento
Conciliações do Mês

{{ $stats['month_reconciliations'] ?? 0 }}

Processadas com sucesso
Saldo Total

R$ {{ number_format($stats['total_balance'] ?? 0, 2, ',', '.') }}

Patrimônio total
Movimentação Financeira
Distribuição por Categoria
Últimas 10 Transações
Ver Todas
@forelse($recentTransactions ?? [] as $transaction) @empty @endforelse
Data Conta Descrição Valor Status Ações
{{ $transaction->transaction_date ? $transaction->transaction_date->format('d/m/Y') : 'N/A' }}
{{ $transaction->transaction_date ? $transaction->transaction_date->format('H:i') : '00:00' }}
{{ $transaction->bankAccount->name ?? 'Conta não informada' }}
{{ $transaction->bankAccount->bank_name ?? 'Banco não informado' }}
{{ Str::limit($transaction->description ?? 'Sem descrição', 40) }} @if($transaction->category)
{{ $transaction->category }} @endif
{{ $transaction->formatted_amount ?? 'R$ 0,00' }} {{ ($transaction->status ?? 'pending') == 'reconciled' ? 'Conciliado' : 'Pendente' }}
@if(($transaction->status ?? 'pending') != 'reconciled') @endif
Nenhuma transação encontrada

Não há transações recentes para exibir.

Conciliações Recentes
Ver Todas
@if(isset($recentReconciliations) && $recentReconciliations->count() > 0)
@foreach($recentReconciliations as $reconciliation)
{{ $reconciliation->bankAccount->name }}
@php $statusConfig = [ 'approved' => ['class' => 'success', 'icon' => 'check-circle', 'text' => 'Aprovada'], 'completed' => ['class' => 'info', 'icon' => 'clock', 'text' => 'Completa'], 'draft' => ['class' => 'warning', 'icon' => 'edit', 'text' => 'Rascunho'] ]; $config = $statusConfig[$reconciliation->status] ?? $statusConfig['draft']; @endphp {{ $config['text'] }}
{{ $reconciliation->start_date->format('d/m/Y') }} - {{ $reconciliation->end_date->format('d/m/Y') }}
Saldo Final
R$ {{ number_format($reconciliation->ending_balance, 2, ',', '.') }}
Diferença
R$ {{ number_format(abs($reconciliation->difference ?? 0), 2, ',', '.') }}
@endforeach
@else
Nenhuma conciliação recente

Não há conciliações recentes para exibir.

Nova Conciliação
@endif
Alertas e Notificações
@if(isset($alerts) && count($alerts) > 0)
@foreach($alerts as $alert)
{{ $alert['title'] }}

{{ $alert['message'] }}

Agora mesmo
@endforeach
@else
Tudo em ordem!

Não há alertas pendentes no momento.

@endif
Resumo Mensal - {{ now()->format('F Y') }}
Total de Entradas

R$ {{ number_format($monthlySummary['credits'] ?? 0, 2, ',', '.') }}

Total de Saídas

R$ {{ number_format($monthlySummary['debits'] ?? 0, 2, ',', '.') }}

Saldo Líquido
@php $netBalance = ($monthlySummary['credits'] ?? 0) - ($monthlySummary['debits'] ?? 0); @endphp

R$ {{ number_format($netBalance, 2, ',', '.') }}

@if(isset($monthlyStats))
Principais Categorias (Saídas)
@foreach($monthlyStats['top_categories'] ?? [] as $category)
{{ $category['name'] }} R$ {{ number_format($category['total'], 2, ',', '.') }}
@endforeach
Estatísticas do Período
Total de Transações {{ $monthlyStats['total_transactions'] ?? 0 }}
Média por Dia {{ number_format(($monthlyStats['daily_average'] ?? 0), 2, ',', '.') }}
Conciliações Realizadas {{ $monthlyStats['reconciliations_count'] ?? 0 }}
@endif
@endsection @push('styles') @endpush @push('scripts')
@endpush }, scales: { y: { beginAtZero: true, ticks: { callback: function(value) { return 'R$ ' + value.toLocaleString('pt-BR'); } } } } }); } function initializeCategoryChart() { const ctx = document.getElementById('categoryChart').getContext('2d'); new Chart(ctx, { type: 'doughnut', data: { labels: ['Alimentação', 'Transporte', 'Educação', 'Saúde', 'Outros'], datasets: [{ data: [30, 25, 20, 15, 10], backgroundColor: [ '#FF6384', '#36A2EB', '#FFCE56', '#4BC0C0', '#9966FF' ] }] }, options: { responsive: true, maintainAspectRatio: false, plugins: { legend: { position: 'bottom' } } }); } function refreshDashboard() { location.reload(); } function changeChartPeriod(days) { // Implementar mudança de período do gráfico console.log('Mudando período para:', days, 'dias'); $('.btn-group .btn').removeClass('active'); event.target.classList.add('active'); } function changeSummaryMonth(direction) { // Implementar mudança de mês do resumo console.log('Mudando mês:', direction); } function markAllAsRead() { // Implementar marcação de alertas como lidos $('#alerts-tab .list-group-item').fadeOut(); } function dismissAlert(id) { // Implementar dismissão de alerta específico console.log('Dismissing alert:', id); } @endpush