Anons79 Mini Shell

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

<?php

namespace App\Http\Controllers;

use App\Helpers\Helper;
use App\Models\DetailPenjualan;
use App\Models\DetailReturPenjualan;
use App\Models\Item;
use App\Models\Pengguna;
use App\Models\Penjualan;
use App\Models\Pesan;
use App\Models\RefundPenjualan;
use App\Models\ReturPenjualan;
use App\Models\RiwayatTransaksi;
use Barryvdh\DomPDF\Facade\Pdf;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Response;

class RefundPenjualanController extends Controller
{
    /**
     * Display a listing of the resource.
     */
    public function index() {}

    /**
     * Show the form for creating a new resource.
     */
    public function create()
    {
        //
    }

    /**
     * Store a newly created resource in storage.
     */
    public function store(Request $request)
    {
        //
    }

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

    /**
     * Show the form for editing the specified resource.
     */
    public function edit(string $id)
    {

        $datas = Penjualan::find($id);
        $penggunas = Pengguna::all();
        $pengguna = $datas->pengguna->nama_pengguna;
        $refund_services = RefundPenjualan::where('penjualan_id', $datas->id)->get();

        $data = [
            "datas" => $datas,
            "pengguna" => $penggunas,
            "refund_services" => $refund_services,
        ];

        return response()->view("refund_penjualan.edit", $data);
    }

    /**
     * Update the specified resource in storage.
     */
    public function update(Request $request, string $id)
    {
        DB::beginTransaction();
        try {
            $penjualan = Penjualan::find($id);
            $uang_refund = str_replace(
                "Rp ",
                "",
                str_replace(".", "", $request->uang_refund)
            );
            $datas = Penjualan::with('pelanggan')->find($id);

            $sales = Pengguna::find($request->sale_id);
            $kasir = Pengguna::find($request->kasir_id);
            $datas->update([
                "status_pembayaran" => "refund",
            ]);
            $dataInput = [
                "uang_refund" => $uang_refund,
                "jenis_refund" => $request->jenis_refund,
                "keterangan" => $request->keterangan,
                "penjualan_id" => $id,
                "sales_out" => $sales->nama_pengguna,
                "kasir_out" => $kasir->nama_pengguna,
            ];
            if ($request->hasFile('bukti')) {

                $file = $request->file('bukti');
                $ekstensi = $file->extension();
                $baru = "Bukti-Refund-" . date('ymdhis') . ".$ekstensi";
                $file->move(public_path('images/Bukti_Refund_Penjualan'), $baru);
                $dataInput['bukti'] = $baru;
            }
            $refund = RefundPenjualan::create($dataInput);

            if ($request->jenis_refund == 1) {
                $retur_penjualan = ReturPenjualan::create([
                    "pelanggan_id" => $datas->pelanggan_id,
                    "sale_id" => $request->sale_id,
                    "tanggal_penjualan" => now(),
                    "keterangan" => $request->keterangan,
                    "no_retur" => "RFN-".date("YmdHis"),
                    "no_penjualan" => $request->nomor_nota,
                    "penjualan_id" => @$penjualan->id,
                    "pengguna_id" => auth()->user()->id
                ]);


                $detail = DetailPenjualan::where('penjualan_id', $id)->get();

                foreach ($detail as $d) {
                    $item = Item::find($d->item_id);

                    DetailReturPenjualan::create([
                        "retur_penjualan_id" => $retur_penjualan->id,
                        "item_id" => $d->item_id,
                        "nama_item" => $d->nama_item,
                        "qty" => $d->qty,

                    ]);
                }
            } elseif ($request->jenis_refund == 0) {
                $detail = DetailPenjualan::where('penjualan_id', $id)->get();
                if ($uang_refund <= $datas->uang_masuk) {

                    $datas->update(['uang_masuk' => $datas->uang_masuk - $uang_refund]);
                } else {
                    return redirect()->back()->with('error', 'uang refund lebih besar dari uang yang dibayarkan!');
                }

                foreach ($detail as $d) {
                    $item = Item::find($d->item_id);
                    if (isset($item)) {

                        $item->update([
                            'stok' => $item->stok + $d->qty
                        ]);
                    }
                }
            } else {
            }
            RiwayatTransaksi::create([
                "pelanggan_id" => $datas->pelanggan->id,
                "no_transaksi" => $datas->nomor_nota,
                "jenis_transaksi" => "Refund Penjualan",
                "tanggal" => now(),
                "biaya" => $uang_refund,
            ]);



            $refund_penjualan = RefundPenjualan::where('penjualan_id', $id)->latest()->first();
            $isi_pesan = 'Halo kak ' . $penjualan->pelanggan->nama_pelanggan . ', 
berikut ini lampiran bukti Refund dari kami. Terimaksih 😊
            ';
            Pesan::create([
                "isi_pesan" => $isi_pesan,
                "service_id" => $id,
            ]);
            $nomor_telepon = $datas->pelanggan->telp_pelanggan;

            $data = [
                "datas" => $datas,
                "sales" => $penjualan->pengguna->nama_pengguna,
                "refund_penjualan" => $refund_penjualan,
            ];

            Helper::sendWa($penjualan->pelanggan->telp_pelanggan, $isi_pesan);

            $pdf = Pdf::loadView('refund_penjualan.nota_refund', $data);
            $fileName =  $datas->pelanggan->telp_pelanggan . 'NotaRefund-' . date('Y') . '' . date('m') . '' . date('d') . '' . date('his') . '.pdf';
            $pdf->setPaper('A4', 'landscape');
            $pdf->render();
            $path = public_path('pdf/Nota/' . $fileName);


            $pdf->save($path);

            $pdfUrl = url('pdf/Nota/' . $fileName);
            Helper::sendNotaPDF($penjualan->pelanggan->telp_pelanggan, $pdfUrl);
            File::delete($path);

            if ($refund->bukti != null) {
                Helper::sendNotaPDF($penjualan->pelanggan->telp_pelanggan, url('images/Bukti_Refund_Penjualan/' . $refund->bukti));
            }

            Helper::addUserLog("Merefund penjualan " . $penjualan->nomor_nota, $penjualan->toArray());

            DB::commit();
            // return $pdf->stream($path, array("Attachment" => false));
            return redirect()->route('penjualan.index')->with('success', 'Refund penjualan berhasil dicatat');
        } catch (\Throwable $th) {

            DB::rollback();
            // dd($th->getMessage());
            Log::error($th);
            return redirect()->back()->withInput($request->all())->with('error', 'Refund penjualan gagal dicatat');
        }
    }

    /**
     * Remove the specified resource from storage.
     */
    public function destroy(string $id)
    {
        //
    }
}

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