diff --git a/app/Http/Controllers/ReportController.php b/app/Http/Controllers/ReportController.php
new file mode 100644
index 0000000..d17d574
--- /dev/null
+++ b/app/Http/Controllers/ReportController.php
@@ -0,0 +1,61 @@
+sum('total_amount');
+ $balance = $totalIncome - $totalOutcome;
+
+ // 2. Gastos por Categoría (Para Pie Chart)
+ $expensesByCategory = Expense::where('status', 'Pagado')
+ ->select('expense_category', DB::raw('SUM(total_amount) as total'))
+ ->groupBy('expense_category')
+ ->get();
+
+ // 3. Ingresos y Egresos por Mes (Últimos 6 meses)
+ $months = [];
+ $monthlyIncomeData = [];
+ $monthlyOutcomeData = [];
+
+ for ($i = 5; $i >= 0; $i--) {
+ $date = now()->subMonths($i);
+ $monthName = $date->translatedFormat('M Y'); // ej: may 2026
+
+ $months[] = ucfirst($monthName);
+
+ // Ingresos del mes
+ $inc = Sale::whereYear('created_at', $date->year)
+ ->whereMonth('created_at', $date->month)
+ ->sum('total');
+ $monthlyIncomeData[] = $inc;
+
+ // Egresos del mes
+ $out = Expense::where('status', 'Pagado')
+ ->whereYear('expense_date', $date->year)
+ ->whereMonth('expense_date', $date->month)
+ ->sum('total_amount');
+ $monthlyOutcomeData[] = $out;
+ }
+
+ return view('reports.index', compact(
+ 'totalIncome',
+ 'totalOutcome',
+ 'balance',
+ 'expensesByCategory',
+ 'months',
+ 'monthlyIncomeData',
+ 'monthlyOutcomeData'
+ ));
+ }
+}
diff --git a/resources/views/dashboard.blade.php b/resources/views/dashboard.blade.php
index 0e0a38a..2fe2a50 100644
--- a/resources/views/dashboard.blade.php
+++ b/resources/views/dashboard.blade.php
@@ -44,13 +44,20 @@
-
+
+
+
+
+
+
diff --git a/resources/views/reports/index.blade.php b/resources/views/reports/index.blade.php
new file mode 100644
index 0000000..0872b02
--- /dev/null
+++ b/resources/views/reports/index.blade.php
@@ -0,0 +1,174 @@
+
+
+
+
+
+
+
+
+
+
+
+
Total Ingresos
+
${{ number_format($totalIncome, 2, ',', '.') }}
+
Ventas realizadas
+
+
+
+
+
+
+
+
+
+
Total Egresos
+
${{ number_format($totalOutcome, 2, ',', '.') }}
+
Gastos pagados
+
+
+
+
+
+
+
+
+
+
Balance Neto
+
+ ${{ number_format($balance, 2, ',', '.') }}
+
+
Ingresos - Egresos
+
+
+
+
+
+
+
+
+
+
+
Evolución de Ingresos y Egresos (Últimos 6 meses)
+
+
+
+
+
+
+
+
Distribución de Gastos por Categoría
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/routes/web.php b/routes/web.php
index c3ff6d0..c3726ae 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -60,6 +60,7 @@ Route::middleware(['auth'])->group(function () {
Route::post('suppliers/{supplier}/order', [SupplierController::class, 'storeOrder'])->name('suppliers.storeOrder');
Route::resource('suppliers', SupplierController::class);
Route::resource('expenses', \App\Http\Controllers\ExpenseController::class);
+ Route::get('reports', [\App\Http\Controllers\ReportController::class, 'index'])->name('reports.index');
Route::resource('productos', ProductosController::class)->parameters([
'productos' => 'product'
]);