Compare commits
4 Commits
4bef7cdafd
...
929c56b079
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
929c56b079 | ||
|
|
388b65696f | ||
|
|
ba9089e2ac | ||
|
|
20d0061d42 |
185
app/Exports/SlikExport.php
Normal file
185
app/Exports/SlikExport.php
Normal file
@@ -0,0 +1,185 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Lpj\Exports;
|
||||||
|
|
||||||
|
use Maatwebsite\Excel\Concerns\FromCollection;
|
||||||
|
use Maatwebsite\Excel\Concerns\WithColumnFormatting;
|
||||||
|
use Maatwebsite\Excel\Concerns\WithHeadings;
|
||||||
|
use Maatwebsite\Excel\Concerns\WithMapping;
|
||||||
|
use Modules\Lpj\Models\Slik;
|
||||||
|
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Export class untuk data SLIK (Sistem Layanan Informasi Keuangan)
|
||||||
|
*
|
||||||
|
* Class ini menangani export data SLIK ke format Excel dengan:
|
||||||
|
* - Mapping data sesuai struktur SLIK
|
||||||
|
* - Format kolom yang sesuai (text, number, date)
|
||||||
|
* - Header yang informatif
|
||||||
|
*/
|
||||||
|
class SlikExport implements WithColumnFormatting, WithHeadings, FromCollection, WithMapping
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Mengambil collection data SLIK untuk di-export
|
||||||
|
*
|
||||||
|
* @return \Illuminate\Support\Collection
|
||||||
|
*/
|
||||||
|
public function collection()
|
||||||
|
{
|
||||||
|
return Slik::orderBy('created_at', 'desc')->get();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Mapping data SLIK untuk setiap baris dalam Excel
|
||||||
|
*
|
||||||
|
* @param \Modules\Lpj\Models\Slik $row
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function map($row): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
$row->id, // A - ID
|
||||||
|
$row->sandi_bank, // B - Sandi Bank
|
||||||
|
$row->tahun, // C - Tahun
|
||||||
|
$row->bulan, // D - Bulan
|
||||||
|
$row->flag_detail, // E - Flag Detail
|
||||||
|
$row->kode_register_agunan, // F - Kode Register Agunan
|
||||||
|
$row->no_rekening, // G - No Rekening
|
||||||
|
$row->cif, // H - CIF
|
||||||
|
$row->kolektibilitas, // I - Kolektibilitas
|
||||||
|
$row->fasilitas, // J - Fasilitas
|
||||||
|
$row->jenis_segmen_fasilitas, // K - Jenis Segmen Fasilitas
|
||||||
|
$row->status_agunan, // L - Status Agunan
|
||||||
|
$row->jenis_agunan, // M - Jenis Agunan
|
||||||
|
$row->peringkat_agunan, // N - Peringkat Agunan
|
||||||
|
$row->lembaga_pemeringkat, // O - Lembaga Pemeringkat
|
||||||
|
$row->jenis_pengikatan, // P - Jenis Pengikatan
|
||||||
|
$row->tanggal_pengikatan, // Q - Tanggal Pengikatan
|
||||||
|
$row->nama_pemilik_agunan, // R - Nama Pemilik Agunan
|
||||||
|
$row->bukti_kepemilikan, // S - Bukti Kepemilikan
|
||||||
|
$row->alamat_agunan, // T - Alamat Agunan
|
||||||
|
$row->lokasi_agunan, // U - Lokasi Agunan
|
||||||
|
$row->nilai_agunan, // V - Nilai Agunan
|
||||||
|
$row->nilai_agunan_menurut_ljk, // W - Nilai Agunan Menurut LJK
|
||||||
|
$row->tanggal_penilaian_ljk, // X - Tanggal Penilaian LJK
|
||||||
|
$row->nilai_agunan_penilai_independen, // Y - Nilai Agunan Penilai Independen
|
||||||
|
$row->nama_penilai_independen, // Z - Nama Penilai Independen
|
||||||
|
$row->tanggal_penilaian_penilai_independen, // AA - Tanggal Penilaian Penilai Independen
|
||||||
|
$row->jumlah_hari_tunggakan, // AB - Jumlah Hari Tunggakan
|
||||||
|
$row->status_paripasu, // AC - Status Paripasu
|
||||||
|
$row->prosentase_paripasu, // AD - Prosentase Paripasu
|
||||||
|
$row->status_kredit_join, // AE - Status Kredit Join
|
||||||
|
$row->diasuransikan, // AF - Diasuransikan
|
||||||
|
$row->keterangan, // AG - Keterangan
|
||||||
|
$row->kantor_cabang, // AH - Kantor Cabang
|
||||||
|
$row->operasi_data, // AI - Operasi Data
|
||||||
|
$row->kode_cabang, // AJ - Kode Cabang
|
||||||
|
$row->nama_debitur, // AK - Nama Debitur
|
||||||
|
$row->nama_cabang, // AL - Nama Cabang
|
||||||
|
$row->flag, // AM - Flag
|
||||||
|
$row->created_at, // AN - Created At
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Header kolom untuk Excel
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function headings(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'ID',
|
||||||
|
'Sandi Bank',
|
||||||
|
'Tahun',
|
||||||
|
'Bulan',
|
||||||
|
'Flag Detail',
|
||||||
|
'Kode Register Agunan',
|
||||||
|
'No Rekening',
|
||||||
|
'CIF',
|
||||||
|
'Kolektibilitas',
|
||||||
|
'Fasilitas',
|
||||||
|
'Jenis Segmen Fasilitas',
|
||||||
|
'Status Agunan',
|
||||||
|
'Jenis Agunan',
|
||||||
|
'Peringkat Agunan',
|
||||||
|
'Lembaga Pemeringkat',
|
||||||
|
'Jenis Pengikatan',
|
||||||
|
'Tanggal Pengikatan',
|
||||||
|
'Nama Pemilik Agunan',
|
||||||
|
'Bukti Kepemilikan',
|
||||||
|
'Alamat Agunan',
|
||||||
|
'Lokasi Agunan',
|
||||||
|
'Nilai Agunan',
|
||||||
|
'Nilai Agunan Menurut LJK',
|
||||||
|
'Tanggal Penilaian LJK',
|
||||||
|
'Nilai Agunan Penilai Independen',
|
||||||
|
'Nama Penilai Independen',
|
||||||
|
'Tanggal Penilaian Penilai Independen',
|
||||||
|
'Jumlah Hari Tunggakan',
|
||||||
|
'Status Paripasu',
|
||||||
|
'Prosentase Paripasu',
|
||||||
|
'Status Kredit Join',
|
||||||
|
'Diasuransikan',
|
||||||
|
'Keterangan',
|
||||||
|
'Kantor Cabang',
|
||||||
|
'Operasi Data',
|
||||||
|
'Kode Cabang',
|
||||||
|
'Nama Debitur',
|
||||||
|
'Nama Cabang',
|
||||||
|
'Flag',
|
||||||
|
'Created At',
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Format kolom untuk Excel
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function columnFormats(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'A' => NumberFormat::FORMAT_NUMBER, // ID
|
||||||
|
'B' => NumberFormat::FORMAT_TEXT, // Sandi Bank
|
||||||
|
'C' => NumberFormat::FORMAT_TEXT, // Tahun
|
||||||
|
'D' => NumberFormat::FORMAT_TEXT, // Bulan
|
||||||
|
'E' => NumberFormat::FORMAT_TEXT, // Flag Detail
|
||||||
|
'F' => NumberFormat::FORMAT_TEXT, // Kode Register Agunan
|
||||||
|
'G' => NumberFormat::FORMAT_TEXT, // No Rekening
|
||||||
|
'H' => NumberFormat::FORMAT_TEXT, // CIF
|
||||||
|
'I' => NumberFormat::FORMAT_TEXT, // Kolektibilitas
|
||||||
|
'J' => NumberFormat::FORMAT_TEXT, // Fasilitas
|
||||||
|
'K' => NumberFormat::FORMAT_TEXT, // Jenis Segmen Fasilitas
|
||||||
|
'L' => NumberFormat::FORMAT_TEXT, // Status Agunan
|
||||||
|
'M' => NumberFormat::FORMAT_TEXT, // Jenis Agunan
|
||||||
|
'N' => NumberFormat::FORMAT_TEXT, // Peringkat Agunan
|
||||||
|
'O' => NumberFormat::FORMAT_TEXT, // Lembaga Pemeringkat
|
||||||
|
'P' => NumberFormat::FORMAT_TEXT, // Jenis Pengikatan
|
||||||
|
'Q' => NumberFormat::FORMAT_DATE_DDMMYYYY, // Tanggal Pengikatan
|
||||||
|
'R' => NumberFormat::FORMAT_TEXT, // Nama Pemilik Agunan
|
||||||
|
'S' => NumberFormat::FORMAT_TEXT, // Bukti Kepemilikan
|
||||||
|
'T' => NumberFormat::FORMAT_TEXT, // Alamat Agunan
|
||||||
|
'U' => NumberFormat::FORMAT_TEXT, // Lokasi Agunan
|
||||||
|
'V' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1, // Nilai Agunan
|
||||||
|
'W' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1, // Nilai Agunan Menurut LJK
|
||||||
|
'X' => NumberFormat::FORMAT_DATE_DDMMYYYY, // Tanggal Penilaian LJK
|
||||||
|
'Y' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1, // Nilai Agunan Penilai Independen
|
||||||
|
'Z' => NumberFormat::FORMAT_TEXT, // Nama Penilai Independen
|
||||||
|
'AA' => NumberFormat::FORMAT_DATE_DDMMYYYY, // Tanggal Penilaian Penilai Independen
|
||||||
|
'AB' => NumberFormat::FORMAT_NUMBER, // Jumlah Hari Tunggakan
|
||||||
|
'AC' => NumberFormat::FORMAT_TEXT, // Status Paripasu
|
||||||
|
'AD' => NumberFormat::FORMAT_PERCENTAGE_00, // Prosentase Paripasu
|
||||||
|
'AE' => NumberFormat::FORMAT_TEXT, // Status Kredit Join
|
||||||
|
'AF' => NumberFormat::FORMAT_TEXT, // Diasuransikan
|
||||||
|
'AG' => NumberFormat::FORMAT_TEXT, // Keterangan
|
||||||
|
'AH' => NumberFormat::FORMAT_TEXT, // Kantor Cabang
|
||||||
|
'AI' => NumberFormat::FORMAT_TEXT, // Operasi Data
|
||||||
|
'AJ' => NumberFormat::FORMAT_TEXT, // Kode Cabang
|
||||||
|
'AK' => NumberFormat::FORMAT_TEXT, // Nama Debitur
|
||||||
|
'AL' => NumberFormat::FORMAT_TEXT, // Nama Cabang
|
||||||
|
'AM' => NumberFormat::FORMAT_TEXT, // Flag
|
||||||
|
'AN' => NumberFormat::FORMAT_DATE_DATETIME, // Created At
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -149,91 +149,87 @@ class PembayaranController extends Controller
|
|||||||
{
|
{
|
||||||
$req = request()->all();
|
$req = request()->all();
|
||||||
|
|
||||||
if($req['type'] == 'create'){
|
if(isset($req['type'])){
|
||||||
$data = [
|
if($req['type'] == 'create'){
|
||||||
'nomor_tiket' => $req['nomor_tiket'] ?? '',
|
$data = [
|
||||||
'nominal_bayar' => $req['nominal_bayar'] ?? '',
|
'nomor_tiket' => $req['nomor_tiket'] ?? '',
|
||||||
'catatan' => $req['catatan'] ?? ''
|
'nominal_bayar' => $req['nominal_bayar'] ?? '',
|
||||||
];
|
'catatan' => $req['catatan'] ?? ''
|
||||||
|
];
|
||||||
|
|
||||||
if(request()->hasFile('bukti_bayar')){
|
if(request()->hasFile('bukti_bayar')){
|
||||||
$folderPath = 'persetujuan_penawaran/bukti_bayar/' . $req['nomor_tiket'];
|
$folderPath = 'persetujuan_penawaran/bukti_bayar/' . $req['nomor_tiket'];
|
||||||
$data['bukti_bayar'] = $request->file('bukti_bayar')->store($folderPath, 'public');
|
$data['bukti_bayar'] = $request->file('bukti_bayar')->store($folderPath, 'public');
|
||||||
|
}
|
||||||
|
|
||||||
|
$persetujuanPenawaran = PersetujuanPenawaran::create($data);
|
||||||
|
$noc = [
|
||||||
|
'persetujuan_penawaran_id' => $persetujuanPenawaran->id,
|
||||||
|
'nomor_tiket' => $req['nomor_tiket'] ?? '',
|
||||||
|
'debiture_id' => $req['debitur_id'] ?? '',
|
||||||
|
'branch_id' => Auth::user()->branch_id,
|
||||||
|
];
|
||||||
|
$noc = Noc::create($noc);
|
||||||
|
|
||||||
|
$bucok = [
|
||||||
|
'tanggal_penuh' => $persetujuanPenawaran->created_at,
|
||||||
|
'tanggal' => $persetujuanPenawaran->created_at->format('d'),
|
||||||
|
'bulan' => $persetujuanPenawaran->created_at->format('m'),
|
||||||
|
'tahun' => $persetujuanPenawaran->created_at->format('Y'),
|
||||||
|
'nomor_tiket' => $req['nomor_tiket'] ?? '',
|
||||||
|
'nominal' => $req['nominal_bayar'] ?? '',
|
||||||
|
'nominal_berjalan' => $req['nominal_bayar'] ?? '',
|
||||||
|
'penyelesaian' => 'Belum Selesai',
|
||||||
|
'nama_sub_direktorat' => $noc->branch?->name ?? '',
|
||||||
|
'nama_direktorat_cabang' => $noc->branch?->name ?? '',
|
||||||
|
];
|
||||||
|
|
||||||
|
Bucok::updateOrCreate([
|
||||||
|
'nomor_tiket' => $req['nomor_tiket'] ?? '',
|
||||||
|
], $bucok);
|
||||||
|
|
||||||
|
return redirect()
|
||||||
|
->route('pembayaran.index')->with('success', 'Pembayaran berhasil disimpan.');
|
||||||
}
|
}
|
||||||
|
|
||||||
$persetujuanPenawaran = PersetujuanPenawaran::create($data);
|
if($req['type'] == 'kurang_bayar'){
|
||||||
$noc = [
|
$noc = Noc::find($req['noc_id']);
|
||||||
'persetujuan_penawaran_id' => $persetujuanPenawaran->id,
|
$noc->nominal_pelunasan = $req['nominal_pelunasan'];
|
||||||
'nomor_tiket' => $req['nomor_tiket'] ?? '',
|
if (request()->hasFile('bukti_ksl_kurang_bayar')) {
|
||||||
'debiture_id' => $req['debitur_id'] ?? '',
|
$folderPath = 'persetujuan_penawaran/bukti_ksl_kurang_bayar/' . $req['noc_id'];
|
||||||
'branch_id' => Auth::user()->branch_id,
|
$noc->bukti_ksl_kurang_bayar = $request->file('bukti_ksl_kurang_bayar')->store($folderPath, 'public');
|
||||||
];
|
}
|
||||||
$noc = Noc::create($noc);
|
$noc->save();
|
||||||
|
|
||||||
$bucok = [
|
$persetujuanPenawaran = PersetujuanPenawaran::find($noc->persetujuan_penawaran_id);
|
||||||
'tanggal_penuh' => $persetujuanPenawaran->created_at,
|
$persetujuanPenawaran->bukti_ksl_kurang_bayar = $noc->bukti_ksl_kurang_bayar;
|
||||||
'tanggal' => $persetujuanPenawaran->created_at->format('d'),
|
$persetujuanPenawaran->nominal_kurang_bayar = $req['nominal_pelunasan'];
|
||||||
'bulan' => $persetujuanPenawaran->created_at->format('m'),
|
$persetujuanPenawaran->save();
|
||||||
'tahun' => $persetujuanPenawaran->created_at->format('Y'),
|
return redirect()
|
||||||
'nomor_tiket' => $req['nomor_tiket'] ?? '',
|
->route('pembayaran.kurang.index')->with('success', 'Pelunasan Kurang Bayar berhasil disimpan.');
|
||||||
'nominal' => $req['nominal_bayar'] ?? '',
|
|
||||||
'nominal_berjalan' => $req['nominal_bayar'] ?? '',
|
|
||||||
'penyelesaian' => 'Belum Selesai',
|
|
||||||
'nama_sub_direktorat' => $noc->branch?->name ?? '',
|
|
||||||
'nama_direktorat_cabang' => $noc->branch?->name ?? '',
|
|
||||||
];
|
|
||||||
|
|
||||||
Bucok::updateOrCreate([
|
|
||||||
'nomor_tiket' => $req['nomor_tiket'] ?? '',
|
|
||||||
], $bucok);
|
|
||||||
|
|
||||||
return redirect()
|
|
||||||
->route('pembayaran.index')->with('success', 'Pembayaran berhasil disimpan.');
|
|
||||||
}
|
|
||||||
|
|
||||||
if($req['type'] == 'kurang_bayar'){
|
|
||||||
$noc = Noc::find($req['noc_id']);
|
|
||||||
$noc->nominal_pelunasan = $req['nominal_pelunasan'];
|
|
||||||
if (request()->hasFile('bukti_ksl_kurang_bayar')) {
|
|
||||||
$folderPath = 'persetujuan_penawaran/bukti_ksl_kurang_bayar/' . $req['noc_id'];
|
|
||||||
$noc->bukti_ksl_kurang_bayar = $request->file('bukti_ksl_kurang_bayar')->store($folderPath, 'public');
|
|
||||||
}
|
}
|
||||||
$noc->save();
|
|
||||||
|
|
||||||
$persetujuanPenawaran = PersetujuanPenawaran::find($noc->persetujuan_penawaran_id);
|
if($req['type'] == 'lebih_bayar'){
|
||||||
$persetujuanPenawaran->bukti_ksl_kurang_bayar = $noc->bukti_ksl_kurang_bayar;
|
$noc = Noc::find($req['noc_id']);
|
||||||
$persetujuanPenawaran->nominal_kurang_bayar = $req['nominal_pelunasan'];
|
if (request()->hasFile('bukti_ksl_lebih_bayar')) {
|
||||||
$persetujuanPenawaran->save();
|
$folderPath = 'persetujuan_penawaran/bukti_ksl_lebih_bayar/' . $req['noc_id'];
|
||||||
return redirect()
|
$noc->bukti_ksl_lebih_bayar = $request->file('bukti_ksl_lebih_bayar')->store($folderPath, 'public');
|
||||||
->route('pembayaran.kurang.index')->with('success', 'Pelunasan Kurang Bayar berhasil disimpan.');
|
}
|
||||||
}
|
$noc->save();
|
||||||
|
|
||||||
if($req['type'] == 'lebih_bayar'){
|
return redirect()
|
||||||
$noc = Noc::find($req['noc_id']);
|
->route('pembayaran.lebih.index')->with('success', 'Pengembalian Lebih Bayar berhasil disimpan.');
|
||||||
if (request()->hasFile('bukti_ksl_lebih_bayar')) {
|
|
||||||
$folderPath = 'persetujuan_penawaran/bukti_ksl_lebih_bayar/' . $req['noc_id'];
|
|
||||||
$noc->bukti_ksl_lebih_bayar = $request->file('bukti_ksl_lebih_bayar')->store($folderPath, 'public');
|
|
||||||
}
|
}
|
||||||
$noc->save();
|
|
||||||
|
|
||||||
return redirect()
|
|
||||||
->route('pembayaran.lebih.index')->with('success', 'Pengembalian Lebih Bayar berhasil disimpan.');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$validated = $request->validated();
|
$validated = $request->validated();
|
||||||
|
$validated['nominal_bayar'] = $req['nominal_bayar'] ?? 0;
|
||||||
$validated['created_by'] = Auth::id();
|
$validated['created_by'] = Auth::id();
|
||||||
$validated['status'] = '0';
|
$validated['status'] = '0';
|
||||||
|
|
||||||
$persetujuanPenawaran = PersetujuanPenawaran::where('permohonan_id', $validated['permohonan_id'] ?? null)->first();
|
$persetujuanPenawaran = PersetujuanPenawaran::where('permohonan_id', $validated['permohonan_id'] ?? null)->first();
|
||||||
$permohonan = Permohonan::find(request()->get('permohonan_id'));
|
$permohonan = Permohonan::find(request()->get('permohonan_id'));
|
||||||
if ($persetujuanPenawaran) {
|
if ($persetujuanPenawaran) {
|
||||||
// if (isset($validated['penawaran_id'])) {
|
|
||||||
|
|
||||||
// $persetujuanPenawaran = PersetujuanPenawaran::create(
|
|
||||||
// ['penawaran_id' => $validated['penawaran_id']],
|
|
||||||
// $validated,
|
|
||||||
// );
|
|
||||||
|
|
||||||
$persetujuanPenawaran->fill($validated);
|
$persetujuanPenawaran->fill($validated);
|
||||||
|
|
||||||
if ($request->hasFile('bukti_bayar')) {
|
if ($request->hasFile('bukti_bayar')) {
|
||||||
@@ -269,6 +265,33 @@ class PembayaranController extends Controller
|
|||||||
$persetujuanPenawaran->save();
|
$persetujuanPenawaran->save();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$bucok = [
|
||||||
|
'tanggal_penuh' => $persetujuanPenawaran->created_at,
|
||||||
|
'tanggal' => $persetujuanPenawaran->created_at->format('d'),
|
||||||
|
'bulan' => $persetujuanPenawaran->created_at->format('m'),
|
||||||
|
'tahun' => $persetujuanPenawaran->created_at->format('Y'),
|
||||||
|
'nomor_tiket' => $req['nomor_tiket'] ?? '',
|
||||||
|
'nominal' => $req['nominal_bayar'] ?? '',
|
||||||
|
'nominal_berjalan' => $req['nominal_bayar'] ?? '',
|
||||||
|
'penyelesaian' => 'Belum Selesai',
|
||||||
|
'nama_sub_direktorat' => $noc->branch?->name ?? '',
|
||||||
|
'nama_direktorat_cabang' => $noc->branch?->name ?? '',
|
||||||
|
'permohonan_id' => $permohonan->id,
|
||||||
|
'nomor_registrasi' => $permohonan->nomor_registrasi,
|
||||||
|
];
|
||||||
|
|
||||||
|
|
||||||
|
if(isset($req['nomor_tiket']) && $req['nomor_tiket'] !=''){
|
||||||
|
Bucok::updateOrCreate([
|
||||||
|
'nomor_registrasi' => $permohonan->nomor_registrasi,
|
||||||
|
'nomor_tiket' => $req['nomor_tiket'],
|
||||||
|
], $bucok);
|
||||||
|
} else {
|
||||||
|
Bucok::updateOrCreate([
|
||||||
|
'nomor_registrasi' => $permohonan->nomor_registrasi
|
||||||
|
], $bucok);
|
||||||
|
}
|
||||||
|
|
||||||
// Update the status of the related permohonan to 'spk'
|
// Update the status of the related permohonan to 'spk'
|
||||||
|
|
||||||
if ($permohonan) {
|
if ($permohonan) {
|
||||||
|
|||||||
@@ -23,6 +23,7 @@
|
|||||||
use Modules\Lpj\Models\Penilaian;
|
use Modules\Lpj\Models\Penilaian;
|
||||||
use Modules\Lpj\Models\Permohonan;
|
use Modules\Lpj\Models\Permohonan;
|
||||||
use Modules\Lpj\Models\PermohonanPembatalan;
|
use Modules\Lpj\Models\PermohonanPembatalan;
|
||||||
|
use Modules\Lpj\Models\PersetujuanPenawaran;
|
||||||
use Modules\Lpj\Models\StatusPermohonan;
|
use Modules\Lpj\Models\StatusPermohonan;
|
||||||
use Modules\Lpj\Models\TujuanPenilaian;
|
use Modules\Lpj\Models\TujuanPenilaian;
|
||||||
use Modules\Lpj\Services\PermohonanHistoryService;
|
use Modules\Lpj\Services\PermohonanHistoryService;
|
||||||
@@ -358,6 +359,16 @@
|
|||||||
$permohonan->status = $request->status;
|
$permohonan->status = $request->status;
|
||||||
$permohonan->keterangan = $request->keterangan;
|
$permohonan->keterangan = $request->keterangan;
|
||||||
$permohonan->save();
|
$permohonan->save();
|
||||||
|
|
||||||
|
if($permohonan->jenis_penilaian_id==1){
|
||||||
|
$persetujuanPenawaran = PersetujuanPenawaran::where('permohonan_id', $id)->first();
|
||||||
|
if(!$persetujuanPenawaran){
|
||||||
|
$persetujuanPenawaran = PersetujuanPenawaran::create([
|
||||||
|
'permohonan_id' => $id,
|
||||||
|
'created_by' => auth()->id(),
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
return redirect()->route('authorization.show', $id)->with('error', 'Failed to update permohonan');
|
return redirect()->route('authorization.show', $id)->with('error', 'Failed to update permohonan');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ use Exception;
|
|||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Validation\ValidationException;
|
use Illuminate\Validation\ValidationException;
|
||||||
use Maatwebsite\Excel\Facades\Excel;
|
use Maatwebsite\Excel\Facades\Excel;
|
||||||
|
use Modules\Lpj\Exports\SlikExport;
|
||||||
use Modules\Lpj\Imports\SlikImport;
|
use Modules\Lpj\Imports\SlikImport;
|
||||||
use Modules\Lpj\Models\Slik;
|
use Modules\Lpj\Models\Slik;
|
||||||
use Illuminate\Support\Facades\Auth;
|
use Illuminate\Support\Facades\Auth;
|
||||||
@@ -439,35 +440,109 @@ class SlikController extends Controller
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Hapus semua data slik
|
* Export data SLIK ke Excel
|
||||||
*
|
*
|
||||||
* @return \Illuminate\Http\RedirectResponse
|
* Method ini menangani export data SLIK ke format Excel dengan:
|
||||||
|
* - Logging aktivitas export
|
||||||
|
* - Error handling yang proper
|
||||||
|
* - Format Excel yang sesuai dengan struktur SLIK
|
||||||
|
*
|
||||||
|
* @return \Symfony\Component\HttpFoundation\BinaryFileResponse
|
||||||
|
*/
|
||||||
|
public function export()
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
Log::info('SLIK Export: Memulai proses export data SLIK', [
|
||||||
|
'user_id' => Auth::id(),
|
||||||
|
'timestamp' => now(),
|
||||||
|
'memory_usage' => memory_get_usage(true) / 1024 / 1024 . ' MB'
|
||||||
|
]);
|
||||||
|
|
||||||
|
// Hitung total data yang akan di-export
|
||||||
|
$totalData = Slik::count();
|
||||||
|
|
||||||
|
Log::info('SLIK Export: Informasi data export', [
|
||||||
|
'total_records' => $totalData,
|
||||||
|
'user_id' => Auth::id(),
|
||||||
|
'timestamp' => now()
|
||||||
|
]);
|
||||||
|
|
||||||
|
// Generate nama file dengan timestamp
|
||||||
|
$filename = 'slik_export_' . date('Y-m-d_H-i-s') . '.xlsx';
|
||||||
|
|
||||||
|
// Proses export menggunakan SlikExport class
|
||||||
|
$export = Excel::download(new SlikExport(), $filename);
|
||||||
|
|
||||||
|
Log::info('SLIK Export: Berhasil generate file export', [
|
||||||
|
'filename' => $filename,
|
||||||
|
'total_records' => $totalData,
|
||||||
|
'user_id' => Auth::id(),
|
||||||
|
'timestamp' => now(),
|
||||||
|
'memory_peak' => memory_get_peak_usage(true) / 1024 / 1024 . ' MB'
|
||||||
|
]);
|
||||||
|
|
||||||
|
return $export;
|
||||||
|
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
Log::error('SLIK Export: Gagal melakukan export data SLIK', [
|
||||||
|
'error' => $e->getMessage(),
|
||||||
|
'trace' => $e->getTraceAsString(),
|
||||||
|
'user_id' => Auth::id(),
|
||||||
|
'timestamp' => now(),
|
||||||
|
'memory_usage' => memory_get_usage(true) / 1024 / 1024 . ' MB'
|
||||||
|
]);
|
||||||
|
|
||||||
|
return response()->json([
|
||||||
|
'success' => false,
|
||||||
|
'message' => 'Gagal melakukan export data SLIK: ' . $e->getMessage()
|
||||||
|
], 500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Truncate all SLIK data
|
||||||
|
*
|
||||||
|
* @return \Illuminate\Http\JsonResponse
|
||||||
*/
|
*/
|
||||||
public function truncate()
|
public function truncate()
|
||||||
{
|
{
|
||||||
DB::beginTransaction();
|
|
||||||
try {
|
try {
|
||||||
Log::info('SlikController: Menghapus semua data Slik', [
|
DB::beginTransaction();
|
||||||
'user_id' => Auth::id()
|
|
||||||
|
Log::info('SLIK Truncate: Memulai proses truncate data SLIK', [
|
||||||
|
'user_id' => Auth::id(),
|
||||||
|
'timestamp' => now()
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
// Truncate tabel SLIK
|
||||||
Slik::truncate();
|
Slik::truncate();
|
||||||
|
|
||||||
DB::commit();
|
DB::commit();
|
||||||
Log::info('SlikController: Semua data Slik berhasil dihapus', [
|
|
||||||
'user_id' => Auth::id()
|
Log::info('SLIK Truncate: Berhasil menghapus semua data SLIK', [
|
||||||
|
'user_id' => Auth::id(),
|
||||||
|
'timestamp' => now()
|
||||||
]);
|
]);
|
||||||
|
|
||||||
return redirect()->back()->with('success', 'Semua data Slik berhasil dihapus.');
|
return response()->json([
|
||||||
|
'success' => true,
|
||||||
} catch (Exception $e) {
|
'message' => 'Semua data SLIK berhasil dihapus'
|
||||||
|
]);
|
||||||
|
|
||||||
|
} catch (\Exception $e) {
|
||||||
DB::rollback();
|
DB::rollback();
|
||||||
Log::error('SlikController: Gagal menghapus data Slik', [
|
|
||||||
|
Log::error('SLIK Truncate: Gagal menghapus data SLIK', [
|
||||||
'error' => $e->getMessage(),
|
'error' => $e->getMessage(),
|
||||||
'user_id' => Auth::id()
|
'trace' => $e->getTraceAsString(),
|
||||||
|
'user_id' => Auth::id(),
|
||||||
|
'timestamp' => now()
|
||||||
]);
|
]);
|
||||||
|
|
||||||
return redirect()->back()->with('error', 'Gagal menghapus data Slik: ' . $e->getMessage());
|
return response()->json([
|
||||||
|
'success' => false,
|
||||||
|
'message' => 'Gagal menghapus data SLIK: ' . $e->getMessage()
|
||||||
|
], 500);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -80,6 +80,8 @@ class Bucok extends Base
|
|||||||
'keterangan_gantung',
|
'keterangan_gantung',
|
||||||
'lainnya_satu',
|
'lainnya_satu',
|
||||||
'lainnya_dua',
|
'lainnya_dua',
|
||||||
|
'nomor_registrasi',
|
||||||
|
'permohonan_id',
|
||||||
];
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -0,0 +1,52 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*
|
||||||
|
* Menambahkan kolom nomor_registrasi dan permohonan_id pada table bucoks
|
||||||
|
* untuk menghubungkan data bucok dengan permohonan penilaian
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::table('bucoks', function (Blueprint $table) {
|
||||||
|
// Menambahkan kolom nomor_registrasi untuk tracking nomor registrasi
|
||||||
|
$table->string('nomor_registrasi')->nullable()->after('nomor_tiket')->comment('Nomor registrasi terkait');
|
||||||
|
|
||||||
|
// Menambahkan kolom permohonan_id sebagai foreign key ke table permohonan
|
||||||
|
$table->unsignedBigInteger('permohonan_id')->nullable()->after('nomor_registrasi')->comment('ID permohonan terkait');
|
||||||
|
|
||||||
|
// Menambahkan foreign key constraint ke table permohonan
|
||||||
|
$table->foreign('permohonan_id')->references('id')->on('permohonan')->onDelete('set null');
|
||||||
|
|
||||||
|
// Menambahkan index untuk performa query
|
||||||
|
$table->index(['nomor_registrasi']);
|
||||||
|
$table->index(['permohonan_id']);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*
|
||||||
|
* Menghapus kolom nomor_registrasi dan permohonan_id dari table bucoks
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::table('bucoks', function (Blueprint $table) {
|
||||||
|
// Menghapus foreign key constraint terlebih dahulu
|
||||||
|
$table->dropForeign(['permohonan_id']);
|
||||||
|
|
||||||
|
// Menghapus index
|
||||||
|
$table->dropIndex(['nomor_registrasi']);
|
||||||
|
$table->dropIndex(['permohonan_id']);
|
||||||
|
|
||||||
|
// Menghapus kolom
|
||||||
|
$table->dropColumn(['nomor_registrasi', 'permohonan_id']);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
60
module.json
60
module.json
@@ -57,8 +57,6 @@
|
|||||||
"permission": "",
|
"permission": "",
|
||||||
"roles": [
|
"roles": [
|
||||||
"administrator",
|
"administrator",
|
||||||
"pemohon-ao",
|
|
||||||
"pemohon-eo",
|
|
||||||
"admin",
|
"admin",
|
||||||
"DD Appraisal",
|
"DD Appraisal",
|
||||||
"EO Appraisal",
|
"EO Appraisal",
|
||||||
@@ -74,8 +72,6 @@
|
|||||||
"permission": "",
|
"permission": "",
|
||||||
"roles": [
|
"roles": [
|
||||||
"administrator",
|
"administrator",
|
||||||
"pemohon-ao",
|
|
||||||
"pemohon-eo",
|
|
||||||
"admin",
|
"admin",
|
||||||
"DD Appraisal",
|
"DD Appraisal",
|
||||||
"EO Appraisal",
|
"EO Appraisal",
|
||||||
@@ -91,8 +87,6 @@
|
|||||||
"permission": "",
|
"permission": "",
|
||||||
"roles": [
|
"roles": [
|
||||||
"administrator",
|
"administrator",
|
||||||
"pemohon-ao",
|
|
||||||
"pemohon-eo",
|
|
||||||
"admin",
|
"admin",
|
||||||
"DD Appraisal",
|
"DD Appraisal",
|
||||||
"EO Appraisal",
|
"EO Appraisal",
|
||||||
@@ -118,9 +112,7 @@
|
|||||||
"attributes": [],
|
"attributes": [],
|
||||||
"permission": "",
|
"permission": "",
|
||||||
"roles": [
|
"roles": [
|
||||||
"administrator",
|
"administrator",
|
||||||
"pemohon-ao",
|
|
||||||
"pemohon-eo",
|
|
||||||
"admin",
|
"admin",
|
||||||
"DD Appraisal",
|
"DD Appraisal",
|
||||||
"EO Appraisal",
|
"EO Appraisal",
|
||||||
@@ -136,8 +128,6 @@
|
|||||||
"permission": "",
|
"permission": "",
|
||||||
"roles": [
|
"roles": [
|
||||||
"administrator",
|
"administrator",
|
||||||
"pemohon-ao",
|
|
||||||
"pemohon-eo",
|
|
||||||
"admin",
|
"admin",
|
||||||
"DD Appraisal",
|
"DD Appraisal",
|
||||||
"EO Appraisal",
|
"EO Appraisal",
|
||||||
@@ -153,8 +143,6 @@
|
|||||||
"permission": "",
|
"permission": "",
|
||||||
"roles": [
|
"roles": [
|
||||||
"administrator",
|
"administrator",
|
||||||
"pemohon-ao",
|
|
||||||
"pemohon-eo",
|
|
||||||
"admin",
|
"admin",
|
||||||
"DD Appraisal",
|
"DD Appraisal",
|
||||||
"EO Appraisal",
|
"EO Appraisal",
|
||||||
@@ -207,8 +195,6 @@
|
|||||||
"permission": "",
|
"permission": "",
|
||||||
"roles": [
|
"roles": [
|
||||||
"administrator",
|
"administrator",
|
||||||
"pemohon-ao",
|
|
||||||
"pemohon-eo",
|
|
||||||
"admin",
|
"admin",
|
||||||
"DD Appraisal",
|
"DD Appraisal",
|
||||||
"EO Appraisal",
|
"EO Appraisal",
|
||||||
@@ -333,8 +319,7 @@
|
|||||||
"permission": "",
|
"permission": "",
|
||||||
"roles": [
|
"roles": [
|
||||||
"administrator",
|
"administrator",
|
||||||
"pemohon-ao",
|
"pemohon-ao"
|
||||||
"pemohon-eo"
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -346,7 +331,7 @@
|
|||||||
"permission": "",
|
"permission": "",
|
||||||
"roles": [
|
"roles": [
|
||||||
"administrator",
|
"administrator",
|
||||||
"pemohon-eo"
|
"pemohon-ao"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -384,6 +369,23 @@
|
|||||||
"pemohon-ao"
|
"pemohon-ao"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"title": "Memo Penyelesaian",
|
||||||
|
"path": "memo",
|
||||||
|
"icon": "ki-filled ki-document text-lg text-primary",
|
||||||
|
"classes": "",
|
||||||
|
"attributes": [],
|
||||||
|
"permission": "",
|
||||||
|
"roles": [
|
||||||
|
"administrator",
|
||||||
|
"pemohon-ao",
|
||||||
|
"pemohon-eo",
|
||||||
|
"admin",
|
||||||
|
"DD Appraisal",
|
||||||
|
"EO Appraisal",
|
||||||
|
"senior-officer"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"title": "Kurang Bayar",
|
"title": "Kurang Bayar",
|
||||||
"path": "pembayaran.kurang",
|
"path": "pembayaran.kurang",
|
||||||
@@ -606,8 +608,7 @@
|
|||||||
"permission": "",
|
"permission": "",
|
||||||
"roles": [
|
"roles": [
|
||||||
"administrator",
|
"administrator",
|
||||||
"pemohon-ao",
|
"pemohon-ao"
|
||||||
"pemohon-eo"
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -655,8 +656,6 @@
|
|||||||
"permission": "",
|
"permission": "",
|
||||||
"roles": [
|
"roles": [
|
||||||
"administrator",
|
"administrator",
|
||||||
"pemohon-ao",
|
|
||||||
"pemohon-eo",
|
|
||||||
"admin",
|
"admin",
|
||||||
"surveyor",
|
"surveyor",
|
||||||
"senior-officer",
|
"senior-officer",
|
||||||
@@ -709,23 +708,6 @@
|
|||||||
"EO Appraisal",
|
"EO Appraisal",
|
||||||
"senior-officer"
|
"senior-officer"
|
||||||
]
|
]
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "Memo Penyelesaian",
|
|
||||||
"path": "memo",
|
|
||||||
"icon": "ki-filled ki-document text-lg text-primary",
|
|
||||||
"classes": "",
|
|
||||||
"attributes": [],
|
|
||||||
"permission": "",
|
|
||||||
"roles": [
|
|
||||||
"administrator",
|
|
||||||
"pemohon-ao",
|
|
||||||
"pemohon-eo",
|
|
||||||
"admin",
|
|
||||||
"DD Appraisal",
|
|
||||||
"EO Appraisal",
|
|
||||||
"senior-officer"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"master": [
|
"master": [
|
||||||
|
|||||||
@@ -1,120 +1,131 @@
|
|||||||
<form action="{{ isset($debitur->id) ? route('debitur.update', $debitur->id) : route('debitur.store') }}" method="POST" id="debitur-form" class="grid gap-5">
|
<form action="{{ isset($debitur->id) ? route('debitur.update', $debitur->id) : route('debitur.store') }}" method="POST"
|
||||||
@if(isset($debitur->id))
|
id="debitur-form" class="grid gap-5">
|
||||||
|
@if (isset($debitur->id))
|
||||||
<input type="hidden" name="id" value="{{ $debitur->id }}">
|
<input type="hidden" name="id" value="{{ $debitur->id }}">
|
||||||
@method('PUT')
|
@method('PUT')
|
||||||
@endif
|
@endif
|
||||||
@csrf
|
@csrf
|
||||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
<div class="flex flex-wrap gap-2.5 items-baseline lg:flex-nowrap">
|
||||||
<label class="form-label max-w-56 gap-1">
|
<label class="gap-1 form-label max-w-56">
|
||||||
Cabang
|
Cabang
|
||||||
<span class="text-danger">*</span>
|
<span class="text-danger">*</span>
|
||||||
</label>
|
</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
@if(auth()->user()->hasRole('administrator'))
|
@if (auth()->user()->hasRole(['administrator']))
|
||||||
<select class="input tomselect w-full @error('branch_id') border-danger bg-danger-light @enderror" name="branch_id" id="branch_id">
|
<select class="input tomselect w-full @error('branch_id') border-danger bg-danger-light @enderror"
|
||||||
|
name="branch_id" id="branch_id">
|
||||||
<option value="">Pilih Cabang</option>
|
<option value="">Pilih Cabang</option>
|
||||||
@foreach($branches as $branch)
|
@foreach ($branches as $branch)
|
||||||
<option value="{{ $branch->id }}" {{ (isset($debitur) && $branch->id == $debitur->branch_id) || (old('branch_id') == $branch->id) ? 'selected' : '' }}>
|
<option value="{{ $branch->id }}"
|
||||||
|
{{ (isset($debitur) && $branch->id == $debitur->branch_id) || old('branch_id') == $branch->id ? 'selected' : '' }}>
|
||||||
{{ $branch->name }}
|
{{ $branch->name }}
|
||||||
</option>
|
</option>
|
||||||
@endforeach
|
@endforeach
|
||||||
</select>
|
</select>
|
||||||
@else
|
@else
|
||||||
<input type="hidden" name="branch_id" value="{{ auth()->user()->branch_id }}">
|
<input type="hidden" name="branch_id" value="{{ auth()->user()->branch_id }}">
|
||||||
<input type="text" class="input w-full" value="{{ auth()->user()->branch->name }}" readonly>
|
<input type="text" class="w-full input" value="{{ auth()->user()->branch->name }}" readonly>
|
||||||
@endif
|
@endif
|
||||||
@error('branch_id')
|
@error('branch_id')
|
||||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
<em class="text-sm alert text-danger">{{ $message }}</em>
|
||||||
@enderror
|
@enderror
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
<div class="flex flex-wrap gap-2.5 items-baseline lg:flex-nowrap">
|
||||||
<label class="form-label max-w-56 gap-1">
|
<label class="gap-1 form-label max-w-56">
|
||||||
CIF
|
CIF
|
||||||
<span class="text-danger">
|
<span class="text-danger">
|
||||||
*
|
*
|
||||||
</span>
|
</span>
|
||||||
</label>
|
</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<input class="input @error('cif') border-danger bg-danger-light @enderror" type="number" id="cif" name="cif" value="{{ $debitur->cif ?? '0000000000' }}">
|
<input class="input @error('cif') border-danger bg-danger-light @enderror" type="number" id="cif"
|
||||||
|
name="cif" value="{{ $debitur->cif ?? '0000000000' }}">
|
||||||
@error('cif')
|
@error('cif')
|
||||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
<em class="text-sm alert text-danger">{{ $message }}</em>
|
||||||
@enderror
|
@enderror
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
<div class="flex flex-wrap gap-2.5 items-baseline lg:flex-nowrap">
|
||||||
<label class="form-label max-w-56">
|
<label class="form-label max-w-56">
|
||||||
Nomor Rekening
|
Nomor Rekening
|
||||||
</label>
|
</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<input class="input @error('nomor_rekening') border-danger bg-danger-light @enderror" type="number" name="nomor_rekening" value="{{ $debitur->nomor_rekening ?? '' }}">
|
<input class="input @error('nomor_rekening') border-danger bg-danger-light @enderror" type="number"
|
||||||
|
name="nomor_rekening" value="{{ $debitur->nomor_rekening ?? '' }}">
|
||||||
@error('nomor_rekening')
|
@error('nomor_rekening')
|
||||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
<em class="text-sm alert text-danger">{{ $message }}</em>
|
||||||
@enderror
|
@enderror
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
<div class="flex flex-wrap gap-2.5 items-baseline lg:flex-nowrap">
|
||||||
<label class="form-label max-w-56 gap-1">
|
<label class="gap-1 form-label max-w-56">
|
||||||
Nama Debitur
|
Nama Debitur
|
||||||
<span class="text-danger">
|
<span class="text-danger">
|
||||||
*
|
*
|
||||||
</span>
|
</span>
|
||||||
</label>
|
</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<input required class="input @error('name') border-danger bg-danger-light @enderror" type="text" name="name" value="{{ $debitur->name ?? '' }}">
|
<input required class="input @error('name') border-danger bg-danger-light @enderror" type="text"
|
||||||
|
name="name" value="{{ $debitur->name ?? '' }}">
|
||||||
@error('name')
|
@error('name')
|
||||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
<em class="text-sm alert text-danger">{{ $message }}</em>
|
||||||
@enderror
|
@enderror
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
<div class="flex flex-wrap gap-2.5 items-baseline lg:flex-nowrap">
|
||||||
<label class="form-label max-w-56">
|
<label class="form-label max-w-56">
|
||||||
NPWP
|
NPWP
|
||||||
</label>
|
</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<input class="input @error('npwp') border-danger bg-danger-light @enderror" type="number" name="npwp" value="{{ $debitur->npwp ?? '' }}">
|
<input class="input @error('npwp') border-danger bg-danger-light @enderror" type="number" name="npwp"
|
||||||
|
value="{{ $debitur->npwp ?? '' }}">
|
||||||
@error('npwp')
|
@error('npwp')
|
||||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
<em class="text-sm alert text-danger">{{ $message }}</em>
|
||||||
@enderror
|
@enderror
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
<div class="flex flex-wrap gap-2.5 items-baseline lg:flex-nowrap">
|
||||||
<label class="form-label max-w-56">
|
<label class="form-label max-w-56">
|
||||||
Email
|
Email
|
||||||
</label>
|
</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<input class="input @error('email') border-danger bg-danger-light @enderror" type="email" name="email" value="{{ $debitur->email ?? '' }}">
|
<input class="input @error('email') border-danger bg-danger-light @enderror" type="email" name="email"
|
||||||
|
value="{{ $debitur->email ?? '' }}">
|
||||||
@error('email')
|
@error('email')
|
||||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
<em class="text-sm alert text-danger">{{ $message }}</em>
|
||||||
@enderror
|
@enderror
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
<div class="flex flex-wrap gap-2.5 items-baseline lg:flex-nowrap">
|
||||||
<label class="form-label max-w-56">
|
<label class="form-label max-w-56">
|
||||||
No Handphone
|
No Handphone
|
||||||
</label>
|
</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<input class="input @error('phone') border-danger bg-danger-light @enderror" type="number" name="phone" value="{{ $debitur->phone ?? '' }}">
|
<input class="input @error('phone') border-danger bg-danger-light @enderror" type="number" name="phone"
|
||||||
|
value="{{ $debitur->phone ?? '' }}">
|
||||||
@error('phone')
|
@error('phone')
|
||||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
<em class="text-sm alert text-danger">{{ $message }}</em>
|
||||||
@enderror
|
@enderror
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
<div class="flex flex-wrap gap-2.5 items-baseline lg:flex-nowrap">
|
||||||
<label class="form-label max-w-56 gap-1">
|
<label class="gap-1 form-label max-w-56">
|
||||||
Alamat
|
Alamat
|
||||||
<span class="text-danger">
|
<span class="text-danger">
|
||||||
*
|
*
|
||||||
</span>
|
</span>
|
||||||
</label>
|
</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<div class="flex flex-col lg:flex-row gap-2 w-full">
|
<div class="flex flex-col gap-2 w-full lg:flex-row">
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<select required id="province_code" name="province_code" class="select w-full @error('province_code') border-danger bg-danger-light @enderror">
|
<select required id="province_code" name="province_code"
|
||||||
|
class="select w-full @error('province_code') border-danger bg-danger-light @enderror">
|
||||||
<option value="">Select Province</option>
|
<option value="">Select Province</option>
|
||||||
@foreach($provinces as $province)
|
@foreach ($provinces as $province)
|
||||||
@if(isset($debitur))
|
@if (isset($debitur))
|
||||||
<option value="{{ $province->code }}" {{ isset($debitur->province_code) && $debitur->province_code == $province->code?'selected' : '' }}>
|
<option value="{{ $province->code }}"
|
||||||
|
{{ isset($debitur->province_code) && $debitur->province_code == $province->code ? 'selected' : '' }}>
|
||||||
{{ $province->name }}
|
{{ $province->name }}
|
||||||
</option>
|
</option>
|
||||||
@else
|
@else
|
||||||
@@ -125,16 +136,18 @@
|
|||||||
@endforeach
|
@endforeach
|
||||||
</select>
|
</select>
|
||||||
@error('province_code')
|
@error('province_code')
|
||||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
<em class="text-sm alert text-danger">{{ $message }}</em>
|
||||||
@enderror
|
@enderror
|
||||||
</div>
|
</div>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<select required id="city_code" name="city_code" class="select w-full @error('city_code') border-danger bg-danger-light @enderror">
|
<select required id="city_code" name="city_code"
|
||||||
|
class="select w-full @error('city_code') border-danger bg-danger-light @enderror">
|
||||||
<option value="">Select City</option>
|
<option value="">Select City</option>
|
||||||
@if(isset($cities))
|
@if (isset($cities))
|
||||||
@foreach($cities as $city)
|
@foreach ($cities as $city)
|
||||||
@if(isset($debitur))
|
@if (isset($debitur))
|
||||||
<option value="{{ $city->code }}" {{ isset($debitur->city_code) && $debitur->city_code == $city->code?'selected' : '' }}>
|
<option value="{{ $city->code }}"
|
||||||
|
{{ isset($debitur->city_code) && $debitur->city_code == $city->code ? 'selected' : '' }}>
|
||||||
{{ $city->name }}
|
{{ $city->name }}
|
||||||
</option>
|
</option>
|
||||||
@else
|
@else
|
||||||
@@ -147,18 +160,20 @@
|
|||||||
@endif
|
@endif
|
||||||
</select>
|
</select>
|
||||||
@error('city_code')
|
@error('city_code')
|
||||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
<em class="text-sm alert text-danger">{{ $message }}</em>
|
||||||
@enderror
|
@enderror
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex flex-col lg:flex-row gap-2 w-full mt-2 lg:mt-5">
|
<div class="flex flex-col gap-2 mt-2 w-full lg:flex-row lg:mt-5">
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<select required id="district_code" name="district_code" class="select w-full @error('district_code') border-danger bg-danger-light @enderror">
|
<select required id="district_code" name="district_code"
|
||||||
|
class="select w-full @error('district_code') border-danger bg-danger-light @enderror">
|
||||||
<option value="">Select District</option>
|
<option value="">Select District</option>
|
||||||
@if(isset($districts))
|
@if (isset($districts))
|
||||||
@foreach($districts as $district)
|
@foreach ($districts as $district)
|
||||||
@if(isset($debitur))
|
@if (isset($debitur))
|
||||||
<option value="{{ $district->code }}" {{ isset($debitur->district_code) && $debitur->district_code == $district->code?'selected' : '' }}>
|
<option value="{{ $district->code }}"
|
||||||
|
{{ isset($debitur->district_code) && $debitur->district_code == $district->code ? 'selected' : '' }}>
|
||||||
{{ $district->name }}
|
{{ $district->name }}
|
||||||
</option>
|
</option>
|
||||||
@else
|
@else
|
||||||
@@ -171,16 +186,18 @@
|
|||||||
@endif
|
@endif
|
||||||
</select>
|
</select>
|
||||||
@error('district_code')
|
@error('district_code')
|
||||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
<em class="text-sm alert text-danger">{{ $message }}</em>
|
||||||
@enderror
|
@enderror
|
||||||
</div>
|
</div>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<select required id="village_code" name="village_code" class="select w-full @error('district_code') border-danger bg-danger-light @enderror">
|
<select required id="village_code" name="village_code"
|
||||||
|
class="select w-full @error('district_code') border-danger bg-danger-light @enderror">
|
||||||
<option value="">Select Village</option>
|
<option value="">Select Village</option>
|
||||||
@if(isset($villages))
|
@if (isset($villages))
|
||||||
@foreach($villages as $village)
|
@foreach ($villages as $village)
|
||||||
@if(isset($debitur))
|
@if (isset($debitur))
|
||||||
<option value="{{ $village->code }}" {{ isset($debitur->village_code) && $debitur->village_code == $village->code?'selected' : '' }}>
|
<option value="{{ $village->code }}"
|
||||||
|
{{ isset($debitur->village_code) && $debitur->village_code == $village->code ? 'selected' : '' }}>
|
||||||
{{ $village->name }}
|
{{ $village->name }}
|
||||||
</option>
|
</option>
|
||||||
@else
|
@else
|
||||||
@@ -193,20 +210,23 @@
|
|||||||
@endif
|
@endif
|
||||||
</select>
|
</select>
|
||||||
@error('district_code')
|
@error('district_code')
|
||||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
<em class="text-sm alert text-danger">{{ $message }}</em>
|
||||||
@enderror
|
@enderror
|
||||||
</div>
|
</div>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<input required class="input @error('postal_code') border-danger bg-danger-light @enderror" type="number" id="postal_code" name="postal_code" value="{{ $debitur->postal_code ?? '' }}" placeholder="Postal Code">
|
<input required class="input @error('postal_code') border-danger bg-danger-light @enderror"
|
||||||
|
type="number" id="postal_code" name="postal_code"
|
||||||
|
value="{{ $debitur->postal_code ?? '' }}" placeholder="Postal Code">
|
||||||
@error('postal_code')
|
@error('postal_code')
|
||||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
<em class="text-sm alert text-danger">{{ $message }}</em>
|
||||||
@enderror
|
@enderror
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex flex-row w-full mt-2 lg:mt-5">
|
<div class="flex flex-row mt-2 w-full lg:mt-5">
|
||||||
<textarea required class="textarea @error('address') border-danger bg-danger-light @enderror" rows="3" id="address" name="address" placeholder="Alamat Lengkap">{{ $debitur->address ?? '' }}</textarea>
|
<textarea required class="textarea @error('address') border-danger bg-danger-light @enderror" rows="3"
|
||||||
|
id="address" name="address" placeholder="Alamat Lengkap">{{ $debitur->address ?? '' }}</textarea>
|
||||||
@error('address')
|
@error('address')
|
||||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
<em class="text-sm alert text-danger">{{ $message }}</em>
|
||||||
@enderror
|
@enderror
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -219,7 +239,7 @@
|
|||||||
</form>
|
</form>
|
||||||
@push('scripts')
|
@push('scripts')
|
||||||
<script>
|
<script>
|
||||||
document.addEventListener('DOMContentLoaded', function () {
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
const form = document.getElementById('debitur-form');
|
const form = document.getElementById('debitur-form');
|
||||||
const nameInput = form.querySelector('input[name="name"]');
|
const nameInput = form.querySelector('input[name="name"]');
|
||||||
const provinceSelect = form.querySelector('#province_code');
|
const provinceSelect = form.querySelector('#province_code');
|
||||||
@@ -319,7 +339,7 @@
|
|||||||
return isValid;
|
return isValid;
|
||||||
}
|
}
|
||||||
|
|
||||||
form.addEventListener('submit', function (event) {
|
form.addEventListener('submit', function(event) {
|
||||||
const isValid =
|
const isValid =
|
||||||
validateBranch() &&
|
validateBranch() &&
|
||||||
validateCIF() &&
|
validateCIF() &&
|
||||||
@@ -336,7 +356,7 @@
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
submitButton.addEventListener('click', function (event) {
|
submitButton.addEventListener('click', function(event) {
|
||||||
if (!validateAllFields()) {
|
if (!validateAllFields()) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,97 +5,119 @@
|
|||||||
@endsection
|
@endsection
|
||||||
|
|
||||||
@section('content')
|
@section('content')
|
||||||
<div class="w-full grid gap-5 lg:gap-7.5 mx-auto">
|
<div class="grid gap-5 mx-auto w-full lg:gap-7.5">
|
||||||
<div class="card border border-agi-100 pb-2.5">
|
<div class="pb-2.5 border card border-agi-100">
|
||||||
<div class="card-header bg-agi-50" id="basic_settings">
|
<div class="card-header bg-agi-50" id="basic_settings">
|
||||||
<div class="card-title flex flex-row gap-1.5">
|
<div class="flex flex-row gap-1.5 card-title">
|
||||||
Persetujuan Penawaran
|
Persetujuan Penawaranaa
|
||||||
</div>
|
</div>
|
||||||
<div class="flex items-center gap-2">
|
<div class="flex gap-2 items-center">
|
||||||
<a href="{{ route('persetujuan-penawaran.index') }}" class="btn btn-xs btn-info"><i class="ki-filled ki-exit-left"></i> Back</a>
|
<a href="{{ route('persetujuan-penawaran.index') }}" class="btn btn-xs btn-info"><i
|
||||||
|
class="ki-filled ki-exit-left"></i> Back</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<form action="{{ route('persetujuan-penawaran.store') }}" method="POST" class="grid gap-5" enctype="multipart/form-data">
|
<form action="{{ route('persetujuan-penawaran.store') }}" method="POST" class="grid gap-5"
|
||||||
|
enctype="multipart/form-data">
|
||||||
@csrf
|
@csrf
|
||||||
<input type="hidden" name="permohonan_id" value="{{ $permohonan->id }}">
|
<input type="hidden" name="permohonan_id" value="{{ $permohonan->id }}">
|
||||||
<input type="hidden" name="penawaran_id" value="{{ $permohonan->penawaran->id ?? old('penawaran_id') }}">
|
<input type="hidden" name="penawaran_id"
|
||||||
<input type="hidden" name="nomor_proposal_penawaran" value="{{ $permohonan->penawaran->detail->no_proposal ?? old('nomor_proposal_penawaran') }}">
|
value="{{ $permohonan->penawaran->id ?? old('penawaran_id') }}">
|
||||||
<input type="hidden" name="tanggal_proposal_penawaran" value="{{ $permohonan->penawaran->detail->tgl_proposal ?? old('tanggal_proposal_penawaran') }}">
|
<input type="hidden" name="nomor_proposal_penawaran"
|
||||||
<input type="hidden" name="biaya_final" value="{{ $permohonan->penawaran->detail->biaya_penawaran ?? old('biaya_final') }}">
|
value="{{ $permohonan->penawaran->detail->no_proposal ?? old('nomor_proposal_penawaran') }}">
|
||||||
|
<input type="hidden" name="tanggal_proposal_penawaran"
|
||||||
|
value="{{ $permohonan->penawaran->detail->tgl_proposal ?? old('tanggal_proposal_penawaran') }}">
|
||||||
|
<input type="hidden" name="biaya_final"
|
||||||
|
value="{{ $permohonan->penawaran->detail->biaya_penawaran ?? old('biaya_final') }}">
|
||||||
|
|
||||||
|
|
||||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 hidden">
|
<div class="flex hidden flex-wrap gap-2.5 items-baseline lg:flex-nowrap">
|
||||||
<label class="form-label max-w-56">
|
<label class="form-label max-w-56">
|
||||||
Status Bayar
|
Status Bayar
|
||||||
</label>
|
</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<select class="input tomselect w-full @error('status_bayar') border-danger bg-danger-light @enderror" name="status_bayar" id="status_bayar">
|
<select
|
||||||
|
class="input tomselect w-full @error('status_bayar') border-danger bg-danger-light @enderror"
|
||||||
|
name="status_bayar" id="status_bayar">
|
||||||
<option value="">Pilih Status Bayar</option>
|
<option value="">Pilih Status Bayar</option>
|
||||||
<option value="sudah_bayar" {{ (old('status_bayar') == 'sudah_bayar') || (isset($permohonan) && $permohonan->status_bayar == 'sudah_bayar') ? 'selected' : '' }}>Sudah Bayar</option>
|
<option value="sudah_bayar"
|
||||||
<option value="belum_bayar" {{ (old('status_bayar') == 'belum_bayar') || (isset($permohonan) && $permohonan->status_bayar == 'belum_bayar') ? 'selected' : '' }}>Belum Bayar</option>
|
{{ old('status_bayar') == 'sudah_bayar' || (isset($permohonan) && $permohonan->status_bayar == 'sudah_bayar') ? 'selected' : '' }}>
|
||||||
|
Sudah Bayar</option>
|
||||||
|
<option value="belum_bayar"
|
||||||
|
{{ old('status_bayar') == 'belum_bayar' || (isset($permohonan) && $permohonan->status_bayar == 'belum_bayar') ? 'selected' : '' }}>
|
||||||
|
Belum Bayar</option>
|
||||||
</select>
|
</select>
|
||||||
@error('status_bayar')
|
@error('status_bayar')
|
||||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
<em class="text-sm alert text-danger">{{ $message }}</em>
|
||||||
@enderror
|
@enderror
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
<div class="flex flex-wrap gap-2.5 items-baseline lg:flex-nowrap">
|
||||||
<label class="form-label max-w-56">
|
<label class="form-label max-w-56">
|
||||||
File Persetujuan Penawaran
|
File Persetujuan Penawaran
|
||||||
</label>
|
</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<input type="file" name="file_persetujuan_penawaran" id="file_persetujuan_penawaran" class="file-input w-full @error('file_persetujuan_penawaran') border-danger bg-danger-light @enderror" accept=".pdf,.doc,.docx">
|
<input type="file" name="file_persetujuan_penawaran" id="file_persetujuan_penawaran"
|
||||||
|
class="file-input w-full @error('file_persetujuan_penawaran') border-danger bg-danger-light @enderror"
|
||||||
|
accept=".pdf,.doc,.docx">
|
||||||
@error('file_persetujuan_penawaran')
|
@error('file_persetujuan_penawaran')
|
||||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
<em class="text-sm alert text-danger">{{ $message }}</em>
|
||||||
@enderror
|
@enderror
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
<div class="flex flex-wrap gap-2.5 items-baseline lg:flex-nowrap">
|
||||||
<label class="form-label max-w-56">
|
<label class="form-label max-w-56">
|
||||||
Surat Representasi
|
Surat Representasi
|
||||||
</label>
|
</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<input type="file" name="surat_representasi" id="surat_representasi" class="file-input w-full @error('surat_representasi') border-danger bg-danger-light @enderror" accept=".pdf,.doc,.docx">
|
<input type="file" name="surat_representasi" id="surat_representasi"
|
||||||
|
class="file-input w-full @error('surat_representasi') border-danger bg-danger-light @enderror"
|
||||||
|
accept=".pdf,.doc,.docx">
|
||||||
@error('surat_representasi')
|
@error('surat_representasi')
|
||||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
<em class="text-sm alert text-danger">{{ $message }}</em>
|
||||||
@enderror
|
@enderror
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
<div class="flex flex-wrap gap-2.5 items-baseline lg:flex-nowrap">
|
||||||
<label class="form-label max-w-56">
|
<label class="form-label max-w-56">
|
||||||
Nominal Bayar
|
Nominal Bayar
|
||||||
</label>
|
</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<input type="number" name="nominal_bayar" id="nominal_bayar" class="input w-full @error('nominal_bayar') border-danger bg-danger-light @enderror" value="{{ old('nominal_bayar', $persetujuanPenawaran->nominal_bayar ?? '') }}" placeholder="Masukkan nominal bayar">
|
<input type="number" name="nominal_bayar" id="nominal_bayar"
|
||||||
|
class="input w-full @error('nominal_bayar') border-danger bg-danger-light @enderror"
|
||||||
|
value="{{ old('nominal_bayar', $persetujuanPenawaran->nominal_bayar ?? '') }}"
|
||||||
|
placeholder="Masukkan nominal bayar">
|
||||||
@error('nominal_bayar')
|
@error('nominal_bayar')
|
||||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
<em class="text-sm alert text-danger">{{ $message }}</em>
|
||||||
@enderror
|
@enderror
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
<div class="flex flex-wrap gap-2.5 items-baseline lg:flex-nowrap">
|
||||||
<label class="form-label max-w-56">
|
<label class="form-label max-w-56">
|
||||||
Bukti Bayar
|
Bukti Bayar
|
||||||
</label>
|
</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<input type="file" name="bukti_bayar" id="bukti_bayar" class="file-input w-full @error('bukti_bayar') border-danger bg-danger-light @enderror" accept=".pdf,.jpg,.jpeg,.png">
|
<input type="file" name="bukti_bayar" id="bukti_bayar"
|
||||||
|
class="file-input w-full @error('bukti_bayar') border-danger bg-danger-light @enderror"
|
||||||
|
accept=".pdf,.jpg,.jpeg,.png">
|
||||||
@error('bukti_bayar')
|
@error('bukti_bayar')
|
||||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
<em class="text-sm alert text-danger">{{ $message }}</em>
|
||||||
@enderror
|
@enderror
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
<div class="flex flex-wrap gap-2.5 items-baseline lg:flex-nowrap">
|
||||||
<label class="form-label max-w-56">
|
<label class="form-label max-w-56">
|
||||||
Catatan
|
Catatan
|
||||||
</label>
|
</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<textarea name="catatan" id="catatan" rows="4" class="textarea w-full @error('catatan') border-danger bg-danger-light @enderror" placeholder="Masukkan catatan">{{ old('catatan', $persetujuanPenawaran->catatan ?? '') }}</textarea>
|
<textarea name="catatan" id="catatan" rows="4"
|
||||||
|
class="textarea w-full @error('catatan') border-danger bg-danger-light @enderror" placeholder="Masukkan catatan">{{ old('catatan', $persetujuanPenawaran->catatan ?? '') }}</textarea>
|
||||||
@error('catatan')
|
@error('catatan')
|
||||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
<em class="text-sm alert text-danger">{{ $message }}</em>
|
||||||
@enderror
|
@enderror
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user