diff --git a/app/Exports/LaporanKeseluruhan/PetibesiAllExportExcel.php b/app/Exports/LaporanKeseluruhan/PetibesiAllExportExcel.php
new file mode 100644
index 0000000..c1fa956
--- /dev/null
+++ b/app/Exports/LaporanKeseluruhan/PetibesiAllExportExcel.php
@@ -0,0 +1,72 @@
+petibesiData = $petibesiData;
+ }
+
+ public function collection()
+ {
+ return collect($this->petibesiData);
+ }
+
+ public function headings(): array
+ {
+ return [
+ 'No.',
+ 'Kod Cawangan',
+ 'Cawangan',
+ 'Nilai (RM)',
+ ];
+ }
+
+ public function map($row): array
+ {
+ $nilai = is_numeric($row['bakieod'] ?? null) ? (float) $row['bakieod'] : 0;
+ $this->total += $nilai;
+
+ return [
+ $this->counter++,
+ $row['kodcaw'] ?? '',
+ $row['details_caw'] ?? '',
+ number_format($nilai, 2),
+ ];
+ }
+
+ public function registerEvents(): array
+ {
+ return [
+ AfterSheet::class => function (AfterSheet $event) {
+
+ // 1. Tajuk laporan pada baris 1
+ $event->sheet->mergeCells('A1:D1');
+ $event->sheet->setCellValue('A1', 'LAPORAN PETI BESI');
+ $event->sheet->getStyle('A1')->getFont()->setSize(14)->setBold(true);
+ $event->sheet->getStyle('A1')->getAlignment()->setHorizontal('center');
+
+ // 2. Jumlah keseluruhan di bawah data
+ $lastRow = count($this->petibesiData) + 3; // +3 sebab ada tajuk + heading
+
+ $event->sheet->setCellValue("A{$lastRow}", 'Jumlah Keseluruhan');
+ $event->sheet->mergeCells("A{$lastRow}:C{$lastRow}");
+ $event->sheet->setCellValue("D{$lastRow}", number_format($this->total, 2));
+ $event->sheet->getStyle("A{$lastRow}:D{$lastRow}")->getFont()->setBold(true);
+ },
+ ];
+ }
+
+}
diff --git a/app/Http/Controllers/Reports/PetibesiController.php b/app/Http/Controllers/Reports/PetibesiController.php
new file mode 100644
index 0000000..e3954d5
--- /dev/null
+++ b/app/Http/Controllers/Reports/PetibesiController.php
@@ -0,0 +1,84 @@
+hostname = config('api.url');
+ // dd($request->hostname );
+ $kod_cawangan = $request->kod_cawangan;
+ $action = $request->input('action', 'search');
+ // dd($action);
+
+ $getReportDate = function ($date_string) use ($current) {
+ if ($date_string == null) {
+ return $current->toDateString();
+ }
+
+ return $date_string;
+ };
+
+ $request->hostname = config('api.url');
+
+ $petibesi = Http::get($request->hostname . '/api/reports/petibesi', [
+ 'endDate' => $getReportDate($request->endDate),
+ ])->json();
+
+ $endDate = $getReportDate($request->endDate);
+
+ if ($action === 'excel') {
+ $file_title = sprintf("LaporanPetibesiCawangan.xlsx", $kod_cawangan, $request->endDate);
+ return Excel::download(new PetibesiAllExportExcel($petibesi), $file_title);
+ }
+
+ $petibesi = $petibesi ?? [];
+
+ return view('reports.petibesi.index', compact('petibesi', 'endDate'));
+ }
+
+ public function show(Request $request)
+ {
+ $current = Carbon::now();
+ $action = $request->input('action', 'search');
+
+ $getReportDate = function ($date_string) use ($current) {
+ return $date_string ? $date_string : $current->toDateString();
+ };
+
+ $hostname = config('api.url');
+
+ $response = Http::get("$hostname/api/reports/petibesi", [
+ 'endDate' => $getReportDate($request->endDate),
+ ]);
+
+ $petibesi = $response->json() ?? []; // Ensure it's an array
+
+ // Debugging: Check the response before using it
+ if (empty($petibesi)) {
+ return back()->with('error', 'Failed to fetch data from API.');
+ }
+
+ $endDate = $getReportDate($request->endDate);
+
+ if ($action === 'excel') {
+ // Ensure $kod_cawangan is defined (Modify as per your data structure)
+ $kod_cawangan = $request->input('kod_cawangan', 'DEFAULT');
+
+ $file_title = sprintf("LaporanPetibesi(%s).xlsx", $kod_cawangan, $endDate);
+ return Excel::download(new PetibesiAllExportExcel($petibesi), $file_title);
+ }
+ return view('reports.petibesi.index', compact('petibesi', 'endDate'));
+ }
+}
diff --git a/resources/views/indexOverallReport.blade.php b/resources/views/indexOverallReport.blade.php
index 206de5e..a387d62 100644
--- a/resources/views/indexOverallReport.blade.php
+++ b/resources/views/indexOverallReport.blade.php
@@ -62,6 +62,12 @@
Outstanding
+
diff --git a/resources/views/layouts/sidebar.blade.php b/resources/views/layouts/sidebar.blade.php
index 4fc416e..68c0203 100644
--- a/resources/views/layouts/sidebar.blade.php
+++ b/resources/views/layouts/sidebar.blade.php
@@ -317,6 +317,17 @@
+
+
+
+
+
Laporan Keseluruhan
+
+
+
+
{{--
diff --git a/resources/views/reports/petibesi/index.blade.php b/resources/views/reports/petibesi/index.blade.php
new file mode 100644
index 0000000..92c51ef
--- /dev/null
+++ b/resources/views/reports/petibesi/index.blade.php
@@ -0,0 +1,99 @@
+@extends('layouts.app')
+
+@section('content')
+
+
+
+
+
+
+
+
+
+
+
+
+
+ | No |
+ Kod Cawangan |
+ Cawangan |
+ Nilai (RM) |
+
+
+
+ @php
+ $totalbakieod = 0; // LAMA
+
+ $totalAllbakieod = 0; // SEMUA
+ @endphp
+
+ @forelse ($petibesi as $outs)
+ @php
+ $totalbakieod += $outs['bakieod'];
+
+ $totalAllbakieod += $outs['bakieod'];
+ @endphp
+
+ | {{ $loop->iteration }} |
+ {{ $outs['kodcaw'] }} |
+ {{ $outs['details_caw'] }} |
+ {{ number_format($outs['bakieod'],2) }} |
+
+ @empty
+
+ | Data not available |
+
+ @endforelse
+
+ | Jumlah Keseluruhan |
+ {{ number_format($totalAllbakieod ,2)}} |
+
+
+
+
+
+
+ @include('layouts.footer')
+
+@endsection
+
+
diff --git a/routes/reports.php b/routes/reports.php
index fc3093b..64755ae 100644
--- a/routes/reports.php
+++ b/routes/reports.php
@@ -8,6 +8,7 @@ use App\Http\Controllers\Reports\StokAuditController;
use App\Http\Controllers\Reports\LelonganController;
use App\Http\Controllers\Reports\AgingController;
use App\Http\Controllers\Reports\OutstandingController;
+use App\Http\Controllers\Reports\PetibesiController;
use Illuminate\Support\Facades\Route;
Route::middleware(['roleChecker:admin,akaun,operasi,kpo, null'])->group(function () {
@@ -29,4 +30,5 @@ Route::middleware(['roleChecker:admin,akaun,operasi,kpo, null'])->group(function
Route::get('aging/view', [AgingController::class, 'index'])->name('reports.aging.index');
Route::get('laporan-aging/view', [AgingController::class, 'show'])->name('reports.aging.show');
Route::get('outstanding/view', [OutstandingController::class, 'index'])->name('reports.outstanding.index');
+ Route::get('petibesi/view', [PetibesiController::class, 'index'])->name('reports.petibesi.index');
});