185 lines
5.8 KiB
PHP
185 lines
5.8 KiB
PHP
<?php
|
|
|
|
namespace App\Exports\LaporanKeseluruhan;
|
|
|
|
use Maatwebsite\Excel\Concerns\FromArray;
|
|
use Maatwebsite\Excel\Concerns\ShouldAutoSize;
|
|
use Maatwebsite\Excel\Concerns\WithCustomValueBinder;
|
|
use Maatwebsite\Excel\Concerns\WithHeadings;
|
|
use Maatwebsite\Excel\Concerns\WithMapping;
|
|
use Maatwebsite\Excel\Concerns\WithStrictNullComparison;
|
|
use PhpOffice\PhpSpreadsheet\Cell\Cell;
|
|
use PhpOffice\PhpSpreadsheet\Cell\DataType;
|
|
use PhpOffice\PhpSpreadsheet\Cell\DefaultValueBinder;
|
|
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
|
|
use Maatwebsite\Excel\Concerns\WithColumnFormatting;
|
|
|
|
class LelonganAllExportExcel extends DefaultValueBinder implements FromArray, WithStrictNullComparison, WithMapping, WithHeadings, ShouldAutoSize, WithCustomValueBinder, WithColumnFormatting
|
|
{
|
|
public $data;
|
|
|
|
public function __construct($data)
|
|
{
|
|
$this->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);
|
|
}
|
|
|
|
|
|
}
|