Merged in feature/saringan-gadaian-kb1 (pull request #377)
Add reporting saringan gadaian kb1
This commit is contained in:
@@ -0,0 +1,129 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Reports;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Cawangan;
|
||||
use App\Gadai;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use App\Services\Reports\GadaianService as ReportGadaianService;
|
||||
use App\Helper;
|
||||
use App\Tebus;
|
||||
use Illuminate\Support\Carbon;
|
||||
|
||||
class SaringanGadaianController extends Controller
|
||||
{
|
||||
|
||||
public function getLaporanGadai(Request $request)
|
||||
{
|
||||
$startDate = $request->startDate ?? now()->startOfMonth()->toDateString();
|
||||
$endDate = $request->endDate ?? now()->endOfMonth()->toDateString();
|
||||
|
||||
$active_dbs = Helper::getActiveCawanganDbConnection();
|
||||
|
||||
$cawangan = Cawangan::select('kodcaw', 'details_caw', 'mysql')
|
||||
->whereIn('mysql', $active_dbs)
|
||||
->get();
|
||||
|
||||
$responses = [];
|
||||
|
||||
foreach ($cawangan as $caw) {
|
||||
|
||||
$db = $caw->mysql;
|
||||
|
||||
$tgb = Tebus::on($db)
|
||||
->join('gadai as g1', 'tebus.norujukan', '=', 'g1.norujukan')
|
||||
->join('gadai as g2', function ($join) {
|
||||
$join->on('g2.nokp', '=', 'g1.nokp')
|
||||
->on('g2.t_gadai', '=', 'tebus.t_tebus')
|
||||
->whereRaw('ABS(g2.berat - g1.berat) <= 0.02')
|
||||
->whereColumn('g2.norujukan', '!=', 'g1.norujukan');
|
||||
})
|
||||
->whereBetween('tebus.t_tebus', [$startDate, $endDate])
|
||||
->groupBy('tebus.norujukan')
|
||||
->selectRaw("
|
||||
tebus.norujukan as norujukan_tebus,
|
||||
MAX(g2.norujukan) as norujukan_gadai_balik,
|
||||
MAX(g2.nokp) as nokp,
|
||||
MAX(g2.berat) as berat,
|
||||
MAX(g2.nilaimarhun) as nilaimarhun,
|
||||
MAX(g2.pinjaman) as pinjaman,
|
||||
MAX(g2.t_gadai) as t_gadai,
|
||||
MAX(g1.taglel) as taglel_lama
|
||||
")
|
||||
->get()
|
||||
->map(function ($row) {
|
||||
return [
|
||||
'norujukan_tebus' => $row->norujukan_tebus,
|
||||
'norujukan_gadai_balik' => $row->norujukan_gadai_balik,
|
||||
'nokp' => $row->nokp,
|
||||
'berat' => (float) $row->berat,
|
||||
'nilaimarhun' => (float) $row->nilaimarhun,
|
||||
'pinjaman' => (float) $row->pinjaman,
|
||||
'taglel_lama' => $row->taglel_lama,
|
||||
't_gadai' => $row->t_gadai,
|
||||
'jenis' => $row->taglel_lama == 1 ? 'TGB_LELONG' : 'TGB_BIASA',
|
||||
];
|
||||
})
|
||||
->toArray();
|
||||
|
||||
$tgb_norujukan = array_column($tgb, 'norujukan_gadai_balik');
|
||||
|
||||
|
||||
$gadai_biasa = DB::connection($db)
|
||||
->table('gadai')
|
||||
->whereBetween('t_gadai', [$startDate, $endDate])
|
||||
->whereNotIn('norujukan', $tgb_norujukan)
|
||||
->select([
|
||||
DB::raw('NULL as norujukan_tebus'),
|
||||
'norujukan as norujukan_gadai_balik',
|
||||
'nokp',
|
||||
'berat',
|
||||
'nilaimarhun',
|
||||
'pinjaman',
|
||||
DB::raw('NULL as taglel_lama'),
|
||||
't_gadai',
|
||||
])
|
||||
->get()
|
||||
->map(function ($row) {
|
||||
return [
|
||||
'norujukan_tebus' => null,
|
||||
'norujukan_gadai_balik' => $row->norujukan_gadai_balik,
|
||||
'nokp' => $row->nokp,
|
||||
'berat' => (float) $row->berat,
|
||||
'nilaimarhun' => (float) $row->nilaimarhun,
|
||||
'pinjaman' => (float) $row->pinjaman,
|
||||
'taglel_lama' => null,
|
||||
't_gadai' => $row->t_gadai,
|
||||
'jenis' => 'GADAI_BIASA',
|
||||
];
|
||||
})
|
||||
->toArray();
|
||||
|
||||
|
||||
$details = collect($tgb)
|
||||
->merge($gadai_biasa)
|
||||
->unique('norujukan_gadai_balik')
|
||||
->sortBy(['jenis', 't_gadai'])
|
||||
->values()
|
||||
->all();
|
||||
|
||||
|
||||
$responses[] = [
|
||||
'kodcaw' => $caw->kodcaw,
|
||||
'details_caw' => $caw->details_caw,
|
||||
'jumlah_surat' => count($details),
|
||||
'total_tgb_lelong' => collect($details)->where('jenis', 'TGB_LELONG')->count(),
|
||||
'total_tgb_biasa' => collect($details)->where('jenis', 'TGB_BIASA')->count(),
|
||||
'total_gadai_biasa' => collect($details)->where('jenis', 'GADAI_BIASA')->count(),
|
||||
'sum_berat' => collect($details)->sum('berat'),
|
||||
'sum_nilai_marhun' => collect($details)->sum('nilaimarhun'),
|
||||
'sum_pinjaman' => collect($details)->sum('pinjaman'),
|
||||
'details' => $details,
|
||||
];
|
||||
}
|
||||
|
||||
return response()->json($responses);
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -56,6 +56,6 @@ $router->group(['prefix' => 'api/reports'], function () use ($router) {
|
||||
$router->get('gadaitebusmasa', ['uses' => 'GadaianController@getSummaryLaporanGadaiTebusMasa']);
|
||||
$router->get('gadaitebusmasa/{kod_cawangan}', ['uses' => 'GadaianController@getLaporanGadaiTebusMasaCawangan']);
|
||||
|
||||
|
||||
$router->get('saringan/gadaian', ['uses' => 'SaringanGadaianController@getLaporanGadai']);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user