104 lines
3.6 KiB
PHP
104 lines
3.6 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Kasir;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\KelompokKategori;
|
|
use App\Models\Produk;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
class Transaksi extends Controller
|
|
{
|
|
|
|
public function index()
|
|
{
|
|
$orderCode = "ORD -" . strtoupper(random_str(6, random_str()));
|
|
$KelompokKategori = KelompokKategori::with('kelompokKategoriPivot.produk')->get();
|
|
$produk = Produk::all();
|
|
return view('pages.Kasir.transaksi', compact('orderCode', 'KelompokKategori', 'produk'));
|
|
}
|
|
|
|
public function store(Request $request)
|
|
{
|
|
$request->validate([
|
|
'orderCode' => 'required',
|
|
'namaPemesan' => 'required',
|
|
'orderMenus' => 'required',
|
|
], [
|
|
'orderCode.required' => 'Kode pesanan tidak boleh kosong',
|
|
'namaPemesan.required' => 'Nama pemesan 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,
|
|
'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'],
|
|
];
|
|
$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($KODE)
|
|
{
|
|
$produk = Produk::where('kode_produk', $KODE)->get();
|
|
dd($produk);
|
|
return response()->json($produk);
|
|
}
|
|
}
|