diff --git a/app/Exports/LaporanKeseluruhan/LelonganAllExportExcel.php b/app/Exports/LaporanKeseluruhan/LelonganAllExportExcel.php new file mode 100644 index 0000000..667bb35 --- /dev/null +++ b/app/Exports/LaporanKeseluruhan/LelonganAllExportExcel.php @@ -0,0 +1,178 @@ +data = $data; + } + + public function headings(): array + { + return [ + 'Cawangan', + 'Bilangan Pembiayaan', + 'Berat', + 'Nilai Marhun', + 'Pembiayaan (RM)', + 'Baki Pembiayaan (RM)', + 'Keuntungan (RM)', + 'Caj Lelong (RM)', + 'Harga Jual (RM)', + 'Baki (RM)', + ]; + } + + public function array(): array +{ + // dd($this->data); + if (empty($this->data)) { + return []; + } + + // Initialize an array to store formatted data + $formattedData = []; + + // Initialize totals + $total_lelongan = 0; + $sum_berat = 0; + $sum_nilai_marhun = 0; + $sum_bakipjm = 0; + $sum_pinjaman = 0; + $sum_bakiupah = 0; + $sum_cajlelong = 0; + $sum_hargajual = 0; + $sum_baki = 0; + + + // Process data + foreach ($this->data as $index => $data) { + // Make sure all expected keys exist before accessing them + $formattedData[] = [ + $data['details_caw'] ?? 'N/A', + $data['total_lelongan'] ?? 0, + number_format((float) ($data['sum_berat'] ?? 0), 2), + number_format((float) ($data['sum_nilai_marhun'] ?? 0), 2), + number_format((float) ($data['sum_pinjaman'] ?? 0), 2), + number_format((float) ($data['sum_bakipjm'] ?? 0), 2), + number_format((float) ($data['sum_bakiupah'] ?? 0), 2), + number_format((float) ($data['sum_cajlelong'] ?? 0), 2), + number_format((float) ($data['sum_hargajual'] ?? 0), 2), + number_format((float) ($data['sum_baki'] ?? 0), 2), + + + ]; + + // Update totals + $total_lelongan += (int) $data['total_lelongan']; + $sum_berat += (float) $data['sum_berat']; + $sum_nilai_marhun += (float) $data['sum_nilai_marhun']; + $sum_pinjaman += (float) $data['sum_pinjaman']; + $sum_bakipjm += (float) $data['sum_bakipjm']; + $sum_bakiupah += (float) $data['sum_bakiupah']; + $sum_cajlelong += (float) $data['sum_cajlelong']; + $sum_hargajual += (float) $data['sum_hargajual']; + $sum_baki += (float) $data['sum_baki']; + + } + + // Append total row + $formattedData[] = [ + 'Jumlah Keseluruhan', + $total_lelongan, + number_format($sum_berat, 2), + number_format($sum_nilai_marhun, 2), + number_format($sum_pinjaman, 2), + number_format($sum_bakipjm, 2), + number_format($sum_bakiupah, 2), + number_format($sum_cajlelong, 2), + number_format($sum_hargajual, 2), + number_format($sum_baki, 2), + + ]; + + return $formattedData; +} + + public function startCell(): string + { + return 'B2'; + } + + public function map($data): array + { + return [ + $data[0] ?? 'N/A', // Cawangan + (int) ($data[1] ?? 0), // Bilangan Pembiayaan + (float) str_replace(',', '', $data[2] ?? 0), // Berat (remove commas) + (float) str_replace(',', '', $data[3] ?? 0), // Nilai Marhun + (float) str_replace(',', '', $data[4] ?? 0), // Baki Pembiayaan + (float) str_replace(',', '', $data[5] ?? 0), // Pembiayaan + (float) str_replace(',', '', $data[6] ?? 0), // Upah Belum Bayar + (float) str_replace(',', '', $data[7] ?? 0), // Total Untung 1% + (float) str_replace(',', '', $data[8] ?? 0), // Total Ujrah + (float) str_replace(',', '', $data[9] ?? 0), // Total Ujrah + ]; + } + + + + + public function columnWidths(): array + { + return [ + 'A' => 20.5, + 'B' => 42, + 'C' => 14.18, + 'D' => 14.18, + 'E' => 9.19, + 'F' => 27.5, + ]; + } + + public function columnFormats(): array + { + return [ + 'D' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1, + 'E' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1, + 'F' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1, + 'G' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1, + 'H' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1, + 'I' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1, + 'J' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1, + 'K' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1, + 'L' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1, + 'M' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1, + ]; + } + + +public function bindValue(Cell $cell, $value) +{ + if (is_numeric($value) && !is_string($value)) { + // Ensure value is treated as a number + $cell->setValueExplicit((float) $value, DataType::TYPE_NUMERIC); + return true; + } + + return parent::bindValue($cell, $value); +} + + +} diff --git a/app/Http/Controllers/Reports/LelonganController.php b/app/Http/Controllers/Reports/LelonganController.php index 5aca29f..3fe62f5 100644 --- a/app/Http/Controllers/Reports/LelonganController.php +++ b/app/Http/Controllers/Reports/LelonganController.php @@ -10,12 +10,16 @@ use Illuminate\Support\Facades\Http; use App\Exports\LelonganExport; use Maatwebsite\Excel\Facades\Excel; use Illuminate\Support\Facades\Auth; +use App\Exports\LaporanKeseluruhan\LelonganAllExportExcel; class LelonganController extends Controller { public function index(Request $request) { $current = new Carbon(); + $request->hostname = config('api.url'); + $kod_cawangan = $request->kod_cawangan; + $action = $request->input('action', 'search'); $getReportDate = function ($date_string) use ($current) { if ($date_string == null) { @@ -36,48 +40,49 @@ class LelonganController extends Controller $startDate = $getReportDate($request->startDate); $endDate = $getReportDate($request->endDate); + if ($action === 'excel') { + $file_title = sprintf("LaporanLelongan %s (%s - %s).xlsx", $kod_cawangan, $request->startDate, $request->endDate); + return Excel::download(new LelonganAllExportExcel($data), $file_title); + } + return view('reports.laporan-lelong.index', compact('lelongan', 'startDate', 'endDate')); } public function show(Request $request) - { - $validated = $request->validate( - ['monthYear' => 'required'], - ['monthYear.required' => 'Sila isi tarikh sebelum hantar', - ]); +{ + $current = Carbon::now(); + $action = $request->input('action', 'search'); - $current = Carbon::now(); - $tarikh_cetak = $current->toDateString(); - $tokens = explode('-', $validated['monthYear']); - $month = ltrim($tokens[0], '0'); - $year = $tokens[1]; + $getReportDate = function ($date_string) use ($current) { + return $date_string ? $date_string : $current->toDateString(); + }; - // Set the locale to Malaysian - App::setLocale('ms'); + $hostname = config('api.url'); - // Create a Carbon instance representing the date - $date = Carbon::createFromDate($year, $month, 1); // Set the day to 1st of the month + $response = Http::get("$hostname/api/reports/lelongan", [ + 'startDate' => $getReportDate($request->startDate), + 'endDate' => $getReportDate($request->endDate), + ]); - // Get the name of the month in Malaysian local - $monthName = $date->translatedFormat('F'); - - $request->hostname = config('api.url'); - - $stokAudit = Http::get($request->hostname . '/api/reports/stok-audit', [ - 'month' => $month, - 'year' => $year, - ])->json(); - - $tebus_date = $monthName . ' ' . $year; - $file_title = sprintf("Laporan-StokAudit %s (%s - %s).xlsx", 'Semua cawanangan', $monthName, $year); - - if ($request->generateType === 'pdf') { - return view('reports.stok-audit.show', compact('tebus_date', 'tarikh_cetak', 'stokAudit', 'month', 'year')); - } else { - return Excel::download(new StokAuditExport($stokAudit), $file_title); - } + $lelongan = $response->json() ?? []; // Ensure it's an array + // Debugging: Check the response before using it + if (empty($lelongan)) { + return back()->with('error', 'Failed to fetch data from API.'); } + + $startDate = $getReportDate($request->startDate); + $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("LaporanLelongan %s (%s - %s).xlsx", $kod_cawangan, $startDate, $endDate); + return Excel::download(new LelonganAllExportExcel($lelongan), $file_title); + } + return view('reports.laporan-lelong.index', compact('lelongan', 'startDate', 'endDate')); +} public function downloadLelonganCawanganExcel(Request $request) { $api_url = $request->hostname; diff --git a/resources/views/reports/laporan-lelong/index.blade.php b/resources/views/reports/laporan-lelong/index.blade.php index dfb8961..5502f62 100644 --- a/resources/views/reports/laporan-lelong/index.blade.php +++ b/resources/views/reports/laporan-lelong/index.blade.php @@ -17,7 +17,8 @@
-