laporan done
This commit is contained in:
parent
c1dfa20b0f
commit
265e62d456
@ -129,6 +129,7 @@ class PesananController extends Controller
|
||||
public function actionOrderViaBilling(Request $request, string $order_id){
|
||||
DB::connection('dbOrderGizi')->beginTransaction();
|
||||
try {
|
||||
|
||||
$order = Order::where('order_id', $order_id)->first();
|
||||
$payload = [
|
||||
'pegawai_id_confirm_order' => auth()->user()->id,
|
||||
@ -137,6 +138,11 @@ class PesananController extends Controller
|
||||
'status_order' => 'Lunas',
|
||||
'cara_pembayaran' => 'Billing'
|
||||
];
|
||||
if($request->hasFile('evidence_medical_record')){
|
||||
$file = $request->file('evidence_medical_record');
|
||||
$path = $file->store('evidence_medical_record', 'public');
|
||||
$payload['evidence_medical_record'] = $path;
|
||||
}
|
||||
$order->update($payload);
|
||||
|
||||
if($order->email){
|
||||
@ -210,6 +216,8 @@ class PesananController extends Controller
|
||||
'o.status_order',
|
||||
'o.bukti_pembayaran',
|
||||
'o.note_dibatalkan',
|
||||
'o.medical_record',
|
||||
'o.evidence_medical_record',
|
||||
'od.status_order as detail_status_order'
|
||||
)->get()->groupBy('order_id');
|
||||
|
||||
@ -228,6 +236,8 @@ class PesananController extends Controller
|
||||
'status_order' => $first->status_order,
|
||||
'bukti_pembayaran' => $first->bukti_pembayaran,
|
||||
'cara_pembayaran' => $first->cara_pembayaran,
|
||||
'medical_record' => $first->medical_record,
|
||||
'evidence_medical_record' => $first->evidence_medical_record,
|
||||
'progress' => $progress,
|
||||
'total_detail' => $totalDetail,
|
||||
'selesai_detail' => $selesaiDetail,
|
||||
@ -284,13 +294,28 @@ class PesananController extends Controller
|
||||
public function exportPekerjaan(){
|
||||
$startDate = request('start_date');
|
||||
$endDate = request('end_date');
|
||||
$now = Carbon::now()->format('Y-m-d H-i');
|
||||
$orderDetail = OrderDetail::with(['menu', 'paketMenu', 'order', 'karbohidrat'])->whereHas('order', function($q){
|
||||
$type_customer = request('type_customer');
|
||||
$type = request('type');
|
||||
|
||||
$orderDetail = OrderDetail::with(['menu', 'paketMenu', 'order', 'karbohidrat'])->whereHas('order', function($q) use($type_customer){
|
||||
$q->where('status_order', 'Lunas');
|
||||
if($type_customer !== 'all'){
|
||||
$q->where('jenis_customer', $type_customer);
|
||||
}
|
||||
})->whereBetween('tgl_antar', [$startDate, $endDate])->get();
|
||||
|
||||
if($type === 'pdf'){
|
||||
return $this->helperPdfPekerjaan($orderDetail, $startDate, $endDate);
|
||||
}else{
|
||||
return $this->helperExcelPekerjaan($orderDetail, $startDate, $endDate);
|
||||
}
|
||||
}
|
||||
|
||||
public function helperPdfPekerjaan($orderDetail, $startDate, $endDate){
|
||||
$waktu_cetak = Carbon::now()->locale('id')->translatedFormat('d F Y');
|
||||
$startDateFormatted = Carbon::parse($startDate)->locale('id')->translatedFormat('d F Y');
|
||||
$startDateFormatted = Carbon::parse($startDate)->locale('id')->translatedFormat('d F Y');
|
||||
$endDateFormatted = Carbon::parse($endDate)->locale('id')->translatedFormat('d F Y');
|
||||
$now = Carbon::now()->format('Y-m-d H-i');
|
||||
$data = [
|
||||
'pekerjaan' => $orderDetail,
|
||||
'waktu_cetak' => $waktu_cetak,
|
||||
@ -301,35 +326,202 @@ class PesananController extends Controller
|
||||
return $pdf->stream("daftar-pesanan-{$now}.pdf");
|
||||
}
|
||||
|
||||
public function helperExcelPekerjaan($orderDetail, $startDate, $endDate){
|
||||
$startDateFormatted = Carbon::parse($startDate)->locale('id')->translatedFormat('d F Y');
|
||||
$endDateFormatted = Carbon::parse($endDate)->locale('id')->translatedFormat('d F Y');
|
||||
$waktu_cetak = Carbon::now()->locale('id')->translatedFormat('d F Y');
|
||||
$spreadsheet = new Spreadsheet();
|
||||
$sheet = $spreadsheet->getActiveSheet();
|
||||
|
||||
$sheet->setCellValue('A1', "Menu Pesanan dari {$startDateFormatted} sampai {$endDateFormatted}");
|
||||
$sheet->mergeCells('A1:K1');
|
||||
$sheet->getStyle('A1')->getFont()->setBold(true)->setSize(14);
|
||||
$sheet->getStyle('A1')->getAlignment()->setHorizontal('center');
|
||||
|
||||
$sheet->setCellValue('A2', "Waktu Cetak: {$waktu_cetak}");
|
||||
$sheet->mergeCells('A2:K2');
|
||||
$sheet->getStyle('A2')->getAlignment()->setHorizontal('center');
|
||||
|
||||
// Header tabel
|
||||
$headers = ["No", "Nomor Order", "Nama Pemesan", "Jenis Customer", "Status Pesanan", "Menu Pesanan", "Karbohidrat", "Jumlah", "Tanggal Antar", "Waktu Makan", "Catatan"];
|
||||
$sheet->fromArray($headers, null, 'A4');
|
||||
$sheet->getStyle('A4:K4')->applyFromArray([
|
||||
'font' => ['bold' => true],
|
||||
'alignment' => ['horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER],
|
||||
'borders' => [
|
||||
'allBorders' => [
|
||||
'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN
|
||||
]
|
||||
]
|
||||
]);
|
||||
$sheet->getStyle('A4:K4')->getFont()->setBold(true);
|
||||
$sheet->getStyle('A4:K4')->getAlignment()->setHorizontal('center');
|
||||
$sheet->getStyle('A4:K4')->getBorders()->getAllBorders()->setBorderStyle(\PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN);
|
||||
// Isi data
|
||||
$row = 5;
|
||||
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);
|
||||
$sheet->setCellValue("E{$row}", $item?->status_order ?? "-");
|
||||
$sheet->setCellValue("F{$row}", $item?->menu?->nama_menu ?? '-');
|
||||
$karbohidratNama = $item?->karbohidrat?->nama_karbohidrat ?? '-';
|
||||
$karbohidratNilai = $item?->karbohidrat?->nilai_kalori ?? '-';
|
||||
$sheet->setCellValue("G{$row}", $karbohidratNama . ($karbohidratNilai !== '-' ? " ({$karbohidratNilai} Kkal)" : ''));
|
||||
$sheet->setCellValue("H{$row}", $item?->jumlah ?? '-');
|
||||
$sheet->setCellValue("I{$row}", $item?->tgl_antar ? Carbon::parse($item->tgl_antar)->translatedFormat('d F Y') : "Tanggal Antar");
|
||||
$sheet->setCellValue("J{$row}", $item?->type ?? "-");
|
||||
$sheet->setCellValue("K{$row}", $item?->catatan ?? "-");
|
||||
// Border tiap baris
|
||||
$sheet->getStyle("A{$row}:K{$row}")->getBorders()->getAllBorders()
|
||||
->setBorderStyle(\PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN);
|
||||
$row++;
|
||||
}
|
||||
// Auto size kolom
|
||||
foreach(range('A', 'K') as $col){
|
||||
$sheet->getColumnDimension($col)->setAutoSize(true);
|
||||
}
|
||||
$lastRow = $row - 1;
|
||||
$sheet->setAutoFilter("A4:K{$lastRow}");
|
||||
// Download file
|
||||
$fileName = 'menu-pesanan' . now()->format('Ymd-His') . '.xlsx';
|
||||
$writer = new Xlsx($spreadsheet);
|
||||
|
||||
// Output ke browser
|
||||
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
|
||||
header("Content-Disposition: attachment; filename=\"{$fileName}\"");
|
||||
header('Cache-Control: max-age=0');
|
||||
|
||||
$writer->save('php://output');
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
public function exportPending(){
|
||||
$startDate = Carbon::parse(request('start_date'))->startOfDay();
|
||||
$endDate = Carbon::parse(request('end_date'))->endOfDay();
|
||||
$order = Order::where('statusenabled', true)
|
||||
$type = request('type');
|
||||
$type_customer = request('type_customer');
|
||||
$query = Order::where('statusenabled', true)
|
||||
->whereBetween('entry_at', [$startDate, $endDate])
|
||||
->with('orderDetail')
|
||||
->whereIn('status_order', ['Menunggu Konfirmasi Pembayaran', 'Menunggu Konfirmasi Pembayaran Via Billing'])
|
||||
->get();
|
||||
$startDateFormatted = Carbon::parse($startDate)->locale('id')->translatedFormat('d F Y');
|
||||
$endDateFormatted = Carbon::parse($endDate)->locale('id')->translatedFormat('d F Y');
|
||||
$waktu_cetak = Carbon::now()->locale('id')->translatedFormat('d F Y');
|
||||
->whereIn('status_order', ['Menunggu Konfirmasi Pembayaran', 'Menunggu Konfirmasi Pembayaran Via Billing']);
|
||||
if($type_customer !== 'all'){
|
||||
$query->where('jenis_customer', $type_customer);
|
||||
}
|
||||
$order = $query->with('orderDetail')->get();
|
||||
$title= 'konfirmasi-pesanan';
|
||||
$titlePdf = 'LAPORAN KONFIRMASI PESANAN';
|
||||
if($type === 'pdf'){
|
||||
return $this->pdfHelper($startDate, $endDate, $order, $titlePdf, $title);
|
||||
}else{
|
||||
return $this->excelHelper($startDate, $endDate, $order, $title);
|
||||
}
|
||||
|
||||
$data = [
|
||||
'laporan' => 'LAPORAN KONFIRMASI PESANAN',
|
||||
'waktu_cetak' => $waktu_cetak,
|
||||
'orders' => $order,
|
||||
'startDate' => $startDateFormatted,
|
||||
'endDate' => $endDateFormatted
|
||||
];
|
||||
$pdf = Pdf::loadView('dashboard.pesanan.pending.pdf', $data);
|
||||
}
|
||||
|
||||
return $pdf->stream('laporan-pesanan-' . now()->format('Ymd-His') . '.pdf');
|
||||
public function pdfHelper($startDate, $endDate, $order, $titlePdf, $title){
|
||||
$startDateFormatted = Carbon::parse($startDate)->locale('id')->translatedFormat('d F Y');
|
||||
$endDateFormatted = Carbon::parse($endDate)->locale('id')->translatedFormat('d F Y');
|
||||
$waktu_cetak = Carbon::now()->locale('id')->translatedFormat('d F Y');
|
||||
|
||||
$data = [
|
||||
'laporan' => $titlePdf,
|
||||
'waktu_cetak' => $waktu_cetak,
|
||||
'orders' => $order,
|
||||
'startDate' => $startDateFormatted,
|
||||
'endDate' => $endDateFormatted
|
||||
];
|
||||
$pdf = Pdf::loadView('dashboard.pesanan.pending.pdf', $data);
|
||||
|
||||
return $pdf->stream($title . now()->format('Ymd-His') . '.pdf');
|
||||
}
|
||||
|
||||
public function excelHelper($startDate, $endDate, $order, $title){
|
||||
$startDateFormatted = Carbon::parse($startDate)->locale('id')->translatedFormat('d F Y');
|
||||
$endDateFormatted = Carbon::parse($endDate)->locale('id')->translatedFormat('d F Y');
|
||||
$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:P1');
|
||||
$sheet->getStyle('A1')->getFont()->setBold(true)->setSize(14);
|
||||
$sheet->getStyle('A1')->getAlignment()->setHorizontal('center');
|
||||
|
||||
$sheet->setCellValue('A2', "Waktu Cetak: {$waktu_cetak}");
|
||||
$sheet->mergeCells('A2:P2');
|
||||
$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", "Jumlah", "Status Pesanan", "Tanggal Antar", "Waktu Makan", "Catatan"];
|
||||
$sheet->fromArray($headers, null, 'A4');
|
||||
$sheet->getStyle('A4:Q4')->applyFromArray([
|
||||
'font' => ['bold' => true],
|
||||
'alignment' => ['horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER],
|
||||
'borders' => [
|
||||
'allBorders' => [
|
||||
'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN
|
||||
]
|
||||
]
|
||||
]);
|
||||
$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);
|
||||
|
||||
// Isi data
|
||||
$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);
|
||||
$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 ?? '-');
|
||||
$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') : "Tanggal Antar");
|
||||
$sheet->setCellValue("P{$row}", $detail?->type ?? "-");
|
||||
$sheet->setCellValue("Q{$row}", $detail?->catatan ?? "-");
|
||||
// Border tiap baris
|
||||
$sheet->getStyle("A{$row}:Q{$row}")->getBorders()->getAllBorders()
|
||||
->setBorderStyle(\PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN);
|
||||
|
||||
$row++;
|
||||
}
|
||||
}
|
||||
|
||||
// Auto size kolom
|
||||
foreach(range('A', 'Q') as $col){
|
||||
$sheet->getColumnDimension($col)->setAutoSize(true);
|
||||
}
|
||||
$lastRow = $row - 1;
|
||||
$sheet->setAutoFilter("A4:Q{$lastRow}");
|
||||
// Download file
|
||||
$fileName = $title . now()->format('Ymd-His') . '.xlsx';
|
||||
$writer = new Xlsx($spreadsheet);
|
||||
|
||||
// Output ke browser
|
||||
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
|
||||
header("Content-Disposition: attachment; filename=\"{$fileName}\"");
|
||||
header('Cache-Control: max-age=0');
|
||||
|
||||
$writer->save('php://output');
|
||||
exit;
|
||||
}
|
||||
|
||||
public function exportSelesai(){
|
||||
$startDate = Carbon::parse(request('start_date'))->startOfDay();
|
||||
$endDate = Carbon::parse(request('end_date'))->endOfDay();
|
||||
|
||||
$type = request('type');
|
||||
$order = Order::where('statusenabled', true)
|
||||
->whereBetween('entry_at', [$startDate, $endDate])
|
||||
->with('orderDetail')
|
||||
@ -338,20 +530,14 @@ class PesananController extends Controller
|
||||
$q->where('status_order', '!=', 'Selesai');
|
||||
})
|
||||
->get();
|
||||
$title= 'pesanan-selesai';
|
||||
$titlePdf = 'LAPORAN PESANAN SELESAI';
|
||||
|
||||
$startDateFormatted = Carbon::parse($startDate)->locale('id')->translatedFormat('d F Y');
|
||||
$endDateFormatted = Carbon::parse($endDate)->locale('id')->translatedFormat('d F Y');
|
||||
$waktu_cetak = Carbon::now()->locale('id')->translatedFormat('d F Y');
|
||||
|
||||
$data = [
|
||||
'waktu_cetak' => $waktu_cetak,
|
||||
'orders' => $order,
|
||||
'startDate' => $startDateFormatted,
|
||||
'endDate' => $endDateFormatted
|
||||
];
|
||||
$pdf = Pdf::loadView('dashboard.pesanan.selesai.pdf', $data);
|
||||
|
||||
return $pdf->stream('laporan-pesanan-' . now()->format('Ymd-His') . '.pdf');
|
||||
if($type === 'pdf'){
|
||||
return $this->pdfHelper($startDate, $endDate, $order, $titlePdf, $title);
|
||||
}else{
|
||||
return $this->excelHelper($startDate, $endDate, $order, $title);
|
||||
}
|
||||
}
|
||||
|
||||
public function countKonfirmasiPesanan(){
|
||||
@ -405,6 +591,7 @@ class PesananController extends Controller
|
||||
'bukti_pembayaran' => $first->bukti_pembayaran,
|
||||
'cara_pembayaran' => $first->cara_pembayaran,
|
||||
'medical_record' => $first->medical_record,
|
||||
'evidence_medical_record' => $first->evidence_medical_record,
|
||||
'progress' => $progress,
|
||||
'total_detail' => $totalDetail,
|
||||
'selesai_detail' => $selesaiDetail,
|
||||
@ -440,6 +627,7 @@ class PesananController extends Controller
|
||||
'o.bukti_pembayaran',
|
||||
'o.note_dibatalkan',
|
||||
'o.medical_record',
|
||||
'o.evidence_medical_record',
|
||||
'od.status_order as detail_status_order'
|
||||
)->get()->groupBy('order_id');
|
||||
return $data;
|
||||
@ -477,7 +665,7 @@ class PesananController extends Controller
|
||||
'startDate' => $startDateFormatted,
|
||||
'endDate' => $endDateFormatted
|
||||
];
|
||||
$pdf = Pdf::loadView('dashboard.pesanan.pending.pdf', $data);
|
||||
$pdf = Pdf::loadView('dashboard.pesanan.laporan.pesanan.pdfPesanan', $data);
|
||||
|
||||
return $pdf->stream('laporan-pesanan-' . now()->format('Ymd-His') . '.pdf');
|
||||
}
|
||||
@ -490,43 +678,61 @@ class PesananController extends Controller
|
||||
$sheet = $spreadsheet->getActiveSheet();
|
||||
|
||||
$sheet->setCellValue('A1', "Laporan Pesanan dari {$startDateFormatted} sampai {$endDateFormatted}");
|
||||
$sheet->mergeCells('A1:G1');
|
||||
$sheet->mergeCells('A1:P1');
|
||||
$sheet->getStyle('A1')->getFont()->setBold(true)->setSize(14);
|
||||
$sheet->getStyle('A1')->getAlignment()->setHorizontal('center');
|
||||
|
||||
$sheet->setCellValue('A2', "Waktu Cetak: {$waktu_cetak}");
|
||||
$sheet->mergeCells('A2:G2');
|
||||
$sheet->mergeCells('A2:P2');
|
||||
$sheet->getStyle('A2')->getAlignment()->setHorizontal('center');
|
||||
|
||||
// Header tabel
|
||||
$headers = ["No", "Nomor Order", "Nama Customer", "Jenis Customer", "Tanggal Pesanan", "Total", "Detail Pesanan"];
|
||||
$headers = ["No", "Nomor Order", "Nama Pemesan", "Jenis Customer", "Jenis Kelamin", "NO.HP/WA", "Email" , "Cara Pembayaran", "Tanggal Pesan", "Harga Total", "Menu Pesanan", "Jumlah", "Status Pesanan", "Tanggal Antar", "Waktu Makan", "Catatan"];
|
||||
$sheet->fromArray($headers, null, 'A4');
|
||||
$sheet->getStyle('A4:G4')->getFont()->setBold(true);
|
||||
$sheet->getStyle('A4:G4')->getAlignment()->setHorizontal('center');
|
||||
$sheet->getStyle('A4:G4')->getBorders()->getAllBorders()->setBorderStyle(\PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN);
|
||||
$sheet->getStyle('A4:P4')->applyFromArray([
|
||||
'font' => ['bold' => true],
|
||||
'alignment' => ['horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER],
|
||||
'borders' => [
|
||||
'allBorders' => [
|
||||
'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN
|
||||
]
|
||||
]
|
||||
]);
|
||||
$sheet->getStyle('A4:P4')->getFont()->setBold(true);
|
||||
$sheet->getStyle('A4:P4')->getAlignment()->setHorizontal('center');
|
||||
$sheet->getStyle('A4:P4')->getBorders()->getAllBorders()->setBorderStyle(\PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN);
|
||||
|
||||
// Isi data
|
||||
$row = 5;
|
||||
foreach ($order as $index => $item) {
|
||||
$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);
|
||||
$sheet->setCellValue("E{$row}", Carbon::parse($item->entry_at)->translatedFormat('d F Y H:i'));
|
||||
$sheet->setCellValue("F{$row}", $item->total_harga);
|
||||
$sheet->setCellValue("G{$row}", $item->orderDetail->map(function ($detail) {
|
||||
return $detail->nama_menu . ' x' . $detail->jumlah;
|
||||
})->implode(', '));
|
||||
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);
|
||||
$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);
|
||||
|
||||
// Border tiap baris
|
||||
$sheet->getStyle("A{$row}:G{$row}")->getBorders()->getAllBorders()
|
||||
$sheet->setCellValue("K{$row}", $detail?->menu?->nama_menu ?? '-');
|
||||
$sheet->setCellValue("L{$row}", $detail?->jumlah ?? '-');
|
||||
$sheet->setCellValue("M{$row}", $detail?->status_order ?? "-");
|
||||
$sheet->setCellValue("N{$row}", $detail?->tgl_antar ? Carbon::parse($item->tgl_antar)->translatedFormat('d F Y') : "Tanggal Antar");
|
||||
$sheet->setCellValue("O{$row}", $detail?->type ?? "-");
|
||||
$sheet->setCellValue("P{$row}", $detail?->catatan ?? "-");
|
||||
// Border tiap baris
|
||||
$sheet->getStyle("A{$row}:P{$row}")->getBorders()->getAllBorders()
|
||||
->setBorderStyle(\PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN);
|
||||
|
||||
$row++;
|
||||
$row++;
|
||||
}
|
||||
}
|
||||
|
||||
// Auto size kolom
|
||||
foreach(range('A', 'G') as $col){
|
||||
foreach(range('A', 'P') as $col){
|
||||
$sheet->getColumnDimension($col)->setAutoSize(true);
|
||||
}
|
||||
$lastRow = $row - 1;
|
||||
@ -544,6 +750,139 @@ class PesananController extends Controller
|
||||
exit;
|
||||
}
|
||||
|
||||
public function exportLaporanPendapatan(){
|
||||
$startDate = Carbon::parse(request('start_date'))->startOfDay();
|
||||
$endDate = Carbon::parse(request('end_date'))->endOfDay();
|
||||
$type = request('type');
|
||||
$type_customer = request('type_customer');
|
||||
$query = Order::where('statusenabled', true)->where('status_order', 'Lunas');
|
||||
if($type_customer !== 'all'){
|
||||
$query->where('jenis_customer', $type_customer);
|
||||
}
|
||||
$order = $query->whereBetween('entry_at', [$startDate, $endDate])->get();
|
||||
|
||||
if($type === 'pdf'){
|
||||
return $this->pdfPendapatan($startDate, $endDate, $order);
|
||||
}else{
|
||||
return $this->excelPendapatan($startDate, $endDate, $order);
|
||||
}
|
||||
}
|
||||
|
||||
public function exportSemuaPesanan(){
|
||||
$startDate = Carbon::parse(request('start_date'))->startOfDay();
|
||||
$endDate = Carbon::parse(request('end_date'))->endOfDay();
|
||||
$type = request('type');
|
||||
$type_customer = request('type_customer');
|
||||
$query = Order::where('statusenabled', true)
|
||||
->whereBetween('entry_at', [$startDate, $endDate]);
|
||||
if($type_customer !== 'all'){
|
||||
$query->where('jenis_customer', $type_customer);
|
||||
}
|
||||
$order = $query->with('orderDetail')->get();
|
||||
$title= 'semua-pesanan';
|
||||
$titlePdf = 'LAPORAN SEMUA PESANAN';
|
||||
if($type === 'pdf'){
|
||||
return $this->pdfHelper($startDate, $endDate, $order, $titlePdf, $title);
|
||||
}else{
|
||||
return $this->excelHelper($startDate, $endDate, $order, $title);
|
||||
}
|
||||
}
|
||||
|
||||
public function pdfPendapatan($startDate, $endDate, $order){
|
||||
$startDateFormatted = Carbon::parse($startDate)->locale('id')->translatedFormat('d F Y');
|
||||
$endDateFormatted = Carbon::parse($endDate)->locale('id')->translatedFormat('d F Y');
|
||||
$waktu_cetak = Carbon::now()->locale('id')->translatedFormat('d F Y');
|
||||
$data = [
|
||||
'laporan' => 'Laporan Pendapatan',
|
||||
'waktu_cetak' => $waktu_cetak,
|
||||
'orders' => $order,
|
||||
'startDate' => $startDateFormatted,
|
||||
'endDate' => $endDateFormatted
|
||||
];
|
||||
$pdf = Pdf::loadView('dashboard.pesanan.laporan.pesanan.pdfPendapatan', $data);
|
||||
|
||||
return $pdf->stream('laporan-pesanan-' . now()->format('Ymd-His') . '.pdf');
|
||||
}
|
||||
|
||||
public function excelPendapatan($startDate, $endDate, $order){
|
||||
$startDateFormatted = Carbon::parse($startDate)->locale('id')->translatedFormat('d F Y');
|
||||
$endDateFormatted = Carbon::parse($endDate)->locale('id')->translatedFormat('d F Y');
|
||||
$waktu_cetak = Carbon::now()->locale('id')->translatedFormat('d F Y');
|
||||
$spreadsheet = new Spreadsheet();
|
||||
$sheet = $spreadsheet->getActiveSheet();
|
||||
|
||||
$sheet->setCellValue('A1', "Laporan Pendapatan dari {$startDateFormatted} sampai {$endDateFormatted}");
|
||||
$sheet->mergeCells('A1:G1');
|
||||
$sheet->getStyle('A1')->getFont()->setBold(true)->setSize(14);
|
||||
$sheet->getStyle('A1')->getAlignment()->setHorizontal('center');
|
||||
|
||||
$sheet->setCellValue('A2', "Waktu Cetak: {$waktu_cetak}");
|
||||
$sheet->mergeCells('A2:G2');
|
||||
$sheet->getStyle('A2')->getAlignment()->setHorizontal('center');
|
||||
|
||||
// Header tabel
|
||||
$headers = ["No", "Nomor Order", "Nama Pemesan", "Jenis Customer", "Cara Pembayaran", "Tanggal Pesan", "Harga Total"];
|
||||
$sheet->fromArray($headers, null, 'A4');
|
||||
$sheet->getStyle('A4:G4')->applyFromArray([
|
||||
'font' => ['bold' => true],
|
||||
'alignment' => ['horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER],
|
||||
'borders' => [
|
||||
'allBorders' => [
|
||||
'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN
|
||||
]
|
||||
]
|
||||
]);
|
||||
$sheet->getStyle('A4:G4')->getFont()->setBold(true);
|
||||
$sheet->getStyle('A4:G4')->getAlignment()->setHorizontal('center');
|
||||
$sheet->getStyle('A4:G4')->getBorders()->getAllBorders()->setBorderStyle(\PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN);
|
||||
|
||||
// Isi data
|
||||
$row = 5;
|
||||
$totalPendapatan = 0;
|
||||
foreach ($order as $index => $item) {
|
||||
$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);
|
||||
$sheet->setCellValue("E{$row}", $item->cara_pembayaran);
|
||||
$sheet->setCellValue("F{$row}", Carbon::parse($item->entry_at)->translatedFormat('d F Y H:i'));
|
||||
$sheet->setCellValue("G{$row}", $item->total_harga);
|
||||
$totalPendapatan += $item->total_harga;
|
||||
// Border tiap baris
|
||||
$sheet->getStyle("A{$row}:G{$row}")->getBorders()->getAllBorders()
|
||||
->setBorderStyle(\PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN);
|
||||
$row++;
|
||||
}
|
||||
$sheet->setCellValue("F{$row}", "Total Pendapatan");
|
||||
$sheet->setCellValue("G{$row}", $totalPendapatan);
|
||||
$sheet->getStyle("F{$row}:G{$row}")->applyFromArray([
|
||||
'font' => ['bold' => true],
|
||||
'borders' => [
|
||||
'allBorders' => [
|
||||
'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN
|
||||
]
|
||||
]
|
||||
]);
|
||||
|
||||
|
||||
// Auto size kolom
|
||||
foreach(range('A', 'G') as $col){
|
||||
$sheet->getColumnDimension($col)->setAutoSize(true);
|
||||
}
|
||||
$lastRow = $row - 1;
|
||||
$sheet->setAutoFilter("A4:G{$lastRow}");
|
||||
// Download file
|
||||
$fileName = 'laporan-pendapatan-' . now()->format('Ymd-His') . '.xlsx';
|
||||
$writer = new Xlsx($spreadsheet);
|
||||
|
||||
// Output ke browser
|
||||
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
|
||||
header("Content-Disposition: attachment; filename=\"{$fileName}\"");
|
||||
header('Cache-Control: max-age=0');
|
||||
|
||||
$writer->save('php://output');
|
||||
exit;
|
||||
}
|
||||
|
||||
public function indexSemua(){
|
||||
$payload = [
|
||||
@ -580,6 +919,7 @@ class PesananController extends Controller
|
||||
'o.bukti_pembayaran',
|
||||
'o.note_dibatalkan',
|
||||
'o.medical_record',
|
||||
'o.evidence_medical_record',
|
||||
'od.status_order as detail_status_order'
|
||||
)->get()->groupBy('order_id');
|
||||
|
||||
@ -598,6 +938,8 @@ class PesananController extends Controller
|
||||
'status_order' => $first->status_order,
|
||||
'bukti_pembayaran' => $first->bukti_pembayaran,
|
||||
'cara_pembayaran' => $first->cara_pembayaran,
|
||||
'medical_record' => $first->medical_record,
|
||||
'evidence_medical_record' => $first->evidence_medical_record,
|
||||
'progress' => $progress,
|
||||
'total_detail' => $totalDetail,
|
||||
'selesai_detail' => $selesaiDetail,
|
||||
|
||||
@ -30,44 +30,11 @@ class NotifikasiCustomer extends Mailable
|
||||
* Get the message content definition.
|
||||
*/
|
||||
public function build(){
|
||||
return $this->subject('Konfirmasi Pesanan Anda')->html("
|
||||
<div style='font-family: Arial, sans-serif; max-width: 600px; margin: auto; border: 1px solid #eee; padding: 24px;'>
|
||||
<h2 style='color: #28a745;'>✅ Pesanan Berhasil!</h2>
|
||||
<p>Halo, <strong>{$this->pemesan}</strong>,</p>
|
||||
<p>Terima kasih telah melakukan pemesanan. Berikut detail pesanan Anda:</p>
|
||||
|
||||
<table style='width: 100%; border-collapse: collapse; margin-top: 16px;'>
|
||||
<tr>
|
||||
<td style='padding: 8px; border: 1px solid #ddd;'>No. Order</td>
|
||||
<td style='padding: 8px; border: 1px solid #ddd;'>{$this->noOrder}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style='padding: 8px; border: 1px solid #ddd;'>Tanggal</td>
|
||||
<td style='padding: 8px; border: 1px solid #ddd;'>" . now()->format('d M Y H:i') . "</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style='padding: 8px; border: 1px solid #ddd;'>Status</td>
|
||||
<td style='padding: 8px; border: 1px solid #ddd; color: green;'>Menunggu Pembayaran</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style='padding: 8px; border: 1px solid #ddd;'>Nominal Harus Bayar</td>
|
||||
<td style='padding: 8px; border: 1px solid #ddd; color: green;'>Rp ". number_format($this->total_harga, 0,',', '.')
|
||||
."</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p style='margin-top: 24px;'>Silakan segera lakukan pembayaran ke rekening berikut:</p>
|
||||
<ul style='list-style: none; padding: 0;'>
|
||||
<li><strong>Bank:</strong> BCA</li>
|
||||
<li><strong>Nomor Rekening:</strong> 1234-5678-9101</li>
|
||||
<li><strong>Atas Nama:</strong> RSAB Harapan Kita</li>
|
||||
</ul>
|
||||
|
||||
<p style='margin-top: 24px; font-size: 14px; color: #555;'>Jika Anda tidak merasa melakukan pesanan ini, abaikan email ini.</p>
|
||||
|
||||
<hr style='margin-top: 40px;'>
|
||||
<p style='text-align: center; font-size: 12px; color: #888;'>© " . date('Y') . " RSAB Harapan Kita</p>
|
||||
</div>
|
||||
");
|
||||
return $this->subject('Konfirmasi Pesanan Anda')->view('mail_view.customer')
|
||||
->with([
|
||||
'pemesan' => $this->pemesan,
|
||||
'noOrder' => $this->noOrder,
|
||||
'total_harga' => $this->total_harga
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
@ -30,32 +30,13 @@ class NotifikasiKonfirmasiPembayaran extends Mailable
|
||||
* Get the message content definition.
|
||||
*/
|
||||
public function build(){
|
||||
return $this->subject('Pembayaran Telah Dikonfirmasi')->html("
|
||||
<div style='font-family: Arial, sans-serif; max-width: 600px; margin: auto; border: 1px solid #eee; padding: 24px;'>
|
||||
<h2 style='color: #28a745;'>✅ Pembayaran Berhasil Diverifikasi</h2>
|
||||
<p>Halo, <strong>{$this->pemesan}</strong>,</p>
|
||||
<p>Pembayaran kamu untuk pesanan <strong>#{$this->noOrder}</strong> telah berhasil kami verifikasi.</p>
|
||||
return $this->subject('Pembayaran Telah Dikonfirmasi')
|
||||
->view('mail_view.konfirmasi_pesanan')
|
||||
->with([
|
||||
'pemesan' => $this->pemesan,
|
||||
'noOrder' => $this->noOrder,
|
||||
'total_harga' => $this->total_harga,
|
||||
]);
|
||||
|
||||
<table style='margin-top: 16px; width: 100%; border-collapse: collapse;'>
|
||||
<tr>
|
||||
<td style='padding: 8px; border: 1px solid #ddd;'>Nomor Order</td>
|
||||
<td style='padding: 8px; border: 1px solid #ddd;'>{$this->noOrder}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style='padding: 8px; border: 1px solid #ddd;'>Total Pembayaran</td>
|
||||
<td style='padding: 8px; border: 1px solid #ddd;'>Rp " . number_format($this->total_harga, 0, ',', '.') . "</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style='padding: 8px; border: 1px solid #ddd;'>Status</td>
|
||||
<td style='padding: 8px; border: 1px solid #ddd; color: green;'>Pembayaran Diterima</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p style='margin-top: 24px;'>Pesanan kamu sedang kami proses. Silakan tunggu pemberitahuan berikutnya untuk pengambilan makanan.</p>
|
||||
|
||||
<hr style='margin-top: 40px;'>
|
||||
<p style='text-align: center; font-size: 12px; color: #888;'>© " . date('Y') . " RSAB Harapan Kita</p>
|
||||
</div>
|
||||
");
|
||||
}
|
||||
}
|
||||
|
||||
@ -28,20 +28,10 @@ class NotifikasiPembayaran extends Mailable
|
||||
* Get the message content definition.
|
||||
*/
|
||||
public function build(){
|
||||
return $this->subject('Pembayaran Diterima - Menunggu Konfirmasi')->html("
|
||||
<div style='font-family: Arial, sans-serif; max-width: 600px; margin: auto; border: 1px solid #eee; padding: 24px;'>
|
||||
<h2 style='color: #0787ffff;'>Menunggu Konfirmasi Pembayaran</h2>
|
||||
<p>Halo, <strong>{$this->pemesan}</strong>,</p>
|
||||
<p>Kami telah menerima bukti pembayaran untuk pesanan kamu dengan nomor <strong>{$this->noOrder}</strong>.</p>
|
||||
<p><strong>Tim kami akan segera memverifikasi pembayaran tersebut.</strong></p>
|
||||
|
||||
<p style='margin-top: 16px;'>Mohon tunggu konfirmasi selanjutnya dari admin. Kami akan kirimkan email ketika pembayaran telah diverifikasi.</p>
|
||||
|
||||
<p style='margin-top: 32px; font-size: 14px; color: #555;'>Terima kasih telah melakukan pemesanan.</p>
|
||||
|
||||
<hr style='margin-top: 40px;'>
|
||||
<p style='text-align: center; font-size: 12px; color: #888;'>© " . date('Y') . " RSAB Harapan Kita</p>
|
||||
</div>
|
||||
");
|
||||
return $this->subject('Pembayaran Diterima - Menunggu Konfirmasi')->view('mail_view.pembayaran')
|
||||
->with([
|
||||
'pemesan' => $this->pemesan,
|
||||
'noOrder' => $this->noOrder,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
@ -37,7 +37,8 @@ class Order extends Model
|
||||
'note_dibatalkan',
|
||||
'email',
|
||||
'alamat',
|
||||
'medical_record'
|
||||
'medical_record',
|
||||
'evidence_medical_record'
|
||||
];
|
||||
|
||||
protected $cast = [
|
||||
|
||||
@ -25,19 +25,14 @@ const getReminderVerifikasiMakanan = () => {
|
||||
$.ajax({
|
||||
url: `/dashboard/count/verifikasi-pesanan`,
|
||||
success: function (response) {
|
||||
console.log(response);
|
||||
|
||||
const button = document.getElementById("verifikasi_makanan");
|
||||
const konfirmasiPesanan = document.getElementById("konfirmasi_pesanan_offcanvas");
|
||||
let count = response.count;
|
||||
|
||||
button.classList.remove('d-none');
|
||||
if(count === 0){
|
||||
button.classList.add('d-none');
|
||||
konfirmasiPesanan.classList.add('d-none');
|
||||
}
|
||||
button.innerText = count;
|
||||
konfirmasiPesanan.innerText = count;
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
@ -11,7 +11,7 @@ function fetchDetailOrder(order_id){
|
||||
<div class="card shadow-sm border-0">
|
||||
<div class="row g-0">
|
||||
<div class="col-md-5 d-flex align-items-center p-2">
|
||||
<img src="/gambar/${detail?.menu?.foto || 'default.jpg'}" alt="Foto Menu" class="img-fluid rounded shadow" style="max-height: 120px; width: auto;">
|
||||
<img src="/gambar/${detail?.menu?.foto || 'default.jpg'}" alt="Foto Menu" class="img-fluid rounded shadow" style="max-height: 250px; width: auto;">
|
||||
</div>
|
||||
<div class="col-md-5 p-2">
|
||||
<p class="mb-1">Nama Menu: <strong>${detail?.menu?.nama_menu || '-'}</strong></p>
|
||||
@ -38,10 +38,12 @@ function fetchDetailOrder(order_id){
|
||||
${data.bukti_pembayaran ? `
|
||||
<div class="col-md-4 text-center mb-3 mb-md-0">
|
||||
<div class="border rounded shadow-sm p-2 bg-light">
|
||||
<img src="/storage/${data.bukti_pembayaran || 'gambar/default.jpg'}"
|
||||
alt="Bukti Pembayaran"
|
||||
class="img-fluid rounded"
|
||||
style="max-height: 170px; width: auto;">
|
||||
<a href="/storage/${data?.bukti_pembayaran}" target="_blank">
|
||||
<img src="/storage/${data.bukti_pembayaran || 'gambar/default.jpg'}"
|
||||
alt="Bukti Pembayaran"
|
||||
class="img-fluid rounded"
|
||||
style="max-height: 170px; width: auto;">
|
||||
</a>
|
||||
<div class="text-muted small mt-2">Bukti Pembayaran</div>
|
||||
</div>
|
||||
</div>` : ''}
|
||||
@ -51,7 +53,11 @@ function fetchDetailOrder(order_id){
|
||||
<div class="card shadow-sm border-0">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title text-primary mb-1">${data.nama_pemesan}</h5>
|
||||
<p class="text-muted mb-2">Jenis Customer: <strong>${data.jenis_customer}</strong></p>
|
||||
<p class="mb-2">Jenis Kelamin: <strong>${data?.jenis_kelamin}</strong></p>
|
||||
<p class="mb-2">Jenis Customer: <strong>${data?.jenis_customer}</strong></p>
|
||||
<p class="mb-2">Email: <strong>${data?.email || '-'}</strong></p>
|
||||
<p class="mb-2">No.Hp / WA: <strong>${data?.no_wa || '-'}</strong></p>
|
||||
<p class="mb-2">Tinggi Badan / Berat Badan: <strong>${data?.tinggi_badan || '-'} / ${data?.berat_badan || '-'}</strong></p>
|
||||
|
||||
${data?.jenis_customer === 'Keluarga Pasien / Penunggu Pasien' ? `
|
||||
<div class="mb-2">
|
||||
|
||||
@ -110,17 +110,35 @@
|
||||
sortable: true,
|
||||
},
|
||||
{
|
||||
title:'Bukti Pembayaran',
|
||||
formatter: function(value, row){
|
||||
if(row?.cara_pembayaran === 'Transfer' && row?.bukti_pembayaran){
|
||||
title: 'Bukti Pembayaran',
|
||||
formatter: function (value, row) {
|
||||
if (row?.cara_pembayaran === 'Transfer' && row?.bukti_pembayaran) {
|
||||
return `
|
||||
<a href="/storage/${row.bukti_pembayaran}" target="_blank" class="btn btn-sm btn-primary">
|
||||
<i class="fa fa-eye"></i> Lihat Bukti
|
||||
</a>
|
||||
`;
|
||||
}else if(row?.cara_pembayaran === 'Billing'){
|
||||
}
|
||||
|
||||
if (row?.cara_pembayaran === 'Billing') {
|
||||
if (row?.evidence_medical_record) {
|
||||
return `
|
||||
<ul class="list-unstyled">
|
||||
<li>
|
||||
<a href="/storage/${row.evidence_medical_record}" target="_blank" class="btn btn-sm btn-primary">
|
||||
<i class="fa fa-eye"></i> Lihat Bukti Billing
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
No.MR: ${row?.medical_record || '-'}
|
||||
</li>
|
||||
</ul>
|
||||
`;
|
||||
}
|
||||
return `No.MR: ${row?.medical_record || '-'}`;
|
||||
}
|
||||
|
||||
return '';
|
||||
}
|
||||
},
|
||||
{
|
||||
|
||||
@ -12,7 +12,7 @@ function detailOrder(id){
|
||||
<div class="card shadow-sm border-0">
|
||||
<div class="row g-0">
|
||||
<div class="col-md-5 d-flex align-items-center p-2">
|
||||
<img src="/gambar/${data?.menu?.foto || data?.paket_menu?.foto}" alt="Foto Menu" class="img-fluid rounded shadow m-auto" style="max-height: 220px; width: auto;">
|
||||
<img src="/gambar/${data?.menu?.foto || data?.paket_menu?.foto}" alt="Foto Menu" class="img-fluid rounded shadow m-auto" style="max-height: 320px; width: auto;">
|
||||
</div>
|
||||
<div class="col-md-7 p-1">
|
||||
<p class="mb-1">Nama Menu: <strong>${data?.menu?.nama_menu || data?.paket_menu?.nama_menu}</strong></p>
|
||||
@ -24,10 +24,13 @@ function detailOrder(id){
|
||||
${data?.status_order}
|
||||
</span>
|
||||
</p>
|
||||
<p class="mb-1">Catatan: <strong>${data?.catatan || '-'}</strong></p>
|
||||
<hr class="my-2">
|
||||
<p class="mb-1">Pemesan: <strong>${data?.order?.nama_pemesan || '-'}</strong></p>
|
||||
<p class="mb-1">Jenis Kelamin: <strong>${data?.order?.jenis_kelamin || '-'}</strong></p>
|
||||
<p class="mb-1">Jenis Customer: <strong>${data?.order?.jenis_customer || '-'}</strong></p>
|
||||
<p class="mb-1">No.HP / WA: <strong>${data?.order?.no_wa || '-'}</strong></p>
|
||||
<p class="mb-1">Email: <strong>${data?.order?.email || '-'}</strong></p>
|
||||
<p class="mb-1">Tinggi Badan / Berat Badan: <strong>${data?.order?.tinggi_badan || '-'} / ${data?.order?.berat_badan || '-'}</strong></p>
|
||||
${data?.order?.jenis_customer === "Masyarakat Umum" ?
|
||||
`<p class="mb-1">Alamat: <strong>${data?.order?.alamat || '-'}</strong></p>
|
||||
` : data?.order?.jenis_customer === "Karyawan RSAB Harapan Kita" ? `
|
||||
|
||||
@ -13,6 +13,7 @@ const formActionProgressOrder = $("#formActionProgressOrder")
|
||||
|
||||
|
||||
const modalExport = document.getElementById('modalExportPending');
|
||||
const modalExportPekerjaan = document.getElementById('modalExportPekerjaan');
|
||||
|
||||
const datatableOfPekerjaan = $("#datatableVerifikasiMakananOffcanvas")
|
||||
const modalDetailOrder = document.getElementById('modalDetailOrderOf');
|
||||
|
||||
@ -18,8 +18,26 @@ document.addEventListener('DOMContentLoaded', function () {
|
||||
});
|
||||
|
||||
initPekerjaanDt();
|
||||
getReminderVerifikasiMakananOffCanvas()
|
||||
});
|
||||
|
||||
const getReminderVerifikasiMakananOffCanvas = () => {
|
||||
$.ajax({
|
||||
url: `/dashboard/count/verifikasi-pesanan`,
|
||||
success: function (response) {
|
||||
const konfirmasiPesanan = document.getElementById("konfirmasi_pesanan_offcanvas");
|
||||
let count = response.count;
|
||||
|
||||
konfirmasiPesanan.classList.remove('d-none');
|
||||
if(count === 0){
|
||||
konfirmasiPesanan.classList.add('d-none');
|
||||
}
|
||||
konfirmasiPesanan.innerText = count;
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
// Update Label Tanggal
|
||||
function updateTimeLabel(dates) {
|
||||
const $timeLabel = $("#confirm_pekerjaan_time");
|
||||
@ -190,9 +208,10 @@ function detailOrder(id){
|
||||
<p class="mb-1">Harga Satuan: <strong>Rp ${parseInt(data?.harga_satuan || 0).toLocaleString('id-ID')}</strong></p>
|
||||
<p class="mb-1">Status Pesanan:
|
||||
<span class="badge text-dark ${data?.status_order === 'Selesai' ? 'bg-success' : 'bg-warning'}">
|
||||
${data?.status_order}
|
||||
${data?.status_order}
|
||||
</span>
|
||||
</p>
|
||||
<p class="mb-1">Catatan: <strong>${data?.catatan || '-'}</strong></p>
|
||||
<hr class="my-2">
|
||||
<p class="mb-1">Pemesan: <strong>${data?.order?.nama_pemesan || '-'}</strong></p>
|
||||
<p class="mb-1">Jenis Kelamin: <strong>${data?.order?.jenis_kelamin || '-'}</strong></p>
|
||||
@ -232,8 +251,8 @@ function detailOrder(id){
|
||||
function exportPekerjaan(){
|
||||
const offcanvas = bootstrap.Offcanvas.getInstance(document.getElementById('offcanvasKonfirmasiPesanan')) || new bootstrap.Offcanvas(document.getElementById('offcanvasKonfirmasiPesanan'));
|
||||
offcanvas.hide();
|
||||
new bootstrap.Modal(modalExport).show();
|
||||
document.getElementById('formExport').setAttribute('action', '/dashboard/pekerjaan/export')
|
||||
new bootstrap.Modal(modalExportPekerjaan).show();
|
||||
// document.getElementById('formExport').setAttribute('action', '/dashboard/pekerjaan/export')
|
||||
}
|
||||
|
||||
function approve(e){
|
||||
@ -273,6 +292,7 @@ document.getElementById('formActionApproveOrder').addEventListener('submit', fun
|
||||
});
|
||||
datatableOfPekerjaan.bootstrapTable('refresh');
|
||||
getReminderVerifikasiMakanan()
|
||||
getReminderVerifikasiMakananOffCanvas()
|
||||
bootstrap.Modal.getInstance(modalActionOrderPekerjaan).hide();
|
||||
} else {
|
||||
throw new Error(data.message || 'Terjadi kesalahan saat mengubah status.');
|
||||
|
||||
@ -11,7 +11,7 @@ function fetchDetailOrder(order_id){
|
||||
<div class="card shadow-sm border-0">
|
||||
<div class="row g-0">
|
||||
<div class="col-md-5 d-flex align-items-center p-2">
|
||||
<img src="/gambar/${detail?.menu?.foto || 'default.jpg'}" alt="Foto Menu" class="img-fluid rounded shadow" style="max-height: 120px; width: auto;">
|
||||
<img src="/gambar/${detail?.menu?.foto || 'default.jpg'}" alt="Foto Menu" class="img-fluid rounded shadow" style="max-height: 250px; width: auto;">
|
||||
</div>
|
||||
<div class="col-md-5 p-2">
|
||||
<p class="mb-1">Nama Menu: <strong>${detail?.menu?.nama_menu || '-'}</strong></p>
|
||||
@ -33,68 +33,79 @@ function fetchDetailOrder(order_id){
|
||||
}).join('');
|
||||
|
||||
const html = `
|
||||
<div class="row mt-4">
|
||||
<!-- Gambar Bukti Pembayaran -->
|
||||
${data.bukti_pembayaran ? `
|
||||
<div class="col-md-4 text-center mb-3 mb-md-0">
|
||||
<div class="border rounded shadow-sm p-2 bg-light">
|
||||
<img src="/storage/${data.bukti_pembayaran || 'gambar/default.jpg'}"
|
||||
alt="Bukti Pembayaran"
|
||||
class="img-fluid rounded"
|
||||
style="max-height: 170px; width: auto;">
|
||||
<div class="text-muted small mt-2">Bukti Pembayaran</div>
|
||||
</div>
|
||||
</div>` : ''}
|
||||
<div class="row mt-4">
|
||||
|
||||
<!-- Informasi Pemesan -->
|
||||
<div class="${data.bukti_pembayaran ? `col-md-8` : `col-md-12`}">
|
||||
<div class="card shadow-sm border-0">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title text-primary mb-1">${data.nama_pemesan}</h5>
|
||||
<p class="text-muted mb-2">Jenis Customer: <strong>${data.jenis_customer}</strong></p>
|
||||
|
||||
${data?.jenis_customer === 'Keluarga Pasien / Penunggu Pasien' ? `
|
||||
<div class="mb-2">
|
||||
<p class="mb-1">Nama Pasien: <strong>${data.nama_pasien}</strong></p>
|
||||
<p class="mb-1">Nomor Kamar: <strong>${data.no_kamar_perawatan}</strong></p>
|
||||
<p class="mb-1">Ruang Perawatan: <strong>${data.ruang_perawatan}</strong></p>
|
||||
<p class="mb-1">Kelas Perawatan: <strong>${data.kelas_perawatan}</strong></p>
|
||||
</div>` : `
|
||||
<div class="mb-2">
|
||||
<p class="mb-1">Bagian / Instalasi: <strong>${data.bagian_instalasi}</strong></p>
|
||||
<p class="mb-1">Ekstensien: <strong>${data.no_ekstensien || '-'}</strong></p>
|
||||
</div>`}
|
||||
|
||||
<hr>
|
||||
|
||||
<div class="mb-2">
|
||||
<p class="mb-1">No Order: <strong>${data.no_order}</strong></p>
|
||||
<p class="mb-1">Metode Pembayaran: <strong>${data.cara_pembayaran}</strong></p>
|
||||
${data?.cara_pembayaran === 'Billing' ? `
|
||||
<p class="mb-1">No.Medical Record: <strong>${data.medical_record}</strong></p>
|
||||
`: ''}
|
||||
<p class="mb-1">Tanggal Pembayaran: <strong>${data.tgl_pembayaran || '-'}</strong></p>
|
||||
<p class="mb-1">Total Harga: <strong>Rp ${parseInt(data.total_harga).toLocaleString('id-ID')}</strong></p>
|
||||
<!-- Gambar Bukti Pembayaran -->
|
||||
${data.bukti_pembayaran ? `
|
||||
<div class="col-md-4 text-center mb-3 mb-md-0">
|
||||
<div class="border rounded shadow-sm p-2 bg-light">
|
||||
<img
|
||||
src="/storage/${data.bukti_pembayaran || 'gambar/default.jpg'}"
|
||||
alt="Bukti Pembayaran"
|
||||
class="img-fluid rounded"
|
||||
style="max-height: 170px; width: auto;">
|
||||
<div class="text-muted small mt-2">Bukti Pembayaran</div>
|
||||
</div>
|
||||
</div>
|
||||
` : ''}
|
||||
|
||||
<div class="mt-3">
|
||||
<label class="form-label fw-semibold">Status Saat Ini:</label><br>
|
||||
<span class="badge ${data?.status_order === 'Lunas' ? 'bg-success' : 'bg-warning'} text-dark">
|
||||
${data.status_order}
|
||||
</span>
|
||||
<!-- Informasi Pemesan -->
|
||||
<div class="${data.bukti_pembayaran ? 'col-md-8' : 'col-md-12'}">
|
||||
<div class="card shadow-sm border-0">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title text-primary mb-1">${data?.nama_pemesan}</h5>
|
||||
<p class="mb-2">Jenis Customer: <strong>${data?.jenis_customer}</strong></p>
|
||||
<p class="mb-2">Email: <strong>${data?.email || '-'}</strong></p>
|
||||
<p class="mb-2">No.Hp / WA: <strong>${data?.no_wa || '-'}</strong></p>
|
||||
<p class="mb-2">Tinggi Badan / Berat Badan: <strong>${data?.tinggi_badan || '-'} / ${data?.berat_badan || '-'}</strong></p>
|
||||
|
||||
${
|
||||
data?.jenis_customer === "Masyarakat Umum"
|
||||
? `
|
||||
<p class="mb-1">Alamat: <strong>${data?.alamat || '-'}</strong></p>
|
||||
`
|
||||
: data?.jenis_customer === "Karyawan RSAB Harapan Kita"
|
||||
? `
|
||||
<p class="mb-1">Bagian / Instalasi: <strong>${data?.bagian_instalasi || '-'}</strong></p>
|
||||
<p class="mb-1">No Ekstensien: <strong>${data?.no_ekstensien || '-'}</strong></p>
|
||||
`
|
||||
: `
|
||||
<p class="mb-1">Nama Pasien: <strong>${data?.nama_pasien || '-'}</strong></p>
|
||||
<p class="mb-1">Ruang Perawatan: <strong>${data?.ruang_perawatan || '-'}</strong></p>
|
||||
<p class="mb-1">Nomor Kamar Perawatan: <strong>${data?.no_kamar_perawatan || '-'}</strong></p>
|
||||
<p class="mb-1">Kelas Perawatan: <strong>${data?.kelas_perawatan || '-'}</strong></p>
|
||||
`
|
||||
}
|
||||
|
||||
<hr>
|
||||
|
||||
<div class="mb-2">
|
||||
<p class="mb-1">No Order: <strong>${data.no_order}</strong></p>
|
||||
<p class="mb-1">Metode Pembayaran: <strong>${data.cara_pembayaran}</strong></p>
|
||||
${data?.cara_pembayaran === 'Billing' ? `
|
||||
<p class="mb-1">No. Medical Record: <strong>${data.medical_record}</strong></p>
|
||||
` : ''}
|
||||
<p class="mb-1">Tanggal Pembayaran: <strong>${data.tgl_pembayaran || '-'}</strong></p>
|
||||
<p class="mb-1">Total Harga: <strong>Rp ${parseInt(data.total_harga).toLocaleString('id-ID')}</strong></p>
|
||||
</div>
|
||||
|
||||
<div class="mt-3">
|
||||
<label class="form-label fw-semibold">Status Saat Ini:</label><br>
|
||||
<span class="badge ${data?.status_order === 'Lunas' ? 'bg-success' : 'bg-warning'} text-dark">
|
||||
${data.status_order}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr class="my-4">
|
||||
|
||||
<hr class="my-4">
|
||||
|
||||
<div class="row">
|
||||
${detailHTML}
|
||||
</div>
|
||||
`;
|
||||
<div class="row">
|
||||
${detailHTML}
|
||||
</div>
|
||||
`;
|
||||
|
||||
document.getElementById('pesanan_container').innerHTML = html;
|
||||
|
||||
|
||||
@ -57,6 +57,38 @@
|
||||
field: 'cara_pembayaran',
|
||||
sortable: true,
|
||||
},
|
||||
{
|
||||
title: 'Bukti Pembayaran',
|
||||
formatter: function (value, row) {
|
||||
if (row?.cara_pembayaran === 'Transfer' && row?.bukti_pembayaran) {
|
||||
return `
|
||||
<a href="/storage/${row.bukti_pembayaran}" target="_blank" class="btn btn-sm btn-primary">
|
||||
<i class="fa fa-eye"></i> Lihat Bukti
|
||||
</a>
|
||||
`;
|
||||
}
|
||||
|
||||
if (row?.cara_pembayaran === 'Billing') {
|
||||
if (row?.evidence_medical_record) {
|
||||
return `
|
||||
<ul class="list-unstyled">
|
||||
<li>
|
||||
<a href="/storage/${row.evidence_medical_record}" target="_blank" class="btn btn-sm btn-primary">
|
||||
<i class="fa fa-eye"></i> Lihat Bukti Billing
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
No.MR: ${row?.medical_record || '-'}
|
||||
</li>
|
||||
</ul>
|
||||
`;
|
||||
}
|
||||
return `No.MR: ${row?.medical_record || '-'}`;
|
||||
}
|
||||
|
||||
return '';
|
||||
}
|
||||
},
|
||||
{
|
||||
title: "Status Pembayaran",
|
||||
field: 'status_order',
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
const datatableSemuaPesanan = $("#datatableSemuaPesanan")
|
||||
|
||||
const infoPesanan = document.getElementById('infoPesanan')
|
||||
|
||||
const modalExport = document.getElementById('exportSemuaPesananModal')
|
||||
|
||||
@ -20,7 +20,7 @@ function fetchDetailOrder(order_id){
|
||||
<p class="mb-1">Harga: <strong>Rp ${parseInt(detail?.harga_satuan || 0).toLocaleString('id-ID')}</strong></p>
|
||||
<p class="mb-1">Status Pesanan:
|
||||
<span class="badge text-dark ${detail?.status_order === 'Selesai' ? 'bg-success' : 'bg-warning'}"
|
||||
id="status_badge_${detail.order_detail_id}">
|
||||
id="status_badge_${detail?.order_detail_id}">
|
||||
${detail?.status_order}
|
||||
</span>
|
||||
</p>
|
||||
@ -33,70 +33,80 @@ function fetchDetailOrder(order_id){
|
||||
}).join('');
|
||||
|
||||
const html = `
|
||||
<div class="row mt-4">
|
||||
<!-- Gambar Bukti Pembayaran -->
|
||||
${data.bukti_pembayaran ? `
|
||||
<div class="col-md-4 text-center mb-3 mb-md-0">
|
||||
<div class="border rounded shadow-sm p-2 bg-light">
|
||||
<a href="/storage/${data.bukti_pembayaran}" target="_blank">
|
||||
<img src="/storage/${data.bukti_pembayaran || 'gambar/default.jpg'}"
|
||||
alt="Bukti Pembayaran"
|
||||
class="img-fluid rounded"
|
||||
style="max-height: 170px; width: auto;">
|
||||
</a>
|
||||
<div class="text-muted small mt-2">Bukti Pembayaran</div>
|
||||
</div>
|
||||
</div>` : ''}
|
||||
<div class="row mt-4">
|
||||
|
||||
<!-- Informasi Pemesan -->
|
||||
<div class="${data.bukti_pembayaran ? `col-md-8` : `col-md-12`}">
|
||||
<div class="card shadow-sm border-0">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title text-primary mb-1">${data.nama_pemesan}</h5>
|
||||
<p class="text-muted mb-2">Jenis Customer: <strong>${data.jenis_customer}</strong></p>
|
||||
|
||||
${data?.jenis_customer === 'Keluarga Pasien / Penunggu Pasien' ? `
|
||||
<div class="mb-2">
|
||||
<p class="mb-1">Nama Pasien: <strong>${data.nama_pasien}</strong></p>
|
||||
<p class="mb-1">Nomor Kamar: <strong>${data.no_kamar_perawatan}</strong></p>
|
||||
<p class="mb-1">Ruang Perawatan: <strong>${data.ruang_perawatan}</strong></p>
|
||||
<p class="mb-1">Kelas Perawatan: <strong>${data.kelas_perawatan}</strong></p>
|
||||
</div>` : `
|
||||
<div class="mb-2">
|
||||
<p class="mb-1">Bagian / Instalasi: <strong>${data.bagian_instalasi}</strong></p>
|
||||
<p class="mb-1">Ekstensien: <strong>${data.no_ekstensien || '-'}</strong></p>
|
||||
</div>`}
|
||||
|
||||
<hr>
|
||||
|
||||
<div class="mb-2">
|
||||
<p class="mb-1">No Order: <strong>${data.no_order}</strong></p>
|
||||
<p class="mb-1">Metode Pembayaran: <strong>${data.cara_pembayaran}</strong></p>
|
||||
${data?.cara_pembayaran === 'Billing' ? `
|
||||
<p class="mb-1">No.Medical Record: <strong>${data.medical_record}</strong></p>
|
||||
`: ''}
|
||||
<p class="mb-1">Tanggal Pembayaran: <strong>${data.tgl_pembayaran || '-'}</strong></p>
|
||||
<p class="mb-1">Total Harga: <strong>Rp ${parseInt(data.total_harga).toLocaleString('id-ID')}</strong></p>
|
||||
<!-- Gambar Bukti Pembayaran -->
|
||||
${data.bukti_pembayaran ? `
|
||||
<div class="col-md-4 text-center mb-3 mb-md-0">
|
||||
<div class="border rounded shadow-sm p-2 bg-light">
|
||||
<img
|
||||
src="/storage/${data.bukti_pembayaran || 'gambar/default.jpg'}"
|
||||
alt="Bukti Pembayaran"
|
||||
class="img-fluid rounded"
|
||||
style="max-height: 170px; width: auto;">
|
||||
<div class="text-muted small mt-2">Bukti Pembayaran</div>
|
||||
</div>
|
||||
</div>
|
||||
` : ''}
|
||||
|
||||
<div class="mt-3">
|
||||
<label class="form-label fw-semibold">Status Saat Ini:</label><br>
|
||||
<span class="badge ${data?.status_order === 'Lunas' ? 'bg-success' : 'bg-warning'} text-dark">
|
||||
${data.status_order}
|
||||
</span>
|
||||
<!-- Informasi Pemesan -->
|
||||
<div class="${data.bukti_pembayaran ? 'col-md-8' : 'col-md-12'}">
|
||||
<div class="card shadow-sm border-0">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title text-primary mb-1">${data?.nama_pemesan}</h5>
|
||||
<p class="mb-2">Jenis Kelamin: <strong>${data?.jenis_kelamin}</strong></p>
|
||||
<p class="mb-2">Jenis Customer: <strong>${data?.jenis_customer}</strong></p>
|
||||
<p class="mb-2">Email: <strong>${data?.email || '-'}</strong></p>
|
||||
<p class="mb-2">No.Hp / WA: <strong>${data?.no_wa || '-'}</strong></p>
|
||||
<p class="mb-2">Tinggi Badan / Berat Badan: <strong>${data?.tinggi_badan || '-'} / ${data?.berat_badan || '-'}</strong></p>
|
||||
|
||||
${
|
||||
data?.jenis_customer === "Masyarakat Umum"
|
||||
? `
|
||||
<p class="mb-1">Alamat: <strong>${data?.alamat || '-'}</strong></p>
|
||||
`
|
||||
: data?.jenis_customer === "Karyawan RSAB Harapan Kita"
|
||||
? `
|
||||
<p class="mb-1">Bagian / Instalasi: <strong>${data?.bagian_instalasi || '-'}</strong></p>
|
||||
<p class="mb-1">No Ekstensien: <strong>${data?.no_ekstensien || '-'}</strong></p>
|
||||
`
|
||||
: `
|
||||
<p class="mb-1">Nama Pasien: <strong>${data?.nama_pasien || '-'}</strong></p>
|
||||
<p class="mb-1">Ruang Perawatan: <strong>${data?.ruang_perawatan || '-'}</strong></p>
|
||||
<p class="mb-1">Nomor Kamar Perawatan: <strong>${data?.no_kamar_perawatan || '-'}</strong></p>
|
||||
<p class="mb-1">Kelas Perawatan: <strong>${data?.kelas_perawatan || '-'}</strong></p>
|
||||
`
|
||||
}
|
||||
|
||||
<hr>
|
||||
|
||||
<div class="mb-2">
|
||||
<p class="mb-1">No Order: <strong>${data.no_order}</strong></p>
|
||||
<p class="mb-1">Metode Pembayaran: <strong>${data.cara_pembayaran}</strong></p>
|
||||
${data?.cara_pembayaran === 'Billing' ? `
|
||||
<p class="mb-1">No. Medical Record: <strong>${data.medical_record}</strong></p>
|
||||
` : ''}
|
||||
<p class="mb-1">Tanggal Pembayaran: <strong>${data.tgl_pembayaran || '-'}</strong></p>
|
||||
<p class="mb-1">Total Harga: <strong>Rp ${parseInt(data.total_harga).toLocaleString('id-ID')}</strong></p>
|
||||
</div>
|
||||
|
||||
<div class="mt-3">
|
||||
<label class="form-label fw-semibold">Status Saat Ini:</label><br>
|
||||
<span class="badge ${data?.status_order === 'Lunas' ? 'bg-success' : 'bg-warning'} text-dark">
|
||||
${data.status_order}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr class="my-4">
|
||||
|
||||
<hr class="my-4">
|
||||
|
||||
<div class="row">
|
||||
${detailHTML}
|
||||
</div>
|
||||
`;
|
||||
<div class="row">
|
||||
${detailHTML}
|
||||
</div>
|
||||
`;
|
||||
|
||||
document.getElementById('pesanan_container').innerHTML = html;
|
||||
|
||||
@ -113,3 +123,7 @@ function orderLunas(order_id){
|
||||
fetchDetailOrder(order_id)
|
||||
}
|
||||
|
||||
|
||||
function exportSemuaPesanan(){
|
||||
new bootstrap.Modal(modalExport).show();
|
||||
}
|
||||
|
||||
@ -31,6 +31,7 @@
|
||||
title: "Action",
|
||||
field:'order_id',
|
||||
formatter: function(value, row) {
|
||||
|
||||
let buttons = ''
|
||||
if(row?.status_order === "Dibatalkan") return ''
|
||||
|
||||
@ -118,17 +119,35 @@
|
||||
sortable: true,
|
||||
},
|
||||
{
|
||||
title:'Bukti Pembayaran',
|
||||
formatter: function(value, row){
|
||||
if(row?.cara_pembayaran === 'Transfer' && row?.bukti_pembayaran){
|
||||
title: 'Bukti Pembayaran',
|
||||
formatter: function (value, row) {
|
||||
if (row?.cara_pembayaran === 'Transfer' && row?.bukti_pembayaran) {
|
||||
return `
|
||||
<a href="/storage/${row.bukti_pembayaran}" target="_blank" class="btn btn-sm btn-primary">
|
||||
<i class="fa fa-eye"></i> Lihat Bukti
|
||||
</a>
|
||||
`;
|
||||
}else if(row?.cara_pembayaran === 'Billing'){
|
||||
}
|
||||
|
||||
if (row?.cara_pembayaran === 'Billing') {
|
||||
if (row?.evidence_medical_record) {
|
||||
return `
|
||||
<ul class="list-unstyled">
|
||||
<li>
|
||||
<a href="/storage/${row.evidence_medical_record}" target="_blank" class="btn btn-sm btn-primary">
|
||||
<i class="fa fa-eye"></i> Lihat Bukti Billing
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
No.MR: ${row?.medical_record || '-'}
|
||||
</li>
|
||||
</ul>
|
||||
`;
|
||||
}
|
||||
return `No.MR: ${row?.medical_record || '-'}`;
|
||||
}
|
||||
|
||||
return '';
|
||||
}
|
||||
},
|
||||
{
|
||||
|
||||
@ -101,6 +101,12 @@
|
||||
Menu Normal
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="radio" name="data[0][kategori_menu]" id="" value="Menu MCU" required>
|
||||
<label class="form-check-label" for="">
|
||||
Menu MCU
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label for="exampleInputEmail1" class="form-label">Waktu Menu Tersedia</label>
|
||||
|
||||
@ -96,6 +96,12 @@
|
||||
Menu Normal
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="radio" name="data[0][kategori_menu]" id="" value="Menu MCU" required>
|
||||
<label class="form-check-label" for="">
|
||||
Menu MCU
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label for="exampleInputEmail1" class="form-label">Waktu Menu Tersedia</label>
|
||||
|
||||
@ -19,6 +19,7 @@
|
||||
<div class="form-group">
|
||||
<label for="exampleFormControlInput1">Pilih type dokumen</label>
|
||||
<select class="form-control" name="type" required>
|
||||
<option value="" disabled selected>Pilih Type Dokumen</option>
|
||||
<option value="pdf">PDF</option>
|
||||
<option value="excel">Excel</option>
|
||||
</select>
|
||||
@ -38,13 +39,13 @@
|
||||
<div class="col-md-6 mb-2">
|
||||
<div class="form-group">
|
||||
<label for="exampleFormControlInput1">Start Date</label>
|
||||
<input type="date" class="form-control" name="start_date" id="start_date" required>
|
||||
<input type="date" class="form-control" name="start_date" id="start_date_{{ $modalId }}" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6 mb-2">
|
||||
<div class="form-group">
|
||||
<label for="exampleFormControlInput1">End Date</label>
|
||||
<input type="date" class="form-control" name="end_date" id="end_date" required>
|
||||
<input type="date" class="form-control" name="end_date" id="end_date_{{ $modalId }}" required>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -62,9 +63,15 @@
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
const today = new Date().toISOString().split('T')[0]; // Mendapatkan tanggal hari ini dalam format YYYY-MM-DD
|
||||
$('#start_date').val(today);
|
||||
$('#end_date').val(today);
|
||||
});
|
||||
</script>
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
const today = new Date().toISOString().split('T')[0];
|
||||
|
||||
document.querySelectorAll('input[id^="start_date_"]').forEach(input => {
|
||||
input.value = today;
|
||||
});
|
||||
|
||||
document.querySelectorAll('input[id^="end_date_"]').forEach(input => {
|
||||
input.value = today;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
@ -49,7 +49,7 @@
|
||||
<x-modalExport modalId="exportLp" form="/dashboard/export/laporan-pesanan" confirm="Pesanan"/>
|
||||
<x-modalExport modalId="exportPendapatan" form="/dashboard/export/laporan-pendapatan" confirm="Pendapatan"/>
|
||||
<x-infoPesanan modalId="infoPesanan" judulModal="Info Pesanan" />
|
||||
|
||||
|
||||
<script src="{{ ver('/js/laporan_pesanan/_init.js') }}"></script>
|
||||
<script src="{{ ver('/js/laporan_pesanan/dt.js') }}"></script>
|
||||
<script src="{{ ver('/js/laporan_pesanan/action.js') }}"></script>
|
||||
|
||||
@ -0,0 +1,153 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="id">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Laporan Pendapatan</title>
|
||||
<style>
|
||||
body {
|
||||
font-family: Arial, sans-serif;
|
||||
font-size: 10px;
|
||||
line-height: 1.5;
|
||||
margin: 20px;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.header {
|
||||
margin-bottom: 10px;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
|
||||
.header h2 {
|
||||
margin: 0;
|
||||
font-size: 20px;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.header .sub-title {
|
||||
margin: 4px 0 0;
|
||||
font-size: 13px;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.meta {
|
||||
text-align: right;
|
||||
margin-bottom: 15px;
|
||||
font-size: 12px;
|
||||
font-weight: bold;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
margin-top: 5px;
|
||||
table-layout: fixed;
|
||||
}
|
||||
|
||||
th, td {
|
||||
border: 1px solid #ccc;
|
||||
padding: 6px 8px;
|
||||
word-wrap: break-word;
|
||||
word-break: break-word;
|
||||
}
|
||||
|
||||
th {
|
||||
background-color: #f0f0f0;
|
||||
text-align: center;
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
td {
|
||||
font-size: 10px;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
tr:nth-child(even) td {
|
||||
background-color: #f9f9f9;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.footer {
|
||||
position: absolute;
|
||||
bottom: 30px;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
font-size: 10px;
|
||||
color: #999;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="header">
|
||||
<div style=" align-items: center;">
|
||||
<div>
|
||||
<img src="{{ public_path('logo/logo_rsabhk.png') }}" alt="Logo RSAB" style="height: 45px;">
|
||||
</div>
|
||||
<div style="margin-left: 37px; margin-top: -45px; text-align: center;">
|
||||
<h2>{{ $laporan ?? 'Laporan Konfirmasi Pesanan' }} </h2>
|
||||
@if($startDate === $endDate)
|
||||
<div class="sub-title">Periode: {{ $startDate }}</div>
|
||||
@else
|
||||
<div class="sub-title">Periode: {{ $startDate }} - {{ $endDate }}</div>
|
||||
@endif
|
||||
<div class="sub-title">RSAB Harapan Kita</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="meta">
|
||||
Dicetak pada: {{ $waktu_cetak }}
|
||||
</div>
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width:5%;">No</th>
|
||||
<th>No Order</th>
|
||||
<th>Status Bayar</th>
|
||||
<th>Nama Pemesan</th>
|
||||
<th>Jenis Customer</th>
|
||||
<th>Harga Total</th>
|
||||
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@php
|
||||
$no = 1;
|
||||
$totalPendapatan = 0;
|
||||
@endphp
|
||||
@forelse ($orders as $order)
|
||||
<tr>
|
||||
<td>{{ $no++ }}</td>
|
||||
<td>{{ $order->no_order }}</td>
|
||||
<td>{{ $order->status_order . ' ('. $order->cara_pembayaran .')' }}</td>
|
||||
<td>{{ $order->nama_pemesan }}</td>
|
||||
<td>{{ $order->jenis_customer }}</td>
|
||||
<td>Rp {{ number_format($order->total_harga, 0, '.', '.') }}</td>
|
||||
</tr>
|
||||
@php
|
||||
$totalPendapatan += $order->total_harga;
|
||||
@endphp
|
||||
@empty
|
||||
<tr>
|
||||
<td colspan="9" style="text-align: center; color: #888;">Tidak ada data pendapatan</td>
|
||||
</tr>
|
||||
@endforelse
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td colspan="5" style="text-align: right; font-weight: bold;">Total Pendapatan:</td>
|
||||
<td>Rp {{ number_format($totalPendapatan, 0, '.', '.') }}</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
|
||||
<div class="footer">
|
||||
© {{ date('Y') }} RSAB Harapan Kita - Sistem Order Gizi
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@ -0,0 +1,161 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="id">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Laporan Pesanan Pending</title>
|
||||
<style>
|
||||
body {
|
||||
font-family: Arial, sans-serif;
|
||||
font-size: 10px;
|
||||
line-height: 1.5;
|
||||
margin: 20px;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.header {
|
||||
margin-bottom: 10px;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
|
||||
.header h2 {
|
||||
margin: 0;
|
||||
font-size: 20px;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.header .sub-title {
|
||||
margin: 4px 0 0;
|
||||
font-size: 13px;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.meta {
|
||||
text-align: right;
|
||||
margin-bottom: 15px;
|
||||
font-size: 12px;
|
||||
font-weight: bold;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
margin-top: 5px;
|
||||
table-layout: fixed;
|
||||
}
|
||||
|
||||
th, td {
|
||||
border: 1px solid #ccc;
|
||||
padding: 6px 8px;
|
||||
word-wrap: break-word;
|
||||
word-break: break-word;
|
||||
}
|
||||
|
||||
th {
|
||||
background-color: #f0f0f0;
|
||||
text-align: center;
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
td {
|
||||
font-size: 10px;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
tr:nth-child(even) td {
|
||||
background-color: #f9f9f9;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.footer {
|
||||
position: absolute;
|
||||
bottom: 30px;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
font-size: 10px;
|
||||
color: #999;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="header">
|
||||
<div style=" align-items: center;">
|
||||
<div>
|
||||
<img src="{{ public_path('logo/logo_rsabhk.png') }}" alt="Logo RSAB" style="height: 45px;">
|
||||
</div>
|
||||
<div style="margin-left: 37px; margin-top: -45px; text-align: center;">
|
||||
<h2>{{ $laporan ?? 'Laporan Konfirmasi Pesanan' }} </h2>
|
||||
@if($startDate === $endDate)
|
||||
<div class="sub-title">Periode: {{ $startDate }}</div>
|
||||
@else
|
||||
<div class="sub-title">Periode: {{ $startDate }} - {{ $endDate }}</div>
|
||||
@endif
|
||||
<div class="sub-title">RSAB Harapan Kita</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="meta">
|
||||
Dicetak pada: {{ $waktu_cetak }}
|
||||
</div>
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width:5%;">No</th>
|
||||
<th>No Order</th>
|
||||
<th>Status Bayar</th>
|
||||
<th>Nama Pemesan</th>
|
||||
<th>Menu</th>
|
||||
<th>Status Order</th>
|
||||
<th style="width:9%;">Jumlah</th>
|
||||
<th style="width:9%; text-align:center;">Harga Satuan (Rp)</th>
|
||||
<th>Tanggal Antar</th>
|
||||
<th>Waktu Makan</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@php $no = 1; @endphp
|
||||
@forelse ($orders as $order)
|
||||
@foreach ($order->orderDetail as $i => $detail)
|
||||
<tr>
|
||||
<td>{{ $i === 0 ? $no++ : '' }}</td>
|
||||
<td>{{ $i === 0 ? $order->no_order : '' }}</td>
|
||||
<td>{{ $i === 0 ? (($order->status_order === "Belum Bayar" || $order->status_order === "Dibatalkan" ) ? $order->status_order : $order->status_order . ' ('. $order->cara_pembayaran .')' ) : '' }}</td>
|
||||
<td>
|
||||
@if ($i === 0)
|
||||
{{ $order->nama_pemesan }}
|
||||
@if ($order->jenis_customer)
|
||||
<br><small>({{ $order->jenis_customer }})</small>
|
||||
@endif
|
||||
@endif
|
||||
</td>
|
||||
<td>{{ $detail->menu->nama_menu ?? '-' }}</td>
|
||||
<td>{{ $detail->status_order ?? '-' }}</td>
|
||||
<td style="text-align: center;">{{ $detail->jumlah }}</td>
|
||||
<td style="text-align: right;">{{ number_format($detail->harga_satuan, 0, ',', '.') }}</td>
|
||||
<td style="text-align: center;">
|
||||
{{ $detail->tgl_antar
|
||||
? \Carbon\Carbon::parse($detail->tgl_antar)->locale('id')->translatedFormat('d F Y')
|
||||
: '-' }}
|
||||
</td>
|
||||
<td style="text-align: center;">{{ $detail->type }}</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
@empty
|
||||
<tr>
|
||||
<td colspan="9" style="text-align: center; color: #888;">Tidak ada data pesanan</td>
|
||||
</tr>
|
||||
@endforelse
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div class="footer">
|
||||
© {{ date('Y') }} RSAB Harapan Kita – Sistem Order Gizi
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@ -48,8 +48,7 @@
|
||||
|
||||
@include('dashboard.pesanan.pekerjaan.modal.detail')
|
||||
@include('dashboard.pesanan.pekerjaan.modal.action')
|
||||
@include('dashboard.pesanan.pekerjaan.modal.export')
|
||||
|
||||
<x-modalExport modalId="modalExportPekerjaan" form="/dashboard/pekerjaan/export" confirm="Verifikasi Makanan"/>
|
||||
<script src="{{ ver('/js/pekerjaan/_init.js') }}"></script>
|
||||
<script src="{{ ver('/js/pekerjaan/dt.js') }}"></script>
|
||||
<script src="{{ ver('/js/pekerjaan/action.js') }}"></script>
|
||||
|
||||
@ -38,11 +38,14 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<x-modalExport modalId="modalExportPending" form="/dashboard/pending/export" confirm="Konfirmasi Pesanan"/>
|
||||
<x-modalExport modalId="modalExportPekerjaan" form="/dashboard/pekerjaan/export" confirm="Verifikasi Makanan"/>
|
||||
|
||||
@include('dashboard.pesanan.pending.modal.detail')
|
||||
@include('dashboard.pesanan.pending.modal.action')
|
||||
@include('dashboard.pesanan.pending.modal.confirmBilling')
|
||||
@include('dashboard.pesanan.pending.modal.actionProgressPesanan')
|
||||
@include('dashboard.pesanan.pending.modal.export')
|
||||
{{-- @include('dashboard.pesanan.pending.modal.export') --}}
|
||||
@include('dashboard.pesanan.pending.offcanvas.konfirmasiPesanan')
|
||||
@include('dashboard.pesanan.pending.modal.actionPekerjaan')
|
||||
|
||||
@ -52,6 +55,6 @@
|
||||
<script src="{{ ver('/js/pesanan_pending/action.js') }}"></script>
|
||||
<script src="{{ ver('/js/pesanan_pending/action_progres_order.js') }}"></script>
|
||||
|
||||
|
||||
{{-- offcanvas --}}
|
||||
<script src="{{ ver('/js/pesanan_pending/of_dt.js') }}"></script>
|
||||
@endsection
|
||||
|
||||
@ -5,16 +5,20 @@
|
||||
|
||||
<!-- Modal Header -->
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title fs-5">Aksi </h1>
|
||||
<h5 class="modal-title fs-5">Apakah kamu yakin melakukan persetujuan pada order ini ? <strong id="confirmActionApproveBillingOrder"></strong> </h1>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
</div>
|
||||
|
||||
<!-- Modal Form -->
|
||||
<form method="POST" id="formActionApproveBillingOrder">
|
||||
<form method="POST" id="formActionApproveBillingOrder" enctype="multipart/form-data">
|
||||
@csrf
|
||||
@method('put')
|
||||
<div class="modal-body ">
|
||||
Apakah kamu yakin melakukan persetujuan pada order ini ? <strong id="confirmActionApproveBillingOrder"></strong>
|
||||
<div class="modal-body">
|
||||
<div class="mb-3">
|
||||
<label for="exampleInputEmail1" class="form-label">Upload Dokumen</label>
|
||||
<input type="file" class="form-control" name="evidence_medical_record" >
|
||||
<div class="form-text">Upload dokumen pendukung persetujuan order via billing.</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Modal Footer -->
|
||||
|
||||
@ -15,14 +15,24 @@
|
||||
<div class="modal-body">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12 ">
|
||||
<div class="form-group mb-2">
|
||||
<label for="exampleFormControlInput1">Type Document</label>
|
||||
<select class="form-control" name="type" required>
|
||||
<option value="" disabled selected>Select Choose</option>
|
||||
<option value="pdf">PDF</option>
|
||||
<option value="excel">Excel</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<div class="form-group mb-2">
|
||||
<label for="exampleFormControlInput1">Start Date</label>
|
||||
<input type="date" class="form-control" name="start_date" id="start_date" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<div class="col-md-6 ">
|
||||
<div class="form-group mb-2">
|
||||
<label for="exampleFormControlInput1">End Date</label>
|
||||
<input type="date" class="form-control" name="end_date" id="end_date" required>
|
||||
</div>
|
||||
|
||||
@ -36,8 +36,7 @@
|
||||
</div>
|
||||
|
||||
@include('dashboard.pesanan.selesai.modal.actionPesananSelesai')
|
||||
@include('dashboard.pesanan.selesai.modal.export')
|
||||
|
||||
<x-modalExport modalId="modalExportSelesai" form="/dashboard/selesai/export" confirm="Pesanan Selesai"/>
|
||||
<script src="{{ ver('/js/pesanan_selesai/_init.js') }}"></script>
|
||||
<script src="{{ ver('/js/pesanan_selesai/dt.js') }}"></script>
|
||||
<script src="{{ ver('/js/pesanan_selesai/detail_order.js') }}"></script>
|
||||
|
||||
@ -15,14 +15,24 @@
|
||||
<div class="modal-body">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12 ">
|
||||
<div class="form-group mb-2">
|
||||
<label for="exampleFormControlInput1">Type Document</label>
|
||||
<select class="form-control" name="type" required>
|
||||
<option value="" disabled selected>Select Choose</option>
|
||||
<option value="pdf">PDF</option>
|
||||
<option value="excel">Excel</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<div class="form-group mb-2">
|
||||
<label for="exampleFormControlInput1">Start Date</label>
|
||||
<input type="date" class="form-control" name="start_date" id="start_date" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<div class="form-group mb-2">
|
||||
<label for="exampleFormControlInput1">End Date</label>
|
||||
<input type="date" class="form-control" name="end_date" id="end_date" required>
|
||||
</div>
|
||||
|
||||
@ -12,6 +12,9 @@
|
||||
<div class="card-header d-flex justify-content-between align-items-center">
|
||||
<h5 class="mb-0">Semua Pesanan <strong id="confirm_semua_pesanan_time"></strong></h5>
|
||||
<div class="d-flex align-items-center gap-2">
|
||||
<button type="button" class="btn btn-sm btn-outline-secondary" onclick="exportSemuaPesanan()">
|
||||
<i class="fa fa-download me-1"></i> Export
|
||||
</button>
|
||||
<div class="input-group input-group-sm" style="width: 240px;">
|
||||
<span class="input-group-text bg-white">
|
||||
<i class="fa fa-calendar-alt"></i>
|
||||
@ -33,6 +36,7 @@
|
||||
</div>
|
||||
|
||||
<x-infoPesanan modalId="infoPesanan" judulModal="Info Pesanan" />
|
||||
<x-modalExport modalId="exportSemuaPesananModal" form="/dashboard/export/semua-pesanan" confirm="Semua Pesanan"/>
|
||||
|
||||
<script src="{{ ver('/js/semua_pesanan/_init.js') }}"></script>
|
||||
<script src="{{ ver('/js/semua_pesanan/dt.js') }}"></script>
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
<div style='font-family: Arial, sans-serif; max-width: 600px; margin: auto; border: 1px solid #eee; padding: 24px;'>
|
||||
<div style='font-family: Arial, sans-serif; max-width: 600px; margin: auto; border: 1px solid #eee; padding: 24px;'>
|
||||
<img src="/logo/logo_rsabhk.png" alt="RSAB Harapan Kita" style="height: 60px; width:auto; margin-botton: 26px;">
|
||||
<h2 style='color: #28a745;'>✅ Pembayaran Berhasil Diverifikasi</h2>
|
||||
<p>Halo, <strong>{$this->nama}</strong>,</p>
|
||||
<p>Pembayaran kamu untuk pesanan <strong>#{$this->no_order}</strong> telah berhasil kami verifikasi.</p>
|
||||
|
||||
37
resources/views/mail_view/customer.blade.php
Normal file
37
resources/views/mail_view/customer.blade.php
Normal file
@ -0,0 +1,37 @@
|
||||
<div style='font-family: Arial, sans-serif; max-width: 600px; margin: auto; border: 1px solid #eee; padding: 24px;'>
|
||||
<img src='{{ $message->embed(public_path('logo/logo_rsabhk.png')) }}' style='height: 60px; width:auto; margin-botton: 26px;'>
|
||||
<h2 style='color: #28a745;'>✅ Pesanan Berhasil!</h2>
|
||||
<p>Halo, <strong>{{ $pemesan }}</strong>,</p>
|
||||
<p>Terima kasih telah melakukan pemesanan. Berikut detail pesanan Anda:</p>
|
||||
|
||||
<table style='width: 100%; border-collapse: collapse; margin-top: 16px;'>
|
||||
<tr>
|
||||
<td style='padding: 8px; border: 1px solid #ddd;'>No. Order</td>
|
||||
<td style='padding: 8px; border: 1px solid #ddd;'> {{ $noOrder }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style='padding: 8px; border: 1px solid #ddd;'>Tanggal</td>
|
||||
<td style='padding: 8px; border: 1px solid #ddd;'>{{ now()->format('d M Y H:i') }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style='padding: 8px; border: 1px solid #ddd;'>Status</td>
|
||||
<td style='padding: 8px; border: 1px solid #ddd; color: green;'>Menunggu Pembayaran</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style='padding: 8px; border: 1px solid #ddd;'>Nominal Harus Bayar</td>
|
||||
<td style='padding: 8px; border: 1px solid #ddd; color: green;'>Rp {{ number_format($total_harga, 0,',', '.') }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p style='margin-top: 24px;'>Silakan segera lakukan pembayaran.</p>
|
||||
{{-- <ul style='list-style: none; padding: 0;'>
|
||||
<li><strong>Bank:</strong> BCA</li>
|
||||
<li><strong>Nomor Rekening:</strong> 1234-5678-9101</li>
|
||||
<li><strong>Atas Nama:</strong> RSAB Harapan Kita</li>
|
||||
</ul> --}}
|
||||
|
||||
<p style='margin-top: 24px; font-size: 14px; color: #555;'>Jika Anda tidak merasa melakukan pesanan ini, abaikan email ini.</p>
|
||||
|
||||
<hr style='margin-top: 40px;'>
|
||||
<p style='text-align: center; font-size: 12px; color: #888;'>© {{ date('Y') }} RSAB Harapan Kita</p>
|
||||
</div>
|
||||
33
resources/views/mail_view/konfirmasi_pesanan.blade.php
Normal file
33
resources/views/mail_view/konfirmasi_pesanan.blade.php
Normal file
@ -0,0 +1,33 @@
|
||||
<div style="font-family: Arial, sans-serif; max-width: 600px; margin: auto; border: 1px solid #eee; padding: 24px;">
|
||||
<img src="{{ $message->embed(public_path('logo/logo_rsabhk.png')) }}"
|
||||
alt="RSAB Harapan Kita"
|
||||
style="height: 60px; width:auto; margin-bottom: 26px;">
|
||||
|
||||
<h2 style="color: #28a745;">✅ Pembayaran Berhasil Diverifikasi</h2>
|
||||
<p>Halo, <strong>{{ $pemesan }}</strong>,</p>
|
||||
<p>Pembayaran kamu untuk pesanan <strong>#{{ $noOrder }}</strong> telah berhasil kami verifikasi.</p>
|
||||
|
||||
<table style="margin-top: 16px; width: 100%; border-collapse: collapse;">
|
||||
<tr>
|
||||
<td style="padding: 8px; border: 1px solid #ddd;">Nomor Order</td>
|
||||
<td style="padding: 8px; border: 1px solid #ddd;">{{ $noOrder }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 8px; border: 1px solid #ddd;">Total Pembayaran</td>
|
||||
<td style="padding: 8px; border: 1px solid #ddd;">
|
||||
Rp {{ number_format($total_harga, 0, ',', '.') }}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 8px; border: 1px solid #ddd;">Status</td>
|
||||
<td style="padding: 8px; border: 1px solid #ddd; color: green;">Pembayaran Diterima</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p style="margin-top: 24px;">Pesanan kamu sedang kami proses. Silakan tunggu pemberitahuan berikutnya untuk pengambilan makanan.</p>
|
||||
|
||||
<hr style="margin-top: 40px;">
|
||||
<p style="text-align: center; font-size: 12px; color: #888;">
|
||||
© {{ date('Y') }} RSAB Harapan Kita
|
||||
</p>
|
||||
</div>
|
||||
14
resources/views/mail_view/pembayaran.blade.php
Normal file
14
resources/views/mail_view/pembayaran.blade.php
Normal file
@ -0,0 +1,14 @@
|
||||
<div style='font-family: Arial, sans-serif; max-width: 600px; margin: auto; border: 1px solid #eee; padding: 24px;'>
|
||||
<img src="{{ $message->embed(public_path('logo/logo_rsabhk.png')) }}" style='height: 60px; width:auto; margin-botton: 26px;'>
|
||||
<h2 style='color: #0787ffff;'>Menunggu Konfirmasi Pembayaran</h2>
|
||||
<p>Halo, <strong>{{ $pemesan }}</strong>,</p>
|
||||
<p>Kami telah menerima bukti pembayaran untuk pesanan kamu dengan nomor <strong>{{ $noOrder }}</strong>.</p>
|
||||
<p><strong>Tim kami akan segera memverifikasi pembayaran tersebut.</strong></p>
|
||||
|
||||
<p style='margin-top: 16px;'>Mohon tunggu konfirmasi selanjutnya dari admin. Kami akan kirimkan email ketika pembayaran telah diverifikasi.</p>
|
||||
|
||||
<p style='margin-top: 32px; font-size: 14px; color: #555;'>Terima kasih telah melakukan pemesanan.</p>
|
||||
|
||||
<hr style='margin-top: 40px;'>
|
||||
<p style='text-align: center; font-size: 12px; color: #888;'>© {{ date('Y') }} RSAB Harapan Kita</p>
|
||||
</div>
|
||||
@ -64,7 +64,8 @@ Route::group(['middleware' => ['auth']], function(){
|
||||
Route::get('/laporan-pesanan', [PesananController::class, 'laporanPesanan']);
|
||||
Route::get('datatable/laporan-pesanan', [PesananController::class, 'getLaporanPesanan']);
|
||||
Route::post('export/laporan-pesanan', [PesananController::class, 'exportLaporanPesanan']);
|
||||
|
||||
Route::post('export/laporan-pendapatan', [PesananController::class, 'exportLaporanPendapatan']);
|
||||
Route::post('export/semua-pesanan', [PesananController::class, 'exportSemuaPesanan']);
|
||||
|
||||
Route::get('/pekerjaan', [PesananController::class, 'pekerjaan']);
|
||||
Route::get('datatable/pekerjaan', [PesananController::class, 'getPekerjaan']);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user