add ruangan, jenis menu, total tagihan, jenis pembayaran

This commit is contained in:
JokoPrasetio 2025-10-10 16:33:45 +07:00
parent 4ab6c690b7
commit 9a1d59f608
2 changed files with 88 additions and 55 deletions

View File

@ -508,20 +508,19 @@ class PesananController extends Controller
$waktu_cetak = Carbon::now()->locale('id')->translatedFormat('d F Y');
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue('A1', "Laporan Pesanan dari {$startDateFormatted} sampai {$endDateFormatted}");
$sheet->mergeCells('A1:R1');
$sheet->mergeCells('A1:T1');
$sheet->getStyle('A1')->getFont()->setBold(true)->setSize(14);
$sheet->getStyle('A1')->getAlignment()->setHorizontal('center');
$sheet->setCellValue('A2', "Waktu Cetak: {$waktu_cetak}");
$sheet->mergeCells('A2:R2');
$sheet->mergeCells('A2:T2');
$sheet->getStyle('A2')->getAlignment()->setHorizontal('center');
// Header tabel
$headers = ["No", "Nomor Order", "Nama Pemesan", "Jenis Customer", "Status Pembayaran", "Jenis Kelamin", "NO.HP/WA", "Email" , "Cara Pembayaran", "Tanggal Pesan", "Harga Total", "Menu Pesanan", "Total Kalori", "Jumlah", "Status Pesanan", "Tanggal Antar", "Waktu Makan / Jam Layanan", "Catatan"];
$headers = ["No", "Nomor Order", "Nama Pemesan", "Jenis Customer", "Ruangan", "Status Pembayaran", "Jenis Kelamin", "NO.HP/WA", "Email" , "Jenis Pembayaran", "Tanggal Pesan", "Harga Total", "Jenis Menu", "Menu Pesanan", "Total Kalori", "Jumlah", "Status Pesanan", "Tanggal Antar", "Waktu Makan / Jam Layanan", "Catatan"];
$sheet->fromArray($headers, null, 'A4');
$sheet->getStyle('A4:R4')->applyFromArray([
$sheet->getStyle('A4:T4')->applyFromArray([
'font' => ['bold' => true],
'alignment' => ['horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER],
'borders' => [
@ -530,47 +529,64 @@ class PesananController extends Controller
]
]
]);
$sheet->getStyle('A4:R4')->getFont()->setBold(true);
$sheet->getStyle('A4:R4')->getAlignment()->setHorizontal('center');
$sheet->getStyle('A4:R4')->getBorders()->getAllBorders()->setBorderStyle(\PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN);
$sheet->getStyle('A4:T4')->getFont()->setBold(true);
$sheet->getStyle('A4:T4')->getAlignment()->setHorizontal('center');
$sheet->getStyle('A4:T4')->getBorders()->getAllBorders()->setBorderStyle(\PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN);
// Isi data
$totalPendapatan = 0;
$row = 5;
foreach ($order as $index => $item) {
foreach($item->orderDetail as $detail){
$sheet->setCellValue("A{$row}", $index + 1);
$sheet->setCellValue("B{$row}", $item->no_order);
$sheet->setCellValue("C{$row}", $item->nama_pemesan);
$sheet->setCellValue("D{$row}", $item->jenis_customer === "MCU" ? $item->nama_institusi . '-' . $item->jenis_customer : $item->jenis_customer);
$sheet->setCellValue("E{$row}", $item->status_order);
$sheet->setCellValue("F{$row}", $item->jenis_kelamin);
$sheet->setCellValue("G{$row}", $item->no_wa);
$sheet->setCellValue("H{$row}", $item->email);
$sheet->setCellValue("I{$row}", $item->cara_pembayaran);
$sheet->setCellValue("J{$row}", Carbon::parse($item->entry_at)->translatedFormat('d F Y H:i'));
$sheet->setCellValue("K{$row}", $item->total_harga);
$sheet->setCellValue("L{$row}", $detail?->menu?->nama_menu ?? $detail?->masterMcu?->nama_mcu);
$sheet->setCellValue("M{$row}", $detail?->total_kalori ?? '-');
$sheet->setCellValue("N{$row}", $detail?->jumlah ?? '-');
$sheet->setCellValue("O{$row}", $detail?->status_order ?? "-");
$sheet->setCellValue("P{$row}", $detail?->tgl_antar ? Carbon::parse($item->tgl_antar)->translatedFormat('d F Y') : "Tanggal Antar");
$sheet->setCellValue("Q{$row}", $detail?->type ?? $detail->jam_layanan);
$sheet->setCellValue("R{$row}", $detail?->catatan ?? "-");
if($item->jenis_customer === "Keluarga Pasien / Penunggu Pasien"){
$sheet->setCellValue("E{$row}", $item->kelas_perawatan . '/' . $item->no_kamar_perawatan . '/' . $item->ruang_perawatan);
}else if($item->jenis_customer === "Karyawan RSAB Harapan Kita"){
$sheet->setCellValue("E{$row}", $item->bagian_instalasi ?? '-');
}else{
$sheet->setCellValue("E{$row}", '-');
}
$sheet->setCellValue("F{$row}", $item->status_order);
$sheet->setCellValue("G{$row}", $item->jenis_kelamin);
$sheet->setCellValue("H{$row}", $item->no_wa);
$sheet->setCellValue("I{$row}", $item->email);
$sheet->setCellValue("J{$row}", $item->cara_pembayaran);
$sheet->setCellValue("K{$row}", Carbon::parse($item->entry_at)->translatedFormat('d F Y H:i'));
$sheet->setCellValue("L{$row}", $item->total_harga);
if($detail?->masterMcu){
$sheet->setCellValue("M{$row}", 'Menu MCU');
}else{
$sheet->setCellValue("M{$row}", $detail?->menu?->apakah_someday ? "Menu Someday" : "Menu Normal");
}
$sheet->setCellValue("N{$row}", $detail?->menu?->nama_menu ?? $detail?->masterMcu?->nama_mcu);
$sheet->setCellValue("O{$row}", $detail?->total_kalori ?? '-');
$sheet->setCellValue("P{$row}", $detail?->jumlah ?? '-');
$sheet->setCellValue("Q{$row}", $detail?->status_order ?? "-");
$sheet->setCellValue("R{$row}", $detail?->tgl_antar ? Carbon::parse($item->tgl_antar)->translatedFormat('d F Y') : "Tanggal Antar");
$sheet->setCellValue("S{$row}", $detail?->type ?? $detail->jam_layanan);
$sheet->setCellValue("T{$row}", $detail?->catatan ?? "-");
// Border tiap baris
$sheet->getStyle("A{$row}:R{$row}")->getBorders()->getAllBorders()
$sheet->getStyle("A{$row}:T{$row}")->getBorders()->getAllBorders()
->setBorderStyle(\PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN);
if($item->status_order === "Lunas"){
$totalPendapatan += $item?->total_harga;
}
$row++;
}
}
$sheet->getStyle("K{$row}:L{$row}")->getFont()->setBold(true);
$sheet->getStyle("K{$row}:L{$row}")->getBorders()->getAllBorders()->setBorderStyle(\PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN);
$sheet->setCellValue("K{$row}", 'Total Pendapatan');
$sheet->setCellValue("L{$row}", $totalPendapatan);
// Auto size kolom
foreach(range('A', 'R') as $col){
foreach(range('A', 'T') as $col){
$sheet->getColumnDimension($col)->setAutoSize(true);
}
$lastRow = $row - 1;
$sheet->setAutoFilter("A4:R{$lastRow}");
$sheet->setAutoFilter("A4:T{$lastRow}");
// Download file
$fileName = $title . now()->format('Ymd-His') . '.xlsx';
$writer = new Xlsx($spreadsheet);
@ -746,18 +762,18 @@ class PesananController extends Controller
$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue('A1', "Laporan Pesanan dari {$startDateFormatted} sampai {$endDateFormatted}");
$sheet->mergeCells('A1:Q1');
$sheet->mergeCells('A1:R1');
$sheet->getStyle('A1')->getFont()->setBold(true)->setSize(14);
$sheet->getStyle('A1')->getAlignment()->setHorizontal('center');
$sheet->setCellValue('A2', "Waktu Cetak: {$waktu_cetak}");
$sheet->mergeCells('A2:Q2');
$sheet->mergeCells('A2:S2');
$sheet->getStyle('A2')->getAlignment()->setHorizontal('center');
// Header tabel
$headers = ["No", "Nomor Order", "Nama Pemesan", "Jenis Customer", "Jenis Kelamin", "NO.HP/WA", "Email" , "Cara Pembayaran", "Tanggal Pesan", "Harga Total", "Menu Pesanan", "Total Kalori (kal)", "Jumlah", "Status Pesanan", "Tanggal Antar", "Waktu Makan / Jam Layanan", "Catatan"];
$headers = ["No", "Nomor Order", "Nama Pemesan", "Jenis Customer", "Ruangan", "Jenis Kelamin", "NO.HP/WA", "Email" , "Jenis Pembayaran", "Tanggal Pesan", "Harga Total", "Jenis Menu", "Menu Pesanan", "Total Kalori (kal)", "Jumlah", "Status Pesanan", "Tanggal Antar", "Waktu Makan / Jam Layanan", "Catatan"];
$sheet->fromArray($headers, null, 'A4');
$sheet->getStyle('A4:Q4')->applyFromArray([
$sheet->getStyle('A4:S4')->applyFromArray([
'font' => ['bold' => true],
'alignment' => ['horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER],
'borders' => [
@ -766,46 +782,63 @@ class PesananController extends Controller
]
]
]);
$sheet->getStyle('A4:Q4')->getFont()->setBold(true);
$sheet->getStyle('A4:Q4')->getAlignment()->setHorizontal('center');
$sheet->getStyle('A4:Q4')->getBorders()->getAllBorders()->setBorderStyle(\PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN);
$sheet->getStyle('A4:S4')->getFont()->setBold(true);
$sheet->getStyle('A4:S4')->getAlignment()->setHorizontal('center');
$sheet->getStyle('A4:S4')->getBorders()->getAllBorders()->setBorderStyle(\PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN);
// Isi data
$row = 5;
$totalPendapatan = 0;
foreach ($order as $index => $item) {
foreach($item->orderDetail as $detail){
$sheet->setCellValue("A{$row}", $index + 1);
$sheet->setCellValue("B{$row}", $item->no_order);
$sheet->setCellValue("C{$row}", $item->nama_pemesan);
$sheet->setCellValue("D{$row}", $item->jenis_customer === "MCU" ? $item->nama_institusi . '-' . $item->jenis_customer : $item->jenis_customer);
$sheet->setCellValue("E{$row}", $item->jenis_kelamin);
$sheet->setCellValue("F{$row}", $item->no_wa);
$sheet->setCellValue("G{$row}", $item->email);
$sheet->setCellValue("H{$row}", $item->cara_pembayaran);
$sheet->setCellValue("I{$row}", Carbon::parse($item->entry_at)->translatedFormat('d F Y H:i'));
$sheet->setCellValue("J{$row}", $item->total_harga);
if($item->jenis_customer === "Keluarga Pasien / Penunggu Pasien"){
$sheet->setCellValue("E{$row}", $item->kelas_perawatan . '/' . $item->no_kamar_perawatan . '/' . $item->ruang_perawatan);
}else if($item->jenis_customer === "Karyawan RSAB Harapan Kita"){
$sheet->setCellValue("E{$row}", $item->bagian_instalasi ?? '-');
}else{
$sheet->setCellValue("E{$row}", '-');
}
$sheet->setCellValue("F{$row}", $item->jenis_kelamin);
$sheet->setCellValue("G{$row}", $item->no_wa);
$sheet->setCellValue("H{$row}", $item->email);
$sheet->setCellValue("I{$row}", $item->cara_pembayaran);
$sheet->setCellValue("J{$row}", Carbon::parse($item->entry_at)->translatedFormat('d F Y H:i'));
$sheet->setCellValue("K{$row}", $item->total_harga);
$sheet->setCellValue("K{$row}", $detail?->menu?->nama_menu ?? $detail?->masterMcu?->nama_mcu);
$sheet->setCellValue("L{$row}", $detail?->total_kalori ?? '-');
$sheet->setCellValue("M{$row}", $detail?->jumlah ?? '-');
$sheet->setCellValue("N{$row}", $detail?->status_order ?? "-");
$sheet->setCellValue("O{$row}", $detail?->tgl_antar ? Carbon::parse($item->tgl_antar)->translatedFormat('d F Y') : "-");
$sheet->setCellValue("P{$row}", $detail?->type ?? $detail->jam_layanan);
$sheet->setCellValue("Q{$row}", $detail?->catatan ?? "-");
if($detail?->masterMcu){
$sheet->setCellValue("L{$row}", 'Menu MCU');
}else{
$sheet->setCellValue("L{$row}", $detail?->menu?->apakah_someday ? "Menu Someday" : "Menu Normal");
}
$sheet->setCellValue("M{$row}", $detail?->menu?->nama_menu ?? $detail?->masterMcu?->nama_mcu);
$sheet->setCellValue("N{$row}", $detail?->total_kalori ?? '-');
$sheet->setCellValue("O{$row}", $detail?->jumlah ?? '-');
$sheet->setCellValue("P{$row}", $detail?->status_order ?? "-");
$sheet->setCellValue("Q{$row}", $detail?->tgl_antar ? Carbon::parse($item->tgl_antar)->translatedFormat('d F Y') : "-");
$sheet->setCellValue("R{$row}", $detail?->type ?? $detail->jam_layanan);
$sheet->setCellValue("S{$row}", $detail?->catatan ?? "-");
// Border tiap baris
$sheet->getStyle("A{$row}:Q{$row}")->getBorders()->getAllBorders()
$sheet->getStyle("A{$row}:S{$row}")->getBorders()->getAllBorders()
->setBorderStyle(\PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN);
$totalPendapatan += $item->total_harga;
$row++;
}
}
$sheet->getStyle("I{$row}:K{$row}")->getFont()->setBold(true);
$sheet->getStyle("I{$row}:K{$row}")->getBorders()->getAllBorders()->setBorderStyle(\PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN);
$sheet->setCellValue("I{$row}", 'Total Pendapatan');
$sheet->setCellValue("K{$row}", $totalPendapatan);
// dd($totalPendapatan);
// Auto size kolom
foreach(range('A', 'Q') as $col){
foreach(range('A', 'S') as $col){
$sheet->getColumnDimension($col)->setAutoSize(true);
}
$lastRow = $row - 1;
$sheet->setAutoFilter("A4:Q{$lastRow}");
$sheet->setAutoFilter("A4:S{$lastRow}");
// Download file
$fileName = 'laporan-pesanan-' . now()->format('Ymd-His') . '.xlsx';
$writer = new Xlsx($spreadsheet);

View File

@ -31,7 +31,7 @@ class OrderDetail extends Model
public function menu(){
return $this->belongsTo(Menu::class, 'master_menu_id', 'master_menu_id')->select('master_menu_id', 'nama_menu', 'foto');
return $this->belongsTo(Menu::class, 'master_menu_id', 'master_menu_id')->select('master_menu_id', 'nama_menu', 'foto', 'apakah_someday', 'apakah_mcu');
}
public function karbohidrat(){
return $this->belongsTo(Karbohidrat::class, 'karbohidrat_id', 'karbohidrat_id')->select('karbohidrat_id', 'nama_karbohidrat', 'nilai_kalori');