Penambahan Laporan Outstanding Debitur Hapus Buku

This commit is contained in:
daengdeni 2024-04-04 14:49:58 +07:00
parent 090e00a234
commit d230707cb0
5 changed files with 449 additions and 17 deletions

View File

@ -9,9 +9,11 @@
use Illuminate\Support\Number;
use Modules\Writeoff\Entities\Branch;
use Modules\Writeoff\Entities\DetailSubrogasiJamkrindo;
use Modules\Writeoff\Entities\FacilityType;
use Modules\Writeoff\Entities\GuaranteeType;
use Modules\Writeoff\Entities\HapusBuku;
use Modules\Writeoff\Entities\KlaimJamkrindo;
use Modules\Writeoff\Entities\LoanType;
use Modules\Writeoff\Entities\SubrogasiJamkrindo;
use Yajra\DataTables\Facades\DataTables;
use Yajra\DataTables\Html\Builder;
@ -34,6 +36,15 @@
return view('writeoff::report.index');
}
public function debitur()
{
$branches = Branch::all();
$loanTypes = LoanType::all();
$facilityTypes = FacilityType::all();
return view('writeoff::report.debitur', compact('branches', 'loanTypes', 'facilityTypes'));
}
public function penagihan()
{
$branches = Branch::all();
@ -46,6 +57,141 @@
return view('writeoff::report.subrogasi', compact('branches'));
}
public function laporan_debitur(Builder $builder, Request $request)
{
if (request()->ajax()) {
if (request()->get('kode_cabang') == 'all') {
$data = HapusBuku::with([
'branch',
'debitur',
'facility_type',
'loan_type',
'currency',
])
->select('hapus_buku.*', 'detail_pembayaran.tanggal_pembayaran', 'detail_pembayaran.nominal')
->leftJoin('detail_pembayaran', 'hapus_buku.nomor_pinjaman', '=', 'detail_pembayaran.nomor_pinjaman')
->where('tanggal_hapus_buku', '<=', request()->get('start_date'))
->whereRelation('debitur', 'name', 'like', '%' . request()->get('debitur') . '%')
->get();
} else {
$data = HapusBuku::with([
'branch',
'debitur',
'facility_type',
'loan_type',
'currency',
])
->select('hapus_buku.*', 'detail_pembayaran.tanggal_pembayaran', 'detail_pembayaran.nominal')
->leftJoin('detail_pembayaran', 'hapus_buku.nomor_pinjaman', '=', 'detail_pembayaran.nomor_pinjaman')
->where('tanggal_hapus_buku', '<=', request()->get('start_date'))
->where('kode_cabang', request()->get('kode_cabang'))
->whereRelation('debitur', 'name', 'like', request()->get('debitur'))
->get();
}
return DataTables::of($data)->editColumn('tanggal_hapus_buku', function ($row) {
$date = Carbon::create($row->tanggal_hapus_buku);
return $date->locale('id')->translatedFormat('d F Y');
})->editColumn('branch', function ($row) {
return $row->branch->kode . ' - ' . $row->branch->name;
})->editColumn('debitur', function ($row) {
return $row->debitur->kode . ' - ' . $row->debitur->name;
})->editColumn('alamat', function ($row) {
return $row->debitur->address;
})->editColumn('facility_type', function ($row) {
return $row->facility_type->kode . ' - ' . $row->facility_type->name;
})->editColumn('loan_type', function ($row) {
return $row->loan_type->kode . ' - ' . $row->loan_type->name;
})->editColumn('guarantee_type', function ($row) {
$guarantee = GuaranteeType::where('id', $row->guarantee_type_id)->first();
if (isset($guarantee->id)) {
return $guarantee->kode . ' - ' . $guarantee->name;
} else {
return '-';
}
})->editColumn('nilai_plafond_awal', function ($row) {
return Number::currency($row->nilai_plafond_awal, 'IDR', 'id_ID');
})->editColumn('baki_debet', function ($row) {
return Number::currency($row->baki_debet, 'IDR', 'id_ID');
})->editColumn('jumlah_bunga', function ($row) {
return Number::currency($row->jumlah_bunga, 'IDR', 'id_ID');
})->editColumn('tagihan_lain', function ($row) {
return Number::currency($row->tagihan_lain, 'IDR', 'id_ID');
})->editColumn('bunga_intra', function ($row) {
return Number::currency($row->bunga_intra, 'IDR', 'id_ID');
})->editColumn('bunga_ekstra', function ($row) {
return Number::currency($row->bunga_ekstra ?? 0, 'IDR', 'id_ID');
})->editColumn('jumlah_kewajiban_lain', function ($row) {
return Number::currency($row->jumlah_kewajiban_lain, 'IDR', 'id_ID');
})->editColumn('total_kewajiban', function ($row) {
return Number::currency($row->total_kewajiban, 'IDR', 'id_ID');
})->editColumn('total_all_kewajiban', function ($row) {
return Number::currency($row->total_all_kewajiban, 'IDR', 'id_ID');
})->editColumn('nominal', function ($row) {
return Number::currency($row->nominal ?? 0, 'IDR', 'id_ID');
})->editColumn('sisa_kewajiban', function ($row) {
$sisa = $row->total_all_kewajiban - $row->nominal;
return Number::currency($row->sisa ?? 0, 'IDR', 'id_ID');
})->addIndexColumn()->toJson();
}
$breadcrumb = [
'title' => 'Laporan Outstanding Debitur Hapus Buku',
'link' => 'laporan.penagihan'
];
$start_date = request()->get('start_date');
$month = date('m', strtotime($start_date));
$year = date('Y', strtotime($start_date));
$req = [
'jenis_laporan' => $request->jenis_laporan,
'kode_cabang' => request()->get('kode_cabang'),
'jenis_pinjaman' => $request->jenis_pinjaman,
'jenis_fasilitas' => $request->jenis_fasilitas,
'debitur' => $request->debitur ?? '%',
'start_date' => $request->start_date ?? Carbon::now()->format('Y-m-d'),
];
$dataTable = $builder->columns([
Column::make('DT_RowIndex')->title('No')->orderable(false)->searchable(false),
Column::make('nomor_pinjaman')->title('Nomor Pinjaman'),
Column::make('tanggal_hapus_buku')->title('Tanggal Hapus Buku'),
Column::make('branch')->title('Cabang'),
Column::make('debitur')->title('Debitur'),
Column::make('facility_type')->title('Jenis Fasilitas'),
Column::make('nomor_fasilitas')->title('Nomor Fasilitas'),
Column::make('loan_type')->title('Jenis Pinjaman'),
Column::make('nilai_plafond_awal')->title('Plafond Awal'),
Column::make('suku_bunga')->title('Suku Bunga'),
Column::make('baki_debet')->title('Baki Debet'),
Column::make('jumlah_bunga')->title('Jumlah Bunga'),
Column::make('jumlah_kewajiban_lain')->title('Kewajiban Lain'),
Column::make('total_kewajiban')->title('Total Kewajiban'),
Column::make('bunga_intra')->title('Bunga Intra'),
Column::make('bunga_ekstra')->title('Bunga Ekstra'),
Column::make('tagihan_lain')->title('Kewajiban Lainnya'),
Column::make('total_all_kewajiban')->title('Total Semua Kewajiban'),
Column::make('tanggal_pembayaran')->title('Tanggal Bayar'),
Column::make('nominal')->title('Nominal Bayar'),
Column::make('sisa_kewajiban')->title('Sisa Kewajiban')
])
->parameters([
'scrollX' => false,
'drawCallback' => 'function() { KTMenu.createInstances(); }',
])
->addTableClass('align-middle table-row-dashed fs-6 gy-5')
->setTableId('laporan-table')
->minifiedAjax(request()->url(), null, $req)
->stateSave(false)
->responsive()
->autoWidth(true)
->orderBy(0);
return view('writeoff::report.laporan_debitur', compact('dataTable', 'breadcrumb'));
}
public function laporan_penagihan(Builder $builder, Request $request)
{
if (request()->ajax()) {
@ -56,7 +202,8 @@
'facility_type',
'loan_type',
'currency',
])->select('hapus_buku.*','detail_pembayaran.tanggal_pembayaran','detail_pembayaran.nominal','detail_jaminan.guarantee_type_id','detail_jaminan.nomor_jaminan','detail_jaminan.nilai_jaminan','detail_penagihan.tanggal_penagihan','detail_penagihan.pic_penagihan','detail_penagihan.tindakan','detail_penagihan.informasi_lku','detail_penagihan.proses_hukum','detail_penagihan.komitmen_debitur')
])
->select('hapus_buku.*', 'detail_pembayaran.tanggal_pembayaran', 'detail_pembayaran.nominal', 'detail_jaminan.guarantee_type_id', 'detail_jaminan.nomor_jaminan', 'detail_jaminan.nilai_jaminan', 'detail_penagihan.tanggal_penagihan', 'detail_penagihan.pic_penagihan', 'detail_penagihan.tindakan', 'detail_penagihan.informasi_lku', 'detail_penagihan.proses_hukum', 'detail_penagihan.komitmen_debitur')
->leftJoin('detail_pembayaran', 'hapus_buku.nomor_pinjaman', '=', 'detail_pembayaran.nomor_pinjaman')
->leftJoin('detail_penagihan', 'hapus_buku.nomor_pinjaman', '=', 'detail_penagihan.nomor_pinjaman')
->leftJoin('detail_jaminan', 'hapus_buku.nomor_pinjaman', '=', 'detail_jaminan.nomor_pinjaman')
@ -71,7 +218,8 @@
'facility_type',
'loan_type',
'currency',
])->select('hapus_buku.*','detail_pembayaran.tanggal_pembayaran','detail_pembayaran.nominal','detail_jaminan.guarantee_type_id','detail_jaminan.nomor_jaminan','detail_jaminan.nilai_jaminan','detail_penagihan.tanggal_penagihan','detail_penagihan.pic_penagihan','detail_penagihan.tindakan','detail_penagihan.informasi_lku','detail_penagihan.proses_hukum','detail_penagihan.komitmen_debitur')
])
->select('hapus_buku.*', 'detail_pembayaran.tanggal_pembayaran', 'detail_pembayaran.nominal', 'detail_jaminan.guarantee_type_id', 'detail_jaminan.nomor_jaminan', 'detail_jaminan.nilai_jaminan', 'detail_penagihan.tanggal_penagihan', 'detail_penagihan.pic_penagihan', 'detail_penagihan.tindakan', 'detail_penagihan.informasi_lku', 'detail_penagihan.proses_hukum', 'detail_penagihan.komitmen_debitur')
->leftJoin('detail_pembayaran', 'hapus_buku.nomor_pinjaman', '=', 'detail_pembayaran.nomor_pinjaman')
->leftJoin('detail_penagihan', 'hapus_buku.nomor_pinjaman', '=', 'detail_penagihan.nomor_pinjaman')
->leftJoin('detail_jaminan', 'hapus_buku.nomor_pinjaman', '=', 'detail_jaminan.nomor_pinjaman')

