startOfMonth()->toDateString(); $endDate = now()->endOfMonth()->toDateString(); $penjualans = Penjualan::with('listItem')->whereBetween('created_at', [$startDate, $endDate])->get(); $dailyTotals = []; $now = now()->toDateString(); $startDaily = $now; $endDaily = $now; $penjualansDaily = Penjualan::with('listItem') ->whereDate('created_at', $now) ->get(); foreach ($penjualans as $penjualan) { $date = $penjualan->created_at->toDateString(); if (!isset($dailyTotals[$date])) { $dailyTotals[$date] = 0; } foreach ($penjualan->listItem as $item) { $dailyTotals[$date] += $item->qty * $item->barang->harga_jual; } } $totalHargaJual = 0; $totalModal = 0; $totalBarangTerjual = 0; foreach ($penjualansDaily as $penjualan) { foreach ($penjualan->listItem as $listItem) { $totalHargaJual += (int) $listItem->barang->harga_jual * $listItem->qty; } } foreach ($penjualansDaily as $penjualan) { foreach ($penjualan->listItem as $listItem) { $totalModal += (int) $listItem->barang->harga_beli * $listItem->qty; $totalBarangTerjual += $listItem->qty; } } $data = [ 'title' => 'Data Laporan Harian', 'dailyTotals' => $dailyTotals, 'totalBarangTerjual' => $totalBarangTerjual, 'totalPenjualan' => $totalHargaJual, 'totalPendapatan' => $totalHargaJual - $totalModal ]; return view('page.dashboard.laporan.laporanHarian', compact('data')); } public function laporanBulanan() { $startDate = '2023-01-01'; $endDate = now()->toDateString(); // Set end date to today's date $penjualans = Penjualan::with('listItem') ->whereBetween('created_at', [$startDate, $endDate]) ->get(); $dailyTotals = []; $totalHargaJual = 0; $totalModal = 0; $totalBarangTerjual = 0; // die(dd($penjualans)); foreach ($penjualans as $penjualan) { $date = $penjualan->created_at->toDateString(); if (!isset($dailyTotals[$date])) { $dailyTotals[$date] = 0; } foreach ($penjualan->listItem as $item) { $dailyTotals[$date] += $item->qty * $item->barang->harga_jual; } // Calculate totals for this month } $penjualan_bulan_ini = Penjualan::with('listItem') ->whereMonth('created_at', date("m")) ->whereYear('created_at', date("Y")) ->get(); foreach ($penjualan_bulan_ini as $penjualan) { foreach ($penjualan->listItem as $listItem) { $totalHargaJual += (int) $listItem->barang->harga_jual * $listItem->qty; $totalModal += (int) $listItem->barang->harga_beli * $listItem->qty; $totalBarangTerjual += $listItem->qty; } } $totalPendapatan = $totalHargaJual - $totalModal; $bulan = [ '01' => 'Januari', '02' => 'Februari', '03' => 'Maret', '04' => 'April', '05' => 'Mei', '06' => 'Juni', '07' => 'Juli', '08' => 'Agustus', '09' => 'September', '10' => 'Oktober', '11' => 'November', '12' => 'Desember' ]; $lap_bulanan = []; $tahun = date("Y"); foreach($bulan as $key=>$value){ $data_penjualan = Penjualan::with('listItem') ->whereMonth('created_at', "=",$key) ->whereYear('created_at', "=",$tahun) ->get(); $total = 0; foreach($data_penjualan as $v){ foreach($v->listItem as $items){ $total += (int) $items->barang->harga_jual * $items->qty; } } array_push($lap_bulanan,['bulan'=>$value,'total'=>$total]); } $data = [ 'title' => 'Data Laporan Bulanan', 'dailyTotals' => array_sum($dailyTotals), 'totalBarangTerjual' => $totalBarangTerjual, 'totalPenjualan' => $totalHargaJual, 'totalPendapatan' => $totalPendapatan, 'lap_bulanan' => $lap_bulanan ]; return view('page.dashboard.laporan.laporanBulanan', compact('data')); } public function laporanPembayaran(Request $request) { if ($request->ajax()) { if ($request->isMethod('get')) { $query = Penjualan::query()->with('listItem'); if ($request->has('search')) { $searchTerm = $request->input('search'); $query->where('created_at', 'like', "%$searchTerm%"); } if ($request->has('start_date') && $request->has('end_date')) { $startDate = Carbon::createFromFormat('Y-m-d', $request->input('start_date'))->startOfDay(); $endDate = Carbon::createFromFormat('Y-m-d', $request->input('end_date'))->endOfDay(); $query->whereBetween('created_at', [$startDate, $endDate]); } $data = $query->get(); if ($data->count() > 0) { $transformedData = $data->flatMap(function ($item) { $totalModal = 0; $totalLaba = 0; return collect($item->listItem)->map(function ($listItem) use (&$totalModal, &$totalLaba, $item) { $modal = $listItem['qty'] * $listItem['barang']['harga_beli']; $laba = $listItem['qty'] * $listItem['barang']['harga_jual']; $totalModal += $modal; $totalLaba += $laba; $labaBersih = $totalLaba - $totalModal; return [ 'tanggal' => $item->created_at, 'pembayaran' => $item->pembayaran, 'no_transaksi' => $item->no_transaksi, 'kode' => $listItem['barang']['kode'], 'nama_barang' => $listItem['barang']['nama'], 'qty' => $listItem['qty'], 'modal' => $totalModal, 'laba' => $labaBersih, 'laba_kotor' => $totalLaba ]; }); }); $startDate = Carbon::createFromFormat('Y-m-d', $request->input('start_date'))->startOfDay(); $endDate = Carbon::createFromFormat('Y-m-d', $request->input('end_date'))->endOfDay(); // $startDate = Carbon::createFromFormat('Y-m-d', "2024-06-01")->startOfDay(); // $endDate = Carbon::createFromFormat('Y-m-d', "2024-06-18")->endOfDay(); $penjualan = Penjualan::whereBetween('created_at', [$startDate, $endDate]) ->groupBy(DB::raw("DATE_FORMAT(penjualan.created_at, '%Y-%m-%d')"))->get(); $label = []; $modal_total = []; $omset_total = []; $pendapatan_total = []; // dd($penjualan); // die(); foreach($penjualan as $value){ $item = ListItemPenjualan:: selectRaw("barang.*,qty") ->join('barang',"barang.id",'barang_id') ->whereDate('list_item_penjualan.created_at', '=', date('Y-m-d',strtotime($value->created_at)))->get(); $modal = 0; $omset = 0; foreach($item as $v){ $modal += $v->qty*$v->harga_beli; $omset += $v->qty*$v->harga_jual; } $pendapatan = $omset-$modal; array_push($label,date('d M Y',strtotime($value->created_at))); array_push($modal_total,$modal); array_push($omset_total,$omset); array_push($pendapatan_total,$pendapatan); } $res['label'] = $label; $res['grafik_modal'] = $modal_total; $res['grafik_omset'] = $omset_total; $res['grafik_pendapatan'] = $pendapatan_total; $res['message'] = $transformedData; return response()->json($res, 200); } else { return response()->json(['message' => 'Tidak ada data!'], 200); } } } $data = [ 'title' => 'Data Laporan Harian', ]; return view('page.dashboard.laporan.laporanPembayaran', compact('data')); } }