perbaikan print out dan penambahan nomor laporan

This commit is contained in:
majid
2024-12-27 11:29:55 +07:00
parent 66d0226d55
commit b70b3b730f
6 changed files with 620 additions and 304 deletions

View File

@@ -316,3 +316,16 @@
return User::find($userId);
}
function generateLpjUniqueCode($randomLength = 6)
{
$year = date('y');
$month = str_pad(date('m'), 2, '0', STR_PAD_LEFT);
$day = str_pad(date('d'), 2, '0', STR_PAD_LEFT);
// Generate random numbers
$randomNumber = str_pad(mt_rand(0, pow(10, $randomLength) - 1), $randomLength, '0', STR_PAD_LEFT);
// Concatenate components to create the custom code
return $year . $month . $day . $randomNumber;
}

View File

@@ -7,6 +7,7 @@ use Barryvdh\DomPDF\Facade\Pdf; // https://github.com/barryvdh/laravel-dompdf
use Modules\Lpj\Models\Permohonan;
use Modules\Lpj\Models\Inspeksi;
use Modules\Lpj\Models\Penilai;
use Modules\Lpj\Models\Laporan;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
use Maatwebsite\Excel\Facades\Excel;
@@ -17,6 +18,7 @@ use Modules\Location\Models\City;
use Modules\Location\Models\District;
use Modules\Location\Models\Village;
use Illuminate\Support\Facades\Log;
use App\Helpers\Lpj;
class PenilaiController extends Controller
{
@@ -597,6 +599,17 @@ class PenilaiController extends Controller
$inspeksi = Inspeksi::where('permohonan_id', $permohonanId)->where('dokument_id', $documentId)->first();
$lpj = Penilai::where('permohonan_id', $permohonanId)->where('dokument_id', $documentId)->first();
$laporan = Laporan::firstOrCreate(
[
'permohonan_id' => $permohonanId,
'dokumen_jaminan_id' => $documentId,
],
[
'nomor_laporan' => generateLpjUniqueCode(6),
]
);
$nomorLaporan = $laporan->nomor_laporan;
$forminspeksi = null;
$lpjData = null;
$formFoto = null;
@@ -646,7 +659,8 @@ class PenilaiController extends Controller
'lpj',
'statusLpj',
'alamat',
'dataPembanding'
'dataPembanding',
'nomorLaporan'
));
} else {
$pdf = PDF::loadView('lpj::' . $viewLaporan, compact(
@@ -659,7 +673,8 @@ class PenilaiController extends Controller
'lpj',
'statusLpj',
'alamat',
'dataPembanding'
'dataPembanding',
'nomorLaporan'
));
$pdf->setPaper('A4', 'portrait');

36
app/Models/Laporan.php Normal file
View File

@@ -0,0 +1,36 @@
<?php
namespace Modules\Lpj\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;
// use Modules\Lpj\Database\Factories\LaporanFactory;
class Laporan extends Model
{
use HasFactory;
protected $table = 'laporan';
/**
* The attributes that are mass assignable.
*/
protected $guarded = ['id'];
public function jenisLaporan(){
return $this->belongsTo(JenisLaporan::class);
}
public function dokument(){
return $this->belongsTo(DokumenJaminan::class);
}
public function permohonan(){
return $this->belongsTo(Permohonan::class);
}
// protected static function newFactory(): LaporanFactory
// {
// // return LaporanFactory::new();
// }
}

View File

@@ -0,0 +1,43 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
use Modules\Lpj\Models\Permohonan;
use Modules\Lpj\Models\DokumenJaminan;
use Modules\Lpj\Models\JenisLaporan;
return new class () extends Migration {
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('laporan', function (Blueprint $table) {
$table->id();
$table->foreignIdFor(Permohonan::class)->constrained('permohonan')->onDelete('cascade');
$table->foreignIdFor(DokumenJaminan::class)->constrained('dokumen_jaminan')->onDelete('cascade');
$table->string('nomor_laporan');
$table->foreignIdFor(JenisLaporan::class)
->nullable()
->constrained('jenis_laporan')
->onDelete('cascade');
$table->timestamps();
$table->softDeletes();
$table->unsignedBigInteger('created_by')->nullable();
$table->unsignedBigInteger('updated_by')->nullable();
$table->unsignedBigInteger('deleted_by')->nullable();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('laporan');
}
};

View File

@@ -78,7 +78,7 @@
}
body {
margin-top: 7cm;
margin-top: 3cm;
/* Tambahkan margin top sedikit lebih besar dari tinggi header */
margin-bottom: 120px;
position: relative;
@@ -106,7 +106,13 @@
</head>
<body style="width: 80%; margin: auto">
@php
$data = '';
foreach ($permohonan->debiture->documents as $dokumen) {
$data .= $dokumen->jenisJaminan->name . ', ';
}
$data = rtrim($data, ', ');
@endphp
<header id="header">
<table style="width: 100%; border: none;">
<tr>
@@ -114,9 +120,8 @@
@include('lpj::component.logo-bag')
</td>
<td style="width: 80%; text-align: center; border: 1px solid black; ">
<h3 style="width:100% padding-top: 40px; text-align: center;">LAPORAN PENILAIAN ATAS
TANAH
DAN/ATAU BANGUNAN</h3>
<h3 style="width:100% padding-top: 40px; text-align: center;text-transform: uppercase;">LAPORAN PENILAIAN ATAS {{$data}}
</h3>
</td>
</tr>
</table>
@@ -214,7 +219,7 @@
<tr>
<td style="padding: 2px;">No Laporan</td>
<td style="padding: 2px;">:</td>
<td style="padding: 2px;"></td>
<td style="padding: 2px;">{{ $nomorLaporan ?? '' }}</td>
</tr>
<tr>
<td style="padding: 2px;">Tanggal Laporan</td>
@@ -236,13 +241,7 @@
<td style=" padding: 2px;">{{ $permohonan->jenisFasilitasKredit->name ?? '' }}</td>
</tr>
<tr>
@php
$data = '';
foreach ($permohonan->debiture->documents as $dokumen) {
$data .= $dokumen->jenisJaminan->name . ', ';
}
$data = rtrim($data, ', ');
@endphp
<td style=" padding: 2px;">Jenis Jaminan</td>
<td style=" padding: 2px;">:</td>
<td style=" padding: 2px;">{{ $data ?? '' }}</td>
@@ -368,19 +367,34 @@
</tr>
</table>
<table style="width: 100%; border: 1px solid #000;">
<table style="width: 100%; border: 1px solid #000; text-transform: uppercase;">
<tr>
<td >
B. SARANA PELENGKAP DAN LINGKUNGAN
B. ANALISA {{ $data }}
</td>
</tr>
</table>
<table>
@foreach ($permohonan->debiture->documents as $dokumen)
@if ($dokumen->jenisJaminan)
@php
$formKategori = json_decode($dokumen->jenisJaminan->form_kategori, true);
@endphp
@if (isset($formKategori) && $formKategori)
@php
$kategoriArray = is_array($formKategori) ? $formKategori : [$formKategori];
$kategoriUnik = array_unique($kategoriArray);
@endphp
@foreach ($kategoriUnik as $kategori)
@if ($kategori === 'tanah')
<table>
<tr>
@php
$cekLuas = isset($forminspeksi['tanah']['luas_tanah']['tidak sesuai'])
$cekLuas = isset(
$forminspeksi['tanah']['luas_tanah']['tidak sesuai'],
)
? 'tidak sesuai'
: 'sesuai';
@@ -395,11 +409,19 @@
<td style="padding: 2px;">:</td>
<td style="padding: 2px;">
@php
$bentukTanah = $forminspeksi['tanah']['bentuk_tanah']['bentuk_tanah'];
$lainnya = $forminspeksi['tanah']['bentuk_tanah']['lainnya'];
$bentukTanah = isset(
$forminspeksi['tanah']['bentuk_tanah']['bentuk_tanah'],
)
? $forminspeksi['tanah']['bentuk_tanah']['bentuk_tanah']
: [];
$lainnya = isset(
$forminspeksi['tanah']['bentuk_tanah']['lainnya'],
)
? $forminspeksi['tanah']['bentuk_tanah']['lainnya']
: null;
@endphp
{{ implode(', ', $bentukTanah) }}
{{ !empty($bentukTanah) ? implode(', ', $bentukTanah) : 'Data tidak tersedia' }}
@if (in_array('Lainnya', $bentukTanah) && $lainnya)
({{ $lainnya }})
@@ -453,8 +475,11 @@
<td style="padding: 2px;">
@php
$kondisiFisikTanah =
$forminspeksi['tanah']['kondisi_fisik_tanah']['kondisi_fisik_tanah'][0] ?? '-';
$lainnya = $forminspeksi['tanah']['kondisi_fisik_tanah']['lainnya'];
$forminspeksi['tanah']['kondisi_fisik_tanah'][
'kondisi_fisik_tanah'
][0] ?? '-';
$lainnya =
$forminspeksi['tanah']['kondisi_fisik_tanah']['lainnya'];
@endphp
{{ $kondisiFisikTanah }}
@@ -469,7 +494,8 @@
<td style="padding: 2px;">:</td>
<td style="padding: 2px;">
@php
$luasTanahBangunan = $forminspeksi['bangunan']['luas_tanah_bagunan'];
$luasTanahBangunan =
$forminspeksi['bangunan']['luas_tanah_bagunan'];
$output = !empty($luasTanahBangunan['sesuai'])
? $luasTanahBangunan['sesuai']
@@ -487,7 +513,8 @@
<td style="padding: 2px;">:</td>
<td style="padding: 2px;">
@php
$jenisBangunan = $forminspeksi['bangunan']['jenis_bangunan'] ?? [];
$jenisBangunan =
$forminspeksi['bangunan']['jenis_bangunan'] ?? [];
@endphp
@if (!empty($jenisBangunan))
@@ -502,7 +529,8 @@
<td style="padding: 2px;">:</td>
<td style="padding: 2px;">
@php
$kondisiBangunan = $forminspeksi['bangunan']['kondisi_bangunan'] ?? [];
$kondisiBangunan =
$forminspeksi['bangunan']['kondisi_bangunan'] ?? [];
@endphp
@if (!empty($kondisiBangunan))
@@ -518,11 +546,15 @@
<td style="padding: 2px;">
@php
$sifatBangunan = $forminspeksi['bangunan']['sifat_bangunan'][0] ?? '-';
$sifatBangunanInput = $forminspeksi['bangunan']['sifat_bangunan_input'];
$sifatBangunan =
$forminspeksi['bangunan']['sifat_bangunan'][0] ?? '-';
$sifatBangunanInput =
$forminspeksi['bangunan']['sifat_bangunan_input'];
// Filter input yang tidak null
$inputTambahan = array_filter($sifatBangunanInput, function ($value) {
$inputTambahan = array_filter($sifatBangunanInput, function (
$value,
) {
return $value !== null && $value !== '';
});
@@ -539,7 +571,8 @@
</tr>
@php
$spesifikasiBangunan = $forminspeksi['bangunan']['spesifikasi_bangunan'] ?? [];
$spesifikasiBangunan =
$forminspeksi['bangunan']['spesifikasi_bangunan'] ?? [];
@endphp
@if (!empty($spesifikasiBangunan))
@@ -550,7 +583,8 @@
@if (count($spesifikasiBangunan) > 1)
<tr>
<td colspan="3" style="padding: 2px; font-weight: bold;">
<td colspan="3"
style="padding: 2px; font-weight: bold;">
{{ $bangunan['bagunan'] ?? 'Bangunan ' . ($index + 1) }}
</td>
</tr>
@@ -561,19 +595,104 @@
<tr>
<td style="padding: 2px;">{{ $kategori }}</td>
<td style="padding: 2px;">:</td>
<td style="padding: 2px;">{{ implode(', ', $nilaiKategori) }}</td>
<td style="padding: 2px;">
{{ implode(', ', $nilaiKategori) }}</td>
</tr>
@endif
@endforeach
@endforeach
@else
<tr>
<td colspan="3" style="padding: 2px;">Tidak ada data spesifikasi bangunan</td>
<td colspan="3" style="padding: 2px;">Tidak ada data
spesifikasi bangunan</td>
</tr>
@endif
</table>
@elseif ($kategori === 'apartemen-kantor')
<table>
<tr>
@php
$cekLuas = isset(
$forminspeksi['luas_unit']['tidak sesuai'],
)
? 'tidak sesuai'
: 'sesuai';
$luas = $forminspeksi['luas_unit'][$cekLuas] ?? null;
@endphp
<td style="padding: 2px;">Luas Unit</td>
<td style="padding: 2px;">:</td>
<td style="padding: 2px;">{{ $luas ?? '' }}</td>
</tr>
<tr>
<td style="padding: 2px;">Bentuk Unit</td>
<td style="padding: 2px;">:</td>
<td style="padding: 2px;">
@php
$bentukUnit = $forminspeksi['bentuk_unit'] ?? [];
@endphp
@if (!empty($bentukUnit))
{{ implode(', ', $bentukUnit) }}
@else
-
@endif
</td>
</tr>
<tr>
<td style="padding: 2px;">Kondisi Unit</td>
<td style="padding: 2px;">:</td>
<td style="padding: 2px;">
@php
$bentukUnit = $forminspeksi['kondisi_unit'] ?? [];
@endphp
@if (!empty($bentukUnit))
{{ implode(', ', $bentukUnit) }}
@else
-
@endif
</td>
</tr>
<tr>
<td style="padding: 2px;">Posisi Unit</td>
<td style="padding: 2px;">:</td>
<td style="padding: 2px;">
@php
$bentukUnit = $forminspeksi['posisi_unit'] ?? [];
@endphp
@if (!empty($bentukUnit))
{{ implode(', ', $bentukUnit) }}
@else
-
@endif
</td>
</tr>
<tr>
<td style="padding: 2px;">View Unit</td>
<td style="padding: 2px;">:</td>
<td style="padding: 2px;">
@php
$bentukUnit = $forminspeksi['view'] ?? [];
@endphp
@if (!empty($bentukUnit))
{{ implode(', ', $bentukUnit) }}
@else
-
@endif
</td>
</tr>
</table>
@endif
@endforeach
@endif
@endif
@endforeach
</td>

View File

@@ -32,7 +32,7 @@
}
.header {
text-align: center;
margin-bottom: 20px;
}
@@ -205,7 +205,13 @@
<body>
@php
$data = '';
foreach ($permohonan->debiture->documents as $dokumen) {
$data .= $dokumen->jenisJaminan->name . ', ';
}
$data = rtrim($data, ', ');
@endphp
<main class="content">
@php
$senior_officer = null;
@@ -236,54 +242,23 @@
@endphp
<div class="container">
@php
function generateCustomTanggal()
{
$tahunAwal = rand(20, 30);
$bulanTetap = rand(1, 12);
$tanggalTetap = rand(1, 28);
$bulanFormatted = str_pad($bulanTetap, 2, '0', STR_PAD_LEFT);
$tanggalFormatted = str_pad($tanggalTetap, 2, '0', STR_PAD_LEFT);
// Generate sisa angka secara acak
$sisaAngka1 = rand(0, 9);
$sisaAngka2 = rand(0, 9);
$sisaAngka3 = rand(0, 9);
$hasilTanggal = "{$tahunAwal}{$bulanFormatted}{$tanggalFormatted}{$sisaAngka1}{$sisaAngka2}{$sisaAngka3}";
return [
'fullNumber' => $hasilTanggal,
'tahun' => $tahunAwal,
'bulan' => $bulanFormatted,
'tanggal' => $tanggalFormatted,
'sisaAngka' => "{$sisaAngka1}{$sisaAngka2}{$sisaAngka3}",
];
}
$tanggalHasil1 = generateCustomTanggal();
@endphp
<div class="header">
<table style="width: 100%; border: none;">
<table style="width: 100%; border: none; table-layout: fixed;">
<tr>
<td style="width: 50%; text-align: left;" class="header-left">
<td style="width: 50%; text-align: left; padding-right: 10px;">
@include('lpj::component.logo-bag')
</td>
<td style="width: 50%; text-align: right;">
<td style="width: 50%; text-align: right; padding-left: 10px;">
<h3>Tanggal : {{ date('Y-m-d') }}</h3>
<h3>Waktu : {{ date('H:i:s') }}</h3>
<h3>User : {{ Auth::user()->name }}</h3>
</td>
</tr>
</table>
<h4>LAPORAN PENILAIAN ATAS TANAH DAN/ATAU BANGUNAN</h4>
<p>NO:
{{ $permohonan->debiture->branch->code ?? '' }}/{{ $tanggalHasil1['fullNumber'] }}/LPJ/{{ $permohonan->nomor_registrasi }}/VII/{{ $tanggalHasil1['tahun'] }}
<h4 style="text-align: center; text-transform: uppercase; font-size: 14px;">LAPORAN PENILAIAN ATAS {{$data}}</h4>
<p style="text-align: center;">NO:
{{ $permohonan->debiture->branch->code ?? '' }}/{{ $nomorLaporan }}/LPJ/{{ $permohonan->nomor_registrasi }}/{{ onRomawi(date('m')) }}/{{ date('Y') }}
</p>
</div>
@@ -409,15 +384,6 @@
</table>
</div>
@php
$data = '';
foreach ($permohonan->debiture->documents as $dokumen) {
$data .= $dokumen->jenisJaminan->name . ', ';
$dok = $dokumen->detail;
}
$data = rtrim($data, ', '); // Remove the trailing comma and space
@endphp
@if (isset($basicData['jenisJaminan']))
<table class="checkbox-list">
@@ -594,10 +560,23 @@
<table class="judul-table">
<tr>
<td class="border1">F</td>
<td class="border">ANALISA TANAH DAN BANGUNAN</td>
<td class="border" style="text-transform: uppercase;">ANALISA {{ $data }}</td>
</tr>
</table>
</div>
@foreach ($permohonan->debiture->documents as $dokumen)
@if ($dokumen->jenisJaminan)
@php
$formKategori = json_decode($dokumen->jenisJaminan->form_kategori, true);
@endphp
@if (isset($formKategori) && $formKategori)
@php
$kategoriArray = is_array($formKategori) ? $formKategori : [$formKategori];
$kategoriUnik = array_unique($kategoriArray);
@endphp
@foreach ($kategoriUnik as $kategori)
@if ($kategori === 'tanah')
<table>
<tr>
@php
@@ -917,6 +896,117 @@
</td>
</tr>
</table>
@elseif ($kategori === 'apartemen-kantor')
<table>
<tr>
@php
$cekLuas = isset(
$forminspeksi['luas_unit']['tidak sesuai'],
)
? 'tidak sesuai'
: 'sesuai';
$luas = $forminspeksi['luas_unit'][$cekLuas] ?? null;
@endphp
<td style="padding: 2px;">Luas Unit</td>
<td style="padding: 2px;">:</td>
<td style="padding: 2px;">{{ $luas ?? '' }}</td>
</tr>
<tr>
<td><strong>Bentuk Unit</strong></td>
<td>
@if (isset($basicData['bentukUnit']))
<table class="checkbox-list">
<tr>
@foreach ($basicData['bentukUnit'] as $index => $item)
@if ($index % 3 == 0 && $index > 0)
</tr>
<tr>
@endif
<td class="checkbox-item">
<label class="checkbox-label">
<input type="checkbox"
{{ isset($forminspeksi['bentuk_unit']) && in_array($item->name, $forminspeksi['bentuk_unit']) ? 'checked' : '' }}>
{{ $item->name }}
</label>
</td>
@endforeach
</tr>
</table>
@endif
<tr>
<td><strong>Kondisi Unit</strong></td>
<td>
@if (isset($basicData['kondisiUnit']))
<table class="checkbox-list">
<tr>
@foreach ($basicData['kondisiUnit'] as $index => $item)
@if ($index % 3 == 0 && $index > 0)
</tr>
<tr>
@endif
<td class="checkbox-item">
<label class="checkbox-label">
<input type="checkbox"
{{ isset($forminspeksi['kondisi_unit']) && in_array($item->name, $forminspeksi['kondisi_unit']) ? 'checked' : '' }}>
{{ $item->name }}
</label>
</td>
@endforeach
</tr>
</table>
@endif
<tr>
<td><strong>Posisi Unit</strong></td>
<td>
@if (isset($basicData['posisiUnit']))
<table class="checkbox-list">
<tr>
@foreach ($basicData['posisiUnit'] as $index => $item)
@if ($index % 3 == 0 && $index > 0)
</tr>
<tr>
@endif
<td class="checkbox-item">
<label class="checkbox-label">
<input type="checkbox"
{{ isset($forminspeksi['posisi_unit']) && in_array($item->name, $forminspeksi['posisi_unit']) ? 'checked' : '' }}>
{{ $item->name }}
</label>
</td>
@endforeach
</tr>
</table>
@endif
<tr>
<td><strong>View Unit</strong></td>
<td>
@if (isset($basicData['view']))
<table class="checkbox-list">
<tr>
@foreach ($basicData['view'] as $index => $item)
@if ($index % 3 == 0 && $index > 0)
</tr>
<tr>
@endif
<td class="checkbox-item">
<label class="checkbox-label">
<input type="checkbox"
{{ isset($forminspeksi['view']) && in_array($item->name, $forminspeksi['view']) ? 'checked' : '' }}>
{{ $item->name }}
</label>
</td>
@endforeach
</tr>
</table>
@endif
</table>
@endif
@endforeach
@endif
@endif
@endforeach
</div>