2023-12-19 11:00:24 +00:00
< ? php
namespace Modules\Writeoff\Http\Controllers ;
use App\Http\Controllers\Controller ;
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-02 08:40:50 +00:00
use Modules\Writeoff\Entities\Branch ;
use Modules\Writeoff\Entities\DetailSubrogasiJamkrindo ;
2024-04-02 05:02:42 +00:00
use Modules\Writeoff\Entities\KlaimJamkrindo ;
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' );
}
public function penagihan ()
{
return view ( 'writeoff::report.penagihan' );
}
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-02 05:02:42 +00:00
public function laporan_subrogasi ( Builder $builder , Request $request )
2024-04-01 09:20:58 +00:00
{
2024-04-02 05:02:42 +00:00
if ( $request -> jenis_laporan == 'C1' ) {
2023-12-19 11:00:24 +00:00
2024-04-02 05:02:42 +00:00
if ( request () -> ajax ()) {
$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 ();
}
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' )
-> minifiedAjax ( request () -> url (), null , $request -> all ())
-> stateSave ( false )
-> responsive ()
-> autoWidth ( true )
-> orderBy ( 1 );
return view ( 'writeoff::report.laporan_klaim_jamkrindo' , compact ( 'dataTable' ));
2024-04-02 08:40:50 +00:00
} else if ( $request -> jenis_laporan == 'C2' ) {
$start_date = request () -> get ( 'start_date' );
$month = date ( 'm' , strtotime ( $start_date ));
$year = date ( 'Y' , strtotime ( $start_date ));
if ( request () -> ajax ()) {
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 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 {
$data = DetailSubrogasiJamkrindo :: with ([
'subrogasi_jamkrindo' ,
'subrogasi_jamkrindo.branch' ,
'subrogasi_jamkrindo.debitur'
])
-> selectRaw ( 'nomor_pinjaman, SUM(pembayaran_debitur) AS pembayaran_debitur, SUM(subrogasi_jamkrindo) AS 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 ();
}
echo json_encode ( $data ); exit ;
return DataTables :: of ( $data ) -> editColumn ( 'branch' , function ( $q ) {
return $q -> subrogasi_jamkrindo -> branch -> name ;
}) -> addIndexColumn () -> toJson ();
}
$start_date = request () -> get ( 'start_date' );
$month = date ( 'm' , strtotime ( $start_date ));
$year = date ( 'Y' , strtotime ( $start_date ));
$req = [ 'kode_cabang' => request () -> get ( 'kode_cabang' ), 'bulan' => $month , 'tahun' => $year ];
$dataTable = $builder -> columns ([
Column :: make ( 'DT_RowIndex' ) -> title ( 'No' ) -> orderable ( false ) -> searchable ( false ),
Column :: make ( 'branch' ) -> title ( 'Cabang' ),
])
-> 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 ( 1 );
return view ( 'writeoff::report.laporan_klaim_jamkrindo' , compact ( 'dataTable' ));
2024-04-02 05:02:42 +00:00
}
2023-12-19 11:00:24 +00:00
}
}