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"> -

Penyelesaian Pembiayaan

+

Penyelesaian 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"> -

Ansuran Pembiayaan

+

Ansuran 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"> -

Ringkasan Harian

+

Ringkasan Harian

+ 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 Lelongan

+

Laporan Lelongan

+ 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

+ 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"> -

Peti Besi Cawangan

+

Peti Besi Cawangan

+
+
+ +
+
+
+ + + +
+
+
+
+ + + + Bayaran Online +
+
+ +
+
+
+
+ + +
+
+ + +
+ + +
+
+
+
+ +
+
+
+ +
+ + + + + + + + + + + + + + + +
+ +
+
+

+ @if($data['sortedByTotalCawanganPayment']['nosPayments'] != 0) + + Export + + @else + Tiada + @endif +

+
+
+ +
+
+ +
+
+

+ @if($data['sortedByTotalCawanganPayment']['nosPayments'] != 0) + + Export + + @else + Tiada + @endif +

+
+
+ +
+ +
+
+
+ +
+ +
+ + + + + + + + + + @forelse($data['sortedByTotalCawanganPayment']['transactions'] as $transaction) + + + + + +
+ +
+
+

+ + Export + +

+
+
+ +
+ + @empty + +
+ +
+
+

+ Tiada transaksi pada tarikh yang dipilih +

+
+
+ +
+ + @endforelse +
+
+
+ +
+ + + + + + + + + + @forelse($data['sortedByTotalReferenceNo']['transactions'] as $transaction) + + + + + +
+ +
+
+

+ + Export + +

+
+
+ +
+ + @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'); });