Writeoff/Http/Controllers/ReportController.php

253 lines
14 KiB
PHP

<?php
namespace Modules\Writeoff\Http\Controllers;
use App\Http\Controllers\Controller;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Number;
use Modules\Writeoff\Entities\Branch;
use Modules\Writeoff\Entities\DetailSubrogasiJamkrindo;
use Modules\Writeoff\Entities\KlaimJamkrindo;
use Modules\Writeoff\Entities\SubrogasiJamkrindo;
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()
{
$branches = Branch::all();
return view('writeoff::report.subrogasi', compact('branches'));
}
public function laporan_subrogasi(Builder $builder, Request $request)
{
if (request()->ajax()) {
if (request()->get('jenis_laporan') == 'C1') {
$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();
} 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 {
$data = DetailSubrogasiJamkrindo::query()
->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')
->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);
return $data->subrogasi_jamkrindo->branch->kode . ' - ' . $data->subrogasi_jamkrindo->branch->name;
})->editColumn('debitur', function ($row) {
$data = json_decode($row);
return $data->subrogasi_jamkrindo->debitur->kode . ' - ' . $data->subrogasi_jamkrindo->debitur->name;
})->editColumn('pembayaran_debitur', function ($row) {
return Number::currency($row->pembayaran_debitur, 'IDR', 'id_ID');
})->editColumn('nilai_subrogasi_jamkrindo', function ($row) {
return Number::currency($row->nilai_subrogasi_jamkrindo, 'IDR', 'id_ID');
})->editColumn('pendapatan_bank', function ($row) {
return Number::currency($row->pendapatan_bank, 'IDR', 'id_ID');
})->rawColumns(['action'])->addIndexColumn()->toJson();
} 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();
}
}
if ($request->jenis_laporan == 'C1') {
$breadcrumb = [
'title' => 'Laporan Pencatatan Klaim Jamkrindo',
'link' => 'laporan.subrogasi'
];
$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, [
'jenis_laporan' => $request->jenis_laporan,
'start_date' => $request->start_date,
'end_date' => $request->end_date
])
->stateSave(false)
->responsive()
->autoWidth(true)
->orderBy(1);
} else if ($request->jenis_laporan == 'C2') {
$breadcrumb = [
'title' => 'Rincian Subrogasi per Posisi Akhir Bulan',
'link' => 'laporan.subrogasi'
];
$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'),
'bulan' => $month,
'tahun' => $year
];
$dataTable = $builder->columns([
Column::make('DT_RowIndex')->title('No')->orderable(false)->searchable(false),
Column::make('debitur')->title('Debitur'),
Column::make('branch')->title('Cabang'),
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')
])
->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);
} 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,
];
//No Norek Pinjaman Norek Tabungan Kd Debitur Nama Debitur Kd Cabang Nama Cabang Nilai Plafond Tenor Tgl Pengajuan Klaim Piutang Subrogasi Tot Bayar Subrogasi Sisa Piutang Subrogasi Subrogasi Lunas
$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);
}
return view('writeoff::report.laporan_klaim_jamkrindo', compact('dataTable', 'breadcrumb'));
}
}