View File

@ -0,0 +1,139 @@
<x-default-layout>
@section('title')
Laporan Debitur Hapus Buku dan AYDA
@endsection
@section('breadcrumbs')
{{ Breadcrumbs::render('laporan.debitur') }}
@endsection
<div class="card">
<!--begin::Card body-->
<div class="card-body py-4">
<form id="form_jaminan" class="form" action="{{ route('laporan.report.debitur.store') }}" method="POST">
@csrf
<!--begin::Scroll-->
<div class="d-flex flex-column px-5 px-lg-10">
<!--begin::Input group-->
<div class="fv-row mb-7">
<label class="required fw-semibold fs-6 mb-2">Laporan</label>
<!--end::Label-->
<!--begin::Input-->
<select name="jenis_laporan" class="jenis_laporan form-select form-select-solid mb-3 mb-lg-0">
<option value="">Pilih Laporan</option>
<option value="A1">Outstanding Debitur Hapus Buku</option>
<option value="A2">Daftar Debitur Hapus Buku</option>
</select>
<!--end::Input-->
@error('jenis_laporan')
<span class="text-danger">{{ $message }}</span> @enderror
</div>
</div>
<div class="a1">
<div class="d-flex flex-column px-5 px-lg-10">
<!--begin::Input group-->
<div class="fv-row mb-7">
<label class="required fw-semibold fs-6 mb-2">Cabang</label>
<!--end::Label-->
<!--begin::Input-->
<select name="kode_cabang" class="form-select form-select-solid mb-3 mb-lg-0">
<option value="all">Semua Cabang</option>
@foreach($branches as $cabang)
<option value="{{ $cabang->kode }}">{{ $cabang->kode.' - '.$cabang->name }}</option>
@endforeach
</select>
<!--end::Input-->
@error('kode_cabang')
<span class="text-danger">{{ $message }}</span> @enderror
</div>
</div>
<div class="d-flex flex-column px-5 px-lg-10">
<!--begin::Input group-->
<div class="fv-row mb-7">
<label class="required fw-semibold fs-6 mb-2">Jenis Pinjaman</label>
<!--end::Label-->
<!--begin::Input-->
<select name="jenis_pinjaman" class="form-select form-select-solid mb-3 mb-lg-0">
<option value="all">Semua Jenis Pinjaman</option>
@foreach($loanTypes as $data)
<option value="{{ $data->kode }}">{{ $data->kode.' - '.$data->name }}</option>
@endforeach
</select>
<!--end::Input-->
@error('jenis_pinjaman')
<span class="text-danger">{{ $message }}</span> @enderror
</div>
</div>
<div class="d-flex flex-column px-5 px-lg-10">
<!--begin::Input group-->
<div class="fv-row mb-7">
<label class="required fw-semibold fs-6 mb-2">Jenis Fasilitas</label>
<!--end::Label-->
<!--begin::Input-->
<select name="jenis_fasilitas" class="form-select form-select-solid mb-3 mb-lg-0">
<option value="all">Semua Jenis Fasilitas</option>
@foreach($facilityTypes as $data)
<option value="{{ $data->kode }}">{{ $data->kode.' - '.$data->name }}</option>
@endforeach
</select>
<!--end::Input-->
@error('jenis_fasilitas')
<span class="text-danger">{{ $message }}</span> @enderror
</div>
</div>
<div class="d-flex flex-column px-5 px-lg-10">
<!--begin::Input group-->
<div class="fv-row mb-7 c2">
<label class="required fw-semibold fs-6 mb-2">Debitur</label>
<!--end::Label-->
<!--begin::Input-->
<input type="text" name="debitur" class="form-control form-control-solid mb-3 mb-lg-0" placeholder="Debitur"/>
<!--end::Input-->
@error('debitur')
<span class="text-danger">{{ $message }}</span> @enderror
</div>
</div>
<div class="d-flex flex-column px-5 px-lg-10">
<!--begin::Input group-->
<div class="fv-row mb-7 c2">
<label class="required fw-semibold fs-6 mb-2">Posisi Tanggal</label>
<!--end::Label-->
<!--begin::Input-->
<input type="date" name="start_date" class="form-control form-control-solid mb-3 mb-lg-0" placeholder="Periode"/>
<!--end::Input-->
@error('start_date')
<span class="text-danger">{{ $message }}</span> @enderror
</div>
</div>
<!--begin::Actions-->
<div class="text-center pt-15">
<button type="reset" class="btn btn-light me-3" data-bs-dismiss="modal" aria-label="Close">Discard</button>
<button type="submit" class="btn btn-primary" data-kt-hapus_bukues-modal-action="submit">
<span class="indicator-label">Submit</span>
</button>
</div>
<!--end::Actions-->
</div>
</form>
</div>
<!--end::Card body-->
</div>
@push('scripts')
<script>
$(function () {
$('.a1').hide();
$('.jenis_laporan').change(function () {
$('.jenis_laporan').val() == 'A1' ? $('.a1').show() : $('.a1').hide();
});
})
</script>
@endpush
</x-default-layout>

