75 lines
2.1 KiB
PHP
75 lines
2.1 KiB
PHP
<?php
|
|
|
|
namespace App\Exports;
|
|
|
|
use Illuminate\Support\Collection;
|
|
use Maatwebsite\Excel\Concerns\FromCollection;
|
|
use Maatwebsite\Excel\Concerns\WithHeadings;
|
|
use Maatwebsite\Excel\Concerns\WithStyles;
|
|
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
|
|
|
|
class RingkasanExport implements FromCollection, WithHeadings, WithStyles
|
|
{
|
|
private $data;
|
|
|
|
public function __construct(iterable $data)
|
|
{
|
|
$this->data = $data;
|
|
}
|
|
|
|
public function collection(): Collection
|
|
{
|
|
$rows = collect();
|
|
|
|
foreach ($this->data as $item) {
|
|
$tanggal = $item['tanggal'] ?? '-';
|
|
$totalItem = $item['total_item'] ?? 0;
|
|
$totalBerat = $item['total_berat'] ?? '0 g';
|
|
$totalPendapatan = $item['total_pendapatan'] ?? 'Rp 0';
|
|
|
|
// Tambahkan detail sales per baris
|
|
foreach ($item['sales'] ?? [] as $sale) {
|
|
$rows->push([
|
|
'Tanggal' => $tanggal,
|
|
'Nama Sales' => $sale['nama'] ?? 'Sales Tidak Dikenal',
|
|
'Item Terjual' => $sale['item_terjual'] ?? 0,
|
|
'Berat' => $sale['berat'] ?? '-',
|
|
'Pendapatan' => $sale['pendapatan'] ?? '-',
|
|
]);
|
|
}
|
|
|
|
// Tambahkan baris total
|
|
$rows->push([
|
|
'Tanggal' => $tanggal,
|
|
'Nama Sales' => 'TOTAL',
|
|
'Item Terjual' => $totalItem,
|
|
'Berat' => $totalBerat,
|
|
'Pendapatan' => $totalPendapatan,
|
|
]);
|
|
|
|
// Tambahkan baris kosong biar rapi
|
|
$rows->push(['Tanggal' => '', 'Nama Sales' => '', 'Item Terjual' => '', 'Berat' => '', 'Pendapatan' => '']);
|
|
}
|
|
|
|
return $rows;
|
|
}
|
|
|
|
public function headings(): array
|
|
{
|
|
return [
|
|
'Tanggal',
|
|
'Nama Sales',
|
|
'Item Terjual',
|
|
'Berat',
|
|
'Pendapatan',
|
|
];
|
|
}
|
|
|
|
public function styles(Worksheet $sheet)
|
|
{
|
|
return [
|
|
1 => ['font' => ['bold' => true]], // Header bold
|
|
];
|
|
}
|
|
}
|