diff --git a/app/Http/Controllers/PembayaranController.php b/app/Http/Controllers/PembayaranController.php index 1a0af0a..1c7336f 100644 --- a/app/Http/Controllers/PembayaranController.php +++ b/app/Http/Controllers/PembayaranController.php @@ -12,6 +12,8 @@ use Illuminate\Support\Facades\Auth; use Modules\Lpj\Models\PenawaranTender; use Modules\Lpj\Models\PersetujuanPenawaran; use Modules\Lpj\Http\Requests\PersetujuanPenawaranRequest; +use PhpParser\Node\Expr\Cast\Object_; + class PembayaranController extends Controller { public $user; @@ -109,11 +111,23 @@ class PembayaranController extends Controller ]); } + public function create(){ + return view('lpj::pembayaran.create'); + } + public function edit($id) { - $permohonan = Permohonan::find($id); - $persetujuanPenawaran = PersetujuanPenawaran::where('permohonan_id', $permohonan->id)->first(); + $req = request()->all(); + + if(isset($req['tiket'])){ + $persetujuanPenawaran = PersetujuanPenawaran::find($id); + $permohonan = Permohonan::find($persetujuanPenawaran?->permohonan_id); + } else { + $permohonan = Permohonan::find($id); + $persetujuanPenawaran = PersetujuanPenawaran::where('permohonan_id', $permohonan->id)->first(); + } + return view('lpj::pembayaran.form', compact('permohonan', 'persetujuanPenawaran')); } @@ -130,8 +144,36 @@ class PembayaranController extends Controller $persetujuanPenawaran = PersetujuanPenawaran::where('permohonan_id', $permohonan->id)->first(); return view('lpj::pembayaran.form-lebih', compact('noc','permohonan','persetujuanPenawaran')); } + public function store(PersetujuanPenawaranRequest $request) { + $req = request()->all(); + + if($req['type'] == 'create'){ + $data = [ + 'nomor_tiket' => $req['nomor_tiket'] ?? '', + 'nominal_bayar' => $req['nominal_bayar'] ?? '', + 'catatan' => $req['catatan'] ?? '' + ]; + + if(request()->hasFile('bukti_bayar')){ + $folderPath = 'persetujuan_penawaran/bukti_bayar/' . $req['nomor_tiket']; + $data['bukti_bayar'] = $request->file('bukti_bayar')->store($folderPath, 'public'); + } + + $persetujuanPenawaran = PersetujuanPenawaran::create($data); + $noc = [ + 'persetujuan_penawaran_id' => $persetujuanPenawaran->id, + 'nomor_tiket' => $req['nomor_tiket'] ?? '', + 'debiture_id' => $req['debitur_id'] ?? '', + 'branch_id' => Auth::user()->branch_id, + ]; + Noc::create($noc); + + return redirect() + ->route('pembayaran.index')->with('success', 'Pembayaran berhasil disimpan.'); + } + if($req['type'] == 'kurang_bayar'){ $noc = Noc::find($req['noc_id']); $noc->nominal_pelunasan = $req['nominal_pelunasan']; @@ -307,31 +349,23 @@ class PembayaranController extends Controller // abort(403, 'Sorry! You are not allowed to view users.'); } - $query = Permohonan::query()->where(function ($query) { - $query->where(['status_bayar' => 'belum_bayar', 'jenis_penilaian_id' => 1]) - ->orWhere('status', 'revisi-pembayaran'); - }) - ->where(function ($query) { - $query->whereNotIn('id', function ($subquery) { - $subquery->select('permohonan_id') - ->from('persetujuan_penawaran') - ->whereNotNull('permohonan_id'); + $query = PersetujuanPenawaran::query(); + + $query->where(function($q) { + $q->whereRelation('permohonan', function($query) { + $query->where('status_bayar', 'belum_bayar') + ->where('jenis_penilaian_id', 1); }); }); + $query->orWhereRelation('permohonan','status_bayar','revisi-pembayaran'); + $query->orWhere(function($q) { + $q->where('permohonan_id',null); + $q->where('nomor_tiket','!=',null); + }); - - // Pencarian berdasarkan parameter search + // Pencarian berdasarkan parameter search if ($request->has('search') && !empty($request->get('search'))) { $search = $request->get('search'); - $query->where(function ($q) use ($search) { - $q->where('nomor_registrasi', 'LIKE', '%' . $search . '%'); - $q->orWhere('tanggal_permohonan', 'LIKE', '%' . $search . '%'); - $q->orWhereRelation('user', 'name', 'LIKE', '%' . $search . '%'); - $q->orWhereRelation('debiture', 'name', 'LIKE', '%' . $search . '%'); - $q->orWhereRelation('jenisPenilaian', 'name', 'LIKE', '%' . $search . '%'); - $q->orWhereRelation('branch', 'name', 'LIKE', '%' . $search . '%'); - $q->orWhere('status', 'LIKE', '%' . $search . '%'); - }); } // Sorting berdasarkan sortField dan sortOrder @@ -361,7 +395,21 @@ class PembayaranController extends Controller $filteredRecords = $query->count(); // Ambil data dengan relasi - $data = $query->with(['user', 'debiture', 'branch', 'jenisPenilaian'])->get(); + $data = $query->get(); + + $data = $data->map(function ($item) { + return [ + 'id' => $item->permohonan?->id ?? $item->id, + 'nomor_registrasi' => $item->permohonan?->nomor_registrasi, + 'nomor_tiket' => $item->nomor_tiket ?? '', + 'debiture' => $item->permohonan?->debiture ?? $item->noc?->debiture, + 'user' => $item->permohonan?->user ?? $item->creator, + 'status_bayar' => $item->permohonan?->status_bayar ?? ($item->nomor_tiket ? 'Sudah Bayar' : ''), + 'tanggal_permohonan' => $item->permohonan?->tanggal_permohonan ?? '', + 'branch' => $item->permohonan?->branch ?? $item->noc?->branch, + 'is_permohonan' => $item->permohonan ?? '' + ]; + }); // Hitung jumlah halaman diff --git a/database/migrations/2025_09_15_034656_add_branch_id_to_noc_table.php b/database/migrations/2025_09_15_034656_add_branch_id_to_noc_table.php new file mode 100644 index 0000000..f873f92 --- /dev/null +++ b/database/migrations/2025_09_15_034656_add_branch_id_to_noc_table.php @@ -0,0 +1,28 @@ +bigInteger('branch_id')->nullable()->after('debiture_id'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('noc', function (Blueprint $table) { + $table->dropColumn('branch_id'); + }); + } +}; diff --git a/resources/views/pembayaran/create.blade.php b/resources/views/pembayaran/create.blade.php new file mode 100644 index 0000000..32cb84c --- /dev/null +++ b/resources/views/pembayaran/create.blade.php @@ -0,0 +1,322 @@ +@extends('layouts.main') + +@section('breadcrumbs') + {{ Breadcrumbs::render(request()->route()->getName()) }} +@endsection + +@section('content') +