diff --git a/app/Exports/LaporanKeseluruhan/BayaranOnlineExport.php b/app/Exports/LaporanKeseluruhan/BayaranOnlineExport.php
new file mode 100644
index 0000000..7f804c5
--- /dev/null
+++ b/app/Exports/LaporanKeseluruhan/BayaranOnlineExport.php
@@ -0,0 +1,118 @@
+data = $data;
+ }
+
+ public function headings(): array
+ {
+ return [
+ 'Bil',
+ 'Nama Pelanggan',
+ 'No. KP',
+ 'Total SAG',
+ 'Cawangan',
+ 'No. Rujukan',
+ 'Bayaran',
+ 'Jumlah Bayaran(RM)',
+ 'Tarikh',
+ 'Masa',
+ 'Status',
+ ];
+ }
+
+ public function array(): array
+ {
+ $transactions = $this->data['transactions'];
+
+ foreach ($transactions as $index => $transaction) {
+ $data[] = array_merge(
+ ['nos' => $index + 1],
+ $transaction,
+ );
+ }
+
+ foreach($data as $customer){
+ foreach($customer['payments'] as $paymentIndex => $payment ){
+ foreach($payment['paymentDetails'] ?? [] as $paymentDetailIndex => $paymentDetail){
+ $row[] = [
+ 'bil' => $paymentIndex == 0 && $paymentDetailIndex == 0 ? $customer['nos'] : '',
+ 'customer_name' => $paymentIndex == 0 && $paymentDetailIndex == 0 ? $customer['customer_name'] : '',
+ 'nokp' => $paymentIndex == 0 && $paymentDetailIndex == 0 ? $customer['nokp'] : '',
+ 'paymentNos' => $paymentDetailIndex == 0 ? $payment['paymentNos'] : '',
+ 'cawangan' => $paymentDetailIndex == 0 ? $paymentIndex : '',
+ 'norujukan' => $paymentDetail['norujukan'] ?? '',
+ 'total_payment' => $paymentDetail['total_payment'] ?? '',
+ 'sum_total_payment' => $paymentDetailIndex == 0 ? $payment['paymentSum'] : '',
+ 'tarikh' => $paymentDetail['tarikh'] ?? '',
+ 'masa' => $paymentDetail['masa'] ?? '',
+ 'status' => $paymentDetail['status'] ?? '',
+ ];
+ }
+ }
+ }
+
+ $total_row = ['Total : ', '', '', $this->data['sumPaymentNos'], '', '', $this->data['sumTotalPayments'], $this->data['sumTotalPayments'], '', '', ''];
+ array_push($row, $total_row);
+
+ return $row;
+ }
+
+ public function startCell(): string
+ {
+ return 'B2';
+ }
+
+
+ public function columnFormats(): array
+ {
+ return [
+ 'C' => '#',
+ ];
+ }
+
+ public function styles(Worksheet $sheet)
+ {
+ return [
+ 'G:H' => [
+ 'alignment' => [
+ 'horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_RIGHT,
+ ],
+ ],
+ ];
+ }
+
+ public function bindValue(Cell $cell, $value)
+ {
+ if (is_numeric($value)) {
+ $cell->setValueExplicit($value, DataType::TYPE_NUMERIC);
+
+ return true;
+ }
+
+ // else return default behavior
+ return parent::bindValue($cell, $value);
+ }
+
+}
diff --git a/app/Http/Controllers/Reports/BayaranOnlineController.php b/app/Http/Controllers/Reports/BayaranOnlineController.php
new file mode 100644
index 0000000..5c41048
--- /dev/null
+++ b/app/Http/Controllers/Reports/BayaranOnlineController.php
@@ -0,0 +1,48 @@
+filled('startDate') ?
+ Carbon::parse($request->startDate)->startOfDay() :
+ Carbon::now()->startOfDay();
+
+ $endDate = $request->filled('endDate') ?
+ Carbon::parse($request->endDate)->startOfDay() :
+ Carbon::now()->startOfDay();
+
+ $responseTransactionSortedByTotalCawanganPayment = Http::get(config('api.url') . '/api/reports/bayaran-online', [
+ 'startDate' => $startDate->toDateString(),
+ 'endDate' => $endDate->toDateString(),
+ 'orderBy' => 'totalCawanganPayment',
+ ]);
+
+ $responseTransactionSortedByTotalReferenceNo = Http::get(config('api.url') . '/api/reports/bayaran-online', [
+ 'startDate' => $startDate->toDateString(),
+ 'endDate' => $endDate->toDateString(),
+ 'orderBy' => 'totalReferenceNo',
+ ]);
+
+
+ if($responseTransactionSortedByTotalCawanganPayment->failed() OR $responseTransactionSortedByTotalReferenceNo->failed()){
+ throw new \Exception("Something wrong with the API", 1);
+ }
+
+ $data = [
+ 'sortedByTotalCawanganPayment' => $responseTransactionSortedByTotalCawanganPayment->json(),
+ 'sortedByTotalReferenceNo' => $responseTransactionSortedByTotalReferenceNo->json(),
+ ];
+
+
+ return view('reports.bayaran-online.index', compact('data', 'startDate', 'endDate'));
+ }
+
+}
diff --git a/app/Http/Controllers/Reports/BayaranOnlineDetailController.php b/app/Http/Controllers/Reports/BayaranOnlineDetailController.php
new file mode 100644
index 0000000..cbfb797
--- /dev/null
+++ b/app/Http/Controllers/Reports/BayaranOnlineDetailController.php
@@ -0,0 +1,49 @@
+filled('startDate') ?
+ Carbon::parse($request->startDate)->startOfDay() :
+ Carbon::now()->startOfDay();
+
+ $endDate = $request->filled('endDate') ?
+ Carbon::parse($request->endDate)->startOfDay() :
+ Carbon::now()->endOfDay();
+
+ $responseTransactions = Http::get(config('api.url') . '/api/reports/bayaran-online-detail', [
+ 'startDate' => $startDate->toDateString(),
+ 'endDate' => $endDate->toDateString(),
+ 'status' => $request->status ?? 'PAID',
+ 'kodcaw' => $request->kodcaw ?? '',
+ ]);
+
+
+ if($responseTransactions->failed()){
+ throw new \Exception("Something wrong with the API", 1);
+ }
+
+
+ $data = $responseTransactions->json();
+
+ $title = 'laporan_bayaran_online';
+ $cawangan = $request->details_caw ?? 'Semua Cawangan';
+ $tarikh_carian = $startDate->toFormattedDateString() . ' hingga ' . $endDate->toFormattedDateString();
+ $tarikh_cetak = 'cetak pada ' . Carbon::now()->toDayDateTimeString();
+
+ $title = '--'.$title . '--' . $cawangan . '--' . $tarikh_carian . '--' . $tarikh_cetak . '--' . '.xlsx';
+
+ return Excel::download(new BayaranOnlineExport($data), $title);
+ }
+
+}
diff --git a/resources/views/indexOverallReport.blade.php b/resources/views/indexOverallReport.blade.php
index 8b18225..2d9671f 100644
--- a/resources/views/indexOverallReport.blade.php
+++ b/resources/views/indexOverallReport.blade.php
@@ -1,71 +1,77 @@
@extends('layouts.app')
@section('content')
-
-
+
+
-
+
-
+
-
+
+ class="px-6 py-4 mb-2 ml-2 bg-white border border-solid rounded-lg shadow cursor-pointer hover:bg-yellow-300 hover:transition-all">
- Pembiayaan
+ Pembiayaan
+ class="px-6 py-4 mb-2 ml-2 bg-white border border-solid rounded-lg shadow cursor-pointer hover:bg-yellow-300 hover:transition-all">
- Stok Audit
+ Stok Audit
+ class="px-6 py-4 mb-2 ml-2 bg-white border border-solid rounded-lg shadow cursor-pointer hover:bg-yellow-300 hover:transition-all">
- Laporan Aging
+ Laporan Aging
+ class="px-6 py-4 mb-2 ml-2 bg-white border border-solid rounded-lg shadow cursor-pointer hover:bg-yellow-300 hover:transition-all">
- Outstanding
+ Outstanding
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ @if($data['sortedByTotalCawanganPayment']['nosPayments'] != 0)
+
+ Export
+
+ @else
+ Tiada
+ @endif
+
+
+
+ |
+
+
+
+
+
+
+ @if($data['sortedByTotalCawanganPayment']['nosPayments'] != 0)
+
+ Export
+
+ @else
+ Tiada
+ @endif
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ @forelse($data['sortedByTotalCawanganPayment']['transactions'] as $transaction)
+
+
+
+
+
+
+
+ @empty
+
+
+
+
+
+
+ Tiada transaksi pada tarikh yang dipilih
+
+
+
+ |
+
+
+ @endforelse
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ @forelse($data['sortedByTotalReferenceNo']['transactions'] as $transaction)
+
+
+
+
+
+
+
+ @empty
+
+
+
+
+
+
+ Tiada transaksi pada tarikh yang dipilih
+
+
+
+ |
+
+
+ @endforelse
+
+
+
+
+
+
+
+ @include('layouts.footer')
+
+@endsection
+
+
diff --git a/routes/reports.php b/routes/reports.php
index 36e2793..2c59884 100644
--- a/routes/reports.php
+++ b/routes/reports.php
@@ -7,6 +7,8 @@ use App\Http\Controllers\Reports\RingkasanHarianController;
use App\Http\Controllers\Reports\StokAuditController;
use App\Http\Controllers\Reports\LelonganController;
use App\Http\Controllers\Reports\AgingController;
+use App\Http\Controllers\Reports\BayaranOnlineController;
+use App\Http\Controllers\Reports\BayaranOnlineDetailController;
use App\Http\Controllers\Reports\OutstandingController;
use App\Http\Controllers\Reports\PetibesiController;
use App\Http\Controllers\Reports\AnalisaController;
@@ -38,5 +40,6 @@ Route::middleware(['roleChecker:admin,akaun,operasi,kpo, null'])->group(function
Route::get('bakilelongbelumtuntut/view', [BakiLelongController::class, 'index'])->name('reports.bakilelongbelumtuntut.index');
Route::get('bakilelongbelumtuntut/show', [BakiLelongController::class, 'show'])->name('reports.bakilelongbelumtuntut.show');
Route::get('bakilelongbelumtuntut/{kod_cawangan}', [BakiLelongController::class, 'downloadBakiLelongBelumTuntutCawanganExcel'])->name('reports.bakilelongbelumtuntut.cawangan.excel');
-
+ Route::get('bayaran-online/view', BayaranOnlineController::class)->name('reports.bayaran-online.index');
+ Route::get('bayaran-online-details/view', BayaranOnlineDetailController::class)->name('reports.bayaran-online-detail.index');
});