From 83b76cd7af44406aa458b96146d1cfc2ede53a33 Mon Sep 17 00:00:00 2001
From: hasrinuryawati <53637311+hasrinuryawati@users.noreply.github.com>
Date: Sun, 27 Apr 2025 21:14:59 +0700
Subject: [PATCH] unduh excel & pdf laporan transaksi
---
app/Exports/TransaksiExport.php | 33 ++++++
app/Http/Controllers/RegistrasiController.php | 5 +-
app/Http/Controllers/TransaksiController.php | 53 +++++++++
resources/views/layout/sidebar.blade.php | 9 ++
.../views/module/transaksi/laporan.blade.php | 66 +++++++++++
.../module/transaksi/laporan_pdf.blade.php | 105 ++++++++++++++++++
routes/web.php | 3 +
7 files changed, 271 insertions(+), 3 deletions(-)
create mode 100644 app/Exports/TransaksiExport.php
create mode 100644 resources/views/module/transaksi/laporan.blade.php
create mode 100644 resources/views/module/transaksi/laporan_pdf.blade.php
diff --git a/app/Exports/TransaksiExport.php b/app/Exports/TransaksiExport.php
new file mode 100644
index 0000000..a3b8b52
--- /dev/null
+++ b/app/Exports/TransaksiExport.php
@@ -0,0 +1,33 @@
+header = $header;
+ $this->data = $data;
+ }
+
+ public function collection()
+ {
+ return collect([$this->header])->merge($this->data);
+ }
+
+ public function styles(Worksheet $sheet)
+ {
+ return [
+ 1 => ['font' => ['bold' => true]],
+ ];
+ }
+}
diff --git a/app/Http/Controllers/RegistrasiController.php b/app/Http/Controllers/RegistrasiController.php
index a94e021..eb938ff 100644
--- a/app/Http/Controllers/RegistrasiController.php
+++ b/app/Http/Controllers/RegistrasiController.php
@@ -8,11 +8,10 @@ use App\Models\Pasien;
use App\Models\Registrasi;
use App\Models\RuangPelayanan;
use App\Models\Tindakan;
-use Barryvdh\DomPDF\Facade\Pdf as FacadePdf;
+use Barryvdh\DomPDF\Facade\Pdf;
use Illuminate\Http\Request;
use Illuminate\Support\Str;
use Maatwebsite\Excel\Facades\Excel;
-use PDF;
class RegistrasiController extends Controller
{
@@ -97,7 +96,7 @@ class RegistrasiController extends Controller
{
$registrasi = Registrasi::with(['pasien', 'asuransi', 'pegawai', 'ruangPelayanan'])->orderByDesc('id')->get();
- $pdf = FacadePdf::loadview('module.registrasi.registrasi_pdf', ['registrasi' => $registrasi]);
+ $pdf = Pdf::loadview('module.registrasi.registrasi_pdf', ['registrasi' => $registrasi]);
$pdf->setPaper('A4');
return $pdf->stream('Data Regitrasi Pasien '.now().'.pdf');
diff --git a/app/Http/Controllers/TransaksiController.php b/app/Http/Controllers/TransaksiController.php
index 0f87edd..241020d 100644
--- a/app/Http/Controllers/TransaksiController.php
+++ b/app/Http/Controllers/TransaksiController.php
@@ -2,12 +2,15 @@
namespace App\Http\Controllers;
+use App\Exports\TransaksiExport;
use App\Models\Asuransi;
use App\Models\AsuransiTindakan;
use App\Models\Registrasi;
use App\Models\Tindakan;
use App\Models\Transaksi;
+use Barryvdh\DomPDF\Facade\Pdf;
use Illuminate\Http\Request;
+use Maatwebsite\Excel\Facades\Excel;
class TransaksiController extends Controller
{
@@ -49,4 +52,54 @@ class TransaksiController extends Controller
return redirect()->back()->with('message', 'Transaksi berhasil');
}
+
+ public function laporan()
+ {
+ $transaksi = Transaksi::with(['registrasi', 'tindakan'])->orderByDesc('id')->get();
+
+ return view('module.transaksi.laporan', compact('transaksi'));
+ }
+
+ public function excelExport()
+ {
+ $transaksi = Transaksi::with(['registrasi', 'tindakan'])->orderByDesc('id')->get();
+
+ $data = [];
+ $no = 1;
+ foreach ($transaksi as $trs) {
+ $data[] = [
+ 'No' => $no++,
+ 'Tanggal' => date('d/m/Y', strtotime($trs->created_at)),
+ 'Nama Pasien' => $trs->registrasi->pasien->nama,
+ 'Nama Tindakan' => $trs->tindakan->nama,
+ 'Jumlah' => $trs->jml_tindakan,
+ 'Subtotal' => $trs->subtotal,
+ 'Potongan' => $trs->potongan,
+ 'Total' => $trs->total,
+ ];
+ }
+
+ $header = [
+ 'No',
+ 'Tanggal',
+ 'Nama Pasien',
+ 'Nama Tindakan',
+ 'Jumlah',
+ 'Subtotal',
+ 'Potongan',
+ 'Total',
+ ];
+
+ return Excel::download(new TransaksiExport($header, $data), 'Data Transaksi Pasien '.now().'.xlsx');
+ }
+
+ public function generatePdf()
+ {
+ $transaksi = Transaksi::with(['registrasi', 'tindakan'])->orderByDesc('id')->get();
+
+ $pdf = Pdf::loadview('module.transaksi.laporan_pdf', ['transaksi' => $transaksi]);
+ $pdf->setPaper('A4');
+
+ return $pdf->stream('Data Transaksi Pasien '.now().'.pdf');
+ }
}
diff --git a/resources/views/layout/sidebar.blade.php b/resources/views/layout/sidebar.blade.php
index 02b6817..d22b4a1 100644
--- a/resources/views/layout/sidebar.blade.php
+++ b/resources/views/layout/sidebar.blade.php
@@ -89,6 +89,15 @@
+
+
+
+
+ Laporan
+
+
+
+
{{-- For Access Superadmin --}}
{{--
diff --git a/resources/views/module/transaksi/laporan.blade.php b/resources/views/module/transaksi/laporan.blade.php
new file mode 100644
index 0000000..f4adbeb
--- /dev/null
+++ b/resources/views/module/transaksi/laporan.blade.php
@@ -0,0 +1,66 @@
+@extends('layout.main')
+@section('content')
+
+
+
+
+
+
+
+
+
+
+
+ | No |
+ Tanggal |
+ Nama Pasien |
+ Nama Tindakan |
+ Jumlah |
+ Subtotal |
+ Potongan |
+ Total |
+
+
+
+ @php
+ $no = 1;
+ @endphp
+ @foreach ($transaksi as $data)
+
+ | {{ $no++ }} |
+ {{ date('d/m/Y', strtotime($data->created_at)) }} |
+ {{ $data->registrasi->pasien->nama }} |
+ {{ $data->tindakan->nama }} |
+ {{ $data->jml_tindakan }} |
+ {{ $data->subtotal }} |
+ {{ $data->potongan }} |
+ {{ $data->total }} |
+
+ @endforeach
+
+
+
+
+
+
+
+
+
+
+
+@push('script')
+
+@endpush
+@endsection
diff --git a/resources/views/module/transaksi/laporan_pdf.blade.php b/resources/views/module/transaksi/laporan_pdf.blade.php
new file mode 100644
index 0000000..4ee41ff
--- /dev/null
+++ b/resources/views/module/transaksi/laporan_pdf.blade.php
@@ -0,0 +1,105 @@
+
+
+
+ Data Transaksi Pasien
+
+
+
+ DATA TRANSAKSI PASIEN
+
+
+
+ | No |
+ Tanggal |
+ Nama Pasien |
+ Nama Tindakan |
+ Jumlah |
+ Subtotal |
+ Potongan |
+ Total |
+
+
+
+ @php
+ $no = 1;
+ @endphp
+ @foreach ($transaksi as $data)
+
+ | {{ $no++ }} |
+ {{ date('d/m/Y', strtotime($data->created_at)) }} |
+ {{ $data->registrasi->pasien->nama }} |
+ {{ $data->tindakan->nama }} |
+ {{ $data->jml_tindakan }} |
+ {{ $data->subtotal }} |
+ {{ $data->potongan }} |
+ {{ $data->total }} |
+
+ @endforeach
+
+
+
+
+
+ @php
+ $tanggal = \Carbon\Carbon::now();
+ @endphp
+
Jakarta, {{ $tanggal->locale('id')->isoFormat('dddd D MMMM YYYY') }}
+
+
+
+
diff --git a/routes/web.php b/routes/web.php
index 9788022..0304ef2 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -62,4 +62,7 @@ Route::middleware('auth:pegawai')->group(function () {
Route::get('/tansaksi/tindakan/{registrasi}', [TransaksiController::class, 'tindakanForm'])->name('transaksi.tindakan');
Route::post('/transaksi', [TransaksiController::class, 'store'])->name('transaksi.store');
+ Route::get('/transaksi/laporan', [TransaksiController::class, 'laporan'])->name('transaksi.laporan');
+ Route::get('/transaksi/excel/export/', [TransaksiController::class, 'excelExport'])->name('transaksi.excel.export');
+ Route::get('/transaksi/generate_pdf', [TransaksiController::class, 'generatePdf'])->name('transaksi.generate_pdf');
});