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', ['uses' => 'GadaianController@getSummaryLaporanGadaiTebusMasa']);
|
||||||
$router->get('gadaitebusmasa/{kod_cawangan}', ['uses' => 'GadaianController@getLaporanGadaiTebusMasaCawangan']);
|
$router->get('gadaitebusmasa/{kod_cawangan}', ['uses' => 'GadaianController@getLaporanGadaiTebusMasaCawangan']);
|
||||||
|
|
||||||
|
$router->get('saringan/gadaian', ['uses' => 'SaringanGadaianController@getLaporanGadai']);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user