Compare commits

...

4 Commits

Author SHA1 Message Date
9ecdaa0cdd Update Module Debitur
penambahan default cif 0x10 dan di buat mandatory
update field npwp input harus minimal 15 dan maksimal 16 digit
penambahan rules
2024-09-13 14:15:10 +07:00
5619c52b0a Update Module Approval Permohonan, Chnage reject to Revisi 2024-09-13 14:11:35 +07:00
dcf9e4fd5e Remove Module Jenis Jaminan 2024-09-13 14:11:14 +07:00
72e4ff3160 Update Module Permohonan, penambahan field jenis_fasilitas_kredit dan nilai_plafond 2024-09-13 14:10:40 +07:00
14 changed files with 228 additions and 61 deletions

View File

@ -28,6 +28,8 @@
$row->branch->name,
$row->tujuanPenilaian->name,
$row->debiture->name,
$row->fasilitasKredit->name,
$row->plafond->name,
$row->status,
$row->authorized_at,
$row->authorized_status,
@ -47,7 +49,9 @@
'Branch Pemohon',
'Tujuan Penilaian',
'Debitur',
'Status',
'Jenis Fasilitas Kredit',
'Nilai Plafond',
'Status Permohonan',
'Tanggal Pengesahan',
'Status Pengesahan',
'Pengesah',
@ -61,7 +65,8 @@
return [
'A' => NumberFormat::FORMAT_NUMBER,
'C' => NumberFormat::FORMAT_DATE_DATETIME,
'L' => NumberFormat::FORMAT_DATE_DATETIME
'K' => NumberFormat::FORMAT_DATE_DATETIME,
'N' => NumberFormat::FORMAT_DATE_DATETIME
];
}
}

View File

