From 63f91bdd6dd4bef79f950658c7d301dfdc5ec059 Mon Sep 17 00:00:00 2001 From: Bryam105 Date: Mon, 1 Jun 2026 11:04:17 -0300 Subject: [PATCH] Creada nueva pagina "Reportes" --- app/Http/Controllers/ReportController.php | 61 ++++++++ resources/views/dashboard.blade.php | 9 +- resources/views/reports/index.blade.php | 174 ++++++++++++++++++++++ routes/web.php | 1 + 4 files changed, 244 insertions(+), 1 deletion(-) create mode 100644 app/Http/Controllers/ReportController.php create mode 100644 resources/views/reports/index.blade.php 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' ]);