Anons79 Mini Shell

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

<?php

namespace App\Http\Controllers;

use App\Models\ReturPenjualan;
use App\Models\DetailReturPenjualan;
use App\Models\Sale;
use App\Models\Item;
use App\Models\Penjualan;
use App\Models\Pelanggan;
use DateInterval;
use DatePeriod;
use DateTime;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Support\Facades\DB;

class ReturPenjualanController extends Controller
{
    /**
     * Display a listing of the resource.
     */
    public function index(): Response
    {
        $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[] = $date->format('d-M');
        }


        $datas = ReturPenjualan::whereBetween("created_at", [$begin->format('Y-m-d'), $end->format('Y-m-d')])->latest()->get();

        $data = [
            'datas' => $datas,
            'periode' => $periode,
            'periodeTanggals' => $periodeTanggals
        ];

        return response()->view("retur_penjualan.index", $data);
    }

    /**
     * Show the form for creating a new resource.
     */
    public function create(): Response
    {
        // $penjualan = Penjualan::all();
        $pelanggan = Pelanggan::all();
        $sales = Sale::all();
        $data = [
            // "penjualans" => $penjualan,
            "pelanggans" => $pelanggan,
            "sales" => $sales
        ];
        return response()->view("retur_penjualan.create", $data);
    }

    /**
     * Store a newly created resource in storage.
     */
    public function store(Request $request): RedirectResponse
    {
        $findPelanggan = Pelanggan::where('telp_pelanggan', $request->kontak)->first();
        if ($findPelanggan) {
            $request->validate([
                'nama' => 'required',
                'kontak' => 'required',
                'kecamatan_pelanggan' => 'required',
                'alamat' => 'required',
            ]);
            $update = $findPelanggan->update([
                'nama_pelanggan' => $request->nama,
                'telp_pelanggan' => $request->kontak,
                'kecamatan_pelanggan' => $request->kecamatan_pelanggan,
                'alamat_pelanggan' => $request->alamat,
                'pengguna_id' => 0

            ]);
            $pelanggan_id = $findPelanggan->id;
        } else {
            $request->validate([
                'nama' => 'required',
                'kontak' => 'required',
                'kecamatan_pelanggan' => 'required',
                'alamat' => 'required',
            ]);
            $pelanggan = Pelanggan::create([
                'nama_pelanggan' => $request->nama,
                'telp_pelanggan' => $request->kontak,
                'kecamatan_pelanggan' => $request->kecamatan_pelanggan,
                'alamat_pelanggan' => $request->alamat,
                'pengguna_id' => 0
            ]);
            $pelanggan->save();
            $pelanggan_id = $pelanggan->id;
        }
        $retur_penjualan = ReturPenjualan::create([
            "pelanggan_id" => $pelanggan_id,
            "sale_id" => $request->sale_id,
            "tanggal_penjualan" => $request->tanggal,
            "keterangan" => $request->keterangan,
            "no_penjualan" => $request->no_penjualan,
            "pengguna_id" => auth()->user()->id
        ]);

        $retur_penjualan->save();
        if (isset($request->jumlah)) {
            for ($i = 0; $i < count($request->jumlah); $i++) {
                $item = Item::find($request->id[$i]);

                DetailReturPenjualan::create([
                    "retur_penjualan_id" => $retur_penjualan->id,
                    "item_id" => $request->id[$i],
                    "nama_item" => $item->nama_item,
                    "qty" => $request->jumlah[$i],
                ]);

                $item->update([
                    "stok" => $item->stok - $request->jumlah[$i],
                ]);
            }
        }


        return redirect(route("retur_penjualan.index"))->with('success', 'Retur Penjualan berhasil ditambahkan.');;
    }

    /**
     * Display the specified resource.
     */
    public function show(string $id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     */
    public function edit(string $id): Response
    {
        $datas = ReturPenjualan::find($id);
        $pelanggan = Pelanggan::all();
        $sales = Sale::all();
        $data = [
            // "penjualans" => $penjualan,
            "datas" => $datas,
            "pelanggans" => $pelanggan,
            "sales" => $sales
        ];
        return response()->view("retur_penjualan.edit", $data);
    }

    /**
     * Update the specified resource in storage.
     */
    public function update(Request $request, string $id): RedirectResponse
    {
        $retur_penjualan = ReturPenjualan::find($id);
        $old_detail = DetailReturPenjualan::where("retur_penjualan_id", $retur_penjualan->id);

        $findPelanggan = Pelanggan::where('telp_pelanggan', $request->kontak)->first();
        if ($findPelanggan) {
            $request->validate([
                'nama' => 'required',
                'kontak' => 'required',
                'kecamatan_pelanggan' => 'required',
                'alamat' => 'required',
            ]);
            $update = $findPelanggan->update([
                'nama_pelanggan' => $request->nama,
                'telp_pelanggan' => $request->kontak,
                'kecamatan_pelanggan' => $request->kecamatan_pelanggan,
                'alamat_pelanggan' => $request->alamat,
                'pengguna_id' => 0

            ]);
            $pelanggan_id = $findPelanggan->id;
        } else {
            $request->validate([
                'nama' => 'required',
                'kontak' => 'required',
                'kecamatan_pelanggan' => 'required',
                'alamat' => 'required',
            ]);
            $pelanggan = Pelanggan::create([
                'nama_pelanggan' => $request->nama,
                'telp_pelanggan' => $request->kontak,
                'kecamatan_pelanggan' => $request->kecamatan_pelanggan,
                'alamat_pelanggan' => $request->alamat,
                'pengguna_id' => 0
            ]);
            $pelanggan->save();
            $pelanggan_id = $pelanggan->id;
        }
        $retur_penjualan->update([
            "pelanggan_id" => $pelanggan_id,
            "sale_id" => $request->sale_id,
            "tanggal_penjualan" => $request->tanggal,
            "keterangan" => $request->keterangan,
            "no_penjualan" => $request->no_penjualan,
            "pengguna_id" => auth()->user()->id
        ]);



        if (isset($request->jumlah)) {

            foreach ($old_detail->get() as $detail) {
                $item_old = Item::find($detail->item_id);
                if (isset($item_old)) {
                    $item_old->update([
                        'stok' => $item_old->stok + $detail->qty
                    ]);
                }
            }
            $old_detail->delete();

            for ($i = 0; $i < count($request->jumlah); $i++) {
                $item = Item::find($request->id[$i]);
                if (isset($item)) {
                    DetailReturPenjualan::create([
                        "retur_penjualan_id" => $retur_penjualan->id,
                        "item_id" => $request->id[$i],
                        "nama_item" => $item->nama_item,
                        "qty" => $request->jumlah[$i],
                    ]);

                    $item->update([
                        "stok" => $item->stok - $request->jumlah[$i],
                    ]);
                }
            }
        }

        return redirect(route("retur_penjualan.index"))->with('success', 'Retur Penjualan berhasil ditambahkan.');
    }

    /**
     * Remove the specified resource from storage.
     */
    public function destroy(string $id): RedirectResponse
    {
        DB::beginTransaction();
        try {
            $data = ReturPenjualan::find($id);
            $detail = DetailReturPenjualan::where("retur_penjualan_id", $data->id);
            foreach ($detail->get() as $detail) {
                $item_old = Item::find($detail->item_id);

                $item_old->update([
                    'stok' => $item_old->stok + $detail->qty
                ]);
            }
            $detail->delete();
            $data->delete();
            DB::commit();
            return redirect()->route('retur_penjualan.index')->with('success', 'Retur Penjualan berhasil dihapus');
        } catch (\Throwable $th) {
            DB::rollback();
            return redirect()->route('retur_penjualan.index')->with('error', 'Penjualan gagal dihapus');
        }
    }
}

Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]