From f94a689c1891233c33cedbe2fc52adafa0b758ec Mon Sep 17 00:00:00 2001 From: JokoPrasetio Date: Tue, 14 Oct 2025 16:04:46 +0700 Subject: [PATCH] menambahkan style swall alert pada step 3 & menambahkan kolom jenis menu dan ruangan pada tarikan excel verifikasi makanan --- app/Http/Controllers/PesananController.php | 56 +++++++++++++++------- public/js/checkout/index.js | 28 ++++++----- 2 files changed, 55 insertions(+), 29 deletions(-) diff --git a/app/Http/Controllers/PesananController.php b/app/Http/Controllers/PesananController.php index a180227..d457a1c 100644 --- a/app/Http/Controllers/PesananController.php +++ b/app/Http/Controllers/PesananController.php @@ -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); diff --git a/public/js/checkout/index.js b/public/js/checkout/index.js index 7fce52a..e71d555 100644 --- a/public/js/checkout/index.js +++ b/public/js/checkout/index.js @@ -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` }; }