<?php
namespace App\Http\Controllers;
use App\Exports\LaporanKasirExport;
use App\Helpers\Helper;
use App\Models\LaporanKasir;
use App\Models\Pembelian;
use App\Models\Pengguna;
use App\Models\Penjualan;
use App\Models\Service;
use DateInterval;
use DatePeriod;
use DateTime;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
use Maatwebsite\Excel\Facades\Excel;
class LaporanKasirController extends Controller
{
public function index(Request $request)
{
// 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]);
}
$start = $begin->format('Y-m-d');
$finish = $end->format('Y-m-d');
if ($start == $finish) {
$datas = LaporanKasir::whereDate('tanggal', $begin)->filterToko()->latest();
$laporanKasir = LaporanKasir::whereDate('tanggal', $begin)->filterToko();
// if (isset($request->pengguna_id)) {
// $laporanKasir = LaporanKasir::whereDate('tanggal', $begin)->cari($request->pengguna_id)->get();
// }
} else {
$datas = LaporanKasir::whereBetween("tanggal", [$begin->format('Y-m-d'), $end->format('Y-m-d')])->filterToko();
$laporanKasir = LaporanKasir::whereBetween("tanggal", [$begin->format('Y-m-d'), $end->format('Y-m-d')])->filterToko();
// if (isset($request->pengguna_id)) {
// $laporanKasir = LaporanKasir::whereBetween("tanggal", [$begin->format('Y-m-d'), $end->format('Y-m-d')])->cari($request->pengguna_id)->get();
// }
}
if (isset($request->pengguna_id)) {
$datas = $datas->cari($request->pengguna_id);
$laporanKasir = $laporanKasir->cari($request->pengguna_id);
}
$datas = $datas->latest()->paginate(15);
$laporanKasir = $laporanKasir->latest()->get();
$omset = 0;
$omset_cash = 0;
$uang_dompet = 0;
$omset_transfer = 0;
$pengeluaran_uang_dompet = 0;
$penambahan_uang_dompet = 0;
$uang_muka_transfer = 0;
$uang_muka_cash = 0;
foreach ($laporanKasir as $laporan) {
$omset += $laporan->omset_cash + $laporan->omset_transfer;
$omset_cash += $laporan->omset_cash;
$uang_dompet += $laporan->uang_dompet;
$omset_transfer += $laporan->omset_transfer;
$pengeluaran_uang_dompet += $laporan->pengeluaran_uang_dompet;
$penambahan_uang_dompet += $laporan->penambahan_uang_dompet;
$uang_muka_cash += $laporan->uang_muka_cash;
$uang_muka_transfer += $laporan->uang_muka_transfer;
}
$pengguna = Pengguna::all();
$data = [
"request" => $request,
'datas' => $datas,
'omset' => $omset,
'omset_cash' => $omset_cash,
'omset_transfer' => $omset_transfer,
'uang_dompet' => $uang_dompet,
'uang_muka_cash' => $uang_muka_cash,
'uang_muka_transfer' => $uang_muka_transfer,
'pengeluaran_uang_dompet' => $pengeluaran_uang_dompet,
'penambahan_uang_dompet' => $penambahan_uang_dompet,
'pengguna' => $pengguna,
"periode" => $periode,
];
// return response()->view('laporan_kasir.index', $data);
return response()->view('laporan_kasir.index', $data);
}
public function create()
{
$tokos = auth()->user()->role->tokos;
$data['pengguna'] = Pengguna::all();
$data['tokos'] = $tokos;
return response()->view('laporan_kasir.create', $data);
}
public function edit($id)
{
$tokos = auth()->user()->role->tokos;
$data['datas'] = LaporanKasir::find($id);
$data['tokos'] = $tokos;
return response()->view('laporan_kasir.edit', $data);
}
public function show($id)
{
$lapor = LaporanKasir::find($id);
$data['data'] = $lapor;
$data['services'] = Service::with('pelanggan','pembayaran_service','teknisi','pengguna','detail')->whereIn('id',explode(",",$lapor->services))->get();
return response()->view('laporan_kasir.show', $data);
}
public function store(Request $request): RedirectResponse
{
DB::beginTransaction();
try {
$request->validate([
"no_laporan" => "required",
"pengguna_id" => "required",
"omset_cash" => "required",
"tanggal" => "required",
"omset_transfer" => "required",
"uang_dompet" => "required",
"pengeluaran_uang_dompet" => "required",
"penambahan_uang_dompet" => "required",
"uang_muka_cash" => "required",
"uang_muka_transfer" => "required",
"jam_masuk" => "required",
"jam_keluar" => "required",
]);
$datas=[
"no_laporan_kasir" => $request->no_laporan,
"pengguna_id" => $request->pengguna_id,
"keterangan" => $request->keterangan,
"tanggal" => $request->tanggal,
"jam_masuk" => $request->jam_masuk,
"jam_keluar" => $request->jam_keluar,
"omset_cash" => str_replace("Rp ", "", str_replace(".", "", $request->omset_cash)),
"omset_transfer" => str_replace("Rp ", "", str_replace(".", "", $request->omset_transfer)),
"uang_dompet" => str_replace("Rp ", "", str_replace(".", "", $request->uang_dompet)),
"pengeluaran_uang_dompet" => str_replace("Rp ", "", str_replace(".", "", $request->pengeluaran_uang_dompet)),
"penambahan_uang_dompet" => str_replace("Rp ", "", str_replace(".", "", $request->penambahan_uang_dompet)),
"uang_muka_cash" => str_replace("Rp ", "", str_replace(".", "", $request->uang_muka_cash)),
"uang_muka_transfer" => str_replace("Rp ", "", str_replace(".", "", $request->uang_muka_transfer)),
];
if($datas["uang_muka_cash"] < 0 || $datas["uang_muka_transfer"] < 0){
return redirect()->route('laporan_kasir.create')->with('error', "Uang muka tidak boleh kurang dari 0");
}
$service = Service::where('tanggal',$request->tanggal)->wherebetween(DB::raw('TIME(jam_mulai)'),[$request->jam_masuk,$request->jam_keluar])->filterToko()->get();
$penjualan = Penjualan::where('tanggal_penjualan',$request->tanggal)->wherebetween(DB::raw('TIME(created_at)'),[$request->jam_masuk,$request->jam_keluar])->filterToko()->get();
$dataServices=[];
$dataPenjualan=[];
foreach ($service as $serv){
$dataServices[]= $serv->id;
}
foreach ($penjualan as $sale){
$dataPenjualan[]= $sale->id;
}
$data_service =implode(',',$dataServices);
$data_penjualan =implode(',',$dataPenjualan);
$datas['services']= $data_service;
$datas['penjualan']= $data_penjualan;
$laporanKasir = LaporanKasir::create($datas);
$laporanKasir->tokos()->sync($request->toko_id);
Helper::addUserLog('Tambah laporan kasir dengan omset cash '.str_replace("Rp ", "", str_replace(".", "", $request->omset_cash))." dan omset transfer ".str_replace("Rp ", "", str_replace(".", "", $request->omset_transfer))." serta uang muka cash ".str_replace("Rp ", "", str_replace(".", "", $request->uang_muka_cash))." dan uang muka transfer ".str_replace("Rp ", "", str_replace(".", "", $request->uang_muka_transfer)),$laporanKasir->toArray());
DB::commit();
return redirect()->route('laporan_kasir.index')->with('success', 'Laporan kasir berhasil ditambah');
} catch (\Throwable $th) {
DB::rollback();
Log::error($th);
return redirect()->route('laporan_kasir.create')->with('error', $th->getMessage());
}
}
public function update(Request $request, string $id): RedirectResponse
{
DB::beginTransaction();
try {
$laporan_kasir = LaporanKasir::find($id);
$omset_cash = $laporan_kasir->omset_cash;
$omset_transfer = $laporan_kasir->omset_transfer;
$uang_muka_cash = $laporan_kasir->uang_muka_cash;
$uang_muka_transfer = $laporan_kasir->uang_muka_transfer;
$request->validate([
"no_laporan" => "required",
"tanggal" => "required",
"pengguna_id" => "required",
"omset_cash" => "required",
"omset_transfer" => "required",
"uang_dompet" => "required",
"penambahan_uang_dompet" => "required",
"uang_muka_cash" => "required",
"uang_muka_transfer" => "required",
]);
$datas = [
"keterangan" => $request->keterangan,
"tanggal" => $request->tanggal,
"omset_cash" => str_replace("Rp ", "", str_replace(".", "", $request->omset_cash)),
"omset_transfer" => str_replace("Rp ", "", str_replace(".", "", $request->omset_transfer)),
"uang_dompet" => str_replace("Rp ", "", str_replace(".", "", $request->uang_dompet)),
"pengeluaran_uang_dompet" => str_replace("Rp ", "", str_replace(".", "", $request->pengeluaran_uang_dompet)),
"penambahan_uang_dompet" => str_replace("Rp ", "", str_replace(".", "", $request->penambahan_uang_dompet)),
"uang_muka_cash" => str_replace("Rp ", "", str_replace(".", "", $request->uang_muka_cash)),
"uang_muka_transfer" => str_replace("Rp ", "", str_replace(".", "", $request->uang_muka_transfer)),
];
$laporan_kasir->update($datas);
$laporan_kasir->tokos()->sync($request->toko_id);
Helper::addUserLog('Edit laporan kasir dari '.$omset_cash." ke ".str_replace("Rp ", "", str_replace(".", "", $request->omset_cash))." dan omset transfer dari ".$omset_transfer." ke ".str_replace("Rp ", "", str_replace(".", "", $request->omset_transfer))."serta uang muka cash dari ".$uang_muka_cash." ke ".str_replace("Rp ", "", str_replace(".", "", $request->uang_muka_cash))." dan uang muka transfer dari ".$uang_muka_transfer." ke ".str_replace("Rp ", "", str_replace(".", "", $request->uang_muka_transfer)),$laporan_kasir->toArray());
DB::commit();
return redirect()->route('laporan_kasir.index')->with('success', 'Laporan berhasil ditambah');
} catch (\Throwable $th) {
DB::rollback();
Log::error($th);
return redirect()->back()->with('error', $th->getMessage());
}
}
public function destroy(string $id): RedirectResponse
{
DB::beginTransaction();
try {
$laporan_kasir = LaporanKasir::find($id);
$laporan_kasir->tokos()->delete();
$laporan_kasir->delete();
Helper::addUserLog('Menghapus laporan kasir dengan omset cash '.str_replace("Rp ", "", str_replace(".", "", $laporan_kasir->omset_cash))." dan omset transfer ".str_replace("Rp ", "", str_replace(".", "", $laporan_kasir->omset_transfer))." serta uang muka cash ".str_replace("Rp ", "", str_replace(".", "", $laporan_kasir->uang_muka_cash))." dan uang muka transfer ".str_replace("Rp ", "", str_replace(".", "", $laporan_kasir->uang_muka_transfer)),$laporan_kasir->toArray());
DB::commit();
return redirect()->route('laporan_kasir.index')->with('success', 'Laporan Berhasil Di Hapus');
} catch (\Throwable $th) {
DB::rollback();
Log::error($th);
return redirect()->route('laporan_kasir.index')->with('error', "Laporan gagal Di Hapus");
}
}
public function cetak(Request $request)
{
// 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]);
}
$start = $begin->format('Y-m-d');
$finish = $end->format('Y-m-d');
// dd($start);
if ($start == $finish) {
$datas = LaporanKasir::whereDate('tanggal', $begin)->filterToko()->latest()->get();
$laporanKasir = LaporanKasir::whereDate('tanggal', $begin)->filterToko()->get();
if (isset($request->pengguna_id)) {
$laporanKasir = LaporanKasir::whereDate('tanggal', $begin)->cari($request->pengguna_id)->get();
}
} else {
$datas = LaporanKasir::whereBetween("tanggal", [$begin->format('Y-m-d'), $end->format('Y-m-d')])->filterToko()->latest()->get();
$laporanKasir = LaporanKasir::whereBetween("tanggal", [$begin->format('Y-m-d'), $end->format('Y-m-d')])->filterToko()->get();
if (isset($request->pengguna_id)) {
$laporanKasir = LaporanKasir::whereBetween("tanggal", [$begin->format('Y-m-d'), $end->format('Y-m-d')])->cari($request->pengguna_id)->filterToko()->get();
}
}
if (isset($request->pengguna_id)) {
$datas = LaporanKasir::cari($request->pengguna_id)->filterToko()->get();
$laporanKasir = LaporanKasir::cari($request->pengguna_id)->filterToko()->get();
}
$omset = 0;
$uang_dompet = 0;
$omset_cash = 0;
$omset_transfer = 0;
$pengeluaran_uang_dompet = 0;
$penambahan_uang_dompet = 0;
$uang_muka_transfer = 0;
$uang_muka_cash = 0;
foreach ($laporanKasir as $laporan) {
$omset += $laporan->omset_cash + $laporan->omset_transfer;
$omset_cash += $laporan->omset_cash;
$omset_transfer += $laporan->omset_transfer;
$pengeluaran_uang_dompet += $laporan->pengeluaran_uang_dompet;
$uang_dompet += $laporan->uang_dompet;
$penambahan_uang_dompet += $laporan->penambahan_uang_dompet;
$uang_muka_cash += $laporan->uang_muka_cash;
$uang_muka_transfer += $laporan->uang_muka_transfer;
}
$pengguna = Pengguna::all();
$export = [];
foreach ($datas as $data) {
$export[] = [
$data->no_laporan_kasir,
$data->tanggal,
$data->pengguna->nama_pengguna,
$data->omset_cash,
$data->omset_transfer,
$data->uang_muka_cash,
$data->uang_muka_transfer,
$data->uang_dompet,
$data->penambahan_uang_dompet,
$data->pengeluaran_uang_dompet,
$data->keterangan,
];
}
if ($request->excel == 1) {
return Excel::download(new LaporanKasirExport($export), 'Laporan Kasir '.$begin->format("Y-m-d")." - ".$end->format("Y-m-d").'.xlsx');
} else {
$data = [
'datas' => $datas,
'omset' => $omset,
'omset_cash' => $omset_cash,
'omset_transfer' => $omset_transfer,
'uang_muka_cash' => $uang_muka_cash,
'uang_muka_transfer' => $uang_muka_transfer,
'pengeluaran_uang_dompet' => $pengeluaran_uang_dompet,
'penambahan_uang_dompet' => $penambahan_uang_dompet,
'pengguna' => $pengguna,
'uang_dompet' => $uang_dompet,
"periode" => $periode,
];
return response()->view('laporan_kasir.cetak', $data);
}
// return response()->view('laporan_kasir.index', $data);
}
}
Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]