From c2c3a742a418cee616359d9478b3d93ac798a6cd Mon Sep 17 00:00:00 2001 From: Hafifie PKB Date: Sun, 3 Mar 2024 10:03:00 +0800 Subject: [PATCH] fix backup stockaudit --- .../Controllers/BackupStokAuditController.php | 93 +++++++++++++++++-- routes/web.php | 1 + 2 files changed, 87 insertions(+), 7 deletions(-) diff --git a/app/Http/Controllers/BackupStokAuditController.php b/app/Http/Controllers/BackupStokAuditController.php index 2f72087..7ac1a3c 100644 --- a/app/Http/Controllers/BackupStokAuditController.php +++ b/app/Http/Controllers/BackupStokAuditController.php @@ -17,10 +17,11 @@ use App\StokAudit9; use App\StokAudit10; use App\StokAudit11; use App\StokAudit12; - +use App\Support\v2\Calculation as V2Calculation; use Carbon\Carbon; - +use Illuminate\Support\Facades\DB; use Illuminate\Http\Request; +use Illuminate\Database\Eloquent\ModelNotFoundException; class BackupStokAuditController extends Controller { @@ -79,12 +80,17 @@ class BackupStokAuditController extends Controller $tempoh_gadai = $beza_bulan + $extensivemonth_gadai; - $upah_semasa = $this->kiraupahTawarruqStokAudit($tempoh_gadai,$gadai['tempohbayar'],$gadai['kadarupah'],$gadai['bakipjm']); + if($gadai['tagbaru'] == 0) + $upah_semasa = $this->kiraupahTawarruqStokAudit($tempoh_gadai,$gadai['tempohbayar'],$gadai['kadarupah'],$gadai['bakipjm']); + else + $upah_semasa_v2 = $this->kiraupahTawarruqStokAuditUjrahOnePercent($tempoh_gadai,$gadai['tempohbayar'],$gadai['kadarupah'],$gadai['bakipjm'],$gadai['nilaimarhun'],$gadai['margin_semasa']); Gadai::on($cawangan_mysql['mysql'])->where('norujukan','=',$gadai['norujukan'])->update(array( 'jbg' => $tempoh_gadai, 'tempoh' => $tempoh_gadai, - 'tunggakan' => $upah_semasa + 'tunggakan' => ($gadai['tagbaru'] == 0) ? $upah_semasa : 0, + 'tunggakanujrah' => ($gadai['tagbaru'] == 1) ? ((isset($upah_semasa_v2)) ? $upah_semasa_v2['ujrah'] : 0) : 0, + 'tunggakanonepercent' => ($gadai['tagbaru'] == 1) ? ((isset($upah_semasa_v2)) ? $upah_semasa_v2['keuntungan'] : 0) : 0, )); $data_gadai = [ @@ -99,8 +105,10 @@ class BackupStokAuditController extends Controller 'bakipjm' => $gadai['bakipjm'], 'kadarupah' => $gadai['kadarupah'], 'tempohblmbyar' => $gadai['tempoh'] - $gadai['tempohbayar'], - 'upahblmbyar' => $upah_semasa, - 'lanjutan' => $gadai['lelong_tawarruq'] + 'upahblmbyar' => ($gadai['tagbaru'] == 0) ? $upah_semasa : 0, + 'lanjutan' => $gadai['lelong_tawarruq'], + 'utgonepercent' => ($gadai['tagbaru'] == 1) ? ((isset($upah_semasa_v2)) ? $upah_semasa_v2['keuntungan'] : 0) : 0, + 'ujrah' => ($gadai['tagbaru'] == 1) ? ((isset($upah_semasa_v2)) ? $upah_semasa_v2['ujrah'] : 0) : 0, ]; array_push($data,$data_gadai); @@ -380,8 +388,10 @@ class BackupStokAuditController extends Controller $totalpinjaman = $audit->sum('pinjaman'); $totalbakipjm = $audit->sum('bakipjm'); $totaltunggakan = $audit->sum('upahblmbyar'); + $totalonepercent = $audit->sum('utgonepercent'); + $totalujrah = $audit->sum('ujrah'); - $arrayrekod = ['rekod' => $rekodaudit, 'total' => $totalrekod,'totalberat' => $totalberat,'totalnilaimarhun' => $totalnilaimarhun,'totalpinjaman'=>$totalpinjaman,'totalbakipjm'=>$totalbakipjm,'totaltunggakan'=>$totaltunggakan]; + $arrayrekod = ['rekod' => $rekodaudit, 'total' => $totalrekod,'totalberat' => $totalberat,'totalnilaimarhun' => $totalnilaimarhun,'totalpinjaman'=>$totalpinjaman,'totalbakipjm'=>$totalbakipjm,'totaltunggakan'=>$totaltunggakan,'totalujrah'=>$totalujrah,'totalonepercent'=>$totalonepercent]; if(sizeof($rekodaudit) == 0){ return response()->json('failed',200); @@ -389,4 +399,73 @@ class BackupStokAuditController extends Controller return response()->json($arrayrekod,200); } } + + public function backupStokAuditProblemAkru(Request $request){ + + /* Classify all possible error */ + + $this->validate($request, [ + 'month' => 'required|numeric', + 'kodcaw' => 'required', + 'year' => 'required|numeric' + ]); + + try{ + $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$request->kodcaw)->firstOrFail(); + }catch(ModelNotFoundException $e){ + return response(['status' => 'error', 'message' => '[500]: Cawangan not found']); + }catch(\Exception $e){ + return response(['status' => 'error', 'message' => '[500]: An exception found']); + } + + $month = $request->month; + $className = "App\StokAudit{$month}"; + + if(class_exists($className)) + $stock_connection = $className::on($cawangan['mysql']); + else + return response(['status' => 'error', 'message' => '[500]: error not found class']); + + /* Algorithm to update the data */ + + try{ + DB::beginTransaction(); + + $stokaudit = $stock_connection->where('tahun',$request->year)->where('kadarupah','<',1)->get(); + $stokaudit->filter(function ($q) use ($stock_connection) { + $calculation = new V2Calculation(); + + $kiraan = $calculation->kiraanKeuntunganRebet($q['bakipjm'],$q['nilaimarhun'],$q['kadarupah'],(($q['bakipjm']/$q['nilaimarhun']) * 100)); + $stock_connection->where('norujukan',$q['norujukan'])->update(array( + 'utgonepercent' => $calculation->getRoundedMethod($kiraan['onepercent'] * $q['tempohblmbyar']), + 'ujrah' => $calculation->getRoundedMethod($kiraan['ujrah'] * $q['tempohblmbyar']), + )); + }); + + DB::commit(); + }catch(\Exception $e){ + DB::rollBack(); + return response(['status' => 'error', 'message' => '[500]: Transaction Failed - ' . $e->getMessage()]); + } + + return response(['status' => 'success', 'message' => '[200]: update all data']); + } + + public function kiraupahTawarruqStokAuditUjrahOnePercent($tempoh,$tempohbayar,$kadarupah,$bakipinjaman,$nilaimarhun,$margin_semasa){ + $onepercentservices = new V2Calculation(); + $upah = $onepercentservices->kiraanKeuntunganRebet($bakipinjaman,$nilaimarhun,$kadarupah,$margin_semasa); + $bilang_bln = $tempoh - $tempohbayar; + $keuntungan_semasa = $bilang_bln * $upah['onepercent']; + $ujrah_semasa = $bilang_bln * $upah['ujrah']; + $keuntungan_semasa = $onepercentservices->getRoundedMethod($keuntungan_semasa); + $ujrah_semasa = $onepercentservices->getRoundedMethod($ujrah_semasa); + + $pendapatan = $keuntungan_semasa + $ujrah_semasa; + $arraypendapatan = [ + 'keuntungan' => $keuntungan_semasa, + 'ujrah' => $ujrah_semasa, + 'pendapatan' => $pendapatan, + ]; + return $arraypendapatan; + } } diff --git a/routes/web.php b/routes/web.php index 0bda77a..4a62f01 100644 --- a/routes/web.php +++ b/routes/web.php @@ -602,6 +602,7 @@ $router->group(['prefix'=>'api'], function () use ($router){ $router->get('backup/stok/audit',['uses'=>'BackupStokAuditController@backupStokAudit']); $router->get('backup/stok/audit/problem',['uses'=>'BackupStokAuditController@backupStokAuditProblem']); $router->get('stokaudit/backdate',['uses'=>'BackupStokAuditController@LaporanAuditBackdate']); + $router->get('stokaudit/backdate/problemakru',['uses'=>'BackupStokAuditController@backupStokAuditProblemAkru']); //One Percent