View File

@ -0,0 +1,141 @@
<x-default-layout>
@section('title')
{{ $breadcrumb['title'] }}
@endsection
@section('breadcrumbs')
{{ Breadcrumbs::render('laporan.penagihan') }}
@endsection
<div class="card">
<!--begin::Card header-->
<div class="card-header border-0 pt-6">
<!--begin::Card title-->
<div class="card-title">
</div>
<!--begin::Card title-->
<!--begin::Card toolbar-->
<div class="card-toolbar">
<!--begin::Toolbar-->
<div class="d-flex justify-content-end" data-kt-laporan-klaim-jamkrindo-table-toolbar="base">
<!--begin::Export dropdown-->
<button type="button" class="btn btn-light-primary" data-kt-menu-trigger="click"
data-kt-menu-placement="bottom-end">
<i class="ki-duotone ki-exit-down fs-2"><span class="path1"></span><span class="path2"></span></i>
Export Report
</button>
<!--begin::Menu-->
<div id="kt_datatable_example_export_menu"
class="menu menu-sub menu-sub-dropdown menu-column menu-rounded menu-gray-600 menu-state-bg-light-primary fw-semibold fs-7 w-200px py-4"
data-kt-menu="true">
<!--begin::Menu item-->
<div class="menu-item px-3">
<a href="#" class="menu-link px-3" data-kt-export="copy">
Copy to clipboard
</a>
</div>
<!--end::Menu item-->
<!--begin::Menu item-->
<div class="menu-item px-3">
<a href="#" class="menu-link px-3" data-kt-export="excel">
Export as Excel
</a>
</div>
<!--end::Menu item-->
<!--begin::Menu item-->
<div class="menu-item px-3">
<a href="#" class="menu-link px-3" data-kt-export="csv">
Export as CSV
</a>
</div>
<!--end::Menu item-->
<!--begin::Menu item-->
<div class="menu-item px-3">
<a href="#" class="menu-link px-3" data-kt-export="pdf">
Export as PDF
</a>
</div>
<!--end::Menu item-->
<!--begin::Menu item-->
<div class="menu-item px-3">
<a href="#" class="menu-link px-3" data-kt-export="print">
Print
</a>
</div>
<!--end::Menu item-->
</div>
<!--begin::Hide default export buttons-->
<div id="kt_datatable_example_buttons" class="d-none"></div>
<!--end::Hide default export buttons-->
</div>
<!--end::Toolbar-->
</div>
<!--end::Card toolbar-->
</div>
<!--end::Card header-->
<!--begin::Card body-->
<div class="card-body py-4">
<!--begin::Table-->
<div class="table-responsive">
{{ $dataTable->table() }}
</div>
<!--end::Table-->
</div>
<!--end::Card body-->
</div>
@push('scripts')
{{ $dataTable->scripts() }}
<script>
$(function(){
const documentTitle = '{{ $breadcrumb['title'] }}';
var buttons = new $.fn.dataTable.Buttons(LaravelDataTables['laporan-table'], {
buttons: [
{
extend: 'copyHtml5',
title: documentTitle
},
{
extend: 'excelHtml5',
title: documentTitle
},
{
extend: 'csvHtml5',
title: documentTitle
},
{
extend: 'pdfHtml5',
title: documentTitle,
orientation: 'landscape',
pageSize: 'A1'
},
{
extend: 'print',
title: documentTitle
}
]
}).container().appendTo($('#kt_datatable_example_buttons'));
// Hook dropdown menu click event to datatable export buttons
const exportButtons = document.querySelectorAll('#kt_datatable_example_export_menu [data-kt-export]');
exportButtons.forEach(exportButton => {
exportButton.addEventListener('click', e => {
e.preventDefault();
console.log(e.target.getAttribute('data-kt-export'));
// Get clicked export value
const exportValue = e.target.getAttribute('data-kt-export');
const target = document.querySelector('.dt-buttons .buttons-' + exportValue);
// Trigger click event on hidden datatable export buttons
target.click();
});
});
});
</script>
@endpush
</x-default-layout>

View File

@ -92,7 +92,7 @@
<script>
$(function(){
const documentTitle = 'Laporan Pencatatan Klaim Jamkrindo';
const documentTitle = '{{ $breadcrumb['title'] }}';
var buttons = new $.fn.dataTable.Buttons(LaravelDataTables['laporan-table'], {
buttons: [
{

View File

@ -53,7 +53,11 @@
});
Route::name('laporan.')->prefix('laporan')->group(function() {
Route::get('laporan-debitur-hapus-buku', 'ReportController@index')->name('report.index');
Route::get('laporan-debitur-hapus-buku', 'ReportController@debitur')->name('report.index');
Route::post('laporan-debitur', 'ReportController@laporan_debitur')->name('report.debitur.store');
Route::get('laporan-debitur', 'ReportController@laporan_debitur')->name('report.debitur.store_get');
Route::get('laporan-penagihan-hapus-buku', 'ReportController@penagihan')->name('report.penagihan');
Route::post('laporan-penagihan', 'ReportController@laporan_penagihan')->name('report.penagihan.store');
Route::get('laporan-penagihan', 'ReportController@laporan_penagihan')->name('report.penagihan.store_get');