menambahkan style swall alert pada step 3 & menambahkan kolom jenis menu dan ruangan pada tarikan excel verifikasi makanan

This commit is contained in:
JokoPrasetio 2025-10-14 16:04:46 +07:00
parent 9a1d59f608
commit f94a689c18
2 changed files with 55 additions and 29 deletions

View File

@ -398,18 +398,18 @@ class PesananController extends Controller
$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue('A1', "Menu Pesanan dari {$startDateFormatted} sampai {$endDateFormatted}");
$sheet->mergeCells('A1:L1');
$sheet->mergeCells('A1:O1');
$sheet->getStyle('A1')->getFont()->setBold(true)->setSize(14);
$sheet->getStyle('A1')->getAlignment()->setHorizontal('center');
$sheet->setCellValue('A2', "Waktu Cetak: {$waktu_cetak}");
$sheet->mergeCells('A2:L2');
$sheet->mergeCells('A2:O2');
$sheet->getStyle('A2')->getAlignment()->setHorizontal('center');
// Header tabel
$headers = ["No", "Nomor Order", "Nama Pemesan", "Jenis Customer", "Status Pesanan", "Menu Pesanan", "Karbohidrat", "Total Kalori (kal)", "Jumlah", "Tanggal Antar", "Waktu Makan / Jam Layanan", "Catatan"];
$headers = ["No", "Nomor Order", "Nama Pemesan", "Jenis Customer", "Ruangan", "Status Pesanan", "Jenis Menu", "Menu Pesanan", "Karbohidrat", "Total Kalori (kal)", "Jumlah", "Tanggal Antar", "Waktu Makan / Jam Layanan", "Harga Total", "Catatan"];
$sheet->fromArray($headers, null, 'A4');
$sheet->getStyle('A4:L4')->applyFromArray([
$sheet->getStyle('A4:O4')->applyFromArray([
'font' => ['bold' => true],
'alignment' => ['horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER],
'borders' => [
@ -418,37 +418,57 @@ class PesananController extends Controller
]
]
]);
$sheet->getStyle('A4:L4')->getFont()->setBold(true);
$sheet->getStyle('A4:L4')->getAlignment()->setHorizontal('center');
$sheet->getStyle('A4:L4')->getBorders()->getAllBorders()->setBorderStyle(\PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN);
$sheet->getStyle('A4:O4')->getFont()->setBold(true);
$sheet->getStyle('A4:O4')->getAlignment()->setHorizontal('center');
$sheet->getStyle('A4:O4')->getBorders()->getAllBorders()->setBorderStyle(\PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN);
// Isi data
$row = 5;
$totalPendapatan = 0;
foreach ($orderDetail as $index => $item) {
$sheet->setCellValue("A{$row}", $index + 1);
$sheet->setCellValue("B{$row}", $item?->order?->no_order);
$sheet->setCellValue("C{$row}", $item?->order?->nama_pemesan);
$sheet->setCellValue("D{$row}", $item?->order?->jenis_customer === "MCU" ? $item?->order?->nama_institusi . '- MCU' : $item?->order?->jenis_customer);
$sheet->setCellValue("E{$row}", $item?->status_order ?? "-");
$sheet->setCellValue("F{$row}", $item?->menu?->nama_menu ?? $item?->masterMcu?->nama_mcu);
if($item->order?->jenis_customer === "Keluarga Pasien / Penunggu Pasien"){
$sheet->setCellValue("E{$row}", $item?->order?->kelas_perawatan . '/' . $item?->order?->no_kamar_perawatan . '/' . $item?->order?->ruang_perawatan);
}else if($item->order?->jenis_customer === "Karyawan RSAB Harapan Kita"){
$sheet->setCellValue("E{$row}", $item?->order?->bagian_instalasi ?? '-');
}else{
$sheet->setCellValue("E{$row}", '-');
}
$sheet->setCellValue("F{$row}", $item?->status_order ?? "-");
if($item->menu?->masterMcu){
$sheet->setCellValue("G{$row}", 'Menu MCU');
}else{
$sheet->setCellValue("G{$row}", $item?->menu?->apakah_someday ? "Menu Someday" : "Menu Normal");
}
$sheet->setCellValue("H{$row}", $item?->menu?->nama_menu ?? $item?->masterMcu?->nama_mcu);
$karbohidratNama = $item?->karbohidrat?->nama_karbohidrat ?? '-';
$karbohidratNilai = $item?->karbohidrat?->nilai_kalori ?? '-';
$sheet->setCellValue("G{$row}", $karbohidratNama . ($karbohidratNilai !== '-' ? " ({$karbohidratNilai} kal)" : ''));
$sheet->setCellValue("H{$row}", $item?->total_kalori ?? '-');
$sheet->setCellValue("I{$row}", $item?->jumlah ?? '-');
$sheet->setCellValue("J{$row}", $item?->tgl_antar ? Carbon::parse($item->tgl_antar)->translatedFormat('d F Y') : "Tanggal Antar");
$sheet->setCellValue("K{$row}", $item?->type ?? $item->jam_layanan);
$sheet->setCellValue("L{$row}", $item?->catatan ?? "-");
$sheet->setCellValue("I{$row}", $karbohidratNama . ($karbohidratNilai !== '-' ? " ({$karbohidratNilai} kal)" : ''));
$sheet->setCellValue("J{$row}", $item?->total_kalori ?? '-');
$sheet->setCellValue("K{$row}", $item?->jumlah ?? '-');
$sheet->setCellValue("L{$row}", $item?->tgl_antar ? Carbon::parse($item->tgl_antar)->translatedFormat('d F Y') : "Tanggal Antar");
$sheet->setCellValue("M{$row}", $item?->type ?? $item->jam_layanan);
$sheet->setCellValue("N{$row}", $item?->order?->total_harga);
$sheet->setCellValue("O{$row}", $item?->catatan ?? "-");
// Border tiap baris
$sheet->getStyle("A{$row}:L{$row}")->getBorders()->getAllBorders()
$sheet->getStyle("A{$row}:O{$row}")->getBorders()->getAllBorders()
->setBorderStyle(\PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN);
$totalPendapatan += $item?->order?->total_harga;
$row++;
}
$sheet->getStyle("L{$row}:N{$row}")->getFont()->setBold(true);
$sheet->getStyle("L{$row}:N{$row}")->getBorders()->getAllBorders()->setBorderStyle(\PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN);
$sheet->setCellValue("L{$row}", 'Total Pendapatan');
$sheet->setCellValue("N{$row}", $totalPendapatan);
// Auto size kolom
foreach(range('A', 'L') as $col){
foreach(range('A', 'O') as $col){
$sheet->getColumnDimension($col)->setAutoSize(true);
}
$lastRow = $row - 1;
$sheet->setAutoFilter("A4:L{$lastRow}");
$sheet->setAutoFilter("A4:O{$lastRow}");
// Download file
$fileName = 'menu-pesanan' . now()->format('Ymd-His') . '.xlsx';
$writer = new Xlsx($spreadsheet);

View File

@ -69,16 +69,21 @@ document.addEventListener('DOMContentLoaded', () => {
return
}
let cart = JSON.parse(sessionStorage.getItem('cart') || '[]');
for (const item of cart) {
for (const p of item.pesanan) {
const result = validateTanggalPemesanan(item, p.tgl);
// for (const item of cart) {
// for (const p of item.pesanan) {
// const result = validateTanggalPemesanan(item, p.tgl);
if (!result.valid) {
alert(result.message);
return; // hentikan di sini, tidak lanjut
}
}
}
// if (!result.valid) {
// Swal.fire({
// title: 'Perhatian!',
// text: `${result.message}`,
// icon: 'warning',
// confirmButtonText: 'Oke'
// })
// return; // hentikan di sini, tidak lanjut
// }
// }
// }
if (!sessionStorage.getItem('order_id')) {
@ -96,7 +101,6 @@ document.addEventListener('DOMContentLoaded', () => {
renderCartSummary()
}
} catch (error) {
console.error(error);
Swal.fire('Error', 'Terjadi kesalahan, silakan coba lagi.', 'error');
}finally{
btnLoad.disabled = false;
@ -945,10 +949,12 @@ function validateTanggalPemesanan(item, tglDipilih) {
const batasWaktu = 13 * 60;
const tglSekarang = now.toISOString().split("T")[0];
// console.log(totalMenit, batasWaktu);
if (item.apakah_someday && totalMenit >= batasWaktu && tglDipilih === tglSekarang) {
return {
valid: false,
message: `Maaf, Anda tidak bisa memilih hari ini (${tglDipilih}) untuk menu sameday karena sudah lewat jam 13:00`
message: `Maaf, Anda tidak bisa memilih ini (${tglDipilih}) untuk menu sameday karena sudah lewat dari batas jam pemesanan`
};
}