<?php
namespace App\Http\Controllers;
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\Response;
class RefundPenjualanController extends Controller
{
/**
* Display a listing of the resource.
*/
public function index(): Response
{
}
/**
* Show the form for creating a new resource.
*/
public function create(): Response
{
//
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request): RedirectResponse
{
//
}
/**
* Display the specified resource.
*/
public function show(string $id): Response
{
//
}
/**
* 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 {
$service = Penjualan::find($id);
$uang_refund = str_replace(
"Rp ",
"",
str_replace(".", "", $request->uang_refund)
);
$datas = Penjualan::find($id);
$sales = Pengguna::find($request->sale_id);
$kasir = Pengguna::find($request->kasir_id);
$datas->update([
"status_pembayaran" => "refund",
]);
RefundPenjualan::create([
"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->jenis_refund == 1) {
$retur_penjualan = ReturPenjualan::create([
"pelanggan_id" => $datas->pelanggan_id,
"sale_id" => $request->sale_id,
"tanggal_penjualan" => now(),
"keterangan" => $request->keterangan,
"no_penjualan" => $request->nomor_nota,
"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 ' . $service->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" => $service->pengguna->nama_pengguna,
"refund_penjualan" => $refund_penjualan,
];
\Helper::sendWa($service->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);
DB::commit();
// return $pdf->stream($path, array("Attachment" => false));
$pdf->save($path);
$pdfUrl = url('pdf/Nota/' . $fileName);
\Helper::sendNotaPDF($service->pelanggan->telp_pelanggan, $pdfUrl);
File::delete($path);
return redirect()->route('penjualan.index')->with('success', 'Refund Service berhasil dicatat');
} catch (\Throwable $th) {
DB::rollback();
// dd($th->getMessage());
return redirect()->route('penjualan.index')->with('error', 'Refund Service berhasil gagal dicatat');
}
}
/**
* Remove the specified resource from storage.
*/
public function destroy(string $id): RedirectResponse
{
//
}
}
Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]