From e4e7ea2dcb474a026a64d948d28bb8f191b1f2b7 Mon Sep 17 00:00:00 2001 From: Zelda Ababil Date: Mon, 5 Feb 2024 15:24:09 +0700 Subject: [PATCH] dashboard --- .../Admins/Dashboard/DounatController.php | 54 ++++ .../Dashboard/DounatSatuanController.php | 102 +++++++ .../Admins/Penjualan/PenjualanController.php | 62 ++++ app/Models/KelompokKategori.php | 6 + app/Models/MenuTerlarisView.php | 5 + ...ion_in_status_pesanan_in_table_pesanan.php | 28 ++ resources/views/pages/Kasir/js.blade.php | 2 +- .../pages/admin/dashboard/chart.blade.php | 191 +++++++++++++ .../pages/admin/dashboard/chartjs.blade.php | 264 ++++++++++++++++++ .../pages/admin/dashboard/dashboard.blade.php | 3 + .../views/pages/admin/dashboard/js.blade.php | 2 +- .../admin/penjualan/dibatalkan.blade.php | 86 ++++++ .../pages/admin/penjualan/index.blade.php | 49 ++-- .../views/pages/admin/penjualan/js.blade.php | 42 +++ .../admin/penjualan/js_dibatalkan.blade.php | 196 +++++++++++++ .../pages/admin/penjualan/style.blade.php | 3 +- routes/web.php | 6 + 17 files changed, 1077 insertions(+), 24 deletions(-) create mode 100644 app/Http/Controllers/Admins/Dashboard/DounatController.php create mode 100644 app/Http/Controllers/Admins/Dashboard/DounatSatuanController.php create mode 100644 database/migrations/2024_02_03_201324_add_cancel_option_in_status_pesanan_in_table_pesanan.php create mode 100644 resources/views/pages/admin/dashboard/chart.blade.php create mode 100644 resources/views/pages/admin/dashboard/chartjs.blade.php create mode 100644 resources/views/pages/admin/penjualan/dibatalkan.blade.php create mode 100644 resources/views/pages/admin/penjualan/js_dibatalkan.blade.php 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 '
+ cancel
'; }) @@ -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 @@
${(diskonSatuan > 0) ? 'Rp. ' + (harga * qty) + ' | Rp. ' + total + '' : 'Rp. ' + totalLama + ''}
- +
`; diff --git a/resources/views/pages/admin/dashboard/chart.blade.php b/resources/views/pages/admin/dashboard/chart.blade.php new file mode 100644 index 0000000..07942c1 --- /dev/null +++ b/resources/views/pages/admin/dashboard/chart.blade.php @@ -0,0 +1,191 @@ +
+
+
+
+
+
+

Paket Spesial Terlaris

+ +
+ + +
+
+ +
+
+
+
+ +
+ +
+
+ + +
+
+ +
+ +
+
+ +
+
+
+

Paket Irit Terlaris

+ +
+ + +
+
+ +
+
+
+
+ +
+ +
+
+ + +
+
+ +
+ +
+
+ +
+ +
+ +
+ + + +
+
+
+
+
+
+

Nasi Terlaris

+ +
+ + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+ +
+
+
+

Sambal Terlaris

+ +
+ + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+ +
+
+
+

Lauk Terlaris

+ +
+ + +
+
+ +
+
+
+
+ +
+ +
+
+ + +
+
+ +
+ +
+
+ +
+ +
+ +
+ diff --git a/resources/views/pages/admin/dashboard/chartjs.blade.php b/resources/views/pages/admin/dashboard/chartjs.blade.php new file mode 100644 index 0000000..d283be4 --- /dev/null +++ b/resources/views/pages/admin/dashboard/chartjs.blade.php @@ -0,0 +1,264 @@ +@push('scripts') + + + + + + +@endpush diff --git a/resources/views/pages/admin/dashboard/dashboard.blade.php b/resources/views/pages/admin/dashboard/dashboard.blade.php index 8584147..9af5cf6 100644 --- a/resources/views/pages/admin/dashboard/dashboard.blade.php +++ b/resources/views/pages/admin/dashboard/dashboard.blade.php @@ -208,6 +208,8 @@ + @include('pages.admin.dashboard.chart') +
@@ -280,5 +282,6 @@ @push('styles') @endpush +@include('pages.admin.dashboard.chartjs') @include('pages.admin.dashboard.js') diff --git a/resources/views/pages/admin/dashboard/js.blade.php b/resources/views/pages/admin/dashboard/js.blade.php index 6c97783..ecc933f 100644 --- a/resources/views/pages/admin/dashboard/js.blade.php +++ b/resources/views/pages/admin/dashboard/js.blade.php @@ -330,7 +330,7 @@ async: false, success: function(response) { var data = response.data; - console.log(data); + // console.log(data); changeDataFromCalculate('penjualanBulan', data.pendapatanBulan .penjualanSatuBulan, data.pendapatanBulan.percentageOfSalesGrowth, data.pendapatanBulan.statusCalculation) diff --git a/resources/views/pages/admin/penjualan/dibatalkan.blade.php b/resources/views/pages/admin/penjualan/dibatalkan.blade.php new file mode 100644 index 0000000..5418b0e --- /dev/null +++ b/resources/views/pages/admin/penjualan/dibatalkan.blade.php @@ -0,0 +1,86 @@ +@extends('layouts.base') + +@section('content-header') +
+
+
+
+

Penjualan Dibatalkan

+
+
+ +
+
+
+
+@endsection + +@section('content') +
+
+
+
+
+
+ +
+ @csrf +
+
+ +
+

s/d

+
+ +
+ +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
NoKode PesananPemesanNomor MejaTanggal & JamTotal PesananSub TotalDiskon(%)Grand Total
Total
+
+
+
+
+
+
+@endsection + +@include('pages.admin.penjualan.style') +@include('pages.admin.penjualan.js_dibatalkan') diff --git a/resources/views/pages/admin/penjualan/index.blade.php b/resources/views/pages/admin/penjualan/index.blade.php index 34296df..8592765 100644 --- a/resources/views/pages/admin/penjualan/index.blade.php +++ b/resources/views/pages/admin/penjualan/index.blade.php @@ -25,28 +25,35 @@
-
- -
- @csrf -
-
- +
+
+ + + @csrf +
+
+ +
+

s/d

+
+ +
+
+ Filter data + +
-

s/d

-
- -
-
- Filter data - -
-
- + +
+
diff --git a/resources/views/pages/admin/penjualan/js.blade.php b/resources/views/pages/admin/penjualan/js.blade.php index e9e23e7..cc427a5 100644 --- a/resources/views/pages/admin/penjualan/js.blade.php +++ b/resources/views/pages/admin/penjualan/js.blade.php @@ -1,5 +1,6 @@ @push('scripts') + + + + + + +@endpush diff --git a/resources/views/pages/admin/penjualan/style.blade.php b/resources/views/pages/admin/penjualan/style.blade.php index 63bfc92..5e40594 100644 --- a/resources/views/pages/admin/penjualan/style.blade.php +++ b/resources/views/pages/admin/penjualan/style.blade.php @@ -15,4 +15,5 @@ -@endpush \ No newline at end of file + +@endpush diff --git a/routes/web.php b/routes/web.php index 3d0938a..856a1e0 100644 --- a/routes/web.php +++ b/routes/web.php @@ -4,6 +4,8 @@ use App\Http\Controllers\Admins\Dashboard\CalculationController; use App\Http\Controllers\Admins\Dashboard\ChartPengeluaranController; use App\Http\Controllers\Admins\Dashboard\ChartPenjualanController; use App\Http\Controllers\Admins\Dashboard\DashboardController; +use App\Http\Controllers\Admins\Dashboard\DounatController; +use App\Http\Controllers\Admins\Dashboard\DounatSatuanController; use App\Http\Controllers\Admins\JenisMenu\JenisMenuController; use App\Http\Controllers\Admins\Pengeluaran\PengeluaranController; use App\Http\Controllers\Admins\Penjualan\PenjualanController; @@ -85,6 +87,8 @@ Route::group(['middleware' => ['auth', 'permission']], function () { Route::get('/getChartMonth', [ChartPenjualanController::class, 'getChartMonth'])->name('dashboard.getChartMonth')->comment("Ambil data Total Penjualan per Bulan"); Route::get('/getChartYear', [ChartPenjualanController::class, 'getChartYear'])->name('dashboard.getChartYear')->comment("Ambil data Total Penjualan per Tahun"); Route::get('/getChartPengeluaran', [ChartPengeluaranController::class, 'getChartPengeluaran'])->name('dashboard.getChartPengeluaran')->comment("Ambil data Total Pengeluaran"); + Route::get('/getChartDounat', [DounatController::class, 'getChartDounat'])->name('dashboard.getChartDounat')->comment("Ambil data Total Paket Terjual"); + Route::get('/getChartDounatSatuan', [DounatSatuanController::class, 'getChartDounatSatuan'])->name('dashboard.getChartDounatSatuan')->comment("Ambil data Total Produk Satuan Terjual"); }); @@ -128,6 +132,8 @@ Route::group(['middleware' => ['auth', 'permission']], function () { Route::get('/print/{id}', [PenjualanController::class, 'print'])->name('penjualan.print')->comment("Print Riwayat Transaksi Penjualan"); 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::get('/dibatalkan', [PenjualanController::class, 'dibatalkan'])->name('penjualan.dibatalkan')->comment("Halaman Transaksi Dibatalkan"); }); // Rekening Coa