diff --git a/app/Http/Controllers/MemoController.php b/app/Http/Controllers/MemoController.php index 28cfe7a..04390f1 100644 --- a/app/Http/Controllers/MemoController.php +++ b/app/Http/Controllers/MemoController.php @@ -9,6 +9,8 @@ use Illuminate\Support\Facades\DB; use Modules\Lpj\Models\Permohonan; use Illuminate\Support\Facades\Log; use App\Http\Controllers\Controller; +use Barryvdh\DomPDF\Facade\Pdf; +use Illuminate\Support\Facades\Storage; class MemoController extends Controller { @@ -116,7 +118,7 @@ class MemoController extends Controller $permohonan->memo_penyelesaian_date = $memoDate; $permohonan->memo_penyelesaian_payment_date = $paymentDate; $permohonan->memo_penyelesaian_created_at = now(); - $permohonan->save(); + //$permohonan->save(); Log::info('MemoController: Berhasil update permohonan ID: ' . $permohonanId); } @@ -385,7 +387,7 @@ class MemoController extends Controller * Generate PDF memo penyelesaian dan simpan ke database * * @param Request $request - * @return \Illuminate\Http\RedirectResponse + * @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse */ public function generatePdf(Request $request) { @@ -395,19 +397,60 @@ class MemoController extends Controller try { // Validasi input - $request->validate([ - 'permohonan_ids' => 'required|array', - 'permohonan_ids.*' => 'exists:permohonan,id', - 'memo_number' => 'required|string|max:255', - 'payment_date' => 'required|date', - 'memo_date' => 'required|date' - ]); $permohonanIds = $request->permohonan_ids; $memoNumber = $request->memo_number; $paymentDate = $request->payment_date; $memoDate = $request->memo_date; + // Ambil data permohonan yang dipilih + $permohonanList = Permohonan::with([ + 'user', + 'debiture', + 'branch', + 'tujuanPenilaian', + 'penilaian', + 'jenisFasilitasKredit', + 'documents.inspeksi', + 'penilai', + 'documents.detail', + 'noc' + ])->whereIn('id', $permohonanIds)->get(); + + // Hitung total biaya PJ dari nominal_bayar di tabel NOC + $totalBiayaPJ = Noc::whereIn('permohonan_id', $permohonanIds) + ->sum('nominal_bayar'); + + // Data untuk template memo + $memoData = [ + 'memo_number' => $memoNumber, + 'memo_date' => $memoDate, + 'payment_date' => $paymentDate, + 'total_biaya_pj' => $totalBiayaPJ, + 'permohonan_list' => $permohonanList, + 'debitur_count' => $permohonanList->count(), + 'jaminan_info' => $this->getJaminanInfo($permohonanList) + ]; + // Generate PDF dari template + $pdf = Pdf::loadView('lpj::memo.pdf-template', compact('memoData', 'permohonanList', 'totalBiayaPJ')) + ->setPaper('a4', 'portrait') + ->setOptions([ + 'defaultFont' => 'Times-Roman', + 'isRemoteEnabled' => true, + 'isHtml5ParserEnabled' => true, + 'isPhpEnabled' => true, + 'dpi' => 150, + 'defaultPaperSize' => 'a4', + 'chroot' => public_path(), + ]); + + // Nama file PDF + $fileName = 'memo-penyelesaian-' . str_replace(['/', ' '], ['-', '-'], $memoNumber) . '-' . date('Y-m-d-H-i-s') . '.pdf'; + $filePath = 'memo-penyelesaian/' . $fileName; + + // Simpan PDF ke storage + Storage::disk('public')->put($filePath, $pdf->output()); + // Update status permohonan yang dipilih foreach ($permohonanIds as $permohonanId) { $permohonan = Permohonan::find($permohonanId); @@ -417,7 +460,8 @@ class MemoController extends Controller $permohonan->memo_penyelesaian_date = $memoDate; $permohonan->memo_penyelesaian_payment_date = $paymentDate; $permohonan->memo_penyelesaian_created_at = now(); - $permohonan->save(); + $permohonan->memo_penyelesaian_pdf_path = $filePath; + //$permohonan->save(); Log::info('MemoController: Berhasil update permohonan ID: ' . $permohonanId); } @@ -426,8 +470,8 @@ class MemoController extends Controller DB::commit(); Log::info('MemoController: Berhasil generate PDF dan menyimpan memo penyelesaian untuk ' . count($permohonanIds) . ' permohonan'); - return redirect()->route('memo.index') - ->with('success', 'Memo penyelesaian berhasil dibuat dan disimpan untuk ' . count($permohonanIds) . ' permohonan'); + // Return PDF untuk download + return $pdf->download($fileName); } catch (Exception $e) { DB::rollback(); diff --git a/resources/views/memo/pdf-template.blade.php b/resources/views/memo/pdf-template.blade.php new file mode 100644 index 0000000..c2de268 --- /dev/null +++ b/resources/views/memo/pdf-template.blade.php @@ -0,0 +1,363 @@ + + + +
+ +
+ | Kepada | +: | +SUBDIT E-Channel Support & Operation (NOC) | +
| Dari | +: | +SUBDIT Appraisal | +
| Nomor | +: | +{{ $memoData['memo_number'] }} | +
| Tanggal | +: | +{{ \Carbon\Carbon::parse($memoData['memo_date'])->format('d F Y') }} | +
| Perihal | +: | +Penyelesaian Rekening Escrow / KSL Penilai Jaminan (PJ) | +
Sehubungan dengan telah dilakukannya penilaian jaminan dengan keterangan sbb : +
+ +| Nama Debitur | +: | +Terlampir ({{ $memoData['debitur_count'] }} Debitur) | +
| Jaminan | +: | +{{ $memoData['jaminan_info'] }} | +
| Total Biaya PJ | +: | +Rp {{ number_format($memoData['total_biaya_pj'], 0, ',', '.') }},- | +
| + | + | ({{ terbilang($memoData['total_biaya_pj']) }} Rupiah) | +
| Pembayaran Tanggal | +: | +{{ \Carbon\Carbon::parse($memoData['payment_date'])->format('d F Y') }} | +
| LPJ selesai dikirim | +: | +- | +
| Jenis Penilaian | +: | +KJPP | +
Kami menginstruksikan kepada Sentra Operasi untuk menyelesaikan Rekening Escrow + / KSL Penilai Jaminan atas nama debitur tersebut diatas ke KJPP + (terlampir).
+ +Demikian kami sampaikan, atas perhatian dan kerjasamanya kami ucapkan terima + kasih.
+|
+ Salam + +Innawati Sulina +DD Operation 2 + |
+
+ + + Wahab N. Wibawa +Pgs EO Subdit Appraisal + |
+
+ + + Sumurung P. Siahaan ++ |
+
Lampiran :
+Memo No: {{ $memoData['memo_number'] }}
+ +| No | +Nomor Registrasi | +Debitur | +Cabang | +AO | +Tujuan Penilaian | +Biaya PJ | +
|---|---|---|---|---|---|---|
| {{ $index + 1 }} | +{{ $permohonan->nomor_registrasi }} | +{{ $permohonan->debiture->name ?? '-' }} | +{{ $permohonan->branch->name ?? '-' }} | +{{ $permohonan->user->name ?? '-' }} | +{{ $permohonan->tujuanPenilaian->name ?? '-' }} | +Rp + {{ number_format($permohonan->noc->nominal_bayar ?? 0, 0, ',', '.') }} | +
| Total Biaya PJ: | +Rp {{ number_format($totalBiayaPJ, 0, ',', '.') }} | +|||||