2023-12-19 11:00:24 +00:00
< ? php
namespace Modules\Writeoff\Http\Controllers ;
use App\Http\Controllers\Controller ;
2024-04-03 04:34:53 +00:00
use Carbon\Carbon ;
2024-04-01 09:20:58 +00:00
use Illuminate\Http\Request ;
2023-12-19 11:00:24 +00:00
use Illuminate\Support\Facades\Auth ;
2024-04-03 03:17:33 +00:00
use Illuminate\Support\Number ;
2024-04-02 08:40:50 +00:00
use Modules\Writeoff\Entities\Branch ;
use Modules\Writeoff\Entities\DetailSubrogasiJamkrindo ;
2024-04-04 07:49:58 +00:00
use Modules\Writeoff\Entities\FacilityType ;
2024-04-04 03:26:03 +00:00
use Modules\Writeoff\Entities\GuaranteeType ;
use Modules\Writeoff\Entities\HapusBuku ;
2024-04-02 05:02:42 +00:00
use Modules\Writeoff\Entities\KlaimJamkrindo ;
2024-04-04 07:49:58 +00:00
use Modules\Writeoff\Entities\LoanType ;
2024-04-03 04:34:53 +00:00
use Modules\Writeoff\Entities\SubrogasiJamkrindo ;
2023-12-19 11:00:24 +00:00
use Yajra\DataTables\Facades\DataTables ;
use Yajra\DataTables\Html\Builder ;
use Yajra\DataTables\Html\Column ;
class ReportController extends Controller
{
public $user ;
public function __construct ()
{
$this -> middleware ( function ( $request , $next ) {
$this -> user = Auth :: guard ( 'web' ) -> user ();
return $next ( $request );
});
}
public function index ()
{
return view ( 'writeoff::report.index' );
}
2024-04-04 07:49:58 +00:00
public function debitur ()
{
$branches = Branch :: all ();
$loanTypes = LoanType :: all ();
$facilityTypes = FacilityType :: all ();
return view ( 'writeoff::report.debitur' , compact ( 'branches' , 'loanTypes' , 'facilityTypes' ));
}
2023-12-19 11:00:24 +00:00
public function penagihan ()
{
2024-04-04 03:26:03 +00:00
$branches = Branch :: all ();
return view ( 'writeoff::report.penagihan' , compact ( 'branches' ));
2023-12-19 11:00:24 +00:00
}
public function subrogasi ()
{
2024-04-02 08:40:50 +00:00
$branches = Branch :: all ();
return view ( 'writeoff::report.subrogasi' , compact ( 'branches' ));
2023-12-19 11:00:24 +00:00
}
2024-04-04 07:49:58 +00:00
public function laporan_debitur ( Builder $builder , Request $request )
{
if ( request () -> ajax ()) {
2024-04-05 02:22:43 +00:00
if ( request () -> get ( 'jenis_laporan' ) == 'A1' ) {
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' ) . '%' )
-> where ( 'detail_pembayaran.deleted_at' , null )
-> groupBy ( 'hapus_buku.nomor_pinjaman' , 'detail_pembayaran.tanggal_pembayaran' )
-> get ();
2024-04-04 08:24:39 +00:00
} else {
2024-04-05 02:22:43 +00:00
$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' ) . '%' )
-> where ( 'detail_pembayaran.deleted_at' , null )
-> groupBy ( 'hapus_buku.nomor_pinjaman' , 'detail_pembayaran.tanggal_pembayaran' )
-> get ();
2024-04-04 08:24:39 +00:00
}
2024-04-05 02:22:43 +00:00
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 ) {
if ( isset ( $row -> branch -> kode ) && isset ( $row -> branch -> name )) {
return $row -> branch -> kode . ' - ' . $row -> branch -> name ;
} else {
return '-' ;
}
}) -> editColumn ( 'debitur' , function ( $row ) {
if ( isset ( $row -> debitur -> kode ) && isset ( $row -> debitur -> name )) {
return $row -> debitur -> kode . ' - ' . $row -> debitur -> name ;
} else {
return '-' ;
}
}) -> editColumn ( 'alamat' , function ( $row ) {
if ( isset ( $row -> debitur -> address )) {
return $row -> debitur -> address ;
} else {
return '-' ;
}
}) -> editColumn ( 'facility_type' , function ( $row ) {
if ( isset ( $row -> facility_type -> kode ) && isset ( $row -> facility_type -> name )) {
return $row -> facility_type -> kode . ' - ' . $row -> facility_type -> name ;
} else {
return '-' ;
}
}) -> editColumn ( 'loan_type' , function ( $row ) {
if ( isset ( $row -> loan_type -> kode ) && isset ( $row -> loan_type -> name )) {
return $row -> loan_type -> kode . ' - ' . $row -> loan_type -> name ;
} else {
return '-' ;
}
}) -> editColumn ( 'nilai_plafond_awal' , function ( $row ) {
return Number :: currency ( $row -> nilai_plafond_awal ? ? 0 , 'IDR' , 'id_ID' );
}) -> editColumn ( 'baki_debet' , function ( $row ) {
return Number :: currency ( $row -> baki_debet ? ? 0 , 'IDR' , 'id_ID' );
}) -> editColumn ( 'jumlah_bunga' , function ( $row ) {
return Number :: currency ( $row -> jumlah_bunga ? ? 0 , 'IDR' , 'id_ID' );
}) -> editColumn ( 'tagihan_lain' , function ( $row ) {
return Number :: currency ( $row -> tagihan_lain ? ? 0 , 'IDR' , 'id_ID' );
}) -> editColumn ( 'bunga_intra' , function ( $row ) {
return Number :: currency ( $row -> bunga_intra ? ? 0 , '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 ? ? 0 , 'IDR' , 'id_ID' );
}) -> editColumn ( 'total_kewajiban' , function ( $row ) {
return Number :: currency ( $row -> total_kewajiban ? ? 0 , 'IDR' , 'id_ID' );
}) -> editColumn ( 'total_all_kewajiban' , function ( $row ) {
return Number :: currency ( $row -> total_all_kewajiban ? ? 0 , '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 ();
} else if ( request () -> get ( 'jenis_laporan' ) == 'A2' ) {
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' , 'detail_jaminan.guarantee_type_id' , 'detail_jaminan.nomor_jaminan' , 'detail_jaminan.nilai_jaminan' )
-> leftJoin ( 'detail_pembayaran' , 'hapus_buku.nomor_pinjaman' , '=' , 'detail_pembayaran.nomor_pinjaman' )
-> leftJoin ( 'detail_jaminan' , 'hapus_buku.nomor_pinjaman' , '=' , 'detail_jaminan.nomor_pinjaman' )
-> whereMonth ( 'tanggal_hapus_buku' , '<=' , request () -> get ( 'bulan' ))
-> whereYear ( 'tanggal_hapus_buku' , '<=' , request () -> get ( 'tahun' ))
-> whereRelation ( 'debitur' , 'name' , 'like' , '%' . request () -> get ( 'debitur' ) . '%' )
-> where ( 'detail_pembayaran.deleted_at' , null )
-> groupBy ( 'hapus_buku.nomor_pinjaman' , 'detail_pembayaran.tanggal_pembayaran' )
-> get ();
2024-04-04 07:49:58 +00:00
} else {
2024-04-05 02:22:43 +00:00
$data = HapusBuku :: with ([
'branch' ,
'debitur' ,
'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' )
-> leftJoin ( 'detail_pembayaran' , 'hapus_buku.nomor_pinjaman' , '=' , 'detail_pembayaran.nomor_pinjaman' )
-> leftJoin ( 'detail_jaminan' , 'hapus_buku.nomor_pinjaman' , '=' , 'detail_jaminan.nomor_pinjaman' )
-> whereMonth ( 'tanggal_hapus_buku' , '<=' , request () -> get ( 'bulan' ))
-> whereYear ( 'tanggal_hapus_buku' , '<=' , request () -> get ( 'tahun' ))
-> where ( 'kode_cabang' , request () -> get ( 'kode_cabang' ))
-> whereRelation ( 'debitur' , 'name' , 'like' , '%' . request () -> get ( 'debitur' ) . '%' )
-> where ( 'detail_pembayaran.deleted_at' , null )
-> groupBy ( 'hapus_buku.nomor_pinjaman' , 'detail_pembayaran.tanggal_pembayaran' )
-> get ();
2024-04-04 07:49:58 +00:00
}
2024-04-05 02:22:43 +00:00
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 ) {
if ( isset ( $row -> branch -> kode ) && isset ( $row -> branch -> name )) {
return $row -> branch -> kode . ' - ' . $row -> branch -> name ;
} else {
return '-' ;
}
}) -> editColumn ( 'debitur' , function ( $row ) {
if ( isset ( $row -> debitur -> kode ) && isset ( $row -> debitur -> name )) {
return $row -> debitur -> kode . ' - ' . $row -> debitur -> name ;
} else {
return '-' ;
}
}) -> editColumn ( 'alamat' , function ( $row ) {
if ( isset ( $row -> debitur -> address )) {
return $row -> debitur -> address ;
} else {
return '-' ;
}
}) -> editColumn ( 'facility_type' , function ( $row ) {
if ( isset ( $row -> facility_type -> kode ) && isset ( $row -> facility_type -> name )) {
return $row -> facility_type -> kode . ' - ' . $row -> facility_type -> name ;
} else {
return '-' ;
}
}) -> editColumn ( 'loan_type' , function ( $row ) {
if ( isset ( $row -> loan_type -> kode ) && isset ( $row -> loan_type -> name )) {
return $row -> loan_type -> kode . ' - ' . $row -> loan_type -> name ;
} else {
return '-' ;
}
}) -> 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 ? ? 0 , 'IDR' , 'id_ID' );
}) -> editColumn ( 'baki_debet' , function ( $row ) {
return Number :: currency ( $row -> baki_debet ? ? 0 , 'IDR' , 'id_ID' );
}) -> editColumn ( 'jumlah_bunga' , function ( $row ) {
return Number :: currency ( $row -> jumlah_bunga ? ? 0 , 'IDR' , 'id_ID' );
}) -> editColumn ( 'tagihan_lain' , function ( $row ) {
return Number :: currency ( $row -> tagihan_lain ? ? 0 , 'IDR' , 'id_ID' );
}) -> editColumn ( 'bunga_intra' , function ( $row ) {
return Number :: currency ( $row -> bunga_intra ? ? 0 , '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 ? ? 0 , 'IDR' , 'id_ID' );
}) -> editColumn ( 'total_kewajiban' , function ( $row ) {
return Number :: currency ( $row -> total_kewajiban ? ? 0 , 'IDR' , 'id_ID' );
}) -> editColumn ( 'total_all_kewajiban' , function ( $row ) {
return Number :: currency ( $row -> total_all_kewajiban ? ? 0 , '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 ();
}
2024-04-04 07:49:58 +00:00
}
2024-04-05 02:22:43 +00:00
if ( $request -> jenis_laporan == 'A1' ) {
$breadcrumb = [
'title' => 'Laporan Outstanding Debitur Hapus Buku' ,
'link' => 'laporan.debitur'
];
$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' ));
} else if ( $request -> jenis_laporan == 'A2' ) {
$breadcrumb = [
'title' => 'Laporan Daftar Debitur Hapus Buku' ,
'link' => 'laporan.debitur'
];
$periode = $request -> get ( 'periode' );
$month = date ( 'm' , strtotime ( $periode ));
$year = date ( 'Y' , strtotime ( $periode ));
$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 ? ? '%' ,
'bulan' => $month ? ? Carbon :: now () -> format ( 'm' ),
'tahun' => $year ? ? Carbon :: now () -> format ( 'Y' ),
];
$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' ),
Column :: make ( 'nomor_jaminan' ) -> title ( 'Nomor Jaminan' ),
Column :: make ( 'guarantee_type' ) -> title ( 'Jenis Jaminan' ),
Column :: make ( 'nilai_jaminan' ) -> title ( 'Nilai Jaminan' ),
])
-> 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' ));
}
2024-04-04 07:49:58 +00:00
}
2024-04-04 03:26:03 +00:00
public function laporan_penagihan ( Builder $builder , Request $request )
{
if ( request () -> ajax ()) {
if ( request () -> get ( 'kode_cabang' ) == 'all' ) {
$data = HapusBuku :: with ([
'branch' ,
'debitur' ,
'facility_type' ,
'loan_type' ,
'currency' ,
2024-04-04 07:49:58 +00:00
])
-> 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' )
2024-04-04 03:26:03 +00:00
-> 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' )
2024-04-04 07:49:58 +00:00
-> whereMonth ( 'tanggal_hapus_buku' , '<=' , request () -> get ( 'bulan' ))
-> whereYear ( 'tanggal_hapus_buku' , '<=' , request () -> get ( 'tahun' ))
2024-04-04 08:24:39 +00:00
-> whereRelation ( 'debitur' , 'name' , 'like' , '%' . request () -> get ( 'debitur' ) . '%' )
2024-04-04 08:48:15 +00:00
-> where ( 'detail_penagihan.deleted_at' , null )
-> where ( 'detail_pembayaran.deleted_at' , null )
-> where ( 'detail_jaminan.deleted_at' , null )
2024-04-04 09:07:02 +00:00
-> groupBy ( 'hapus_buku.nomor_pinjaman' , 'detail_penagihan.pic_penagihan' , 'detail_penagihan.tanggal_penagihan' )
2024-04-04 03:26:03 +00:00
-> get ();
} else {
$data = HapusBuku :: with ([
'branch' ,
'debitur' ,
'facility_type' ,
'loan_type' ,
'currency' ,
2024-04-04 07:49:58 +00:00
])
-> 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' )
-> whereMonth ( 'tanggal_hapus_buku' , '<=' , request () -> get ( 'bulan' ))
-> whereYear ( 'tanggal_hapus_buku' , '<=' , request () -> get ( 'tahun' ))
2024-04-04 03:26:03 +00:00
-> where ( 'kode_cabang' , request () -> get ( 'kode_cabang' ))
2024-04-04 08:24:39 +00:00
-> whereRelation ( 'debitur' , 'name' , 'like' , '%' . request () -> get ( 'debitur' ) . '%' )
2024-04-04 08:48:15 +00:00
-> where ( 'detail_penagihan.deleted_at' , null )
-> where ( 'detail_pembayaran.deleted_at' , null )
-> where ( 'detail_jaminan.deleted_at' , null )
2024-04-04 09:07:02 +00:00
-> groupBy ( 'hapus_buku.nomor_pinjaman' , 'detail_penagihan.pic_penagihan' , 'detail_penagihan.tanggal_penagihan' )
2024-04-04 03:26:03 +00:00
-> get ();
}
2024-04-04 08:00:04 +00:00
//echo json_encode($data);exit;
2024-04-04 03:26:03 +00:00
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 ) {
2024-04-04 08:48:15 +00:00
if ( isset ( $row -> branch -> kode ) && isset ( $row -> branch -> name )) {
2024-04-04 08:13:47 +00:00
return $row -> branch -> kode . ' - ' . $row -> branch -> name ;
2024-04-04 08:48:15 +00:00
} else {
2024-04-04 08:13:47 +00:00
return '-' ;
}
2024-04-04 03:26:03 +00:00
}) -> editColumn ( 'debitur' , function ( $row ) {
2024-04-04 08:13:47 +00:00
if ( isset ( $row -> debitur -> kode ) && isset ( $row -> debitur -> name )) {
return $row -> debitur -> kode . ' - ' . $row -> debitur -> name ;
} else {
return '-' ;
}
2024-04-04 03:26:03 +00:00
}) -> editColumn ( 'alamat' , function ( $row ) {
2024-04-04 08:13:47 +00:00
if ( isset ( $row -> debitur -> address )) {
return $row -> debitur -> address ;
} else {
return '-' ;
}
2024-04-04 03:26:03 +00:00
}) -> editColumn ( 'facility_type' , function ( $row ) {
2024-04-04 08:13:47 +00:00
if ( isset ( $row -> facility_type -> kode ) && isset ( $row -> facility_type -> name )) {
return $row -> facility_type -> kode . ' - ' . $row -> facility_type -> name ;
} else {
return '-' ;
}
2024-04-04 03:26:03 +00:00
}) -> editColumn ( 'loan_type' , function ( $row ) {
2024-04-04 08:48:15 +00:00
if ( isset ( $row -> loan_type -> kode ) && isset ( $row -> loan_type -> name )) {
2024-04-04 08:13:47 +00:00
return $row -> loan_type -> kode . ' - ' . $row -> loan_type -> name ;
} else {
return '-' ;
}
2024-04-04 03:26:03 +00:00
}) -> editColumn ( 'guarantee_type' , function ( $row ) {
2024-04-04 07:49:58 +00:00
$guarantee = GuaranteeType :: where ( 'id' , $row -> guarantee_type_id ) -> first ();
if ( isset ( $guarantee -> id )) {
2024-04-04 03:26:03 +00:00
return $guarantee -> kode . ' - ' . $guarantee -> name ;
2024-04-04 07:49:58 +00:00
} else {
2024-04-04 03:26:03 +00:00
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 ( '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' );
}) -> addIndexColumn () -> toJson ();
}
$breadcrumb = [
'title' => 'Laporan Catatan Penagihan Debitur Hapus Buku dan AYDA' ,
'link' => 'laporan.penagihan'
];
$start_date = request () -> get ( 'periode' );
$month = date ( 'm' , strtotime ( $start_date ));
$year = date ( 'Y' , strtotime ( $start_date ));
$req = [
'jenis_laporan' => $request -> jenis_laporan ,
'kode_cabang' => request () -> get ( 'kode_cabang' ),
'debitur' => $request -> debitur ? ? '%' ,
'bulan' => $month ,
'tahun' => $year
];
$dataTable = $builder -> columns ([
Column :: make ( 'DT_RowIndex' ) -> title ( 'No' ) -> orderable ( false ) -> searchable ( false ),
Column :: make ( 'nomor_pinjaman' ) -> title ( 'Nomor Pinjaman' ),
Column :: make ( 'debitur' ) -> title ( 'Debitur' ),
Column :: make ( 'alamat' ) -> title ( 'Alamat' ),
Column :: make ( 'branch' ) -> title ( 'Cabang' ),
Column :: make ( 'facility_type' ) -> title ( 'Jenis Fasilitas' ),
Column :: make ( 'nomor_fasilitas' ) -> title ( 'Nomor Fasilitas' ),
Column :: make ( 'loan_type' ) -> title ( 'Jenis Pinjaman' ),
Column :: make ( 'currency.kode' ) -> title ( 'Mata Uang' ),
Column :: make ( 'baki_debet' ) -> title ( 'Baki Debet' ),
Column :: make ( 'jumlah_bunga' ) -> title ( 'Jumlah Bunga' ),
Column :: make ( 'jumlah_kewajiban_lain' ) -> title ( 'Jumlah Kewajiban Lain' ),
Column :: make ( 'total_kewajiban' ) -> title ( 'Total Kewajiban' ),
Column :: make ( 'tanggal_pembayaran' ) -> title ( 'Tanggal Bayar' ),
Column :: make ( 'nominal' ) -> title ( 'Nominal Bayar' ),
Column :: make ( 'nomor_jaminan' ) -> title ( 'Nomor Jaminan' ),
Column :: make ( 'guarantee_type' ) -> title ( 'Jenis Jaminan' ),
Column :: make ( 'nilai_jaminan' ) -> title ( 'Nilai Jaminan' ),
Column :: make ( 'tanggal_penagihan' ) -> title ( 'Tanggal Penagihan' ),
Column :: make ( 'pic_penagihan' ) -> title ( 'PIC Penagihan' ),
Column :: make ( 'tindakan' ) -> title ( 'Tindakan' ),
Column :: make ( 'informasi_lku' ) -> title ( 'Informasi IKU' ),
Column :: make ( 'proses_hukum' ) -> title ( 'Proses Hukum' ),
Column :: make ( 'komitmen_debitur' ) -> title ( 'Komitmen Debitur' )
])
-> 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_penagihan' , compact ( 'dataTable' , 'breadcrumb' ));
}
2024-04-02 05:02:42 +00:00
public function laporan_subrogasi ( Builder $builder , Request $request )
2024-04-01 09:20:58 +00:00
{
2024-04-03 03:17:33 +00:00
if ( request () -> ajax ()) {
if ( request () -> get ( 'jenis_laporan' ) == 'C1' ) {
2024-04-02 05:02:42 +00:00
$klaimJamkrindo = KlaimJamkrindo :: whereBetween ( 'tanggal_rtgs_masuk' , [
request () -> get ( 'start_date' ),
request () -> get ( 'end_date' )
]) -> get ();
return DataTables :: of ( $klaimJamkrindo ) -> editColumn ( 'tanggal_rtgs_masuk' , function ( $row ) {
return $row -> updated_at -> locale ( 'id' ) -> translatedFormat ( 'd F Y' );
}) -> editColumn ( 'is_detail_debitur' , function ( $row ) {
$status = $row -> is_detail_debitur ? '<span class="badge badge-light-success">Ada</span>' : '<span class="badge badge-light-danger">Tidak Ada</span>' ;
return $status ;
}) -> rawColumns ([ 'is_detail_debitur' ]) -> addIndexColumn () -> toJson ();
2024-04-03 03:17:33 +00:00
} else if ( request () -> get ( 'jenis_laporan' ) == 'C2' ) {
if ( request () -> get ( 'kode_cabang' ) == 'all' ) {
$data = DetailSubrogasiJamkrindo :: with ([
'subrogasi_jamkrindo' ,
'subrogasi_jamkrindo.branch' ,
'subrogasi_jamkrindo.debitur'
])
-> selectRaw ( 'nomor_pinjaman, SUM(pembayaran_debitur) AS pembayaran_debitur, SUM(subrogasi_jamkrindo) AS nilai_subrogasi_jamkrindo, SUM(pendapatan_bank) AS pendapatan_bank' )
-> whereMonth ( 'tanggal_pembayaran' , request () -> get ( 'bulan' ))
-> whereYear ( 'tanggal_pembayaran' , request () -> get ( 'tahun' ))
-> groupBy ( 'nomor_pinjaman' )
-> get ();
} else {
2024-04-03 04:34:53 +00:00
$data = DetailSubrogasiJamkrindo :: query ()
-> with ([
'subrogasi_jamkrindo' ,
'subrogasi_jamkrindo.branch' ,
'subrogasi_jamkrindo.debitur'
])
2024-04-03 03:17:33 +00:00
-> selectRaw ( 'nomor_pinjaman, SUM(pembayaran_debitur) AS pembayaran_debitur, SUM(subrogasi_jamkrindo) AS nilai_subrogasi_jamkrindo , SUM(pendapatan_bank) AS pendapatan_bank' )
-> whereRelation ( 'subrogasi_jamkrindo' , 'kode_cabang' , request () -> get ( 'kode_cabang' ))
-> whereMonth ( 'tanggal_pembayaran' , request () -> get ( 'bulan' ))
-> whereYear ( 'tanggal_pembayaran' , request () -> get ( 'tahun' ))
-> groupBy ( 'nomor_pinjaman' )
-> get ();
}
return DataTables :: of ( $data ) -> editColumn ( 'branch' , function ( $row ) {
$data = json_decode ( $row );
2024-04-05 07:52:08 +00:00
if ( isset ( $data -> subrogasi_jamkrindo -> branch -> id )) {
return $data -> subrogasi_jamkrindo -> branch -> kode . ' - ' . $data -> subrogasi_jamkrindo -> branch -> name ;
} else {
return " - " ;
}
2024-04-03 03:17:33 +00:00
}) -> editColumn ( 'debitur' , function ( $row ) {
$data = json_decode ( $row );
2024-04-05 07:54:49 +00:00
if ( isset ( $data -> subrogasi_jamkrindo -> debitur -> id )) {
return $data -> subrogasi_jamkrindo -> debitur -> kode . ' - ' . $data -> subrogasi_jamkrindo -> debitur -> name ;
} else {
return " - " ;
}
2024-04-03 04:34:53 +00:00
}) -> editColumn ( 'pembayaran_debitur' , function ( $row ) {
2024-04-03 03:17:33 +00:00
return Number :: currency ( $row -> pembayaran_debitur , 'IDR' , 'id_ID' );
2024-04-03 04:34:53 +00:00
}) -> editColumn ( 'nilai_subrogasi_jamkrindo' , function ( $row ) {
2024-04-03 03:17:33 +00:00
return Number :: currency ( $row -> nilai_subrogasi_jamkrindo , 'IDR' , 'id_ID' );
2024-04-03 04:34:53 +00:00
}) -> editColumn ( 'pendapatan_bank' , function ( $row ) {
2024-04-03 03:17:33 +00:00
return Number :: currency ( $row -> pendapatan_bank , 'IDR' , 'id_ID' );
}) -> rawColumns ([ 'action' ]) -> addIndexColumn () -> toJson ();
2024-04-03 04:34:53 +00:00
} else if ( request () -> get ( 'jenis_laporan' ) == 'C3' ) {
if ( request () -> get ( 'kode_cabang' ) == 'all' ) {
$data = SubrogasiJamkrindo :: with ([
'branch' ,
'debitur'
])
-> where ( 'tanggal_pengajuan_klaim' , '<=' , request () -> get ( 'start_date' ))
-> groupBy ( 'kode_cabang' , 'nomor_pinjaman' )
-> get ();
} else {
$data = SubrogasiJamkrindo :: with ([
'branch' ,
'debitur'
])
-> where ( 'kode_cabang' , request () -> get ( 'kode_cabang' ))
-> where ( 'tanggal_pengajuan_klaim' , '<=' , request () -> get ( 'start_date' ))
-> groupBy ( 'kode_cabang' , 'nomor_pinjaman' )
-> get ();
}
return DataTables :: of ( $data ) -> editColumn ( 'branch' , function ( $row ) {
$data = json_decode ( $row );
return $data -> branch -> kode . ' - ' . $data -> branch -> name ;
}) -> editColumn ( 'debitur' , function ( $row ) {
$data = json_decode ( $row );
return $data -> debitur -> kode . ' - ' . $data -> debitur -> name ;
}) -> editColumn ( 'tanggal_pengajuan_klaim' , function ( $row ) {
$date = Carbon :: create ( $row -> tanggal_pengajuan_klaim );
return $date -> locale ( 'id' ) -> translatedFormat ( 'd F Y' );
}) -> editColumn ( 'is_lunas_subrogasi' , function ( $row ) {
$status = $row -> is_lunas_subrogasi ? '<span class="badge badge-light-success">Lunas</span>' : '<span class="badge badge-light-danger">Belum Lunas</span>' ;
return $status ;
}) -> rawColumns ([ 'is_lunas_subrogasi' ]) -> addIndexColumn () -> toJson ();
2024-04-02 05:02:42 +00:00
}
2024-04-03 03:17:33 +00:00
}
if ( $request -> jenis_laporan == 'C1' ) {
$breadcrumb = [
'title' => 'Laporan Pencatatan Klaim Jamkrindo' ,
2024-04-03 04:34:53 +00:00
'link' => 'laporan.subrogasi'
2024-04-03 03:17:33 +00:00
];
2023-12-19 11:00:24 +00:00
2024-04-02 05:02:42 +00:00
$dataTable = $builder -> columns ([
Column :: make ( 'DT_RowIndex' ) -> title ( 'No' ) -> orderable ( false ) -> searchable ( false ),
Column :: make ( 'tanggal_rtgs_masuk' ) -> title ( 'Tanggal RTGS Masuk' ),
Column :: make ( 'jumlah_debitur_surat' ) -> title ( 'Jml Debitur Surat' ),
Column :: make ( 'jumlah_debitur_excel' ) -> title ( 'Jml Debitur Excel' ),
Column :: make ( 'dana_hasil_klaim' ) -> title ( 'Dana Hasil Klaim' ),
Column :: make ( 'nilai_penyelesaian' ) -> title ( 'Nilai Penyelesaian' ),
Column :: make ( 'jumlah_debitur_penyelesaian' ) -> title ( 'Jml Debitur Penyelesaian' ),
Column :: make ( 'sisa_dana_ksl' ) -> title ( 'Sisa Dana KSL' ),
Column :: make ( 'jumlah_debitur_sisa_ksl' ) -> title ( 'Jml Debitur Sisa KSL' ),
Column :: make ( 'is_detail_debitur' ) -> title ( 'Detail Debitur' )
])
-> parameters ([
'scrollX' => false ,
'drawCallback' => 'function() { KTMenu.createInstances(); }' ,
])
-> addTableClass ( 'align-middle table-row-dashed fs-6 gy-5' )
-> setTableId ( 'laporan-table' )
2024-04-03 04:34:53 +00:00
-> minifiedAjax ( request () -> url (), null , [
'jenis_laporan' => $request -> jenis_laporan ,
'start_date' => $request -> start_date ,
'end_date' => $request -> end_date
])
2024-04-02 05:02:42 +00:00
-> stateSave ( false )
-> responsive ()
-> autoWidth ( true )
-> orderBy ( 1 );
2024-04-02 08:40:50 +00:00
} else if ( $request -> jenis_laporan == 'C2' ) {
2024-04-03 03:17:33 +00:00
$breadcrumb = [
'title' => 'Rincian Subrogasi per Posisi Akhir Bulan' ,
2024-04-03 04:34:53 +00:00
'link' => 'laporan.subrogasi'
2024-04-03 03:17:33 +00:00
];
2024-04-02 08:40:50 +00:00
2024-04-03 03:17:33 +00:00
$start_date = request () -> get ( 'periode' );
2024-04-02 08:40:50 +00:00
$month = date ( 'm' , strtotime ( $start_date ));
$year = date ( 'Y' , strtotime ( $start_date ));
2024-04-03 04:34:53 +00:00
$req = [
'jenis_laporan' => $request -> jenis_laporan ,
'kode_cabang' => request () -> get ( 'kode_cabang' ),
'bulan' => $month ,
'tahun' => $year
];
2024-04-02 08:40:50 +00:00
$dataTable = $builder -> columns ([
Column :: make ( 'DT_RowIndex' ) -> title ( 'No' ) -> orderable ( false ) -> searchable ( false ),
2024-04-03 03:17:33 +00:00
Column :: make ( 'debitur' ) -> title ( 'Debitur' ),
2024-04-02 08:40:50 +00:00
Column :: make ( 'branch' ) -> title ( 'Cabang' ),
2024-04-03 03:17:33 +00:00
Column :: make ( 'nomor_pinjaman' ) -> title ( 'Nomor Pinjaman' ),
Column :: make ( 'subrogasi_jamkrindo.nomor_rekening' ) -> title ( 'Norek Tabungan' ),
Column :: make ( 'pembayaran_debitur' ) -> title ( 'Pembayaran Debitur' ),
Column :: make ( 'nilai_subrogasi_jamkrindo' ) -> title ( 'Subrogasi Jamkrindo' ),
Column :: make ( 'pendapatan_bank' ) -> title ( 'Pendapatan Bank' ),
Column :: make ( 'subrogasi_jamkrindo.keterangan' ) -> title ( 'Keterangan Subrogasi' )
2024-04-02 08:40:50 +00:00
])
-> 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 )
2024-04-03 03:17:33 +00:00
-> orderBy ( 0 );
2024-04-03 04:34:53 +00:00
} else if ( $request -> jenis_laporan == 'C3' ) {
$breadcrumb = [
'title' => 'Rekapitulasi Pencatatan Subrogasi KUR Jamkrindo' ,
'link' => 'laporan.subrogasi'
];
$req = [
'jenis_laporan' => $request -> jenis_laporan ,
'kode_cabang' => request () -> get ( 'kode_cabang' ),
'start_date' => $request -> start_date ,
];
2024-04-04 03:26:03 +00:00
2024-04-03 04:34:53 +00:00
$dataTable = $builder -> columns ([
Column :: make ( 'DT_RowIndex' ) -> title ( 'No' ) -> orderable ( false ) -> searchable ( false ),
Column :: make ( 'nomor_pinjaman' ) -> title ( 'Nomor Pinjaman' ),
Column :: make ( 'nomor_rekening' ) -> title ( 'Norek Tabungan' ),
Column :: make ( 'debitur' ) -> title ( 'Debitur' ),
Column :: make ( 'branch' ) -> title ( 'Cabang' ),
Column :: make ( 'plafond' ) -> title ( 'Nilai Plafond' ),
Column :: make ( 'tenor' ) -> title ( 'Tenor' ),
Column :: make ( 'tanggal_pengajuan_klaim' ) -> title ( 'Tgl Pengajuan Klaim' ),
Column :: make ( 'piutang_subrogasi' ) -> title ( 'Piutang Subrogasi' ),
Column :: make ( 'total_bayar_subrogasi' ) -> title ( 'Tot Bayar Subrogasi' ),
Column :: make ( 'sisa_piutang_subrogasi' ) -> title ( 'Sisa Piutang Subrogasi' ),
Column :: make ( 'is_lunas_subrogasi' ) -> title ( 'Subrogasi Lunas' )
])
-> 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 );
2024-04-02 05:02:42 +00:00
}
2024-04-03 03:17:33 +00:00
2024-04-03 04:34:53 +00:00
2024-04-03 03:17:33 +00:00
return view ( 'writeoff::report.laporan_klaim_jamkrindo' , compact ( 'dataTable' , 'breadcrumb' ));
2023-12-19 11:00:24 +00:00
}
}