From 363402dcf0d18e080e95047d78fb658fb2435290 Mon Sep 17 00:00:00 2001 From: Hafifie PKB Date: Thu, 1 Feb 2024 09:33:51 +0800 Subject: [PATCH] tarikh upah dan imbang duga refined dan calculation ujrah --- app/Http/Controllers/LaporanController.php | 68 +++++++++++++++++ app/Http/Controllers/TebusController.php | 7 ++ app/Services/MasterServices.php | 12 +++ app/Support/OnePercent.php | 9 ++- app/Support/Tawarruq.php | 7 ++ app/Support/v1/Penebusan.php | 69 ++++++++++++++++++ app/Support/v2/Calculation.php | 18 +++-- app/Support/v2/GadaiV2.php | 6 +- app/Support/v2/Penebusan.php | 85 ++++++++++++++++++++-- routes/web.php | 3 + tinker/getOnePercent.php | 12 ++- 11 files changed, 273 insertions(+), 23 deletions(-) diff --git a/app/Http/Controllers/LaporanController.php b/app/Http/Controllers/LaporanController.php index 3faf678..98abd06 100644 --- a/app/Http/Controllers/LaporanController.php +++ b/app/Http/Controllers/LaporanController.php @@ -1631,4 +1631,72 @@ class LaporanController extends Controller return response('succesfully generated!'); } + + public function UpdateDailyImbangDugaRefined(Request $request){ + + $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$request->kodcaw)->first(); + $tarikh = new Carbon($request->tarikh); + + DB::connection($cawangan['mysql'])->beginTransaction(); + try{ + $imbangduga = imbangdugabackup::on($cawangan['mysql'])->whereDate('tarikh',$request->tarikh)->update(array( + 'kodcaw' => $request->kodcaw, + 'tarikh' => $tarikh->toDateString(), + 'tunaiditangan' => $request->tunaiditangan, + 'pembiayaantawarruq' => $request->pembiayaantawarruq, + 'bayaranpendahuluan' => $request->bayaranpendahuluan, + 'pinjamankoop' => $request->pinjamankoop, + 'emaspalsu' => $request->emaspalsu, + 'serahan' => $request->serahan, + 'bds' => $request->bds, + 'perubatan' => $request->perubatan, + 'keraian' => $request->keraian, + 'rugilelong' => $request->rugilelong, + 'bakilelong' => $request->bakilelong, + 'wtd' => $request->wtd, + 'untungrugiterkumpul' => $request->untungrugiterkumpul, + 'keun_sebenar' => $request->keun_sebenar, + 'pendahuluan' => $request->pendahuluan, + 'cajlelong' => $request->cajlelong, + 'pindahkekpkb' => $request->pindahkekpkb, + 'penghutangkaki' => $request->penghutangkaki, + 'phapuskira' => $request->phapuskira, + 'belian1stop' => $request->belian1stop, + 'keun_penggadai' => $request->keun_penggadai, + 'pend_terakru' => $request->pend_terakru, + 'cajperkhidmatan' => $request->cajperkhidmatan, + 'cajlelongxtra' => $request->cajlelongxtra, + 'upahsimpanxtra' => $request->upahsimpanxtra, + 'bakilelongxtra' => $request->bakilelongxtra, + 'rugilelongxtra' => $request->rugilelongxtra, + 'utgterkumpulxtra' => $request->utgterkumpulxtra, + 'jualan1stop' => $request->jualan1stop, + 'hapuskira' => $request->hapuskira, + 'ujrah' => $request->ujrah, + 'onepercent' => $request->onepercent, + 'totalharta' => $request->totalharta, + 'totaltanggungan' => $request->totaltanggungan, + 'tagtally' => $request->tagtally, + 'created_at' => $tarikh->toDateTimeString(), + 'updated_at' => $tarikh->toDateTimeString(), + )); + DB::connection($cawangan['mysql'])->commit(); + return response()->json('success',200); + }catch (\Throwable $e){ + DB::connection($cawangan['mysql'])->rollBack(); + return response()->json($e,500); + } + } + + public function getImbangDugaBackupData(Request $request){ + $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$request->kodcaw)->first(); + + $response = imbangdugabackup::on($cawangan['mysql'])->select($request->data_name)->whereDate('tarikh','=',$request->tarikh)->firstOr(function () { + return ['message' => 'No Data']; + }); + + if(isset($response['message']) == false) $response = $response[$request->data_name]; + + return $response; + } } diff --git a/app/Http/Controllers/TebusController.php b/app/Http/Controllers/TebusController.php index 4639c91..e870649 100644 --- a/app/Http/Controllers/TebusController.php +++ b/app/Http/Controllers/TebusController.php @@ -1878,6 +1878,13 @@ class TebusController extends Controller return $response; } + public function upahTawarruqByTarikh(Request $request){ + $master = new MasterServices($request->kodcaw); + $response = $master->kiraupahTawarruqByTarikh($request->kodcaw,$request->norujukan,$request->tarikh,$request); + + return $response; + } + } diff --git a/app/Services/MasterServices.php b/app/Services/MasterServices.php index de6df28..8a01139 100644 --- a/app/Services/MasterServices.php +++ b/app/Services/MasterServices.php @@ -235,6 +235,18 @@ class MasterServices return $response; } + public function kiraupahTawarruqByTarikh($kodcaw,$norujukan,$tarikh,HttpRequest $request){ + if($request->jeniskeuntungan == 'onepercent'){ + $onepercent = new OnePercentEngine($this->cawangan); + $response = $onepercent->kiraanupahTawarruqByTarikh($kodcaw,$norujukan,$tarikh); + return $response; + }else{ + $tawarruq = new TawarruqEngine($this->cawangan); + $response = $tawarruq->kiraanupahTawarruqByTarikh($kodcaw,$norujukan,$tarikh); + return $response; + } + } + /* End Penebusan */ public function test(){ diff --git a/app/Support/OnePercent.php b/app/Support/OnePercent.php index 3a02fd8..603928b 100644 --- a/app/Support/OnePercent.php +++ b/app/Support/OnePercent.php @@ -36,7 +36,7 @@ class OnePercent extends MasterServices public function getUpahSebenar($norujukan){ $gadai = new Version2Gadai($this->kodcaw,$this->cawangan_info); - $response = $gadai->kiraupahOnePercent($this->kodcaw,$norujukan); + $response = $gadai->kiraupahOnePercent($norujukan); return $response; } @@ -199,6 +199,13 @@ class OnePercent extends MasterServices return $response; } + public function kiraanupahTawarruqByTarikh($kodcaw,$norujukan,$tarikh){ + $tebus = new Penebusan($this->kodcaw,$this->cawangan_info); + $response = $tebus->kiraupahTawarruqByTarikh($this->kodcaw,$norujukan,$tarikh); + + return $response; + } + /* End Penebusan */ public function test(){ diff --git a/app/Support/Tawarruq.php b/app/Support/Tawarruq.php index dc63fda..2ac6755 100644 --- a/app/Support/Tawarruq.php +++ b/app/Support/Tawarruq.php @@ -170,6 +170,13 @@ class Tawarruq extends MasterServices return $response; } + public function kiraanupahTawarruqByTarikh($kodcaw,$norujukan,$tarikh){ + $tebus = new Penebusan($this->kodcaw,$this->cawangan_info); + $response = $tebus->kiraupahTawarruqByTarikh($this->kodcaw,$norujukan,$tarikh); + + return $response; + } + /* End Penebusan */ public function test(){ diff --git a/app/Support/v1/Penebusan.php b/app/Support/v1/Penebusan.php index dbf54ff..4c4b091 100644 --- a/app/Support/v1/Penebusan.php +++ b/app/Support/v1/Penebusan.php @@ -675,4 +675,73 @@ class Penebusan return response()->json($update_gadai, 201); } + + public function kiraupahTawarruqByTarikh($kodcaw,$norujukan,$tarikh){ + $cawangan = Cawangan::on('mysql7') + ->where('kodcaw','=',$kodcaw) + ->first(); + + $gadai_data = Gadai::on($cawangan['mysql']) + ->where('norujukan','=',$norujukan) + ->first(); + + $tempoh_func = $this->kiraanTarikhJBG($gadai_data['t_gadai'],$tarikh); + + if($tempoh_func >= 12.0){ + $tempoh = 12; + }else{ + $tempoh = $tempoh_func; + } + $bilang_bln = $tempoh - $gadai_data['tempohbayar']; + + $upahsemasa_raw = $bilang_bln * (($gadai_data['kadarupah']/100 )* $gadai_data['pinjaman']); + + $upah_semasa_round = number_format($upahsemasa_raw,2); + if(strpos($upah_semasa_round,',')){ + $upah_semasa_round = str_replace(',','',$upah_semasa_round); + } + $upah_semasa = substr($upah_semasa_round, 0, -1); + if(strpos($upah_semasa,',')){ + $upah_semasa = str_replace(',','',$upah_semasa); + } + + + $array_return = [ + 'upahsemasa' => $upah_semasa, + 'tempoh' => $tempoh, + ]; + + return $array_return; + } + + private function kiraanTarikhJBG($tarikhgadai,$tarikh){ + + $tarikh_gadai = Carbon::parse($tarikhgadai. ' 00:00:00'); + $tarikh = new Carbon($tarikh); + $tahun_gadai = $tarikh_gadai->year; + $bulan_gadai = $tarikh_gadai->month; + $hari_gadai = $tarikh_gadai->day; + $tahun_semasa = $tarikh->year; + $bulan_semasa = $tarikh->month; + $hari_semasa = $tarikh->day; + if($hari_semasa >= $hari_gadai){ + $beza_hari = $hari_semasa - $hari_gadai + 1; + }else if($hari_semasa < $hari_gadai){ + $bulan_semasa = $bulan_semasa - 1; + $beza_hari = ($hari_semasa + 30) - $hari_gadai + 1; + } + $extensivemonth_gadai = 0; + if($beza_hari >= 1 && $beza_hari <= 15){ + $extensivemonth_gadai = 0.5; + }else if($beza_hari >= 16){ + $extensivemonth_gadai = 1; + }else{ + $extensivemonth_gadai = 0; + } + $beza_tahun = $tahun_semasa - $tahun_gadai; + $beza_bulan = ($bulan_semasa + ($beza_tahun * 12)) - $bulan_gadai; + $tempoh_gadai = $beza_bulan + $extensivemonth_gadai; + + return $tempoh_gadai; + } } \ No newline at end of file diff --git a/app/Support/v2/Calculation.php b/app/Support/v2/Calculation.php index 829212e..7c3d570 100644 --- a/app/Support/v2/Calculation.php +++ b/app/Support/v2/Calculation.php @@ -24,7 +24,7 @@ class Calculation $formula_margin = ($this->maks_margin - $margin) / $this->maks_margin; $ujrah_margin = $formula_margin * $kadarujrah; $rebate_ujrah = $nilaimarhun*($ujrah_margin/100); - $ujrah_sebenar = $ujrah; + $ujrah_sebenar = $ujrah - $rebate_ujrah; return $ujrah_sebenar; } @@ -62,8 +62,8 @@ class Calculation $onepercent = $this->kiraanOnePercent($pembiayaan); $ujrah_sebenar = $this->kiraanUjrahSebenar($nilaimarhun,$kadarujrah,$margin); - $onepercent = $this->getRoundedMethod($onepercent); - $ujrah_sebenar = $this->getRoundedMethod($ujrah_sebenar); + // $onepercent = $this->getRoundedMethod($onepercent); + // $ujrah_sebenar = $this->getRoundedMethod($ujrah_sebenar); $keuntungan = $onepercent + $ujrah_sebenar; @@ -73,12 +73,10 @@ class Calculation public function kiraanKeuntunganSebenar(float $pembiayaan = 0.0,float $nilaimarhun = 0.0,float $kadarujrah = 0.0,float $margin = 0.0){ $this->one_percent = $this->getKadarUpah($nilaimarhun); - $onepercent = $this->kiraanOnePercent($pembiayaan); $ujrah_sebenar = $this->kiraanUjrah($nilaimarhun,$kadarujrah,$margin); - - $onepercent = $this->getRoundedMethod($onepercent); - $ujrah_sebenar = $this->getRoundedMethod($ujrah_sebenar); + // $onepercent = $this->getRoundedMethod($onepercent); + // $ujrah_sebenar = $this->getRoundedMethod($ujrah_sebenar); $keuntungan = $onepercent + $ujrah_sebenar; @@ -99,7 +97,11 @@ class Calculation } public function getRoundedMethod(float $number = 0.0) : Float{ - $number_string = number_format(floor(($number*100))/100,2); + // $multiplied = number_format($number * 100,2); + // $floorResult = floor($multiplied); + // $number_string = number_format($floorResult/100,2); + $number_string = number_format(floor($number * 100)/100,2); + $rounded = substr($number_string, 0, -1); $lastDigit = substr($number_string, -1); diff --git a/app/Support/v2/GadaiV2.php b/app/Support/v2/GadaiV2.php index 0b6e1d9..c35dd3e 100644 --- a/app/Support/v2/GadaiV2.php +++ b/app/Support/v2/GadaiV2.php @@ -239,7 +239,7 @@ class GadaiV2 $margin_semasa = ($gadai['bakipjm'] / $gadai['nilaimarhun']) * 100; $keuntungan = $onepercent->kiraanKeuntunganSebenar($gadai['bakipjm'],$gadai['nilaimarhun'],$gadai['kadarupah'],$margin_semasa); - $ujrahasal = $onepercent->kiraanUjrahSebenar($gadai['nilaimarhun'],$gadai['kadarupah'],$gadai['margin_semasa']); + $ujrahasal = $onepercent->kiraanUjrahSebenar($gadai['nilaimarhun'],$gadai['kadarupah'],$gadai['percentpinj']); $onepercentasal = $gadai['pinjaman'] * (1/100); @@ -268,8 +268,8 @@ class GadaiV2 } $bilang_bln = $tempoh - $gadai['tempohbayar']; - $ujrah = $onepercent->getRoundedMethod($keuntungan['ujrah'] * $bilang_bln); - $ujrah_rebate = $onepercent->getRoundedMethod($ujrahasal * $bilang_bln); + $ujrah = $onepercent->getRoundedMethod($ujrahasal * $bilang_bln); + $ujrah_rebate = $onepercent->getRoundedMethod($keuntungan['ujrah'] * $bilang_bln); $keun = $onepercent->getRoundedMethod($onepercentasal * $bilang_bln); $keuntungan_rebate = $onepercent->getRoundedMethod($keuntungan['onepercent'] * $bilang_bln); diff --git a/app/Support/v2/Penebusan.php b/app/Support/v2/Penebusan.php index e95624b..1049c5a 100644 --- a/app/Support/v2/Penebusan.php +++ b/app/Support/v2/Penebusan.php @@ -184,7 +184,7 @@ class Penebusan $bilang_bln = $tempoh - $gadai_data['tempohbayar']; $upah = $onepercentservices->kiraanKeuntunganRebet($gadai_data['bakipjm'],$gadai_data['nilaimarhun'],$gadai_data['kadarupah'],$gadai_data['margin_semasa']); - + $upahrebet_raw = $onepercentservices->getRoundedMethod($bilang_bln * $upah['keuntungan']); $upahujrah_raw = $onepercentservices->getRoundedMethod($bilang_bln * $upah['ujrah']); $upahonepercent_raw = $onepercentservices->getRoundedMethod($bilang_bln * $upah['onepercent']); @@ -225,6 +225,8 @@ class Penebusan public function tebusSeparuhTawarruq($kodcaw,$norujukan,HttpRequest $request){ + $onepercentservices = new Calculation(); + $cawangan = Cawangan::on('mysql7') ->where('kodcaw','=',$kodcaw) ->first(); @@ -233,14 +235,13 @@ class Penebusan ->where('norujukan','=',$norujukan) ->first(); - $upahsemasa = $this->kiraupahTawarruq($norujukan); + $upahsemasa = $this->upahRebetTawarruq($kodcaw,$norujukan,$request->jeniskeuntungan); $array_recno_marhun = $request->array_recno; $margin_pembiayaan = round(($gadai_data['bakipjm']/$gadai_data['nilaimarhun'])*100,2); // $margin_pembiayaan = round(($gadai_data['bakipjm']/$request->hargasemasa)*100,2); - $nilai_marhun = $gadai_data['nilaimarhun']; $total_harga_tebus = 0; foreach($array_recno_marhun as $recno){ $marhun = Marhun::on($cawangan['mysql'])->where([['recno','=',$recno],['norujukan','=',$norujukan]])->first(); @@ -249,6 +250,8 @@ class Penebusan $total_harga_tebus += $harga_tebus; } + // $total_harga_tebus = $onepercentservices->getRoundedMethod($total_harga_tebus); + // $totalhargatebus = $total_harga_tebus + $upahsemasa['keuntungan']; $total_harga_tebus_round = round($total_harga_tebus,2); @@ -775,15 +778,83 @@ class Penebusan $bilang_bln = $tempoh - $gadai_data['tempohbayar']; $array_upah = $onepercentservices->kiraanKeuntunganRebet($gadai_data['bakipjm'],$gadai_data['nilaimarhun'],$gadai_data['kadarupah'],$gadai_data['margin_semasa']); - $ujrah_rounded = $onepercentservices->getRoundedMethod($array_upah['ujrah']); - $keuntungan_rounded = $onepercentservices->getRoundedMethod($array_upah['onepercent']); - $ujrah = $bilang_bln * $ujrah_rounded; - $onepercent = $bilang_bln * $keuntungan_rounded; + // $ujrah_rounded = $onepercentservices->getRoundedMethod($array_upah['ujrah']); + // $keuntungan_rounded = $onepercentservices->getRoundedMethod($array_upah['onepercent']); + $ujrah = $bilang_bln * $array_upah['ujrah']; + $onepercent = $bilang_bln * $array_upah['onepercent']; $ujrah = $onepercentservices->getRoundedMethod($ujrah); $onepercent = $onepercentservices->getRoundedMethod($onepercent); return ['ujrah' => $ujrah, 'onepercent' => $onepercent]; } + public function kiraupahTawarruqByTarikh($kodcaw,$norujukan,$tarikh){ + $onepercentservices = new Calculation(); + + $cawangan = $this->cawangan_info; + + $gadai_data = Gadai::on($cawangan['mysql']) + ->where('norujukan','=',$norujukan) + ->first(); + + $tempoh_func = $this->kiraanTarikhJBG($gadai_data['t_gadai'],$tarikh); + + if($tempoh_func >= 12.0){ + $tempoh = 12; + }else{ + $tempoh = $tempoh_func; + } + $bilang_bln = $tempoh - $gadai_data['tempohbayar']; + + $upah = $onepercentservices->kiraanKeuntunganSebenar($gadai_data['pinjaman'],$gadai_data['nilaimarhun'],$gadai_data['kadarupah'],$gadai_data['margin_semasa']); + + $keuntungan_semasa = $onepercentservices->getRoundedMethod($bilang_bln * $upah['onepercent']); + $ujrah_semasa = $onepercentservices->getRoundedMethod($bilang_bln * $upah['ujrah']); + $upahsemasa_raw = $keuntungan_semasa + $ujrah_semasa; + $upahsemasa_raw = $onepercentservices->getRoundedMethod($upahsemasa_raw); + $keuntungan_1bln = $onepercentservices->getRoundedMethod((1 * $upah['onepercent'])+(1 * $upah['ujrah'])); + + $array_return = [ + 'keuntungan_1bln' => $keuntungan_1bln, + 'pendapatan' => $upahsemasa_raw, + 'keuntungan' => $keuntungan_semasa, + 'ujrah' => $ujrah_semasa, + 'tempoh' => $tempoh, + ]; + + return $array_return; + } + + private function kiraanTarikhJBG($tarikhgadai,$tarikh){ + + $tarikh_gadai = Carbon::parse($tarikhgadai. ' 00:00:00'); + $tarikh = new Carbon($tarikh); + $tahun_gadai = $tarikh_gadai->year; + $bulan_gadai = $tarikh_gadai->month; + $hari_gadai = $tarikh_gadai->day; + $tahun_semasa = $tarikh->year; + $bulan_semasa = $tarikh->month; + $hari_semasa = $tarikh->day; + if($hari_semasa >= $hari_gadai){ + $beza_hari = $hari_semasa - $hari_gadai + 1; + }else if($hari_semasa < $hari_gadai){ + $bulan_semasa = $bulan_semasa - 1; + $beza_hari = ($hari_semasa + 30) - $hari_gadai + 1; + } + $extensivemonth_gadai = 0; + if($beza_hari >= 1 && $beza_hari <= 15){ + $extensivemonth_gadai = 0.5; + }else if($beza_hari >= 16){ + $extensivemonth_gadai = 1; + }else{ + $extensivemonth_gadai = 0; + } + $beza_tahun = $tahun_semasa - $tahun_gadai; + $beza_bulan = ($bulan_semasa + ($beza_tahun * 12)) - $bulan_gadai; + $tempoh_gadai = $beza_bulan + $extensivemonth_gadai; + + return $tempoh_gadai; + } + } \ No newline at end of file diff --git a/routes/web.php b/routes/web.php index 231e096..2aa7f6a 100644 --- a/routes/web.php +++ b/routes/web.php @@ -114,6 +114,7 @@ $router->group(['prefix'=>'api'], function () use ($router){ $router->get('upahbukantawarruq/{kodcaw}/{norujukan}',['uses'=>'TebusController@upahNotTawarruq']); $router->get('tebus/laporan/{kodcaw}/{tarikh}',['uses'=>'TebusController@getLaporanTebus']); $router->get('tebus/laporanjenistawarruq/{kodcaw}',['uses'=>'TebusController@getLaporanTebusPengasingan']); + $router->get('upahtawarruqbytarikh',['uses'=>'TebusController@upahTawarruqByTarikh']); //Tebus Ujrah (Laporan Range Date) $router->get('tebusujrah/laporan/{kodcaw}',['uses'=>'TebusController@getLaporanTebusUjrah']); @@ -807,6 +808,8 @@ $router->group(['prefix'=>'admin'], function () use ($router){ $router->get('laporan/akrual/insertImbangDuga',['uses'=>'LaporanController@InsertDailyImbangDuga']); $router->get('laporan/akrual/UntungRugiTerkumpul/{kodcaw}',['uses' => 'AdminPageController@calculationUntungTerkumpulAkru']); $router->get('laporan/akrual/updateImbangDuga',['uses'=>'LaporanController@UpdateDailyImbangDuga']); + $router->get('laporan/akrual/updateImbangDugaRefined',['uses'=>'LaporanController@UpdateDailyImbangDugaRefined']); + $router->get('laporan/akrual/getImbangDugaBackupData',['uses'=>'LaporanController@getImbangDugaBackupData']); $router->post('ansuran/delete',['uses'=>'GadaiController@deleteAnsuran']); $router->get('ansuran/getLatest',['uses'=>'GadaiController@getLatestAdvanceWithoutDelete']); diff --git a/tinker/getOnePercent.php b/tinker/getOnePercent.php index a43344b..7cd352f 100644 --- a/tinker/getOnePercent.php +++ b/tinker/getOnePercent.php @@ -3,11 +3,15 @@ use App\Services\MasterServices; use App\Support\v2\Calculation; - $number = 1456.529; - $test2 = new Calculation(); + // $number = 1456.529; + // $test2 = new Calculation(); $test = new MasterServices('KB2'); + $response = $test->kiraUpahTawarruq('KB2','KB2240126-0002','onepercent'); + + dd($response); + // $response = $test->kiraUpahTawarruq('KB2231207-0004'); - $testrounded = $test2->getRoundedMethod($number); - $response = 'tes'; + // $testrounded = $test2->getRoundedMethod($number); + // $response = 'tes'; dd($testrounded);