<?php
namespace App\Http\Controllers;
use App\Models\Countdown;
use App\Models\DetailPenjualan;
use App\Models\Item;
use App\Models\KategoriItem;
use App\Models\LaporanKasir;
use App\Models\PembayaranHutang;
use App\Models\PembayaranPiutang;
use App\Models\Pembelian;
use App\Models\Pengembalian;
use App\Models\Pengguna;
use App\Models\Penjualan;
use App\Models\refund;
use App\Models\ReturPembelian;
use App\Models\ReturPenjualan;
use App\Models\Service;
use App\Models\TransaksiGudang;
use Carbon\Carbon;
use DateInterval;
use DatePeriod;
use DateTime;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class DashboardController extends Controller
{
public function index(Request $request)
{
$user = auth()->user();
if (auth()->guard('penggunas')->check()) {
// $omsetPenjualan = Penjualan::where('pengguna_id', $user->id)->get()->sum('total');
// $pengembalian = Pengembalian::where('pengguna_id', $user->id)->get()->sum('total');
// $diskon = DetailPenjualan::whereHas('diskons')->whereHas('penjualan', function($query) use ($user){
// $query->where('pengguna_id', $user->id);
// })->get()->sum('total');
// $penjualanBersih = $omsetPenjualan - $diskon - $pengembalian;
$omsetPenjualan = 0;
$pengembalian = 0;
$service = 0;
$omsetKotor = 0;
$diskon = 0;
$penjualanBersih = 0;
$labaKotor = 0;
$t_laporan_kasir = 0;
// this will default to a time of 00:00:00
$begin = new DateTime('-1 month');
$end = new DateTime();
$periode = [
$begin->format('d/m/Y'),
$end->format('d/m/Y'),
];
if (request()->periode) {
$periode = explode(" - ", request()->periode);
$begin = DateTime::createFromFormat('d/m/Y', $periode[0]);
$end = DateTime::createFromFormat('d/m/Y', $periode[1]);
}
$end->modify('+1 day');
$interval = new DateInterval('P1D');
$daterange = new DatePeriod($begin, $interval, $end);
$periodeTanggals = [];
foreach ($daterange as $date) {
$periodeTanggals[] = strftime("%d-%b", strtotime($date->format("Y-m-d")));
}
$start = $begin->format('Y-m-d');
$finish = $end->modify('-1 day')->format('Y-m-d');
// dd($start);
if ($start == $finish) {
$penjualans = Penjualan::whereDate('jam_selesai', $begin)->where('status_pembayaran', 'lunas');
} else {
$penjualans = Penjualan::where('status_pembayaran', 'lunas')->whereBetween("jam_selesai", [$begin->format('Y-m-d'), $end->format('Y-m-d')]);
}
// $detail_penjualans = DetailPenjualan::whereBetween('created_at', [$begin, $end]);
if ($start == $finish) {
$detail_services = Service::where('status_pembayaran', 'lunas')->whereDate('tanggal_selesai', $begin);
} else {
$detail_services = Service::where('status_pembayaran', 'lunas')->selesai($begin, $end);
}
$dp_service = Service::tanggal($begin, $end)->where('status_pembayaran', '!=', 'lunas')->get();
$dp_total_service = $dp_service->sum('uang_bayar');
$dp_penjualan = Penjualan::whereBetween("created_at", [$begin->format('Y-m-d'), $end->format('Y-m-d')])->where('status_pembayaran', 'belum lunas')->get();
$dp_total_penjualan = $dp_penjualan->sum('uang_bayar');
if (isset($request->pengguna_id)) {
$penggunaId = $request->pengguna_id;
$penjualans->where('pengguna_id', $penggunaId);
$detail_services->where('pengguna_id', $request->pengguna_id);
}
$omsetPenjualan = $penjualans->sum('uang_masuk');
// dd($omsetPenjualan);
$penjualan_o = $penjualans->get();
foreach ($penjualan_o as $penjualans) {
foreach ($penjualans->detail_penjualan as $dp) {
$hargaBeli = $dp->item->biaya_item ?? 0;
$total = ($dp->harga_item * $dp->qty);
$totalDiskon = 0;
$pengembalian += $dp->detail_pengembalians->sum('total');
$diskon += $totalDiskon;
$penjualanBersih += $total - $totalDiskon - $dp->detail_pengembalians->sum('total');
$labaKotor += ($total - $totalDiskon - $dp->detail_pengembalians->sum('total')) - ($hargaBeli * $dp->qty);
}
}
$detail_services_o = $detail_services->get();
// dd($detail_services_o);
$service = 0;
foreach ($detail_services_o as $srv) {
$service += $srv->grand_total;
}
// $service1 = $detail_services->flatMap->pembayaran_service->sum('total_bayar');
// $service2 = $detail_services->sum('uang_bayar');
// $service = $service1 + $service2;
// dd($omsetPenjualan, $service);
$omsetKotor = $omsetPenjualan + $service;
$charts = [
'omsetPenjualan' => [],
'pengembalian' => [],
'service' => [],
'omsetKotor' => [],
'diskon' => [],
'penjualanBersih' => [],
'hargaPokok' => [],
'labaKotor' => []
];
foreach ($daterange as $key => $date) {
$penjualans = Penjualan::whereDate('jam_selesai', $date->format('Y-m-d'))->where('status_pembayaran', 'lunas')->get();
$time = Carbon::createFromTime(8, 0, 0);
$g_omsetPenjualan = 0;
$g_service = 0;
$g_diskon = 0;
$g_penjualanBersih = 0;
$g_hargaPokok = 0;
$g_labaKotor = 0;
$detail_penjualans = DetailPenjualan::whereDate('created_at', $date->format('Y-m-d'))->get();
foreach ($detail_penjualans as $dp) {
$hargaBeli = $dp->item->biaya_item ?? 0;
$total = ($dp->harga_item * $dp->qty);
$totalDiskon = 0;
$g_diskon += $totalDiskon;
$g_penjualanBersih += $total - $totalDiskon - $dp->detail_pengembalians->sum('total');
$g_hargaPokok += ($hargaBeli * $dp->qty);
$g_labaKotor += ($total - $totalDiskon - $dp->detail_pengembalians->sum('total')) - ($hargaBeli * $dp->qty);
}
foreach ($penjualans as $p) {
$g_omsetPenjualan += $p->uang_masuk;
}
$detail_services = Service::whereDate('tanggal_selesai', $date->format('Y-m-d'))->get();
if (isset($detail_services)) {
foreach ($detail_services as $ds) {
$g_service += $ds->grand_total;
}
}
$charts['omsetPenjualan'][] = $g_omsetPenjualan;
$charts['service'][] = $g_service;
$charts['diskon'][] = $g_diskon;
$charts['penjualanBersih'][] = $g_penjualanBersih;
$charts['hargaPokok'][] = $g_hargaPokok;
$charts['labaKotor'][] = $g_labaKotor;
}
// data perjam
$omset_penjualan_perjam = 0;
$omset_service_perjam = 0;
$jam = [];
for ($hour = 0; $hour < 24; $hour++) {
$startTime = $hour . ':00:00';
$endTime = $hour . ':59:59';
$jam[] = $hour;
if ($start == $finish) {
$service_jam = Service::whereDate('jam_selesai', $begin)->where('status_pembayaran', 'lunas')->whereTime('jam_selesai', '>=', $startTime)
->whereTime('jam_selesai', '<=', $endTime)
->get();
$penjualan_jam = Penjualan::whereDate('jam_selesai', $begin)->whereTime('jam_selesai', '>=', $startTime)
->whereTime('jam_selesai', '<=', $endTime)
->get();
} else {
$service_jam = Service::selesai($begin, $end)->where('status_pembayaran', 'lunas')->whereTime('jam_selesai', '>=', $startTime)
->whereTime('jam_selesai', '<=', $endTime)
->get();
$penjualan_jam = Penjualan::whereBetween("jam_selesai", [$begin->format('Y-m-d'), $end->format('Y-m-d')])->where('status_pembayaran', 'lunas')->whereTime('jam_selesai', '>=', $startTime)
->whereTime('jam_selesai', '<=', $endTime)
->get();
}
$omset_penjualan_perjam = 0;
foreach ($penjualan_jam as $penjualan) {
$omset_penjualan_perjam += $penjualan->uang_masuk;
}
$omset_service_perjam = 0;
foreach ($service_jam as $s) {
$omset_service_perjam += $s->grand_total;
}
$charts_perjam['penjualanPerjam'][] = $omset_penjualan_perjam;
$charts_perjam['servicePerjam'][] = $omset_service_perjam;
}
// dd($jam);
$karyawans = Pengguna::get();
$kategoris = KategoriItem::get();
//
// Transaksi
if ($start == $finish) {
$t_service = Service::whereDate('created_at', $begin);
$t_refund = refund::whereDate('created_at', $begin);
$t_penjualan = Penjualan::whereDate('created_at', $begin);
$t_pembelian = Pembelian::whereDate('created_at', $begin);
$t_retur_pembelian = ReturPembelian::whereDate('created_at', $begin);
$t_retur_penjualan = ReturPenjualan::whereDate('created_at', $begin);
$t_pembayaran_piutang = PembayaranPiutang::whereDate('created_at', $begin);
$t_pembayaran_hutang = PembayaranHutang::whereDate('created_at', $begin);
$t_transaksi_gudang = TransaksiGudang::whereDate('created_at', $begin);
$laporan_kasir = LaporanKasir::whereDate('tanggal', $begin->format('Y-m-d'));
} else {
$t_service = Service::whereBetween('created_at', [$begin, $end]);
$t_refund = refund::whereBetween('created_at', [$begin, $end]);
$t_penjualan = Penjualan::whereBetween('created_at', [$begin, $end]);
$t_pembelian = Pembelian::whereBetween('created_at', [$begin, $end]);
$t_retur_pembelian = ReturPembelian::whereBetween('created_at', [$begin, $end]);
$t_retur_penjualan = ReturPenjualan::whereBetween('created_at', [$begin, $end]);
$t_pembayaran_piutang = PembayaranPiutang::whereBetween('created_at', [$begin, $end]);
$t_pembayaran_hutang = PembayaranHutang::whereBetween('created_at', [$begin, $end]);
$t_transaksi_gudang = TransaksiGudang::whereBetween('created_at', [$begin, $end]);
$laporan_kasir = LaporanKasir::whereBetween('tanggal', [$begin->format('Y-m-d'), $end->format('Y-m-d')]);
}
// dd($laporan_kasir->get());
if (isset($request->pengguna_id)) {
$t_service->where('pengguna_id', $request->pengguna_id);
$t_penjualan->where('pengguna_id', $request->pengguna_id);
$t_pembelian->where('pengguna_id', $request->pengguna_id);
$t_retur_pembelian->where('pengguna_id', $request->pengguna_id);
$t_retur_penjualan->where('pengguna_id', $request->pengguna_id);
$t_transaksi_gudang->where('pengguna_id', $request->pengguna_id);
$laporan_kasir->where('pengguna_id', $request->pengguna_id);
$t_service->where('pengguna_id', $request->pengguna_id);
}
$dp_service_lunas = Service::where('status_transaksi', 'success')->orwhere('status_pembayaran', 'refund');
$dp_service_lunas = $dp_service_lunas->selesai($begin, $end)->get();
$dp_total_service_lunas = $dp_service_lunas->sum('uang_bayar');
$laporan_kasir = $laporan_kasir->get();
$t_laporan_kasir = 0;
$t_laporan_uang_muka = 0;
$t_refund = $t_refund->get();
$refund = $t_refund->sum('uang_refund');
if (isset($refund)) {
$refund = $refund;
} else {
$refund = 0;
}
foreach ($laporan_kasir as $lk) {
$t_laporan_kasir += $lk->omset_cash + $lk->omset_transfer;
$t_laporan_uang_muka += $lk->uang_muka_cash + $lk->uang_muka_transfer;
}
$t_laporan_kasir = $t_laporan_kasir + $dp_total_service_lunas;
// dd($refund, $dp_total_service_lunas);
// dd($dp_total_service_lunas + $t_laporan_kasir);
// data barang terjual
// Transaksi
$pengguna = Pengguna::all();
$t_service_proses = Service::where('status_transaksi', 'proses')->count();
// status
$pending = Service::where('status', 'pending')->where('status_transaksi', 'proses')->count();
$indent = Service::where('status', 'indent')->where('status_transaksi', 'proses')->count();
$pengecekan = Service::where('status', 'pengecekan')->where('status_transaksi', 'proses')->count();
$konfirmasi = Service::where('status', 'konfirmasi')->where('status_transaksi', 'proses')->count();
$hp_bisa_diperbaiki = Service::where('status', 'hp_bisa_diperbaiki')->where('status_transaksi', 'proses')->count();
$hp_normal = Service::where('status', 'hp_normal')->where('status_transaksi', 'proses')->count();
$pending_perbaikan = Service::where('status', 'pending_perbaikan')->where('status_transaksi', 'proses')->count();
$proses_perbaikan = Service::where('status', 'proses_perbaikan')->where('status_transaksi', 'proses')->count();
$selesai = Service::where('status', 'selesai')->where('status_transaksi', 'proses')->count();
$batal = Service::where('status', 'batal')->where('status_transaksi', 'proses')->count();
$tidak_bisa_diperbaiki = Service::where('status', 'tidak_bisa_diperbaiki')->where('status_transaksi', 'proses')->count();
$gagal_perbaikan = Service::where('status', 'gagal_perbaikan')->where('status_transaksi', 'proses')->count();
$tidak_deal = Service::where('status', 'tidak_deal')->where('status_transaksi', 'proses')->count();
$countdown = Countdown::get();
$data = [
't_service' => $t_service->count(),
't_penjualan' => $t_penjualan->count(),
't_pembelian' => $t_pembelian->count(),
'countdown' => $countdown,
't_retur_penjualan' => $t_retur_penjualan->count(),
't_retur_pembelian' => $t_retur_pembelian->count(),
't_transaksi_gudang' => $t_transaksi_gudang->count(),
't_pembayaran_hutang' => $t_pembayaran_hutang->count(),
't_pembayaran_piutang' => $t_pembayaran_piutang->count(),
't_laporan_kasir' => $t_laporan_kasir,
't_laporan_uang_muka' => $t_laporan_uang_muka,
't_service_proses' => $t_service_proses,
'pending' => $pending,
'indent' => $indent,
'pengecekan' => $pengecekan,
'konfirmasi' => $konfirmasi,
'hp_bisa_diperbaiki' => $hp_bisa_diperbaiki,
'hp_normal' => $hp_normal,
'pending_perbaikan' => $pending_perbaikan,
'proses_perbaikan' => $proses_perbaikan,
'selesai' => $selesai,
'batal' => $batal,
'tidak_bisa_diperbaiki' => $tidak_bisa_diperbaiki,
'gagal_perbaikan' => $gagal_perbaikan,
'tidak_deal' => $tidak_deal,
// 'g_service' => $g_service,
// 'g_omsetPenjualan' => $g_omsetPenjualan,
'omsetPenjualan' => $omsetPenjualan,
'omsetKotor' => $omsetKotor,
'dp_total_penjualan' => $dp_total_penjualan,
'dp_total_service' => $dp_total_service,
'pengembalian' => $pengembalian,
'service' => $service,
'diskon' => $diskon,
'penjualanBersih' => $penjualanBersih,
'labaKotor' => $labaKotor,
'periodeTanggals' => $periodeTanggals,
'charts' => $charts,
'charts_perjam' => $charts_perjam,
'periode' => $periode,
'jam' => $jam,
'karyawans' => $karyawans,
'kategoris' => $kategoris,
'pengguna' => $pengguna,
'request' => $request
];
return view('dashboard.pengguna', $data);
} else {
return view('dashboard.user');
}
}
}
Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]