diff --git a/app/Http/Controllers/Admins/Dashboard/DounatController.php b/app/Http/Controllers/Admins/Dashboard/DounatController.php new file mode 100644 index 0000000..1ab872e --- /dev/null +++ b/app/Http/Controllers/Admins/Dashboard/DounatController.php @@ -0,0 +1,54 @@ +menuPaket(); + $menuIrit = $this->menuIrit(); + + return ResponseFormatter::success(['menuPaket' => $menuPaket, 'menuIrit' => $menuIrit]); + } + + public function menuPaket() + { + // get menu terlaris where kelompok kategori id = 1 + $data = MenuTerlarisView::whereHas('kelompokKategoriPivot', function ($query) { + $query->where('kelompok_kategori_id', 1); + })->where([ + ['nama_produk', 'not like', '%paket irit%'], + ['kode_produk', 'not regexp', '^[a-zA-Z0-9]{2}$'], + ['kode_produk', 'not regexp', '^[a-zA-Z0-9]{4}$'] + ])->orderBy('jumlah_produk_terjual', 'desc')->limit(6)->get(); + + return [ + 'labels' => $data->pluck('nama_produk'), + 'data' => $data->pluck('jumlah_produk_terjual') + ]; + } + + public function menuIrit() + { + // get menu terlaris where kelompok kategori id = 1 + $data = MenuTerlarisView::whereHas('kelompokKategoriPivot', function ($query) { + $query->where([['kelompok_kategori_id', 2]]); + })->where([ + ['nama_produk', 'like', '%paket irit%'], + ['kode_produk', 'not regexp', '^[a-zA-Z0-9]{2}$'] + ])->orderBy('jumlah_produk_terjual', 'desc')->limit(6)->get(); + + return [ + 'labels' => $data->pluck('nama_produk'), + 'data' => $data->pluck('jumlah_produk_terjual') + ]; + } +} diff --git a/app/Http/Controllers/Admins/Dashboard/DounatSatuanController.php b/app/Http/Controllers/Admins/Dashboard/DounatSatuanController.php new file mode 100644 index 0000000..684d667 --- /dev/null +++ b/app/Http/Controllers/Admins/Dashboard/DounatSatuanController.php @@ -0,0 +1,102 @@ +nasi(); + $sambal = $this->sambal(); + $lauk = $this->lauk(); + + return ResponseFormatter::success(['menuNasi' => $nasi, 'menuSambal' => $sambal, 'menuLauk' => $lauk]); + } + + public function nasi() + { + // get menu terlaris where kelompok kategori id = 1 + $nasiPutih = MenuTerlarisView::where('nama_produk', 'like', '%nasi putih%') + ->whereNull('tgl_start_promo') + ->get(); + + $nasiJeruk = MenuTerlarisView::where('nama_produk', 'like', '%nasi jeruk%') + ->whereNull('tgl_start_promo') + ->get(); + + $nasiPecel = MenuTerlarisView::where('nama_produk', 'like', '%nasi pecel%') + ->whereNull('tgl_start_promo') + ->get(); + + return [ + 'labels' => ['Nasi Putih', 'Nasi Jeruk', 'Nasi Pecel'], + 'data' => [$nasiPutih->sum('jumlah_produk_terjual'), $nasiJeruk->sum('jumlah_produk_terjual'), $nasiPecel->sum('jumlah_produk_terjual')] + ]; + } + + public function sambal() + { + // get menu terlaris where kelompok kategori id = 1 + $sambalMatah = MenuTerlarisView::where('nama_produk', 'like', '%sambal matah%') + ->whereNull('tgl_start_promo') + ->get(); + + $sambalIjo = MenuTerlarisView::where('nama_produk', 'like', '%sambal ijo%') + ->whereNull('tgl_start_promo') + ->get(); + + $sambalBawang = MenuTerlarisView::where('nama_produk', 'like', '%sambal bawang%') + ->whereNull('tgl_start_promo') + ->get(); + + return [ + 'labels' => ['Sambal Matah', 'Sambal Ijo', 'Sambal Bawang'], + 'data' => [$sambalMatah->sum('jumlah_produk_terjual'), $sambalIjo->sum('jumlah_produk_terjual'), $sambalBawang->sum('jumlah_produk_terjual')] + ]; + } + + public function lauk() + { + // get menu terlaris where kelompok kategori id = 1 + $cakalan = MenuTerlarisView::where('nama_produk', 'like', '%cakalan%') + ->whereNull('tgl_start_promo') + ->get(); + $usus = MenuTerlarisView::where('nama_produk', 'like', '%usus%') + ->whereNull('tgl_start_promo') + ->get(); + $rempelo = MenuTerlarisView::where('nama_produk', 'like', '%rempelo%') + ->whereNull('tgl_start_promo') + ->get(); + $kulit = MenuTerlarisView::where('nama_produk', 'like', '%kulit%') + ->whereNull('tgl_start_promo') + ->get(); + $suwir = MenuTerlarisView::where('nama_produk', 'like', '%suwir%') + ->whereNull('tgl_start_promo') + ->get(); + $paru = MenuTerlarisView::where('nama_produk', 'like', '%paru%') + ->whereNull('tgl_start_promo') + ->get(); + $babat = MenuTerlarisView::where('nama_produk', 'like', '%babat%') + ->whereNull('tgl_start_promo') + ->get(); + $udang = MenuTerlarisView::where('nama_produk', 'like', '%udang%') + ->whereNull('tgl_start_promo') + ->get(); + $cumi = MenuTerlarisView::where('nama_produk', 'like', '%cumi%') + ->whereNull('tgl_start_promo') + ->get(); + $sapi = MenuTerlarisView::where('nama_produk', 'like', '%sapi%') + ->whereNull('tgl_start_promo') + ->get(); + + return [ + 'labels' => ['Cakalan', 'Usus', 'Rempelo', 'Kulit', 'Suwir', 'Paru', 'Babat', 'Udang', 'Cumi', 'Sapi'], + 'data' => [$cakalan->sum('jumlah_produk_terjual'), $usus->sum('jumlah_produk_terjual'), $rempelo->sum('jumlah_produk_terjual'), $kulit->sum('jumlah_produk_terjual'), $suwir->sum('jumlah_produk_terjual'), $paru->sum('jumlah_produk_terjual'), $babat->sum('jumlah_produk_terjual'), $udang->sum('jumlah_produk_terjual'), $cumi->sum('jumlah_produk_terjual'), $sapi->sum('jumlah_produk_terjual')] + ]; + } +} diff --git a/app/Http/Controllers/Admins/Penjualan/PenjualanController.php b/app/Http/Controllers/Admins/Penjualan/PenjualanController.php index 1eaa680..c4710ce 100644 --- a/app/Http/Controllers/Admins/Penjualan/PenjualanController.php +++ b/app/Http/Controllers/Admins/Penjualan/PenjualanController.php @@ -7,6 +7,7 @@ use App\Models\DetailPesanan; use App\Models\Pesanan; use Carbon\Carbon; use Illuminate\Http\Request; +use Illuminate\Support\Facades\DB; class PenjualanController extends Controller { @@ -56,6 +57,7 @@ class PenjualanController extends Controller }) ->addColumn('ubah', function ($data) { return '
'; }) @@ -106,4 +108,64 @@ class PenjualanController extends Controller $mpdf->Output('Laporan_Penjualan.pdf', 'I'); return response()->header('Content-Type', 'application/pdf'); } + + public function cancel(Request $request) + { + try { + + DB::beginTransaction(); + $pesanan = Pesanan::find($request->id); + $pesanan->status_pesanan = 3; + // delete detail pesanan + $pesanan->detailPesanan()->delete(); + $pesanan->delete(); + $pesanan->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()) { + $data = Pesanan::with(['detailPesanan', 'user']) + ->where('status_pesanan', 3) + ->orderBy('tanggal_pesanan', 'desc') + ->withTrashed() + ->get(); + + return datatables() + ->of($data) + ->addIndexColumn() + ->addColumn('nama_pemesan', function ($data) { + $nomor = $data->nomor_pemesan != null ? '(' . $data->nomor_pemesan . ')' : ''; + return $data->nama_pemesan . ' ' . $nomor; + }) + ->addColumn('nomor_meja', function ($data) { + return $data->nomor_meja != null ? $data->nomor_meja : '-'; + }) + ->addColumn('created_at', function ($data) { + return \Carbon\Carbon::parse($data->created_at)->format('d F Y H:i:s'); + }) + ->addColumn('total_bayar_rp', function ($data) { + return 'Rp ' . number_format($data->total_bayar, 0, ',', '.'); + }) + ->addColumn('grand_total_rp', 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); + } + return view('pages.admin.penjualan.dibatalkan'); + } } diff --git a/app/Models/KelompokKategori.php b/app/Models/KelompokKategori.php index b4369e9..c1bfbca 100644 --- a/app/Models/KelompokKategori.php +++ b/app/Models/KelompokKategori.php @@ -29,4 +29,10 @@ class KelompokKategori extends Model { return $this->hasMany(KelompokKategoriPivot::class, 'kelompok_kategori_id'); } + + // menu terlaris + public function menuTerlaris() + { + return $this->belongsToMany(MenuTerlarisView::class, 'kelompok_kategori_pivots', 'kelompok_kategori_id', 'produk_id'); + } } diff --git a/app/Models/MenuTerlarisView.php b/app/Models/MenuTerlarisView.php index 4a1b0f8..39a48ce 100644 --- a/app/Models/MenuTerlarisView.php +++ b/app/Models/MenuTerlarisView.php @@ -31,4 +31,9 @@ class MenuTerlarisView extends Model { return $this->belongsToMany(KelompokKategori::class, KelompokKategoriPivot::class, 'produk_id', 'kelompok_kategori_id'); } + + public function kelompokKategoriPivot() + { + return $this->hasMany(KelompokKategoriPivot::class, 'produk_id'); + } } diff --git a/database/migrations/2024_02_03_201324_add_cancel_option_in_status_pesanan_in_table_pesanan.php b/database/migrations/2024_02_03_201324_add_cancel_option_in_status_pesanan_in_table_pesanan.php new file mode 100644 index 0000000..f42864f --- /dev/null +++ b/database/migrations/2024_02_03_201324_add_cancel_option_in_status_pesanan_in_table_pesanan.php @@ -0,0 +1,28 @@ +enum('status_pesanan', [0, 1, 2, 3])->default(1)->comment('0=takeaway,1=default,2=dinein,3=cancel')->change(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('pesanans', function (Blueprint $table) { + $table->enum('status_pesanan', [0, 1, 2])->default(1)->comment('0=takeaway,1=default,2=dinein')->change(); + }); + } +}; diff --git a/resources/views/pages/Kasir/js.blade.php b/resources/views/pages/Kasir/js.blade.php index 58f4f32..a0b5e0e 100644 --- a/resources/views/pages/Kasir/js.blade.php +++ b/resources/views/pages/Kasir/js.blade.php @@ -202,7 +202,7 @@No | +Kode Pesanan | +Pemesan | +Nomor Meja | +Tanggal & Jam | +Total Pesanan | +Sub Total | +Diskon(%) | +Grand Total | ++ |
---|---|---|---|---|---|---|---|---|---|
Total | ++ | + | + | + | + |