data = $data; } public function headings(): array { return [ 'Cawangan', 'Bilangan Pembiayaan', 'Berat', 'Nilai Marhun', 'Pembiayaan (RM)', 'Baki Pembiayaan (RM)', 'Keuntungan (RM)', 'Caj Lelong (RM)', 'Harga Asas (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_hargaasas = 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_hargaasas'] ?? 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_hargaasas += (float) $data['sum_hargaasas']; $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_hargaasas, 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 (float) str_replace(',', '', $data[10] ?? 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); } }