get(); foreach ($KelompokKategori as $item) { foreach ($item->kelompokKategoriPivot as $kelompokKategoriPivot) { // Query tambahan untuk mendapatkan total pembelian berdasarkan produk $totalPembelianByProduk[$kelompokKategoriPivot->produk->id] = DetailPesanan::select('detail_pesanans.produk_id', DB::raw('SUM(detail_pesanans.jumlah_produk) as total_beli')) ->where('detail_pesanans.produk_id', '=', $kelompokKategoriPivot->produk->id) ->groupBy('detail_pesanans.produk_id') ->first(); } } $produk = Produk::all(); return view('pages.Kasir.transaksi', compact('orderCode', 'KelompokKategori', 'produk', 'totalPembelianByProduk')); } public function getCetakTigaKali() { $data = Pesanan::with(['detailPesanan', 'user'])->where('status_printer', null)->get(); $nomor = 1; return $datatables = datatables() ->of($data) ->addColumn('nomor', function ($data) use (&$nomor) { return $nomor++; }) ->addColumn('nama_user', function ($data) { return $data->user->name; }) ->addColumn('created_at', function ($data) { return \Carbon\Carbon::parse($data->created_at)->format('d F Y H:i:s'); }) ->addColumn('grand_total', function ($data) { return 'Rp ' . number_format($data->grand_total, 0, ',', '.'); }) ->addColumn('ubah', function ($data) { return '
'; }) ->rawColumns(['nomor', 'nama_user', 'created_at', 'grand_total', 'ubah']) ->make(true); } public function printTigaKali($id) { $pesanan = \App\Models\Pesanan::with('detailPesanan', 'user')->find($id); $data = Pesanan::where('id', $id); $data->update([ 'status_printer' => 1 ]); return view('pages.Kasir.print_dapur_3x', compact('pesanan')); } public function store(Request $request) { $request->validate([ 'orderCode' => 'required', 'namaPemesan' => 'required', 'nomorMeja' => 'required', 'orderMenus' => 'required', ], [ 'orderCode.required' => 'Kode pesanan tidak boleh kosong', 'namaPemesan.required' => 'Nama pemesan tidak boleh kosong', 'nomorMeja.required' => 'Nomor meja tidak boleh kosong', 'orderMenus.required' => 'Pesanan tidak boleh kosong', ]); try { DB::beginTransaction(); $orderMenusQty = 0; $orderMenusRupiah = 0; foreach ($request->orderMenus as $key => $value) { $orderMenusQty += $value['qty']; $orderMenusRupiah += $value['total']; } $pesananDatas = [ 'kode_pesanan' => $request->orderCode, 'nama_pemesan' => $request->namaPemesan, 'nomor_meja' => $request->nomorMeja, 'status_pesanan' => '1', 'tanggal_pesanan' => date('Y-m-d H:i:s'), 'keterangan_pesanan' => $request->keteranganPesanan ?? null, 'total_pesanan' => $orderMenusQty, 'total_bayar' => $orderMenusRupiah, 'grand_total' => $request->totalDiskon, 'nominal_bayar' => $request->nominalBayar, 'diskon_persen' => $request->diskon, 'nominal_kembali' => $request->kembali, 'status_bayar' => '1', 'user_id' => '1', ]; $pesananModels = \App\Models\Pesanan::create($pesananDatas); foreach ($request->orderMenus as $key => $value) { $oderDatas = [ 'pesanan_id' => $pesananModels->id, 'produk_id' => $value['id'], 'nama_produk' => $value['nama'], 'jumlah_produk' => $value['qty'], 'harga_produk' => $value['harga'], 'total_harga_produk' => $value['total'], 'diskon_persen' => $value['diskonSatuan'] ?? null, 'keterangan_produk' => $value['keterangan'] ?? null, ]; $detailPesananModels = \App\Models\DetailPesanan::create($oderDatas); } DB::commit(); // return url link page print return ['url' => route('transaksi.print', $pesananModels->id) . '?print=true', 'message' => 'Pesanan berhasil ditambahkan']; } catch (\Throwable $th) { DB::rollBack(); dd($th->getMessage()); return redirect()->back()->with('error', 'Terjadi kesalahan'); } return redirect()->back()->with('success', 'Pesanan berhasil ditambahkan'); } public function print($id) { $pesanan = \App\Models\Pesanan::with('detailPesanan', 'user')->find($id); return view('pages.Kasir.print', compact('pesanan')); } public function detail($id) { $pesanan = \App\Models\Pesanan::with('detailPesanan', 'user')->find($id); return view('pages.Kasir.detail', compact('pesanan')); } public function selectPaket(Request $request) { $arrayKodeProduk = $request->kodeProduk; // tampung data kodeProduk dari request ke variabel $kodeProduk $kodeProduk = []; usort($arrayKodeProduk, function ($a, $b) { return $a['urutan'] - $b['urutan']; }); foreach ($arrayKodeProduk as $key => $value) { $kodeProduk[] = $value['kode_produk']; } $hasil = []; $hasil[] = implode(' ', $kodeProduk); // cari data produk berdasarkan kodeProduk $produk = Produk::where('kode_produk', $hasil)->first(); // dd($produk); return response()->json($produk); } }