Anons79 Mini Shell

Directory : /home/aplikasiposinfo/www/coba.fixmate.id/app/Http/Controllers/
Upload File :
Current File : /home/aplikasiposinfo/www/coba.fixmate.id/app/Http/Controllers/LaporanKasirController.php

<?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]