Merge branch 'staging' into feature/senior-officer
This commit is contained in:
@@ -31,11 +31,22 @@ class LaporanController extends Controller
|
||||
/**
|
||||
* Show the specified resource.
|
||||
*/
|
||||
public function show($id) {}
|
||||
public function show($id) {
|
||||
$permohonan = Permohonan::with([
|
||||
'penilai'])->find($id);
|
||||
return view('lpj::laporan.show', compact('permohonan'));
|
||||
}
|
||||
/**
|
||||
* Store form inspeksi.
|
||||
*/
|
||||
public function store(Request $request) {}
|
||||
public function store(Request $request) {
|
||||
$permohonan = Permohonan::find($request->permohonan_id);
|
||||
if($request->nilai_liquidasi) {
|
||||
$permohonan->nilai_liquidasi = $request->liquidasi;
|
||||
$permohonan->save();
|
||||
return redirect()->route('laporan.index')->with('success', 'Nilai Liquidasi updated successfully');
|
||||
}
|
||||
}
|
||||
|
||||
public function update(Request $request, $id) {}
|
||||
|
||||
@@ -46,7 +57,11 @@ class LaporanController extends Controller
|
||||
}
|
||||
|
||||
// Retrieve data from the database
|
||||
$query = Permohonan::query()->whereIn('status',['proses-laporan','done']);
|
||||
$query = Permohonan::query()->whereIn('status',['proses-laporan','done'])->whereNotNull('approval_so_at')->whereNotNull('approval_eo_at')->where(function ($q) {
|
||||
$q->whereIn('nilai_plafond_id', [1,4])
|
||||
->whereNotNull('approval_dd_at')
|
||||
->orWhereIn('nilai_plafond_id', [2,3]);
|
||||
});
|
||||
|
||||
$query = $query->orderBy('nomor_registrasi', 'desc');
|
||||
// Apply search filter if provided
|
||||
|
||||
@@ -173,14 +173,30 @@
|
||||
if ($request->keterangan) {
|
||||
$data['approve_keterangan_bayar'] = $request->keterangan;
|
||||
}
|
||||
|
||||
$output['data'] = $data;
|
||||
|
||||
$modal = Permohonan::find($id);
|
||||
$modal->update($data);
|
||||
//
|
||||
// Update the status of the related permohonan to 'spk'
|
||||
$permohonan = Permohonan::find($id);
|
||||
|
||||
if ($permohonan) {
|
||||
$data['status_bayar'] = 'sudah_bayar';
|
||||
if($permohonan->jenis_penilaian_id == 2) {
|
||||
$data['status'] = 'spk';
|
||||
}
|
||||
|
||||
$permohonan->update($data);
|
||||
|
||||
if($permohonan->jenis_penilaian_id == 2) {
|
||||
PenawaranTender::where('nomor_registrasi', $permohonan->nomor_registrasi)->update([
|
||||
'status' => 'spk',
|
||||
'updated_by' => Auth::id(),
|
||||
'updated_at' => now(),
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
$output['status'] = 'success';
|
||||
$output['message'] = ['Otorisasi' . $modal->nomor_registrasi . 'berhasil di lakukan'];
|
||||
$output['message'] = ['Otorisasi' . $permohonan->nomor_registrasi . 'berhasil di lakukan'];
|
||||
} catch (Exception $e) {
|
||||
$output['status'] = 'error';
|
||||
$output['message'] = ['Otorisasi gagal di lakukan.'];
|
||||
|
||||
@@ -550,7 +550,7 @@ class PenilaianController extends Controller
|
||||
$filteredRecords = $query->count();
|
||||
|
||||
// Ambil data dengan relasi
|
||||
$data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian', 'approveSo'])->get();
|
||||
$data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian', 'approveSo', 'approveEo', 'approveDd'])->get();
|
||||
|
||||
|
||||
// Hitung jumlah halaman
|
||||
|
||||
@@ -67,24 +67,6 @@
|
||||
|
||||
$persetujuanPenawaran->save();
|
||||
|
||||
// Update the status of the related permohonan to 'spk'
|
||||
$permohonan = Permohonan::find(request()->get('permohonan_id'));
|
||||
if ($permohonan) {
|
||||
$permohonan->status_bayar = request()->get('status_bayar');
|
||||
$permohonan->status = 'noc';
|
||||
$permohonan->save();
|
||||
|
||||
// andy add, update status penawaran.status='spk'
|
||||
// $penawaran = PenawaranTender::where('nomor_registrasi',$permohonan->nomor_registrasi)->first();
|
||||
PenawaranTender::where('nomor_registrasi', $permohonan->nomor_registrasi)->update([
|
||||
'status' => 'noc',
|
||||
'updated_by' => Auth::id(),
|
||||
'updated_at' => now(),
|
||||
]);
|
||||
// andy add, update status penawaran.status='spk'
|
||||
|
||||
}
|
||||
|
||||
return redirect()
|
||||
->route('persetujuan-penawaran.index')->with('success', 'Persetujuan Penawaran berhasil disimpan.');
|
||||
}
|
||||
|
||||
@@ -46,12 +46,11 @@
|
||||
}
|
||||
|
||||
// Retrieve data from the database
|
||||
$query = PenawaranTender::with(['permohonan', 'tujuanPenilaianKjpp'])->whereHas(
|
||||
'permohonan',
|
||||
function ($q) {
|
||||
$q->where('status', '=', 'spk');
|
||||
},
|
||||
)->withCount('penawarandetails');
|
||||
$query =PenawaranTender::query()
|
||||
->select('penawaran.*', 'tujuan_penilaian_kjpp.name as tujuan_penilaian_kjpp_name')
|
||||
->leftJoin('tujuan_penilaian_kjpp', 'tujuan_penilaian_kjpp.id','=','penawaran.tujuan_penilaian_kjpp_id')
|
||||
->where('penawaran.status','=','spk')
|
||||
->withCount('penawarandetails');
|
||||
|
||||
// Apply search filter if provided
|
||||
if ($request->has('search') && !empty($request->get('search'))) {
|
||||
|
||||
@@ -161,6 +161,10 @@
|
||||
return $this->belongsTo(Penilaian::class, 'nomor_registrasi', 'nomor_registrasi');
|
||||
}
|
||||
|
||||
public function penilai(){
|
||||
return $this->belongsTo(Penilai::class, 'id', 'permohonan_id');
|
||||
}
|
||||
|
||||
public function penawaranTender()
|
||||
{
|
||||
return $this->belongsTo(PenawaranTender::class, 'nomor_registrasi', 'nomor_registrasi');
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
Schema::table('permohonan', function (Blueprint $table) {
|
||||
$table->string('nilai_liquidasi')->nullable()->after('nilai_plafond_id');
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::table('permohonan', function (Blueprint $table) {
|
||||
$table->dropColumn('nilai_liquidasi');
|
||||
});
|
||||
}
|
||||
};
|
||||
49
module.json
49
module.json
@@ -14,7 +14,7 @@
|
||||
"menu": {
|
||||
"otorisator": [
|
||||
{
|
||||
"title": "Permohonan",
|
||||
"title": "Otorisasi Permohonan",
|
||||
"path": "authorization",
|
||||
"icon": "ki-filled ki-security-user text-lg text-info",
|
||||
"classes": "",
|
||||
@@ -25,6 +25,19 @@
|
||||
"pemohon-eo"
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Otorisasi Pembatalan Permohonan",
|
||||
"path": "otorisator.pembatalan",
|
||||
"icon": "ki-filled ki-file-deleted text-lg text-info",
|
||||
"classes": "",
|
||||
"attributes": [],
|
||||
"permission": "",
|
||||
"roles": [
|
||||
"administrator",
|
||||
"senior-officer",
|
||||
"pemohon-eo"
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Otorisasi Penawaran",
|
||||
"path": "otorisasitender.penawaran",
|
||||
@@ -40,7 +53,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Pembayaran",
|
||||
"title": "Otorisasi Pembayaran",
|
||||
"path": "pembayaran.approval",
|
||||
"icon": "ki-filled ki-ensure text-lg text-info",
|
||||
"classes": "",
|
||||
@@ -49,12 +62,11 @@
|
||||
"roles": [
|
||||
"administrator",
|
||||
"admin",
|
||||
"EO Appraisal",
|
||||
"DD Appraisal"
|
||||
"pemohon-eo"
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Pelaporan",
|
||||
"title": "Otorisasi Pelaporan",
|
||||
"path": "otorisator.pelaporan",
|
||||
"icon": "ki-filled ki-filter-tablet text-lg text-info",
|
||||
"classes": "",
|
||||
@@ -68,21 +80,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Pembatalan",
|
||||
"path": "otorisator.pembatalan",
|
||||
"icon": "ki-filled ki-file-deleted text-lg text-info",
|
||||
"classes": "",
|
||||
"attributes": [],
|
||||
"permission": "",
|
||||
"roles": [
|
||||
"administrator",
|
||||
"senior-officer",
|
||||
"EO Appraisal",
|
||||
"DD Appraisal"
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "SLA",
|
||||
"title": "Otorisasi SLA",
|
||||
"path": "otorisator.sla",
|
||||
"icon": "ki-filled ki-calendar-tick text-lg text-info",
|
||||
"classes": "",
|
||||
@@ -522,17 +520,6 @@
|
||||
"admin"
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "SLA",
|
||||
"path": "basicdata.sla",
|
||||
"classes": "",
|
||||
"attributes": [],
|
||||
"permission": "",
|
||||
"roles": [
|
||||
"administrator",
|
||||
"admin"
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Bentuk",
|
||||
"path": "basicdata.bentuk-tanah",
|
||||
|
||||
@@ -94,7 +94,7 @@
|
||||
<div class="card-body">
|
||||
<div class="scrollable-x-auto">
|
||||
<table
|
||||
class="table table-auto align-middle text-gray-700 font-medium text-sm my-4"
|
||||
class="table table-auto align-middle text-gray-700 font-medium text-sm mb-4"
|
||||
data-datatable-table="true">
|
||||
<thead>
|
||||
<tr>
|
||||
|
||||
@@ -186,18 +186,32 @@
|
||||
actions: {
|
||||
title: 'Actions',
|
||||
render: (item, data) => {
|
||||
const inspeksiId = data.debiture?.documents[0]?.inspeksi[0].id || '-';
|
||||
const inspeksiId = data.debiture?.documents[0]?.inspeksi[0]?.id || '-';
|
||||
const dokumenID = data.debiture?.documents[0]?.id || '-';
|
||||
const jenisJaminanID = data.debiture?.documents[0]?.jenis_jaminan_id || '-';
|
||||
return `
|
||||
<a href="{{ route('penilai.print-out') }}?permohonanId=${data.id}&documentId=${dokumenID}&inspeksiId=${inspeksiId}&jaminanId=${jenisJaminanID}&statusLpj=0}}" class="btn btn-sm btn-success">
|
||||
Resume
|
||||
</a>
|
||||
<a href="{{ route('penilai.print-out') }}?permohonanId=${data.id}&documentId=${dokumenID}&inspeksiId=${inspeksiId}&jaminanId=${jenisJaminanID}&statusLpj=0"
|
||||
class="btn btn-sm btn-dark">
|
||||
Laporan
|
||||
</a>
|
||||
`;
|
||||
let laporanButton = '';
|
||||
const resumeButton = `
|
||||
<a href="{{ route('penilai.print-out') }}?permohonanId=${data.id}&documentId=${dokumenID}&inspeksiId=${inspeksiId}&jaminanId=${jenisJaminanID}&statusLpj=0" class="btn btn-sm btn-success">
|
||||
Resume
|
||||
</a>`;
|
||||
|
||||
if(data.nilai_liquidasi==null) {
|
||||
laporanButton = `
|
||||
<a href="laporan/${data.id}" class="btn btn-sm btn-dark">
|
||||
Input NL
|
||||
</a>`;
|
||||
}
|
||||
|
||||
console.log(data.nilai_liquidasi);
|
||||
if(data.status_bayar=="sudah_bayar" && data.nilai_liquidasi >0) {
|
||||
|
||||
laporanButton = `
|
||||
<a href="{{ route('penilai.print-out') }}?permohonanId=${data.id}&documentId=${dokumenID}&inspeksiId=${inspeksiId}&jaminanId=${jenisJaminanID}&statusLpj=0" class="btn btn-sm btn-dark">
|
||||
Laporan
|
||||
</a>`;
|
||||
}
|
||||
|
||||
return `${resumeButton} ${laporanButton}`;
|
||||
},
|
||||
}
|
||||
},
|
||||
|
||||
114
resources/views/laporan/show.blade.php
Normal file
114
resources/views/laporan/show.blade.php
Normal file
@@ -0,0 +1,114 @@
|
||||
@extends('layouts.main')
|
||||
|
||||
@section('content')
|
||||
<div class="w-full grid gap-5 lg:gap-7.5 mx-auto">
|
||||
<div class="card border border-agi-100 pb-2.5">
|
||||
<div class="card-header bg-agi-50" id="basic_settings">
|
||||
<div class="card-title flex flex-row gap-1.5">
|
||||
Input Nilai Liquidasi (LPJ)
|
||||
</div>
|
||||
<div class="flex items-center gap-2">
|
||||
<a href="{{ route('pembayaran.index') }}" class="btn btn-xs btn-info"><i class="ki-filled ki-exit-left"></i> Back</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
@php
|
||||
$lpj = json_decode($permohonan->penilai->lpj);
|
||||
@endphp
|
||||
<form action="{{ route('laporan.store') }}" method="POST" class="grid gap-5" enctype="multipart/form-data">
|
||||
@csrf
|
||||
<input type="hidden" name="permohonan_id" value="{{ $permohonan->id }}">
|
||||
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">
|
||||
Nomor Registrasi
|
||||
</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<input readonly type="text" name="nomor_registrasi" id="nomor_registrasi" class="input w-full @error('nomor_registrasi') border-danger bg-danger-light @enderror" value="{{ old('nomor_registrasi', $permohonan->nomor_registrasi ?? '') }}" placeholder="Nomor Registrasi">
|
||||
@error('nomor_registrasi')
|
||||
<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">
|
||||
Debitur
|
||||
</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<input readonly type="text" name="debitur" id="debitur" class="input w-full @error('debitur') border-danger bg-danger-light @enderror" value="{{ old('debitur', $permohonan->debiture->name ?? '') }}" placeholder="Debitur">
|
||||
@error('debitur')
|
||||
<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">
|
||||
Total Nilai Pasar Wajar
|
||||
</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<input type="text" name="total_niilai_pasar_wajar" id="total_niilai_pasar_wajar" class="currency input w-full @error('total_niilai_pasar_wajar') border-danger bg-danger-light @enderror" value="{{ old('total_niilai_pasar_wajar', $lpj->total_nilai_pasar_wajar ?? '') }}" placeholder="Masukkan Nilai Pasar Wajar">
|
||||
@error('total_niilai_pasar_wajar')
|
||||
<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">
|
||||
Liquidasi (%)
|
||||
</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<input type="text" name="liquidasi" max="100" min="0" id="liquidasi" class="persen input w-full @error('liquidasi') border-danger bg-danger-light @enderror" value="{{ old('liquidasi', $lpj->liquidasi ?? '') }}" placeholder="Masukkan Persentase Liquidasi">
|
||||
@error('liquidasi')
|
||||
<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 Liquidasi
|
||||
</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<input type="text" name="nilai_liquidasi" id="nilai_liquidasi" class="currency input w-full @error('nilai_liquidasi') border-danger bg-danger-light @enderror" placeholder="Nilai Liquidasi">
|
||||
@error('nilai_liquidasi')
|
||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex justify-end">
|
||||
<button type="submit" class="btn btn-primary">
|
||||
Proses
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
|
||||
@push('scripts')
|
||||
<script>
|
||||
function calculateNilaiLiquidasi() {
|
||||
const totalNilaiPasarWajar = parseFloat(document.getElementById('total_niilai_pasar_wajar').value.replace(/\./g, '').replace(',', '.'));
|
||||
const liquidasiPercentage = parseFloat(document.getElementById('liquidasi').value);
|
||||
const nilaiLiquidasiInput = document.getElementById('nilai_liquidasi');
|
||||
|
||||
if (!isNaN(totalNilaiPasarWajar) && !isNaN(liquidasiPercentage)) {
|
||||
const nilaiLiquidasi = totalNilaiPasarWajar * (liquidasiPercentage / 100);
|
||||
nilaiLiquidasiInput.value = nilaiLiquidasi.toLocaleString('id-ID', {maximumFractionDigits: 0});
|
||||
} else {
|
||||
nilaiLiquidasiInput.value = '';
|
||||
}
|
||||
}
|
||||
|
||||
// Calculate initially in case values are pre-filled
|
||||
document.addEventListener('DOMContentLoaded', calculateNilaiLiquidasi);
|
||||
|
||||
// Ensure the calculation happens when Total Nilai Pasar Wajar changes as well
|
||||
document.getElementById('liquidasi').addEventListener('change', calculateNilaiLiquidasi);
|
||||
</script>
|
||||
@endpush
|
||||
@@ -67,12 +67,8 @@
|
||||
<span class="sort"> <span class="sort-label"> Nominal bayar </span>
|
||||
<span class="sort-icon"> </span> </span>
|
||||
</th>
|
||||
<th class="min-w-[150px]" data-datatable-column="bukti_ksl">
|
||||
<span class="sort"> <span class="sort-label"> Bukti KSL </span>
|
||||
<span class="sort-icon"> </span> </span>
|
||||
</th>
|
||||
<th class="min-w-[150px]" data-datatable-column="tanggal_penyelesaian">
|
||||
<span class="sort"> <span class="sort-label"> Tanggal Penyelesaian </span>
|
||||
<th class="min-w-[150px]" data-datatable-column="bukti_bayar">
|
||||
<span class="sort"> <span class="sort-label"> Bukti Bayar </span>
|
||||
<span class="sort-icon"> </span> </span>
|
||||
</th>
|
||||
<th class="min-w-[150px]" data-datatable-column="approval_by">
|
||||
@@ -80,6 +76,11 @@
|
||||
<span class="sort-icon"> </span> </span>
|
||||
</th>
|
||||
|
||||
<th class="min-w-[150px]" data-datatable-column="approve_keterangan_bayar">
|
||||
<span class="sort"> <span class="sort-label"> Keterangan </span>
|
||||
<span class="sort-icon"> </span> </span>
|
||||
</th>
|
||||
|
||||
<th class="min-w-[50px] text-center" data-datatable-column="actions">Action</th>
|
||||
</tr>
|
||||
</thead>
|
||||
@@ -190,8 +191,11 @@
|
||||
render: (item, data) => {
|
||||
if (data.permohonan) {
|
||||
return `${data.permohonan.nomor_registrasi}`;
|
||||
} else if(data.penawaran) {
|
||||
return `${data.penawaran.permohonan.nomor_registrasi}`;
|
||||
}
|
||||
return `${data.penawaran.permohonan.nomor_registrasi}`;
|
||||
return "";
|
||||
|
||||
},
|
||||
},
|
||||
tanggal_permohonan: {
|
||||
@@ -199,8 +203,10 @@
|
||||
render: (item, data) => {
|
||||
if (data.permohonan) {
|
||||
return `${data.permohonan.tanggal_permohonan}`;
|
||||
} else if(data.penawaran) {
|
||||
return `${data.penawaran.permohonan.tanggal_permohonan}`;
|
||||
}
|
||||
return `${data.penawaran.permohonan.tanggal_permohonan}`;
|
||||
return "";
|
||||
},
|
||||
},
|
||||
user_id: {
|
||||
@@ -209,7 +215,11 @@
|
||||
if (data.permohonan) {
|
||||
return `${data.permohonan.user.name}`;
|
||||
}
|
||||
return `${data.penawaran.permohonan.user.name}`;
|
||||
else if(data.penawaran) {
|
||||
return `${data.penawaran.permohonan.user.name}`;
|
||||
}
|
||||
return "";
|
||||
|
||||
},
|
||||
},
|
||||
branch_id: {
|
||||
@@ -218,7 +228,11 @@
|
||||
if (data.permohonan) {
|
||||
return `${data.permohonan.branch.name}`;
|
||||
}
|
||||
return `${data.penawaran.permohonan.branch.name}`;
|
||||
else if(data.penawaran) {
|
||||
return `${data.penawaran.permohonan.branch.name}`;
|
||||
}
|
||||
return "";
|
||||
|
||||
},
|
||||
},
|
||||
debitur_id: {
|
||||
@@ -227,7 +241,11 @@
|
||||
if (data.permohonan) {
|
||||
return `${data.permohonan.debiture.name}`;
|
||||
}
|
||||
return `${data.penawaran.permohonan.debiture.name}`;
|
||||
else if(data.penawaran) {
|
||||
return `${data.penawaran.permohonan.debiture.name}`;
|
||||
}
|
||||
return "";
|
||||
|
||||
},
|
||||
},
|
||||
status_bayar: {
|
||||
@@ -235,17 +253,22 @@
|
||||
render: (item, data) => {
|
||||
if(data.permohonan){
|
||||
var permohonan = data.permohonan;
|
||||
} else {
|
||||
} else if(data.penawaran){
|
||||
var permohonan = data.penawaran.permohonan;
|
||||
}
|
||||
|
||||
const status = permohonan.status_bayar.replace(/_/g,
|
||||
' ');
|
||||
const statusClass = permohonan.status_bayar === 'belum_bayar' ? 'text-red-600' :
|
||||
'text-green-600';
|
||||
return `<span class="text-md font-bold ${statusClass} uppercase">
|
||||
if(permohonan) {
|
||||
|
||||
const status = permohonan.status_bayar.replace(/_/g,
|
||||
' ');
|
||||
const statusClass = permohonan.status_bayar === 'belum_bayar' ? 'text-red-600' :
|
||||
'text-green-600';
|
||||
return `<span class="text-md font-bold ${statusClass} uppercase">
|
||||
${status}
|
||||
</span>`;
|
||||
}
|
||||
|
||||
return "-";
|
||||
},
|
||||
},
|
||||
tanggal_setor: {
|
||||
@@ -260,11 +283,11 @@
|
||||
return `${window.formatRupiah(data.nominal_bayar)}`;
|
||||
},
|
||||
},
|
||||
bukti_ksl: {
|
||||
title: 'Bukti KSL',
|
||||
bukti_bayar:{
|
||||
title: 'Bukti Bayar',
|
||||
render: (item, data) => {
|
||||
if (data.bukti_ksl) {
|
||||
return `<a href="storage/${data.bukti_ksl}" download="storage/${data.bukti_ksl}" target="_blank" class="badge badge-sm badge-outline">
|
||||
if (data.bukti_bayar) {
|
||||
return `<a href="storage/${data.bukti_bayar}" download="storage/${data.bukti_bayar}" target="_blank" class="badge badge-sm badge-outline">
|
||||
Download <i class="ki-filled ki-cloud-download"></i>
|
||||
</a>`;
|
||||
} else {
|
||||
@@ -272,47 +295,62 @@
|
||||
}
|
||||
},
|
||||
},
|
||||
tanggal_penyelesaian: {
|
||||
title: 'Tanggal Penyelesaian',
|
||||
render: (item, data) => {
|
||||
if(data.status==1) {
|
||||
return `${window.formatTanggalIndonesia(data.updated_at)}`;
|
||||
}
|
||||
return "-";
|
||||
},
|
||||
},
|
||||
approve_bayar_by: {
|
||||
title: 'Status Approve',
|
||||
render: (item, data) => {
|
||||
if(data.permohonan){
|
||||
var permohonan = data.permohonan;
|
||||
} else {
|
||||
} else if(data.penawaran){
|
||||
var permohonan = data.penawaran.permohonan;
|
||||
}
|
||||
|
||||
if(permohonan.approve_bayar_by) {
|
||||
return `${permohonan.approve_bayar.name}`;
|
||||
if(permohonan) {
|
||||
if(permohonan.approve_bayar) {
|
||||
return `${permohonan.approve_bayar.name}`;
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
return "Menunggu Approval";
|
||||
},
|
||||
},
|
||||
approve_keterangan_bayar: {
|
||||
title: 'Status Approve',
|
||||
render: (item, data) => {
|
||||
if(data.permohonan){
|
||||
var permohonan = data.permohonan;
|
||||
} else if(data.penawaran){
|
||||
var permohonan = data.penawaran.permohonan;
|
||||
}
|
||||
|
||||
if(permohonan) {
|
||||
return `${permohonan.approve_keterangan_bayar}`;
|
||||
}
|
||||
|
||||
return "";
|
||||
},
|
||||
},
|
||||
actions: {
|
||||
title: 'Status',
|
||||
render: (item, data) => {
|
||||
var iconPembayaranOtorisator = '';
|
||||
if (!data.approve_bayar_by) {
|
||||
iconPembayaranOtorisator = `<a class="btn btn-sm btn-icon btn-clear btn-primary " onclick="pembayaranOtorisator(${data.id})">
|
||||
<i class="ki-filled ki-double-check"></i>
|
||||
</a>`;
|
||||
if(data.permohonan){
|
||||
var permohonan = data.permohonan;
|
||||
} else if(data.penawaran){
|
||||
var permohonan = data.penawaran.permohonan;
|
||||
}
|
||||
|
||||
return `<div class="flex flex-nowrap justify-center">
|
||||
<a class="btn btn-sm btn-icon btn-clear btn-warning " href="#">
|
||||
<i class="ki-outline ki-eye"></i>
|
||||
</a>`
|
||||
+ iconPembayaranOtorisator + `
|
||||
</div>`;
|
||||
if(permohonan) {
|
||||
var iconPembayaranOtorisator = '';
|
||||
if (!permohonan.approve_bayar_by) {
|
||||
iconPembayaranOtorisator = `<a class="btn btn-sm btn-icon btn-clear btn-primary " onclick="pembayaranOtorisator(${permohonan.id})">
|
||||
<i class="ki-filled ki-double-check"></i>
|
||||
</a>`;
|
||||
}
|
||||
|
||||
return `<div class="flex flex-nowrap justify-center">` + iconPembayaranOtorisator + `</div>`;
|
||||
}
|
||||
|
||||
return "";
|
||||
|
||||
},
|
||||
}
|
||||
|
||||
@@ -57,6 +57,10 @@
|
||||
<span class="sort"> <span class="sort-label"> Tujuan Penilaian </span>
|
||||
<span class="sort-icon"> </span> </span>
|
||||
</th>
|
||||
<th class="min-w-[150px]" data-datatable-column="jenis_penilaian_id">
|
||||
<span class="sort"> <span class="sort-label"> Jenis Penilaian </span>
|
||||
<span class="sort-icon"> </span> </span>
|
||||
</th>
|
||||
<th class="min-w-[150px]" data-datatable-column="status">
|
||||
<span class="sort"> <span class="sort-label"> Status </span>
|
||||
<span class="sort-icon"> </span> </span>
|
||||
@@ -135,6 +139,12 @@
|
||||
return `${data.tujuan_penilaian.name}`;
|
||||
},
|
||||
},
|
||||
jenis_penilaian_id: {
|
||||
title: 'Jenis Penilaian',
|
||||
render: (item, data) => {
|
||||
return `${data.jenis_penilaian.name}`;
|
||||
},
|
||||
},
|
||||
status: {
|
||||
title: 'Status'
|
||||
},
|
||||
|
||||
@@ -259,7 +259,7 @@
|
||||
<i class="ki-filled ki-double-check"></i>
|
||||
</a>
|
||||
`;
|
||||
} else if ((isAdmin || userRoles.includes('DD Appraisal')) && data.approval_eo && !data.approval_dd) {
|
||||
} else if ((isAdmin || userRoles.includes('DD Appraisal')) && data.approval_eo && !data.approval_dd && [1, 4].includes(data.nilai_plafond_id)) {
|
||||
buttons += `
|
||||
<a class="btn btn-sm btn-icon btn-clear btn-primary" onclick="otorisatorData(${data.id})">
|
||||
<i class="ki-filled ki-double-check"></i>
|
||||
|
||||
@@ -85,16 +85,20 @@
|
||||
<td>{{ getUser($permohonan->approval_so)->name ?? 'N/A' }}</td>
|
||||
<td>{{ $permohonan->approval_so_at ? formatTanggalIndonesia($permohonan->approval_so_at,1) : 'N/A' }}</td>
|
||||
</tr>
|
||||
@if($permohonan->approval_eo!=null)
|
||||
<tr>
|
||||
<td>Disetujui Oleh (EO)</td>
|
||||
<td>{{ getUser($permohonan->approval_eo)->name ?? 'N/A' }}</td>
|
||||
<td>{{ $permohonan->approval_eo_at ? formatTanggalIndonesia($permohonan->approval_eo_at,1) : 'N/A' }}</td>
|
||||
</tr>
|
||||
@endif
|
||||
@if(in_array($permohonan->nilai_plafond_id,[1,4]) && $permohonan->approval_dd!=null)
|
||||
<tr>
|
||||
<td>Disetujui Oleh (DD)</td>
|
||||
<td>{{ getUser($permohonan->approval_dd)->name ?? 'N/A' }}</td>
|
||||
<td>{{ $permohonan->approval_dd_at ? formatTanggalIndonesia($permohonan->approval_dd_at,1) : 'N/A' }}</td>
|
||||
</tr>
|
||||
@endif
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@@ -137,7 +141,7 @@
|
||||
</button>
|
||||
@endif
|
||||
|
||||
@if(Auth::user()->hasAnyRole(['administrator','DD Appraisal']) && $permohonan->approval_eo && $permohonan->approval_dd==null)
|
||||
@if(Auth::user()->hasAnyRole(['administrator','DD Appraisal']) && $permohonan->approval_eo && $permohonan->approval_dd==null && in_array($permohonan->nilai_plafond_id,[1,4]))
|
||||
<button onclick="otorisatorData({{ $permohonan->id }})" type="button" class="btn btn-primary">
|
||||
<i class="ki-filled ki-double-check"></i>
|
||||
Otorisator {{ $header ?? '' }}
|
||||
|
||||
@@ -125,7 +125,11 @@
|
||||
tujuan_penilaian_kjpp_name: {
|
||||
title: 'Tujuan Penilaian',
|
||||
render: (item, data) => {
|
||||
return `${data.tujuan_penilaian_kjpp.name || ''}`;
|
||||
if(data.tujuan_penilaian_kjpp) {
|
||||
return `${data.tujuan_penilaian_kjpp.name || ''}`;
|
||||
}
|
||||
|
||||
return "-";
|
||||
},
|
||||
},
|
||||
nama_kjpp_sebelumnya: {
|
||||
|
||||
@@ -405,19 +405,19 @@
|
||||
<tr>
|
||||
<td class="px-4 py-2">Harga</td>
|
||||
<td class="px-4 py-2">
|
||||
<input type="text" name="harga" class="input currency-format"
|
||||
<input type="text" name="harga" class="input currency"
|
||||
value="{{ $inspectionData['asset']['harga'] ?? '' }}">
|
||||
</td>
|
||||
<td class="px-4 py-2">
|
||||
<input type="text" name="harga_pembanding[]"
|
||||
class="input currency-format">
|
||||
class="input currency">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="px-4 py-2">Diskon</td>
|
||||
<td class="px-4 py-2">
|
||||
<div class="input">
|
||||
<input type="text" name="diskon" class=" currency-format"
|
||||
<input type="text" name="diskon" class=" currency"
|
||||
value="{{ $inspectionData['asset']['diskon'] ?? '' }}">
|
||||
<span class="btn btn-icon">
|
||||
<i class="ki-outline ki-percentage"></i>
|
||||
@@ -440,23 +440,23 @@
|
||||
<tr style="display: none;">
|
||||
<td class="px-4 py-2">Total</td>
|
||||
<td class="px-4 py-2">
|
||||
<input type="text" name="total" class="input currency-format"
|
||||
<input type="text" name="total" class="input currency"
|
||||
value="{{ $inspectionData['asset']['total'] ?? '' }}">
|
||||
</td>
|
||||
<td class="px-4 py-2">
|
||||
<input type="text" name="total_pembanding[]"
|
||||
class="input currency-format">
|
||||
class="input currency">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="px-4 py-2">Harga Setelah Diskon</td>
|
||||
<td class="px-4 py-2">
|
||||
<input type="text" name="harga_diskon" class="input currency-format" readonly
|
||||
<input type="text" name="harga_diskon" class="input currency" readonly
|
||||
value="{{ $inspectionData['asset']['harga_diskon'] ?? '' }}">
|
||||
</td>
|
||||
<td class="px-4 py-2">
|
||||
<input type="text" name="harga_diskon_pembanding[]" readonly
|
||||
class="input currency-format">
|
||||
class="input currency">
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
||||
Reference in New Issue
Block a user