This commit is contained in:
Dwi Swandhana
2026-02-23 17:46:27 +07:00
parent 6d23d9c97d
commit 354f869b13
@@ -8,6 +8,8 @@ use App\XFiles;
use App\SIMBHPJenis;
use App\SIMBHPReport;
use App\User;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use Validator;
use Session;
@@ -161,33 +163,44 @@ class GudangController extends Controller
}
$rows = $query->orderBy('id', 'DESC')->get();
$filename = 'laporan-gudang-bln-'.$bulan.'_thn-'.$tahun.'.csv';
$headers = [
'Content-Type' => 'text/csv; charset=UTF-8',
'Content-Disposition' => 'attachment; filename="'.$filename.'"',
];
$filename = 'laporan-gudang-bln-'.$bulan.'_thn-'.$tahun.'.xlsx';
$callback = function () use ($rows) {
$file = fopen('php://output', 'w');
fputcsv($file, ['Tanggal', 'Bulan', 'Tahun', 'Jenis', 'Deskripsi', 'Pemasukan', 'Pengeluaran', 'Satuan Transaksi', 'Masa Expired', 'Keterangan']);
return response()->streamDownload(function () use ($rows) {
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$sheet->setTitle('Laporan Gudang');
$headers = ['Tanggal', 'Bulan', 'Tahun', 'Jenis', 'Deskripsi', 'Pemasukan', 'Pengeluaran', 'Satuan Transaksi', 'Masa Expired', 'Keterangan'];
$sheet->fromArray($headers, null, 'A1');
$rowNumber = 2;
foreach ($rows as $row) {
fputcsv($file, [
$row->tanggal,
$row->bulan,
$row->tahun,
$row->jenis,
$row->deskripsi,
$sheet->fromArray([
(int) ($row->tanggal ?? 0),
(int) ($row->bulan ?? 0),
(int) ($row->tahun ?? 0),
$row->jenis ?: '-',
$row->deskripsi ?: '-',
(int) ($row->pemasukan ?? 0),
(int) ($row->pengeluaran ?? 0),
$row->satuan_transaksi ?: '-',
$row->masa_expired ?: '-',
$row->keterangan ?: '-',
]);
], null, 'A'.$rowNumber);
$rowNumber++;
}
fclose($file);
};
return response()->stream($callback, 200, $headers);
foreach (range('A', 'J') as $col) {
$sheet->getColumnDimension($col)->setAutoSize(true);
}
$writer = new Xlsx($spreadsheet);
$writer->save('php://output');
$spreadsheet->disconnectWorksheets();
unset($spreadsheet);
}, $filename, [
'Content-Type' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
]);
}
public function jsonReportbhpPaginated(Request $request) {