Merge branch 'staging' into feature/senior-officer

This commit is contained in:
majid
2024-12-31 11:31:28 +07:00
17 changed files with 344 additions and 129 deletions

View File

@@ -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

View File

@@ -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.'];

View File

@@ -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

View File

@@ -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.');
}

View File

@@ -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'))) {

View File

@@ -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');

View File

@@ -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');
});
}
};

View File

@@ -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",

View File

@@ -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>

View File

@@ -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}`;
},
}
},

View 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

View File

@@ -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 "";
},
}

View File

@@ -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'
},

View File

@@ -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>

View File

@@ -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 ?? '' }}

View File

@@ -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: {

View File

@@ -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>