diff --git a/app/Http/Controllers/AdminPageController.php b/app/Http/Controllers/AdminPageController.php index 97bbb6f..77fc20d 100644 --- a/app/Http/Controllers/AdminPageController.php +++ b/app/Http/Controllers/AdminPageController.php @@ -16,6 +16,7 @@ use App\Tunai; use App\AddTunai; use App\TuntutBaki; use App\Advansur; +use App\AkruNet; use App\TransaksiKeuntungan; use App\Bajet; use App\BajetTahunan; @@ -3208,4 +3209,18 @@ class AdminPageController extends Controller } + + public function getLaporanAkruBulan(Request $request){ + + $array_akru = []; + $cawangan = Cawangan::on('mysql7')->get(); + + foreach($cawangan as $caw) + { + $akrunet = AkruNet::on($caw['mysql'])->where('tahun',$request->year)->get()->toArray(); + array_push($array_akru,['cawangan' => $caw['details_caw'],'akru' => $akrunet]); + } + + return response()->json($array_akru,200); + } } diff --git a/app/Http/Controllers/LaporanController.php b/app/Http/Controllers/LaporanController.php index 781583f..dd2c21b 100644 --- a/app/Http/Controllers/LaporanController.php +++ b/app/Http/Controllers/LaporanController.php @@ -20,10 +20,12 @@ use App\HapusKira; use App\GlCode; use App\GlDetail; use App\Audit; +use App\AkruNet; use Carbon\Carbon; +use App\imbangdugalama; use DateTime; -use DB; +use Illuminate\Support\Facades\DB; class LaporanController extends Controller { @@ -1227,4 +1229,147 @@ class LaporanController extends Controller return response()->json($atarray); } + public function SemakanKeuntunganLejer($kodcaw,Request $request){ + $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$request->kodcaw)->first(); + $current = Carbon::now(); + $current = new Carbon(); + + /* Start Keuntungan Sebenar Calculation */ + $get_norujukan = Gadai::on($cawangan['mysql']) + ->selectRaw("norujukan,CASE WHEN (YEAR(t_gadai) = YEAR(t_update) and MONTH(t_gadai) = MONTH(t_update)) THEN '1' ELSE '0' END AS result") + ->whereNotNull('hargajualan')->having('result','=',1)->whereDate('t_gadai','>=',$request->mula)->whereDate('t_gadai','<=',$request->hingga)->where('sttebus','<>','')->pluck('norujukan'); + + $sum_keun = Transaction::on('mysql7') + ->selectRaw("trans.norujukan,SUM(CASE WHEN (transaction.trans_type) = 'T' THEN (trans.keuntungan_rebet) ELSE 0 END) AS sum_keun,SUM(CASE WHEN (transaction.trans_type) = 'A' THEN (trans.bayaran_keuntungan) ELSE 0 END) AS sum_bayaran") + ->leftJoin('transaksi_keuntungan as trans', function($join) + { + $join->on('transaction.norujukan', '=', 'trans.norujukan'); + $join->on('transaction.created_at', '=', 'trans.tarikh_bayaran'); + }) + ->whereIn('trans.norujukan',$get_norujukan)->get()->toArray(); + + $sum_keuntungan = ($sum_keun) ? $sum_keun[0]['sum_keun'] : 0; + $sum_bayaran = ($sum_keun) ? $sum_keun[0]['sum_bayaran'] : 0; + + $total_keuntungan_sebenar = $sum_keuntungan + $sum_bayaran; + /* End Keuntungan Sebenar Calculation */ + + /* Start Keuntungan Semasa Calculation */ + $get_norujukan = Gadai::on($cawangan['mysql']) + ->whereNotNull('hargajualan')->pluck('norujukan'); + + $summation = Transaction::on('mysql7') + ->selectRaw("SUM(CASE WHEN (transaction.trans_type) = 'T' THEN (trans.keuntungan_rebet) ELSE 0 END) AS sum_keun,SUM(CASE WHEN (transaction.trans_type) = 'A' THEN (trans.bayaran_keuntungan) ELSE 0 END) AS sum_bayaran") + ->leftJoin('transaksi_keuntungan as trans', function($join) + { + $join->on('transaction.norujukan', '=', 'trans.norujukan'); + $join->on('transaction.created_at', '=', 'trans.tarikh_bayaran'); + }) + ->whereIn('trans.norujukan',$get_norujukan) + ->whereDate('trans.tarikh_bayaran' ,'>=', $request->mula) + ->whereDate('trans.tarikh_bayaran' ,'<=', $request->hingga) + ->whereYear('tarikh_bayaran','=',$current->year) + ->where('trans.kodcaw',$request->kodcaw) + ->get()->toArray(); + + $upahlelong = Lelong::on($cawangan['mysql']) + ->where([['t_jual','>=',$request->mula],['t_jual','<=',$request->hingga],['t_jual','>','2022-07-24']]) + ->whereYear('t_jual','=',$current->year) + ->sum('bakiupah'); + + $sum_keuntungan = ($summation) ? $summation[0]['sum_keun'] : 0; + $sum_bayaran = ($summation) ? $summation[0]['sum_bayaran'] : 0; + + $total_keuntungan_semasa = ($sum_keuntungan + $sum_bayaran + $upahlelong) - $total_keuntungan_sebenar; + /* End Keuntungan Semasa Calculation */ + + $array_keuntungan = ['keuntungan_sebenar' => $total_keuntungan_sebenar, 'keuntungan_semasa' => $total_keuntungan_semasa]; + + return response($array_keuntungan); + } + + public function SemakanPendapatanAkrual($kodcaw,Request $request){ + $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); + $tarikh_carbon = new Carbon($request->mula); + + $akrual_net = AkruNet::on($cawangan['mysql']) + ->where('bulan', (int)$tarikh_carbon->month) + ->get()->toArray(); + + $jumlah = ($akrual_net) ? $akrual_net[0]['jumlah'] : 0; + + return response($jumlah); + } + + public function GenerateDailyAkrual(Request $request){ + + $current = Carbon::now(); + $current = new Carbon(); + $month_generate = $current->format('m'); + $year_generate = $current->format('Y'); + $harini = $current->toDateString(); + + $haripertama = $current->firstOfMonth(); + $haripertama_extension = $haripertama->toDateString(); + + $month_sebelum = $current->subMonth()->format('m'); + + $cawangan = Cawangan::on('mysql7')->where('zone',$request->zone)->get(); + + $tebuscontroller = new TebusController(); + + foreach($cawangan as $index=>$caw){ + DB::connection($caw['mysql'])->beginTransaction(); + + if($year_generate == 2022 && (int)$month_sebelum > 4){ + $audit_backdate = $tebuscontroller->StokAuditGenerateTerakru($month_sebelum,$caw,$year_generate); + } + + $audit_now = Gadai::on($caw['mysql']) + ->where([['tagpalsu','=',0],['t_gadai','<=',$harini],['sttebus','=','']]) + ->orWhere([['tagpalsu','=',0],['t_update','>',$harini],['sttebus','!=',''],['t_gadai','<=',$harini]]); + + $totaltunggakan_now = $audit_now->sum('tunggakan'); + $totaltunggakan_past = $audit_backdate->sum('upahblmbyar'); + + $request_generate = new \Illuminate\Http\Request([ + 'mula' => $haripertama_extension, + 'hingga' => $harini, + 'kodcaw' => $caw['kodcaw'], + ]); + + $keuntungan = $this->SemakanKeuntunganLejer($request->kodcaw,$request_generate); + + $data_keuntungan = $keuntungan->getContent(); + $data = json_decode($data_keuntungan, true); + + $calculation = $totaltunggakan_past - $data['keuntungan_semasa']; + $accrual_net = $totaltunggakan_now - $calculation; + + $available_akru = AkruNet::on($caw['mysql']) + ->where('bulan',(int)$month_generate) + ->first(); + + try{ + if($available_akru){ + if($available_akru['jumlah'] !== $accrual_net){ + AkruNet::on($caw['mysql'])->where('bulan','=',$current->month) + ->update(['jumlah' => $accrual_net]); + } + }else{ + $akrunet = new AkruNet(); + $akrunet->setConnection($caw['mysql']); + $akrunet->tahun = $year_generate; + $akrunet->bulan = $month_generate; + $akrunet->jumlah = $accrual_net; + $akrunet->save(); + } + DB::connection($caw['mysql'])->commit(); + }catch (\Throwable $e){ + return response($e); + } + } + + return response('succesfully generated!'); + } } diff --git a/routes/web.php b/routes/web.php index 7968682..8fda306 100644 --- a/routes/web.php +++ b/routes/web.php @@ -506,6 +506,9 @@ $router->group(['prefix'=>'api'], function () use ($router){ $router->get('UntungRugiCalculation/{kodcaw}',['uses'=>'TebusController@untungrugicalculation']); $router->get('UntungRugiCalculationLejer/{kodcaw}',['uses'=>'TebusController@untungrugicalculationLejer']); + /* Pembaharuan Akrual */ + $router->get('Lejer/Keuntungan/{kodcaw}',['uses'=>'LaporanController@SemakanKeuntunganLejer']); + $router->get('Lejer/PendapatanAkrual/{kodcaw}',['uses'=>'LaporanController@SemakanPendapatanAkrual']); //END IMBANG DUGA & LEJER AM// @@ -735,6 +738,8 @@ $router->group(['prefix'=>'admin'], function () use ($router){ $router->put('tetapan/listbarcode/update',['uses'=>'AdminPageController@ListBarcodeScannedOperasi_Update']); $router->get('laporanllcaw/gadai',['uses'=>'AdminPageController@getLaporanGadaiAllCaw']); + $router->get('laporan/akrubulan',['uses'=>'AdminPageController@getLaporanAkruBulan']); + $router->get('laporan/akrual/generatedaily',['uses'=>'LaporanController@GenerateDailyAkrual']); }); $router->group(['prefix'=>'lelong'], function () use ($router){