<?php
namespace App\Http\Controllers;
use App\Models\Pelanggan;
use App\Models\Pengguna;
use App\Models\Penjualan;
use App\Models\PesanCustom;
use App\Models\Profil;
use App\Models\Service;
use DateInterval;
use DatePeriod;
use DateTime;
use Illuminate\Http\Request;
class GetDataController extends Controller
{
public function itemterjual(Request $request)
{
$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');
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);
}
$allItems = collect();
foreach ($detail_services->get() as $scv) {
foreach ($scv->detail as $serviceDetail) {
$allItems->push([
'item_id' => $serviceDetail->sparepart->id,
'nama_barang' => $serviceDetail->sparepart->nama_item,
'kategori' => $serviceDetail->sparepart->kategoriItem->nama_kategori, // Asumsi ada relasi kategori
'qty' => $serviceDetail->jumlah,
'transaksi' => 'Service',
]);
}
}
foreach ($penjualans->get() as $penjualans) {
foreach ($penjualans->detail_penjualan as $dp) {
$allItems->push([
'item_id' => $dp->item->id,
'nama_barang' => $dp->item->nama_item,
'kategori' => $dp->item->kategoriItem->nama_kategori,
'qty' => $dp->qty,
'transaksi' => 'Penjualan',
]);
}
}
$groupedItems = $allItems->groupBy('item_id')->map(function ($items) {
return [
'nama_barang' => $items->first()['nama_barang'],
'kategori' => $items->first()['kategori'],
'total_qty' => $items->sum('qty'),
'transaksi' => $items->first()['transaksi'],
];
});
return response()->json($groupedItems);
}
public function getservicedata(Request $request){
// dd( url()->current());
// dd( '?'.http_build_query($request->query()));
// this will default to a time of 00:00:00
$profil = Profil::first();
$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")));
}
$datas = new Service;
$datas = $datas->with('sales');
if (isset($begin) && isset($end)) {
$service = $datas->created($begin, $end->modify('+1 day'))->latest()->get();
$dp = Service::where('status_transaksi', 'proses')->get();
$dp_total = $dp->sum('uang_bayar');
$dp_total_cash = $dp->where('metode_bayar', 'cash')->sum('uang_bayar');
$dp_total_transfer = $dp->where('metode_bayar', 'transfer')->sum('uang_bayar');
// Total omset
$omset = 0;
$omset_cash = 0;
$omset_transfer = 0;
$omset_s = Service::where('status_pembayaran', 'lunas')->selesai($begin, $end)->get();
foreach ($omset_s as $service) {
$omset += $service->grand_total;
$has_cash = false;
$has_transfer = false;
foreach ($service->pembayaran_service as $pembayaran) {
if ($pembayaran->metode_bayar == 'cash') {
$has_cash = true;
} elseif ($pembayaran->metode_bayar == 'transfer') {
$has_transfer = true;
}
}
// Allocate the grand_total to the corresponding payment methods
if ($has_cash) {
$omset_cash += $service->grand_total;
}
if ($has_transfer) {
$omset_transfer += $service->grand_total;
}
}
$grand_omset = $omset;
$grand_omset_cash = $omset_cash;
$grand_omset_transfer = $omset_transfer;
$dp_service = Service::tanggal($begin, $end)->where('status_transaksi', 'proses')->sum('uang_bayar');
$dp_service_cash = Service::tanggal($begin, $end)->where('status_transaksi', 'proses')->where('metode_bayar', 'cash')->sum('uang_bayar');
$dp_service_transfer = Service::tanggal($begin, $end)->where('status_transaksi', 'proses')->where('metode_bayar', 'transfer')->sum('uang_bayar');
// omset Transfer
$belum_dihubungi = Service::where('status_pesan', null)->created($begin, $end)->count();
// status_transaksi
$proses = Service::where('status_transaksi', 'proses')->tanggal($begin, $end)->count();
$success = Service::where('status_transaksi', 'success')->tanggal($begin, $end)->count();
$cancel = Service::where('status_transaksi', 'cancel')->tanggal($begin, $end)->count();
// status
$pending = Service::where('status', 'pending')->created($begin, $end)->count();
$indent = Service::where('status', 'indent')->created($begin, $end)->count();
$pengecekan = Service::where('status', 'pengecekan')->created($begin, $end)->count();
$konfirmasi = Service::where('status', 'konfirmasi')->created($begin, $end)->count();
$hp_bisa_diperbaiki = Service::where('status', 'hp_bisa_diperbaiki')->created($begin, $end)->count();
$hp_normal = Service::where('status', 'hp_normal')->created($begin, $end)->count();
$pending_perbaikan = Service::where('status', 'pending_perbaikan')->created($begin, $end)->count();
$proses_perbaikan = Service::where('status', 'proses_perbaikan')->created($begin, $end)->count();
$selesai = Service::where('status', 'selesai')->created($begin, $end)->count();
$batal = Service::where('status', 'batal')->created($begin, $end)->count();
$tidak_bisa_diperbaiki = Service::where('status', 'tidak_bisa_diperbaiki')->created($begin, $end)->count();
$gagal_perbaikan = Service::where('status', 'gagal_perbaikan')->created($begin, $end)->count();
$tidak_deal = Service::where('status', 'tidak_deal')->created($begin, $end)->count();
// status_pembayaran
$down_payment = Service::where('status_pembayaran', '!=', 'lunas')->where('uang_bayar', '>', 0)->created($begin, $end)->count();
$belum_ditanggapi = Service::where('status_pembayaran', 'belum_ditanggapi')->created($begin, $end)->count();
$lunas = Service::where('status_pembayaran', 'lunas')->created($begin, $end)->count();
$belum_lunas = Service::where('status_pembayaran', 'belum_lunas')->created($begin, $end)->count();
$refund = Service::where('status_pembayaran', 'refund')->created($begin, $end)->count();
$refund_dp = Service::where('status_pembayaran', 'refund_dp')->created($begin, $end)->count();
// Persentase Transaksi
$infobox = [
'belum_dihubungi' => $belum_dihubungi,
'down_payment' => $down_payment,
// status_transaksi
'proses' => $proses,
'success' => $success,
'cancel' => $cancel,
//status
'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,
// status_pembayaran
'lunas' => $lunas,
'belum_lunas' => $belum_lunas,
'tidak_deal' => $tidak_deal,
'refund' => $refund,
'refund_dp' => $refund_dp,
'belum_ditanggapi' => $belum_ditanggapi,
'profil' => $profil,
'omset' => number_format($grand_omset),
'cash' => number_format($grand_omset_cash),
'transfer' => number_format($grand_omset_transfer),
'dp_service' => number_format($dp_service),
'dp_service_cash' => number_format($dp_service_cash),
'dp_service_transfer' => number_format($dp_service_transfer),
'dp_total' => number_format($dp_total),
'dp_total_cash' => number_format($dp_total_cash),
'dp_total_transfer' => number_format($dp_total_transfer),
];
}
return response()->json($infobox);
}
}
Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]