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

View File

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