Kasir/app/Exports/RingkasanExport.php
2025-09-12 11:38:15 +07:00

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
];
}
}