@ -71,6 +71,7 @@
public function update(DebitureRequest $request, $id)
{
//print_r($request->all());exit;
$validate = $request->validated();
if ($validate) {

View File

@ -15,6 +15,8 @@
use Modules\Lpj\Models\Branch;
use Modules\Lpj\Models\Debiture;
use Modules\Lpj\Models\DokumenJaminan;
use Modules\Lpj\Models\JenisFasilitasKredit;
use Modules\Lpj\Models\NilaiPlafond;
use Modules\Lpj\Models\Permohonan;
use Modules\Lpj\Models\StatusPermohonan;
use Modules\Lpj\Models\TujuanPenilaian;
@ -30,8 +32,8 @@
public function store(PermohonanRequest $request)
{
$validate = $request->validated();
$validate = $request->validated();
if ($validate) {
try {
// Save to database
@ -63,8 +65,13 @@
$debitur = Debiture::find($debitur);
$tujuanPenilaian = TujuanPenilaian::all();
$status = StatusPermohonan::all();
$fasilitasKredit = JenisFasilitasKredit::all();
$plafond = NilaiPlafond::all();
return view('lpj::permohonan.form', compact('branches', 'debitur', 'tujuanPenilaian', 'status'));
return view(
'lpj::permohonan.form',
compact('branches', 'debitur', 'tujuanPenilaian', 'status', 'fasilitasKredit', 'plafond'),
);
}
public function edit($id)
@ -80,6 +87,9 @@
$villages = Village::where('district_code', $debitur->district_code)->get();
$documents = DokumenJaminan::with('pemilik', 'detail')->where('debiture_id', $id)->get();
$fasilitasKredit = JenisFasilitasKredit::all();
$plafond = NilaiPlafond::all();
return view(
'lpj::permohonan.form',
compact(
@ -92,7 +102,9 @@
'cities',
'districts',
'villages',
'documents'
'documents',
'fasilitasKredit',
'plafond',
),
);
}

View File

@ -3,6 +3,7 @@
namespace Modules\Lpj\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
use Modules\Lpj\Rules\UniqueCifExceptZero;
class DebitureRequest extends FormRequest
{
@ -21,7 +22,7 @@
'nomor_rekening' => 'nullable|string|max:50',
'name' => 'required',
'registered_at' => 'nullable|date',
'npwp' => 'nullable|string|max:16',
'npwp' => 'nullable|string|min:15|max:16',
'email' => 'nullable|email',
'phone' => 'nullable|string|max:15',
'address' => 'nullable|string',
@ -29,10 +30,10 @@
'status' => 'nullable|boolean'
];
if ($this->method() == 'PUT') {
$rules['cif'] = 'nullable|unique:debitures,cif,' . $this->id;
} else {
$rules['cif'] = 'nullable|unique:debitures,cif';
if($this->method() == 'PUT'){
$rules['cif'] = ['required', new UniqueCifExceptZero($this->id)];
}else{
$rules['cif'] = ['required', new UniqueCifExceptZero(null)];
}
return $rules;

View File

@ -21,6 +21,8 @@
'tujuan_penilaian_id' => 'required|exists:tujuan_penilaian,id',
'debiture_id' => 'required|exists:debitures,id',
'status' => 'required|string',
'jenis_fasilitas_kredit_id' => 'required|exists:jenis_fasilitas_kredit,id',
'nilai_plafond_id' => 'required|exists:nilai_plafond,id',
];
return $rules;

View File

@ -18,6 +18,8 @@ class Permohonan extends Base
'tujuan_penilaian_id',
'debiture_id',
'keterangan',
'jenis_fasilitas_kredit_id',
'nilai_plafond_id',
'status',
'authorized_at',
'authorized_status',
@ -44,4 +46,12 @@ class Permohonan extends Base
public function documents(){
return $this->hasMany(DokumenJaminan::class);
}
public function nilaiPlafond(){
return $this->belongsTo(NilaiPlafond::class);
}
public function jenisFasilitasKredit(){
return $this->belongsTo(JenisFasilitasKredit::class);
}
}

View File

@ -0,0 +1,25 @@
<?php
namespace Modules\Lpj\Rules;
use Closure;
use Illuminate\Contracts\Validation\ValidationRule;
use Modules\Lpj\Models\Debiture;
class UniqueCifExceptZero implements ValidationRule
{
public function __construct($id = null)
{
$this->id = $id;
}
public function validate($attribute, $value, $fail): void
{
if (Debiture::where($attribute, $value)
->where('id', '!=', $this->id)
->where($attribute, '!=', '000000')
->exists()) {
$fail('The :attribute field must be uniquse.'.$this->id);
}
}
}

View File

@ -0,0 +1,33 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
use Modules\Lpj\Models\JenisFasilitasKredit;
use Modules\Lpj\Models\NilaiPlafond;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('permohonan', function (Blueprint $table) {
$table->foreignIdFor(JenisFasilitasKredit::class)->nullable()->onDelete('cascade');
$table->foreignIdFor(NilaiPlafond::class)->nullable()->onDelete('cascade');
$table->string('status')->default('order')->change();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('permohonan', function (Blueprint $table) {
$table->dropForeign(['fasilitas_kredit_id']);
$table->dropForeign(['nilai_plafond_id']);
});
}
};

View File

@ -111,17 +111,9 @@
"permission": "",
"roles": []
},
{
"title": "Jenis Jaminan",
"path": "basicdata.jenis-jaminan",
"classes": "",
"attributes": [],
"permission": "",
"roles": []
},
{
"title": "Jenis Aset",
"path": "basicdata.jenis-aset",
"path": "basicdata.jenis-jaminan",
"classes": "",
"attributes": [],
"permission": "",

View File

@ -1,5 +1,6 @@
<form action="{{ isset($debitur->id) ? route('debitur.update', $debitur->id) : route('debitur.store') }}" method="POST" class="grid gap-5">
@if(isset($debitur->id))
<input type="hidden" name="id" value="{{ $debitur->id }}">
@method('PUT')
@endif
@csrf
@ -29,7 +30,7 @@
CIF
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('cif') border-danger bg-danger-light @enderror" type="number" name="cif" value="{{ $debitur->cif ?? '' }}">
<input class="input @error('cif') border-danger bg-danger-light @enderror" type="number" name="cif" value="{{ $debitur->cif ?? '0000000000' }}">
@error('cif')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror

View File

@ -247,8 +247,8 @@
<button type="submit" name="status" value="register" class="btn btn-success">
Approve
</button>
<button type="submit" name="status" value="revisi" class="btn btn-danger ml-3">
Reject
<button type="submit" name="status" value="revisi" class="btn btn-warning ml-3">
Revisi
</button>
</div>
</form>

View File

@ -74,6 +74,60 @@
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Fasilitas Kredit
</label>
<div class="flex flex-wrap items-baseline w-full">
<select class="input tomselect w-full @error('jenis_fasilitas_kredit_id') border-danger bg-danger-light @enderror" name="jenis_fasilitas_kredit_id" id="jenis_fasilitas_kredit_id">
<option value="">Pilih Fasilitas Kredit</option>
@if(isset($fasilitasKredit))
@foreach($fasilitasKredit as $row)
@if(isset($permohonan))
<option value="{{ $row->id }}" {{ isset($permohonan->jenis_fasilitas_kredit_id) && $permohonan->jenis_fasilitas_kredit_id == $row->id ?'selected' : '' }}>
{{ $row->name }}
</option>
@else
<option value="{{ $row->id }}">
{{ $row->name }}
</option>
@endif
@endforeach
@endif
</select>
@error('status')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Nilai Plafond
</label>
<div class="flex flex-wrap items-baseline w-full">
<select class="input tomselect w-full @error('nilai_plafond_id') border-danger bg-danger-light @enderror" name="nilai_plafond_id" id="nilai_plafond_id">
<option value="">Pilih Nilai Flafond</option>
@if(isset($plafond))
@foreach($plafond as $row)
@if(isset($permohonan))
<option value="{{ $row->id }}" {{ isset($permohonan->nilai_plafond_id) && $permohonan->nilai_plafond_id == $row->id ?'selected' : '' }}>
{{ $row->name }}
</option>
@else
<option value="{{ $row->id }}">
{{ $row->name }}
</option>
@endif
@endforeach
@endif
</select>
@error('status')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Status Permohonan
@ -174,12 +228,66 @@
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Fasilitas Kredit
</label>
<div class="flex flex-wrap items-baseline w-full">
<select class="input tomselect w-full @error('jenis_fasilitas_kredit_id') border-danger bg-danger-light @enderror" name="jenis_fasilitas_kredit_id" id="jenis_fasilitas_kredit_id">
<option value="">Pilih Fasilitas Kredit</option>
@if(isset($fasilitasKredit))
@foreach($fasilitasKredit as $row)
@if(isset($permohonan))
<option value="{{ $row->id }}" {{ isset($permohonan->jenis_fasilitas_kredit_id) && $permohonan->jenis_fasilitas_kredit_id == $row->id ?'selected' : '' }}>
{{ $row->name }}
</option>
@else
<option value="{{ $row->id }}">
{{ $row->name }}
</option>
@endif
@endforeach
@endif
</select>
@error('status')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Nilai Plafond
</label>
<div class="flex flex-wrap items-baseline w-full">
<select class="input tomselect w-full @error('nilai_plafond_id') border-danger bg-danger-light @enderror" name="nilai_plafond_id" id="nilai_plafond_id">
<option value="">Pilih Nilai Flafond</option>
@if(isset($plafond))
@foreach($plafond as $row)
@if(isset($permohonan))
<option value="{{ $row->id }}" {{ isset($permohonan->nilai_plafond_id) && $permohonan->nilai_plafond_id == $row->id ?'selected' : '' }}>
{{ $row->name }}
</option>
@else
<option value="{{ $row->id }}">
{{ $row->name }}
</option>
@endif
@endforeach
@endif
</select>
@error('status')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Status Permohonan
</label>
<div class="flex flex-wrap items-baseline w-full">
<select class="input tomselect w-full @error('branch_id') border-danger bg-danger-light @enderror" name="status" id="status">
<select class="input tomselect w-full @error('status') border-danger bg-danger-light @enderror" name="status" id="status">
<option value="">Pilih Status Permohonan</option>
@if(isset($status))
@foreach($status as $row)

View File

@ -39,17 +39,17 @@
Breadcrumbs::for('basicdata.jenis-jaminan', function (BreadcrumbTrail $trail) {
$trail->parent('basicdata');
$trail->push('Jenis Jaminan', route('basicdata.jenis-jaminan.index'));
$trail->push('Jenis Aset', route('basicdata.jenis-jaminan.index'));
});
Breadcrumbs::for('basicdata.jenis-jaminan.create', function (BreadcrumbTrail $trail) {
$trail->parent('basicdata.jenis-jaminan');
$trail->push('Tambah Jenis Jaminan', route('basicdata.jenis-jaminan.create'));
$trail->push('Tambah Jenis Aset', route('basicdata.jenis-jaminan.create'));
});
Breadcrumbs::for('basicdata.jenis-jaminan.edit', function (BreadcrumbTrail $trail) {
$trail->parent('basicdata.jenis-jaminan');
$trail->push('Edit Jenis Jaminan');
$trail->push('Edit Jenis Aset');
});
Breadcrumbs::for('basicdata.tujuan-penilaian', function (BreadcrumbTrail $trail) {
@ -67,21 +67,6 @@
$trail->push('Edit Tujuan Penilaian');
});
Breadcrumbs::for('basicdata.jenis-aset', function (BreadcrumbTrail $trail) {
$trail->parent('basicdata');
$trail->push('Jenis Aset', route('basicdata.jenis-aset.index'));
});
Breadcrumbs::for('basicdata.jenis-aset.create', function (BreadcrumbTrail $trail) {
$trail->parent('basicdata.jenis-aset');
$trail->push('Tambah Jenis Aset', route('basicdata.jenis-aset.create'));
});
Breadcrumbs::for('basicdata.jenis-aset.edit', function (BreadcrumbTrail $trail) {
$trail->parent('basicdata.jenis-aset');
$trail->push('Edit Jenis Aset');
});
Breadcrumbs::for('basicdata.jenis-dokumen', function (BreadcrumbTrail $trail) {
$trail->parent('basicdata');
$trail->push('Jenis Dokumen', route('basicdata.jenis-dokumen.index'));

View File

@ -48,7 +48,7 @@
});
Route::resource('jenis-legalitas-jaminan', JenisLegalitasJaminanController::class);
Route::name('jenis-jaminan.')->prefix('jenis-jaminan')->group(function () {
Route::name('jenis-jaminan.')->prefix('jenis-aset')->group(function () {
Route::get('legalitas/{id}', [JenisJaminanController::class, 'legalitasJaminan'])->name('legalitas');
Route::get('restore/{id}', [JenisJaminanController::class, 'restore'])->name('restore');
Route::get('datatables', [JenisJaminanController::class, 'dataForDatatables'])
@ -65,14 +65,6 @@
});
Route::resource('tujuan-penilaian', TujuanPenilaianController::class);
Route::name('jenis-aset.')->prefix('jenis-aset')->group(function () {
Route::get('restore/{id}', [JenisAsetController::class, 'restore'])->name('restore');
Route::get('datatables', [JenisAsetController::class, 'dataForDatatables'])
->name('datatables');
Route::get('export', [JenisAsetController::class, 'export'])->name('export');
});
Route::resource('jenis-aset', JenisAsetController::class);
Route::name('jenis-dokumen.')->prefix('jenis-dokumen')->group(function () {
Route::get('restore/{id}', [JenisDokumenController::class, 'restore'])->name('restore');
Route::get('datatables', [JenisDokumenController::class, 'dataForDatatables'])