diff --git a/app/Http/Controllers/Admins/Penjualan/PenjualanController.php b/app/Http/Controllers/Admins/Penjualan/PenjualanController.php index d74efe6..d939019 100644 --- a/app/Http/Controllers/Admins/Penjualan/PenjualanController.php +++ b/app/Http/Controllers/Admins/Penjualan/PenjualanController.php @@ -57,7 +57,6 @@ class PenjualanController extends Controller }) ->addColumn('ubah', function ($data) { return '<div class="btn-group"> - <button href="javascript:void(0)" class="btn btn-xs btn-danger mr-1 cancelOrderBtn" data-id="' . $data->id . '" data-kode_pesanan="' . $data->kode_pesanan . '" data-nama_pemesan="' . $data->nama_pemesan . '">cancel</button> <a class="btn btn-xs btn-warning mr-1" href="javascript:void(0)" onclick="detail(\'' . $data->id . '\')"><i class="fas fa-eye"></i></a> <a class="btn btn-xs btn-success" href="javascript:void(0)" onclick="print(\'' . $data->id . '\')"><i class="fas fa-print"></i></a></div>'; }) @@ -74,7 +73,7 @@ class PenjualanController extends Controller public function getDataDetailPenjualan(Request $request) { - $data = DetailPesanan::with('pesanan')->where('pesanan_id', $request->id_pesanan)->get(); + $data = DetailPesanan::with('pesanan')->where('pesanan_id', $request->id_pesanan)->withTrashed()->get(); $pesanan = Pesanan::find($request->id_pesanan); return response()->json(['status' => true, 'data' => $data, 'pesanan' => $pesanan]); } @@ -130,6 +129,33 @@ class PenjualanController extends Controller } } + public function cancelDetail(Request $request) + { + try { + + DB::beginTransaction(); + $detailPesanan = DetailPesanan::find($request->id); + + $pesanan = Pesanan::find($detailPesanan->pesanan_id); + $pesanan->total_bayar = $pesanan->total_bayar - $detailPesanan->total_harga_produk; + // check the diskon in pesanan + $pesanan->grand_total = $pesanan->total_bayar - $pesanan->diskon_rupiah; + $pesanan->total_pesanan = $pesanan->total_pesanan - $detailPesanan->jumlah_produk; + $pesanan->save(); + + $detailPesanan->status_pesanan = '3'; + $detailPesanan->delete(); + $detailPesanan->save(); + + DB::commit(); + return response()->json(['status' => true, 'message' => 'Pesanan berhasil di cancel']); + } catch (\Throwable $th) { + DB::rollBack(); + return response()->json(['status' => false, 'message' => 'Pesanan gagal di cancel']); + //throw $th; + } + } + public function dibatalkan() { if (request()->ajax()) { diff --git a/app/Http/Controllers/Kasir/History.php b/app/Http/Controllers/Kasir/History.php index 883da52..a95c1f9 100644 --- a/app/Http/Controllers/Kasir/History.php +++ b/app/Http/Controllers/Kasir/History.php @@ -72,7 +72,7 @@ class History extends Controller public function getDataDetailHistory(Request $request) { - $data = DetailPesanan::with('pesanan')->where('pesanan_id', $request->id_pesanan)->get(); + $data = Pesanan::with('detailPesanan')->find($request->id_pesanan); return response()->json(['status' => true, 'data' => $data]); } diff --git a/app/Http/Controllers/Kasir/Transaksi.php b/app/Http/Controllers/Kasir/Transaksi.php index 0a317b0..adf5400 100644 --- a/app/Http/Controllers/Kasir/Transaksi.php +++ b/app/Http/Controllers/Kasir/Transaksi.php @@ -23,7 +23,9 @@ class Transaksi extends Controller public function index() { - $orderCode = "ORD-" . strtoupper(random_str(6, random_str())); + // count pesanan by date now and add 1 for next count pesanan today + $lastCountPesanan = Pesanan::whereDate('created_at', date('Y-m-d'))->count() + 1; + $orderCode = "ORD-" . date('ym') . strtoupper(random_str(3, random_str())) . date('d') . '-' . $lastCountPesanan; $KelompokKategori = KelompokKategori::with('kelompokKategoriPivot.produk')->get(); $aba = RekeningCoa::where('kode_coa', 1)->where('sub_kode_coa', 200)->get(); @@ -105,7 +107,6 @@ class Transaksi extends Controller public function store(Request $request) { - $request->validate([ 'orderCode' => 'required', 'namaPemesan' => 'required', @@ -134,9 +135,16 @@ class Transaksi extends Controller // calculate nomor antrian $nomorAntrian = $lastCountPesanan; - if($request->jenis_pembayaran == "1"){ + $kodenya = substr($request->orderCode, 0, -3); // Menghapus tiga karakter terakhir, + + // check antrian pesanan jika sudah ada di database maka tambahkan 1 untuk nomor antrian selanjutnya + $lastCountPesanan = Pesanan::whereDate('created_at', date('Y-m-d'))->count() + 1; + + $kodenya = $kodenya . $lastCountPesanan; + + if ($request->jenis_pembayaran == "1") { $pesananDatas = [ - 'kode_pesanan' => $request->orderCode, + 'kode_pesanan' => $kodenya, 'nama_pemesan' => $request->namaPemesan, 'nomor_pemesan' => $request->nomorPemesan, 'nomor_meja' => $request->nomorMeja, @@ -155,9 +163,9 @@ class Transaksi extends Controller 'jenis_pembayaran' => $request->jenis_pembayaran, ]; $pesananModels = \App\Models\Pesanan::create($pesananDatas); - }else{ + } else { $pesananDatas = [ - 'kode_pesanan' => $request->orderCode, + 'kode_pesanan' => $kodenya, 'nama_pemesan' => $request->namaPemesan, 'nomor_pemesan' => $request->nomorPemesan, 'nomor_meja' => $request->nomorMeja, @@ -200,56 +208,57 @@ class Transaksi extends Controller 'total_harga_produk' => $value['total'], 'diskon_persen' => $value['diskonSatuan'] ?? null, 'keterangan_produk' => $value['keterangan'] ?? null, + 'status_pesanan' => $value['status_pesanan_dinein'] ?? null, ]; $detailPesananModels = \App\Models\DetailPesanan::create($oderDatas); } // keuangan // jika pembayaran non tunai - if($request->jenis_pembayaran == "2"){ + if ($request->jenis_pembayaran == "2") { BukuBesar::create([ - 'faktur' => 'PJ-'.date('YmdHis'), + 'faktur' => 'PJ-' . date('YmdHis'), 'tanggal' => date('Y-m-d'), 'rekening_coa_id' => $request->id_rekening_coa, 'pesanans_id' => $pesananModels->id, 'kode_rekening_coa' => $request->kode_coa, 'keterangan_coa' => $request->keterangan_coa, - 'keterangan' => 'Penjualan Non Tunai['.$request->orderCode.']', + 'keterangan' => 'Penjualan Non Tunai[' . $request->orderCode . ']', 'debet' => $request->totalDiskon, 'kredit' => 0 ]); BukuBesar::create([ - 'faktur' => 'PJ-'.date('YmdHis'), + 'faktur' => 'PJ-' . date('YmdHis'), 'tanggal' => date('Y-m-d'), 'rekening_coa_id' => "35", 'pesanans_id' => $pesananModels->id, 'kode_rekening_coa' => "4.100.01", 'keterangan_coa' => "Pendapatan Penjualan", - 'keterangan' => 'Penjualan Non Tunai['.$request->orderCode.']', + 'keterangan' => 'Penjualan Non Tunai[' . $request->orderCode . ']', 'debet' => 0, 'kredit' => $request->totalDiskon ]); - // jika pembayaran tunai - }else{ + // jika pembayaran tunai + } else { BukuBesar::create([ - 'faktur' => 'PJ-'.date('YmdHis'), + 'faktur' => 'PJ-' . date('YmdHis'), 'tanggal' => date('Y-m-d'), 'rekening_coa_id' => "2", 'pesanans_id' => $pesananModels->id, 'kode_rekening_coa' => "1.100.01", 'keterangan_coa' => "Kas Kasir", - 'keterangan' => 'Penjualan Tunai['.$request->orderCode.']', + 'keterangan' => 'Penjualan Tunai[' . $request->orderCode . ']', 'debet' => $request->totalDiskon, 'kredit' => 0 ]); BukuBesar::create([ - 'faktur' => 'PJ-'.date('YmdHis'), + 'faktur' => 'PJ-' . date('YmdHis'), 'tanggal' => date('Y-m-d'), 'rekening_coa_id' => "35", 'pesanans_id' => $pesananModels->id, 'kode_rekening_coa' => "4.100.01", 'keterangan_coa' => "Pendapatan Penjualan", - 'keterangan' => 'Penjualan Tunai['.$request->orderCode.']', + 'keterangan' => 'Penjualan Tunai[' . $request->orderCode . ']', 'debet' => 0, 'kredit' => $request->totalDiskon ]); diff --git a/app/Models/DetailPesanan.php b/app/Models/DetailPesanan.php index e0a9753..408d7c5 100644 --- a/app/Models/DetailPesanan.php +++ b/app/Models/DetailPesanan.php @@ -19,6 +19,7 @@ class DetailPesanan extends Model 'nama_produk', 'harga_produk', 'jumlah_produk', + 'status_pesanan', // 0=takeaway,1=default,2=dinein,3=cancel 'total_harga_produk', 'keterangan_produk', 'diskon_id', diff --git a/database/migrations/2024_02_07_150544_add_status_pesanan_in_detail_pesanan_table.php b/database/migrations/2024_02_07_150544_add_status_pesanan_in_detail_pesanan_table.php new file mode 100644 index 0000000..c204542 --- /dev/null +++ b/database/migrations/2024_02_07_150544_add_status_pesanan_in_detail_pesanan_table.php @@ -0,0 +1,28 @@ +<?php + +use Illuminate\Database\Migrations\Migration; +use Illuminate\Database\Schema\Blueprint; +use Illuminate\Support\Facades\Schema; + +return new class extends Migration +{ + /** + * Run the migrations. + */ + public function up(): void + { + Schema::table('detail_pesanans', function (Blueprint $table) { + $table->enum('status_pesanan', [0, 1, 2, 3])->default(1)->comment('0=takeaway,1=default,2=dinein,3=cancel')->after('jumlah_produk'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('detail_pesanans', function (Blueprint $table) { + $table->dropColumn('status_pesanan'); + }); + } +}; diff --git a/resources/views/pages/History/index.blade.php b/resources/views/pages/History/index.blade.php index bfae095..b0bc9b7 100644 --- a/resources/views/pages/History/index.blade.php +++ b/resources/views/pages/History/index.blade.php @@ -50,6 +50,7 @@ <th>Kode Pesanan</th> <th>Pemesan</th> <th>Nomor Meja</th> + <th>Urutan Pesanan</th> <th>Tanggal & Jam</th> <th>Total Pesanan</th> <th>Sub Total</th> @@ -62,6 +63,7 @@ <tr> <th class="text-right" colspan="5">Total</th> <th></th> + <th></th> <th class="text-right"></th> <th></th> <th class="text-right"></th> diff --git a/resources/views/pages/History/js.blade.php b/resources/views/pages/History/js.blade.php index d7a742b..c5307e6 100644 --- a/resources/views/pages/History/js.blade.php +++ b/resources/views/pages/History/js.blade.php @@ -34,6 +34,10 @@ data: 'nomor_meja', name: 'nomor_meja' }, + { + data: 'nomor_antrian', + name: 'nomor_antrian' + }, { data: 'created_at', name: 'created_at' @@ -88,7 +92,7 @@ // GrandTotal over all pages totalAll = api - .column(8) + .column(9) .data() .reduce((a, b) => intVal(a) + intVal(b), 0); @@ -97,7 +101,7 @@ // Total over this page pageTotal = api - .column(6, { + .column(7, { page: 'current' }) .data() @@ -105,15 +109,15 @@ // total pesanan totalPesanan = api - .column(5) + .column(6) .data() .reduce((a, b) => intVal(a) + intVal(b), 0); // Update footer - api.column(5).footer().innerHTML = totalPesanan + ' Item'; - api.column(6).footer().innerHTML = + api.column(6).footer().innerHTML = totalPesanan + ' Item'; + api.column(7).footer().innerHTML = 'Rp. ' + pageTotal.toString().replace(/\B(?=(\d{3})+(?!\d))/g, '.'); - api.column(8).footer().innerHTML = + api.column(9).footer().innerHTML = 'Rp. ' + totalAll.toString().replace(/\B(?=(\d{3})+(?!\d))/g, '.'); } }) @@ -147,13 +151,23 @@ success: function(result) { $('#view_history_detail').empty() if (result.status) { - const data = result.data + const data = result.data.detail_pesanan let nomor = 1 // console.log(data); data.forEach(x => { + if (x.status_pesanan == 0) { + statusnya = '<span class="badge badge-warning">TAKEAWAY</span>'; + } else if (x.status_pesanan == 1) { + statusnya = '<span class="badge badge-info">DINEIN</span>'; + } else if (x.status_pesanan == 2) { + statusnya = '<span class="badge badge-info">DINEIN</span>'; + } else if (x.status_pesanan == 3) { + statusnya = '<span class="badge badge-danger">CANCEL</span>'; + } let tr = $('<tr></tr>') tr.append('<td class="text-center">' + nomor + '</td>') - tr.append('<td>' + x.nama_produk + '</td>') + tr.append('<td>' + x.nama_produk + + statusnya + '</td>') tr.append('<td>' + formatRupiah(x.harga_produk) + '</td>') tr.append('<td class="text-center">' + x.jumlah_produk + '</td>') tr.append('<td>' + formatRupiah(x.total_harga_produk) + '</td>') @@ -163,11 +177,34 @@ $('#view_history_detail').append(tr) nomor++ }) + $('#kode_pesanan').val(result.data.kode_pesanan) + $('#nama_pemesan').val(result.data.nama_pemesan) + $('#tanggal_jam').val(tanggal_jam(result.data.created_at)) + $('#nomor_meja').val(result.data.nomor_meja) + $('#nomor_antrian').val(result.data.nomor_antrian) + $('#total_pesanan').val(result.data.total_pesanan + ' Item') + $('#sub_total').val(formatRupiah(result.data.total_bayar)) + if (result.data.diskon_persen == null) { + result.data.diskon_persen = 0 + } + $('#diskon_persen').val(result.data.diskon_persen + '%') + $('#grand_total').val(formatRupiah(result.data.grand_total)) } } }) $('#modal_detail_history').modal('show') } + + function tanggal_jam(tanggal) { + let date = new Date(tanggal) + let tahun = date.getFullYear() + let bulan = date.getMonth() + 1 + let tanggalnya = date.getDate() + let jam = date.getHours() + let menit = date.getMinutes() + let detik = date.getSeconds() + return `${tanggalnya}-${bulan}-${tahun} ${jam}:${menit}:${detik}` + } </script> {{-- <script> $(document).ready( function () { diff --git a/resources/views/pages/History/modal.blade.php b/resources/views/pages/History/modal.blade.php index e906173..3471535 100644 --- a/resources/views/pages/History/modal.blade.php +++ b/resources/views/pages/History/modal.blade.php @@ -1,13 +1,68 @@ -<div class="modal fade" id="modal_detail_history" aria-labelledby="exampleModalLabel" > +<div class="modal fade" id="modal_detail_history" aria-labelledby="exampleModalLabel"> <div class="modal-dialog modal-lg"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title" id="exampleModalLabel">Detail History</h5> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> - <span aria-hidden="true">×</span> + <span aria-hidden="true">×</span> </button> </div> <div class="modal-body"> + <div class="col-md-12" id="data-pesanan"> + <div class="row"> + <div class="col-md-6"> + <div class="form-group row"> + <label class="col-md-4 col-form-label">Kode Pesanan</label> + <div class="col-md-8"> + <input type="text" class="form-control form-control-sm" id="kode_pesanan" + readonly> + </div> + <label class="col-md-4 col-form-label">Pemesan</label> + <div class="col-md-8"> + <input type="text" class="form-control form-control-sm" id="nama_pemesan" + readonly> + </div> + <label class="col-md-4 col-form-label">Tanggal & Jam</label> + <div class="col-md-8"> + <input type="text" class="form-control form-control-sm" id="tanggal_jam" + readonly> + </div> + <label class="col-md-4 col-form-label">Nomor Meja</label> + <div class="col-md-8"> + <input type="text" class="form-control form-control-sm" id="nomor_meja" readonly> + </div> + <label class="col-md-4 col-form-label">Urutan Pesanan</label> + <div class="col-md-8"> + <input type="text" class="form-control form-control-sm" id="nomor_antrian" + readonly> + </div> + </div> + </div> + <div class="col-md-6"> + <div class="form-group row"> + <label class="col-md-4 col-form-label">Total Pesanan</label> + <div class="col-md-8"> + <input type="text" class="form-control form-control-sm" id="total_pesanan" + readonly> + </div> + <label class="col-md-4 col-form-label">Sub Total</label> + <div class="col-md-8"> + <input type="text" class="form-control form-control-sm" id="sub_total" readonly> + </div> + <label class="col-md-4 col-form-label">Diskon(%)</label> + <div class="col-md-8"> + <input type="text" class="form-control form-control-sm" id="diskon_persen" + readonly> + </div> + <label class="col-md-4 col-form-label">Grand Total</label> + <div class="col-md-8"> + <input type="text" class="form-control form-control-sm" id="grand_total" + readonly> + </div> + </div> + </div> + </div> + </div> <div class="table-responsive mt-3"> <table id="tabelku" class="table table-hover display" style="width: 100%; font-size: 14px;"> <thead> @@ -27,4 +82,4 @@ </div> </div> </div> -</div> \ No newline at end of file +</div> diff --git a/resources/views/pages/Kasir/js.blade.php b/resources/views/pages/Kasir/js.blade.php index a0b5e0e..6d11623 100644 --- a/resources/views/pages/Kasir/js.blade.php +++ b/resources/views/pages/Kasir/js.blade.php @@ -154,7 +154,8 @@ index = i; } else { if (id == menuId) { - isExist = true; + // isExist = true; + // isExist = false; index = i; } } @@ -219,6 +220,10 @@ <button type="button" class="btn btn-default btn-xs btn-flat" onclick="incrementMenu(${row_id}, '${params.nama_produk}')">+</button> </span> </div> + <select name="status_pesanan_dinein" id="status_pesanan_dinein" class="custom-select-mystyle form-control-border"> + <option value="2" selected>Dine In</option> + <option value="0">Take Away</option> + </select> </td> `; table.rows[index].cells[2].innerHTML = ` @@ -266,6 +271,10 @@ <button type="button" class="btn btn-default btn-xs btn-flat" onclick="incrementMenu(${globalId}, '${params.nama_produk}')">+</button> </span> </div> + <select name="status_pesanan_dinein" id="status_pesanan_dinein" class="custom-select-mystyle form-control-border"> + <option value="2" selected>Dine In</option> + <option value="0">Take Away</option> + </select> </td> <td class="text-center"> <div class="input-group input-group-sm"> @@ -300,6 +309,10 @@ <button type="button" class="btn btn-default btn-xs btn-flat" onclick="incrementMenu(${globalId}, '${params.nama_produk}')">+</button> </span> </div> + <select name="status_pesanan_dinein" id="status_pesanan_dinein" class="custom-select-mystyle form-control-border"> + <option value="2" selected>Dine In</option> + <option value="0">Take Away</option> + </select> </td> <td class="text-center"> <div class="input-group input-group-sm"> @@ -385,6 +398,12 @@ var harga = table.rows[index].getAttribute('data-harga'); var valueKeterangan = table.rows[index].cells[0].getElementsByTagName('input')[0].getAttribute( 'data-keterangan'); + var realValueKeterangan = table.rows[index].cells[0].getElementsByTagName('input')[0].value; + if (valueKeterangan != realValueKeterangan) { + valueKeterangan = realValueKeterangan; + } + + var selectNya = table.rows[index].cells[1].getElementsByTagName('select')[0].value; qty = parseInt(qty) + 1; var totalLama = parseInt(total) + parseInt(harga); @@ -417,6 +436,10 @@ <button type="button" class="btn btn-default btn-xs btn-flat" onclick="incrementMenu(${params}, '${nama_produk}')">+</button> </span> </div> + <select name="status_pesanan_dinein" id="status_pesanan_dinein" class="custom-select-mystyle form-control-border"> + <option value="2" ${selectNya == 2 ? 'selected' : ''}>Dine In</option> + <option value="0" ${selectNya == 0 ? 'selected' : ''}>Take Away</option> + </select> </td>`; calculateTotal(); @@ -441,6 +464,9 @@ var harga = table.rows[index].getAttribute('data-harga'); var valueKeterangan = table.rows[index].cells[0].getElementsByTagName('input')[0].getAttribute( 'data-keterangan'); + + var selectNya = table.rows[index].cells[1].getElementsByTagName('select')[0].value; + if (qty > 1) { qty = parseInt(qty) - 1; var totalLama = parseInt(total) - parseInt(harga); @@ -473,6 +499,10 @@ <button type="button" class="btn btn-default btn-xs btn-flat" onclick="incrementMenu(${params}, '${nama_produk}')">+</button> </span> </div> + <select name="status_pesanan_dinein" id="status_pesanan_dinein" class="custom-select-mystyle form-control-border"> + <option value="2" ${selectNya == 2 ? 'selected' : ''}>Dine In</option> + <option value="0" ${selectNya == 0 ? 'selected' : ''}>Take Away</option> + </select> </td> `; @@ -646,7 +676,10 @@ diskonSatuan: diskonSatuan, harga: harga, total: total, - keterangan: document.getElementsByName('keterangan_satuan')[i - 1].value + keterangan: document.getElementsByName('keterangan_satuan')[i - 1] + .value, + status_pesanan_dinein: document.getElementsByName( + 'status_pesanan_dinein')[i - 1].value, }); } } diff --git a/resources/views/pages/Kasir/print.blade.php b/resources/views/pages/Kasir/print.blade.php index f416320..4bdc561 100644 --- a/resources/views/pages/Kasir/print.blade.php +++ b/resources/views/pages/Kasir/print.blade.php @@ -77,23 +77,24 @@ <body style="width: 58mm;"> <!-- Button Print --> - {{-- <div class=""> + <div class=""> <div class="col-6 mb"> <button class="btn btn-info btn-block hidden-print" id="print-dapur">Print</button> </div> - </div> --}} + </div> <br> <h2 style="text-align: center">Sepiring Telur Keriting</h2> <p style="text-align: center">Jln. Jawa No. 28A, Jember</p> <hr class="style2"> + <h4 style="text-align: center">{{ $pesanan->kode_pesanan }}</h4> <span style="display: flex; justify-content: space-between"> <span> <p>{{ tanggal_indonesia($pesanan->tanggal_pesanan) }}</p> <p>{{ date('H:i', strtotime($pesanan->tanggal_pesanan)) }}</p> </span> <span style="text-align: right"> - <p>{{ $pesanan->kode_pesanan }}</p> - <p>Kasir: {{ $pesanan->user->name }}</p> + <p>Kasir:</p> + <p>{{ $pesanan->user->name }}</p> </span> </span> <hr class="style2"> @@ -120,7 +121,9 @@ <tbody> @foreach ($pesanan->detailPesanan as $item) <tr> - <td style="width: 100px;" colspan="5">{{ $item->nama_produk }}</td> + <td style="width: 100px;" colspan="5">{{ $item->nama_produk }} + {{ $item->status_pesanan == 0 ? '(TAKEAWAY)' : ($item->status_pesanan == 3 ? '(CANCEL)' : '(DINEIN)') }} + </td> </tr> <tr> <td></td> @@ -170,14 +173,15 @@ <hr class="dashed-line" style="margin-top: 15px;"> <p style="text-align: center;font-size: 7pt">untuk dapur</p> <hr class="dashed-line" style="margin-top: 10px;"> + <h4 style="text-align: center">{{ $pesanan->kode_pesanan }}</h4> <span style="display: flex; justify-content: space-between"> <span> <p>{{ tanggal_indonesia($pesanan->tanggal_pesanan) }}</p> <p>{{ date('H:i', strtotime($pesanan->tanggal_pesanan)) }}</p> </span> <span style="text-align: right"> - <p>{{ $pesanan->kode_pesanan }}</p> - <p>Kasir: {{ $pesanan->user->name }}</p> + <p>Kasir:</p> + <p>{{ $pesanan->user->name }}</p> </span> </span> <hr class="style2"> @@ -209,6 +213,7 @@ <h4> ({{ $item->jumlah_produk }} X) {{ $item->nama_produk }} + {{ $item->status_pesanan == 0 ? '(TAKEAWAY)' : ($item->status_pesanan == 3 ? '(CANCEL)' : '(DINEIN)') }} </h4> @if ($item->keterangan_produk != '') <p> @@ -309,7 +314,7 @@ // window.close(); // }); - window.print(); + // window.print(); const $btnPrint = document.querySelector("#print-dapur"); $btnPrint.addEventListener("click", () => { diff --git a/resources/views/pages/Kasir/print_dapur.blade.php b/resources/views/pages/Kasir/print_dapur.blade.php index c3f06b5..59a4534 100644 --- a/resources/views/pages/Kasir/print_dapur.blade.php +++ b/resources/views/pages/Kasir/print_dapur.blade.php @@ -77,7 +77,7 @@ <body style="width: 56mm;"> <!-- Button Print --> - {{-- <div class=""> + <div class=""> <div class="col-6 mb"> <button class="btn btn-info btn-block hidden-print" id="print-dapur">Print</button> </div> @@ -87,19 +87,20 @@ <div class="col-6 mb"> <button class="btn btn-danger btn-block hidden-print" id="close">Tutup</button> </div> - </div> --}} + </div> <br> <h2 style="text-align: center">Sepiring Telur Keriting</h2> <p style="text-align: center">Jln. Jawa No. 28A, Jember</p> <hr class="style2"> + <h4 style="text-align: center">{{ $pesanan->kode_pesanan }}</h4> <span style="display: flex; justify-content: space-between"> <span> <p>{{ tanggal_indonesia($pesanan->tanggal_pesanan) }}</p> <p>{{ date('H:i', strtotime($pesanan->tanggal_pesanan)) }}</p> </span> <span style="text-align: right"> - <p>{{ $pesanan->kode_pesanan }}</p> - <p>Kasir: {{ $pesanan->user->name }}</p> + <p>Kasir:</p> + <p>{{ $pesanan->user->name }}</p> </span> </span> <hr class="style2"> @@ -126,7 +127,9 @@ <tbody> @foreach ($pesanan->detailPesanan as $item) <tr> - <td style="width: 100px;" colspan="5">{{ $item->nama_produk }}</td> + <td style="width: 100px;" colspan="5"> + {{ $item->nama_produk }}{{ $item->status_pesanan == 0 ? '(TAKEAWAY)' : ($item->status_pesanan == 3 ? '(CANCEL)' : '(DINEIN)') }} + </td> </tr> <tr> <td></td> @@ -176,14 +179,15 @@ <hr class="dashed-line" style="margin-top: 15px;"> <p style="text-align: center;font-size: 7pt">untuk dapur</p> <hr class="dashed-line" style="margin-top: 10px;"> + <h4 style="text-align: center">{{ $pesanan->kode_pesanan }}</h4> <span style="display: flex; justify-content: space-between"> <span> <p>{{ tanggal_indonesia($pesanan->tanggal_pesanan) }}</p> <p>{{ date('H:i', strtotime($pesanan->tanggal_pesanan)) }}</p> </span> <span style="text-align: right"> - <p>{{ $pesanan->kode_pesanan }}</p> - <p>Kasir: {{ $pesanan->user->name }}</p> + <p>Kasir:</p> + <p>{{ $pesanan->user->name }}</p> </span> </span> <hr class="style2"> @@ -214,7 +218,7 @@ <td style="width: 80px;" colspan="3"> <h4> ({{ $item->jumlah_produk }} X) - {{ $item->nama_produk }} + {{ $item->nama_produk }}{{ $item->status_pesanan == 0 ? '(TAKEAWAY)' : ($item->status_pesanan == 3 ? '(CANCEL)' : '(DINEIN)') }} </h4> @if ($item->keterangan_produk != '') <p> @@ -322,7 +326,7 @@ // window.close(); // }); - window.print(); + // window.print(); const $btnPrint = document.querySelector("#print-dapur"); $btnPrint.addEventListener("click", () => { diff --git a/resources/views/pages/Kasir/print_dapur_2x.blade.php b/resources/views/pages/Kasir/print_dapur_2x.blade.php index 7fe2608..8759bea 100644 --- a/resources/views/pages/Kasir/print_dapur_2x.blade.php +++ b/resources/views/pages/Kasir/print_dapur_2x.blade.php @@ -77,25 +77,26 @@ <body style="width: 58mm;"> <!-- Button Print --> - {{-- <div class=""> + <div class=""> <div class="col-6 mb"> <button class="btn btn-info btn-block hidden-print" id="print-dapur">Print</button> </div> - </div> --}} + </div> <br> @for ($i = 0; $i < 2; $i++) <hr class="dashed-line" style="margin-top: 15px;"> <p style="text-align: center;font-size: 7pt">Print Dapur</p> <hr class="dashed-line" style="margin-top: 10px;"> <hr class="style2"> + <h4 style="text-align: center">{{ $pesanan->kode_pesanan }}</h4> <span style="display: flex; justify-content: space-between"> <span> <p>{{ tanggal_indonesia($pesanan->tanggal_pesanan) }}</p> <p>{{ date('H:i', strtotime($pesanan->tanggal_pesanan)) }}</p> </span> <span style="text-align: right"> - <p>{{ $pesanan->kode_pesanan }}</p> - <p>Kasir: {{ $pesanan->user->name }}</p> + <p>Kasir:</p> + <p>{{ $pesanan->user->name }}</p> </span> </span> <hr class="style2"> @@ -125,7 +126,7 @@ <tr> <td style="width: 80px;" colspan="3"> ({{ $item->jumlah_produk }} X) - {{ $item->nama_produk }} + {{ $item->nama_produk }}{{ $item->status_pesanan == 0 ? '(TAKEAWAY)' : ($item->status_pesanan == 3 ? '(CANCEL)' : '(DINEIN)') }} @if ($item->keterangan_produk != '') <p> ket: {{ $item->keterangan_produk }} @@ -226,7 +227,7 @@ // window.close(); // }); - window.print(); + // window.print(); const $btnPrint = document.querySelector("#print-dapur"); $btnPrint.addEventListener("click", () => { diff --git a/resources/views/pages/Kasir/print_dapur_3x.blade.php b/resources/views/pages/Kasir/print_dapur_3x.blade.php index 2474a41..ae6fe9f 100644 --- a/resources/views/pages/Kasir/print_dapur_3x.blade.php +++ b/resources/views/pages/Kasir/print_dapur_3x.blade.php @@ -77,25 +77,26 @@ <body style="width: 58mm;"> <!-- Button Print --> - {{-- <div class=""> + <div class=""> <div class="col-6 mb"> <button class="btn btn-info btn-block hidden-print" id="print-dapur">Print</button> </div> - </div> --}} + </div> <br> @for ($i = 0; $i < 3; $i++) <hr class="dashed-line" style="margin-top: 15px;"> <p style="text-align: center;font-size: 7pt">Print Dapur</p> <hr class="dashed-line" style="margin-top: 10px;"> <hr class="style2"> + <h4 style="text-align: center">{{ $pesanan->kode_pesanan }}</h4> <span style="display: flex; justify-content: space-between"> <span> <p>{{ tanggal_indonesia($pesanan->tanggal_pesanan) }}</p> <p>{{ date('H:i', strtotime($pesanan->tanggal_pesanan)) }}</p> </span> <span style="text-align: right"> - <p>{{ $pesanan->kode_pesanan }}</p> - <p>Kasir: {{ $pesanan->user->name }}</p> + <p>Kasir:</p> + <p>{{ $pesanan->user->name }}</p> </span> </span> <hr class="style2"> @@ -126,7 +127,7 @@ <td style="width: 80px;" colspan="3"> <h4> ({{ $item->jumlah_produk }} X) - {{ $item->nama_produk }} + {{ $item->nama_produk }}{{ $item->status_pesanan == 0 ? '(TAKEAWAY)' : ($item->status_pesanan == 3 ? '(CANCEL)' : '(DINEIN)') }} </h4> @if ($item->keterangan_produk != '') <p> @@ -229,7 +230,7 @@ // window.close(); // }); - window.print(); + // window.print(); const $btnPrint = document.querySelector("#print-dapur"); $btnPrint.addEventListener("click", () => { diff --git a/resources/views/pages/Kasir/transaksi.blade.php b/resources/views/pages/Kasir/transaksi.blade.php index 7bf7654..3b0de96 100644 --- a/resources/views/pages/Kasir/transaksi.blade.php +++ b/resources/views/pages/Kasir/transaksi.blade.php @@ -422,8 +422,8 @@ <thead style="background-color: rgb(230, 230, 230)"> <tr> <th class="text-center">Menu</th> - <th class="text-center" width="110px">Qty</th> - <th class="text-center" width="65px">(%)</th> + <th class="text-center" width="115px">Qty</th> + <th class="text-center" width="70px">(%)</th> <th class="text-center" width="30px"> <i class="fas fa-cog"></i> </th> @@ -562,6 +562,28 @@ </style> <link rel="stylesheet" href="{{ asset('assets/plugins/toastr/toastr.min.css') }}"> <link rel="stylesheet" href="{{ asset('assets/datatables/datatables.min.css') }}"> + + <style> + .custom-select-mystyle { + display: inline-block; + width: 100%; + height: calc(2.25rem + 2px); + padding: .375rem .375rem .375rem .375em; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: #495057; + vertical-align: middle; + background: #fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .175rem center/8px 10px no-repeat; + border: 1px solid #ced4da; + border-radius: .25rem; + box-shadow: inset 0 1px 2px rgba(0, 0, 0, .075); + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: cyan; + } + </style> @endpush @include('pages.Kasir.js') diff --git a/resources/views/pages/admin/penjualan/index.blade.php b/resources/views/pages/admin/penjualan/index.blade.php index 8592765..68fced4 100644 --- a/resources/views/pages/admin/penjualan/index.blade.php +++ b/resources/views/pages/admin/penjualan/index.blade.php @@ -50,9 +50,9 @@ </form> </div> <div class="col-md-2" style="text-align: right"> - <a class="btn btn-sm btn-info mt-4" id="penjualan_cancel" + {{-- <a class="btn btn-sm btn-info mt-4" id="penjualan_cancel" href="{{ route('penjualan.dibatalkan') }}"><i class="fas fa-table mr-1"></i>Penjualan - Dibatalkan</a> + Dibatalkan</a> --}} </div> </div> <div class="col-md-12"> diff --git a/resources/views/pages/admin/penjualan/js.blade.php b/resources/views/pages/admin/penjualan/js.blade.php index f7ef591..f2c3ac3 100644 --- a/resources/views/pages/admin/penjualan/js.blade.php +++ b/resources/views/pages/admin/penjualan/js.blade.php @@ -161,6 +161,19 @@ tr.append('<td class="text-center">' + x.jumlah_produk + '</td>') tr.append('<td class="text-center">' + x.diskon_persen + '%</td>') tr.append('<td>' + formatRupiah(x.total_harga_produk) + '</td>') + if (x.status_pesanan != 3) { + tr.append( + '<td class="text-center"><button class="btn btn-danger btn-sm cancelOrderDetailBtn" data-id="' + + x.id + '" data-produk="' + x.nama_produk + + '">cancel</button></td>') + } else { + tr.append( + '<td class="text-center"><button class="btn btn-warning btn-sm disabled" data-id="' + + x.id + '" data-produk="' + x.nama_produk + + '">tercancel</button></td>') + } + // cetakStruk + $('#cetakStruk').attr('onclick', 'print(' + result.pesanan.id + ')') $('#view_penjualan_detail').append(tr) nomor++ }) @@ -171,12 +184,20 @@ tfoot.append('<td>' + formatRupiah(result.pesanan.grand_total) + '</td>') tfoot.append('<td colspan="2"></td>') $('#view_penjualan_detail_tfoot').empty().append(tfoot) - // set attribute to label $('#kode_pesanan').text('Kode Pesanan: ' + result.pesanan.kode_pesanan) $('#nama_pemesan').text('Nama Pemesan: ' + result.pesanan.nama_pemesan) $('#nomor_meja').text('Nomor Meja: ' + result.pesanan.nomor_meja) + $('#urutan_pesanan').text('Urutan Pesanan: ' + result.pesanan.nomor_antrian) $('#tanggal_pesan').text('Tanggal Pesan: ' + result.pesanan.tanggal_pesanan) + $('#total_pesanan').text('Total Pesanan: ' + result.pesanan.total_pesanan + ' Item') + $('#sub_total_pesanan').text('Sub Total: ' + formatRupiah(result.pesanan.total_bayar)) + if (result.pesanan.diskon_persen == null) { + result.pesanan.diskon_persen = 0 + } + $('#diskon_persen_pesanan').text('Diskon(%): ' + result.pesanan.diskon_persen + '%') + $('#grand_total_pesanan').text('Grand Total: ' + formatRupiah(result.pesanan + .grand_total)) // attach attribute to button $('#cancelPesanan').attr('data-id', result.pesanan.id) @@ -263,6 +284,53 @@ }) }) + $(document).on('click', '.cancelOrderDetailBtn', function() { + // get arttibute data-kode_pesanan from button + let id = $(this).attr('data-id'); + let produk = $(this).attr('data-produk'); + + var text = "Membatalkan pesanan dengan data <br> Menu Pesanan: " + produk + + " ?"; + Swal.fire({ + title: 'Apakah anda yakin?', + html: text, + icon: 'warning', + showCancelButton: true, + confirmButtonColor: '#3085d6', + cancelButtonColor: '#d33', + confirmButtonText: 'Ya, Hapus!', + cancelButtonText: 'Batal' + }).then((result) => { + if (result.isConfirmed) { + $.ajax({ + type: "DELETE", + url: "{{ route('penjualan.cancelDetail') }}", + data: { + _token: "{{ csrf_token() }}", + id: id + }, + success: function(result) { + console.log(result); + if (result.status) { + Swal.fire( + 'Berhasil!', + result.message, + 'success' + ) + $('#tabelku').DataTable().ajax.reload(); + } else { + Swal.fire( + 'Gagal!', + result.message, + 'error' + ) + } + } + }) + } + }) + }) + function cancelPesanan(id, kode, nama) { var text = "Membatalkan pesanan dengan data Kode Pesanan: " + kode + " Nama Pemesan: " + diff --git a/resources/views/pages/admin/penjualan/modal.blade.php b/resources/views/pages/admin/penjualan/modal.blade.php index c24f4eb..c5d69a1 100644 --- a/resources/views/pages/admin/penjualan/modal.blade.php +++ b/resources/views/pages/admin/penjualan/modal.blade.php @@ -8,11 +8,20 @@ </button> </div> <div class="modal-body"> - <div class="col-md-12"> - <label for="kode_pesanan" id="kode_pesanan"></label><br> - <label for="nama_pemesan" id="nama_pemesan"></label><br> - <label for="nomor_meja" id="nomor_meja"></label><br> - <label for="tanggal_pesan" id="tanggal_pesan"></label> + <div class="row"> + <div class="col-md-6"> + <label for="kode_pesanan" id="kode_pesanan"></label><br> + <label for="nama_pemesan" id="nama_pemesan"></label><br> + <label for="nomor_meja" id="nomor_meja"></label><br> + <label for="urutan_pesanan" id="urutan_pesanan"></label><br> + <label for="tanggal_pesan" id="tanggal_pesan"></label><br> + </div> + <div class="col-md-6"> + <label for="total_pesanan" id="total_pesanan"></label><br> + <label for="sub_total" id="sub_total_pesanan"></label><br> + <label for="diskon_persen" id="diskon_persen_pesanan"></label><br> + <label for="grand_total" id="grand_total_pesanan"></label><br> + </div> </div> <div class="table-responsive mt-3"> <table id="tabelku" class="table table-hover display" style="width: 100%; font-size: 14px;"> @@ -25,6 +34,9 @@ <th class="text-center">Jumlah Terjual</th> <th class="text-center">Diskon(%)</th> <th>Total Harga</th> + <th class="text-center"> + <i class="fas fa-cog"></i> + </th> </tr> </thead> <tbody id="view_penjualan_detail"></tbody> @@ -34,8 +46,12 @@ </div> <div class="modal-footer justify-content-between"> <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> - <button href="javascript:void(0)" class="btn btn-danger mr-1" id="cancelPesanan">cancel - pesanan</button> + + <div class="btn-group"> + <button href="javascript:void(0)" class="btn btn-danger mr-1" id="cancelPesanan">Cancel Seluruh + Pesanan</button> + <button href="javascript:void(0)" class="btn btn-primary" id="cetakStruk">Cetak Struk</button> + </div> </div> </div> </div> diff --git a/routes/web.php b/routes/web.php index 856a1e0..c65702d 100644 --- a/routes/web.php +++ b/routes/web.php @@ -133,6 +133,7 @@ Route::group(['middleware' => ['auth', 'permission']], function () { Route::post('/laporan', [PenjualanController::class, 'laporan'])->name('penjualan.laporan')->comment('Halaman Laporan Penjualan'); Route::post('/getDataDetailPenjualan', [PenjualanController::class, 'getDataDetailPenjualan'])->name('penjualan.getDataDetailPenjualan')->comment("Ambil data Detail Riwayat Transaksi Penjualan"); Route::delete('/cancel', [PenjualanController::class, 'cancel'])->name('penjualan.cancel')->comment("Cancel order transaksi penjualan"); + Route::delete('/cancelDetail', [PenjualanController::class, 'cancelDetail'])->name('penjualan.cancelDetail')->comment("Cancel Detail order transaksi penjualan"); Route::get('/dibatalkan', [PenjualanController::class, 'dibatalkan'])->name('penjualan.dibatalkan')->comment("Halaman Transaksi Dibatalkan"); });