98 lines
3.0 KiB
PHP
98 lines
3.0 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use Illuminate\Support\Facades\DB;
|
|
use Illuminate\Http\Request;
|
|
use App\Models\Pemasukan;
|
|
use App\Models\Pengeluaran;
|
|
use PDF; // <-- Pastikan ini yang Anda gunakan
|
|
|
|
class LaporanController extends Controller
|
|
{
|
|
public function review(Request $request)
|
|
{
|
|
// Mendapatkan data pemasukan dan pengeluaran berdasarkan tahun (jika ada filter tahun)
|
|
$tahun = $request->input('tahun');
|
|
$list_tahun = DB::table('pemasukan') // atau 'pengeluaran'
|
|
->select(DB::raw('YEAR(tanggal) as tahun'))
|
|
->distinct()
|
|
->orderBy('tahun', 'desc')
|
|
->pluck('tahun');
|
|
|
|
$pemasukan = Pemasukan::when($tahun, function ($query) use ($tahun) {
|
|
return $query->whereYear('tanggal', $tahun);
|
|
})->get();
|
|
|
|
$pengeluaran = Pengeluaran::when($tahun, function ($query) use ($tahun) {
|
|
return $query->whereYear('tanggal', $tahun);
|
|
})->get();
|
|
|
|
// Gabungkan data pemasukan dan pengeluaran
|
|
$gabungan = collect($pemasukan)->map(function($item) {
|
|
$item->jenis = 'masuk';
|
|
return $item;
|
|
})->merge(
|
|
collect($pengeluaran)->map(function($item) {
|
|
$item->jenis = 'keluar';
|
|
return $item;
|
|
})
|
|
)->sortByDesc('tanggal');
|
|
|
|
return view('laporan.review', compact('pemasukan', 'pengeluaran', 'list_tahun', 'gabungan'));
|
|
}
|
|
|
|
public function semua(Request $request)
|
|
{
|
|
$tahun = $request->input('tahun');
|
|
|
|
$pemasukan = Pemasukan::query();
|
|
$pengeluaran = Pengeluaran::query();
|
|
|
|
if ($tahun) {
|
|
$pemasukan->whereYear('tanggal', $tahun);
|
|
$pengeluaran->whereYear('tanggal', $tahun);
|
|
}
|
|
|
|
$list_tahun = Pemasukan::selectRaw('YEAR(tanggal) as tahun')->distinct()
|
|
->union(
|
|
Pengeluaran::selectRaw('YEAR(tanggal) as tahun')->distinct()
|
|
)
|
|
->orderBy('tahun', 'desc')->pluck('tahun')->unique();
|
|
|
|
return view('laporan.semua', [
|
|
'pemasukan' => $pemasukan->get(),
|
|
'pengeluaran' => $pengeluaran->get(),
|
|
'list_tahun' => $list_tahun,
|
|
'filter' => $request->all()
|
|
]);
|
|
}
|
|
|
|
public function exportPdf(Request $request)
|
|
{
|
|
$tahun = $request->input('tahun');
|
|
|
|
$pemasukan = Pemasukan::when($tahun, function ($query) use ($tahun) {
|
|
return $query->whereYear('tanggal', $tahun);
|
|
})->get();
|
|
|
|
$pengeluaran = Pengeluaran::when($tahun, function ($query) use ($tahun) {
|
|
return $query->whereYear('tanggal', $tahun);
|
|
})->get();
|
|
|
|
// Gabungkan semua transaksi
|
|
$gabungan = collect($pemasukan)->map(function($item) {
|
|
$item->jenis = 'Masuk';
|
|
return $item;
|
|
})->merge(
|
|
collect($pengeluaran)->map(function($item) {
|
|
$item->jenis = 'Keluar';
|
|
return $item;
|
|
})
|
|
)->sortBy('tanggal'); // urutkan tanggal naik
|
|
|
|
$pdf = PDF::loadView('laporan.pdf', compact('gabungan'))->setPaper('a4', 'landscape');
|
|
return $pdf->download('laporan_transaksi.pdf');
|
|
}
|
|
|
|
} |