get(); $aba = RekeningCoa::where('kode_coa', 1)->where('sub_kode_coa', 200)->get(); // dd($KelompokKategori); // Set locale Jakarta (ID) untuk Carbon // Carbon::setLocale('id_ID'); // Sekarang Carbon akan menggunakan format dan pengaturan waktu yang sesuai dengan locale Jakarta // $tgl_sekarang = Carbon::now(); // $allProduk = []; // $produk = Produk::where('tgl_start_promo', '<=', $tgl_sekarang)->where('tgl_end_promo', '>=', $tgl_sekarang)->get(); return view('pages.Kasir.transaksi', compact('orderCode', 'KelompokKategori', 'aba')); } 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 printDapurTigaKali($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 printDapurDuaKali($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_2x', compact('pesanan')); } public function printDapurSatuKali($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', 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']; } // $ get last count pesanan by date now and add 1 for next count pesanan today $lastCountPesanan = Pesanan::whereDate('created_at', date('Y-m-d'))->count() + 1; // calculate nomor antrian $nomorAntrian = $lastCountPesanan; $pesananDatas = [ 'kode_pesanan' => $request->orderCode, 'nama_pemesan' => $request->namaPemesan, 'nomor_pemesan' => $request->nomorPemesan, 'nomor_meja' => $request->nomorMeja, 'status_pesanan' => '1', 'tanggal_pesanan' => date('Y-m-d H:i:s'), 'keterangan_pesanan' => $request->keteranganPesanan ?? null, 'nomor_antrian' => $nomorAntrian, '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', 'jenis_pembayaran' => $request->jenis_pembayaran, 'coa_kas' => $request->coa_kas, ]; $pesananModels = \App\Models\Pesanan::create($pesananDatas); foreach ($request->orderMenus as $key => $value) { // calculate produk promo untuk mengurangi stok $produk = Produk::find($value['id']); foreach ($produk->kelompokKategori as $key => $value2) { if ($value2->kode_kelompok_kategori == 'PROMO') { if ($produk->stok_promo != 0 || $produk->stok_promo != null) { $produk->stok_promo = $produk->stok_promo - $value['qty']; $produk->save(); } } } $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); } // keuangan // jika pembayaran tunai if($request->jenis_pembayaran == "1"){ BukuBesar::create([ 'faktur' => 'PJ-'.date('YmdHis'), 'tanggal' => date('Y-m-d'), 'rekening_coa_id' => "2", 'kode_rekening_coa' => "1.100.01", 'keterangan_coa' => "Kas Kasir", 'keterangan' => 'Penjualan Tunai['.$request->orderCode.']', 'debet' => $request->totalDiskon, 'kredit' => 0 ]); BukuBesar::create([ 'faktur' => 'PJ-'.date('YmdHis'), 'tanggal' => date('Y-m-d'), 'rekening_coa_id' => "35", 'kode_rekening_coa' => "4.100.01", 'keterangan_coa' => "Pendapatan Penjualan", 'keterangan' => 'Penjualan Tunai['.$request->orderCode.']', 'debet' => 0, 'kredit' => $request->totalDiskon ]); // jika pembayaran non tunai }else{ } 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); } }