diff --git a/app/Http/Controllers/GadaiController.php b/app/Http/Controllers/GadaiController.php index 16b7687..1caccd0 100644 --- a/app/Http/Controllers/GadaiController.php +++ b/app/Http/Controllers/GadaiController.php @@ -303,8 +303,8 @@ class GadaiController extends Controller } public function updateGadaiMarhunKaunter($kodcaw,$norujukan,Request $request){ - $onePercentServices = new Onepercent($request->kodcaw); - $update = $onePercentServices->updateGadaiMarhunKaunter($kodcaw,$norujukan,$request); + $master = new MasterServices($request->kodcaw); + $update = $master->updateGadaiMarhunKaunter($kodcaw,$norujukan,$request); return $update; } diff --git a/app/Http/Controllers/TebusController.php b/app/Http/Controllers/TebusController.php index e93f393..5d17ab3 100644 --- a/app/Http/Controllers/TebusController.php +++ b/app/Http/Controllers/TebusController.php @@ -46,13 +46,16 @@ use Carbon\Carbon; class TebusController extends Controller { public function tebusTawarruq($kodcaw,$norujukan){ + $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); + $tagbaru = Gadai::on($cawangan['mysql'])->where('norujukan',$norujukan)->pluck('tagbaru'); + $jeniskeuntungan = ($tagbaru[0] == 0) ? 'asal' : 'onepercent'; $master = new MasterServices($kodcaw); - $response = $master->tebusTawarruq($kodcaw,$norujukan); + $response = $master->tebusTawarruq($kodcaw,$norujukan,$jeniskeuntungan); return $response; } - public function hargaTebusTawarruq($kodcaw,$norujukan,$jeniskeuntungan){ + public function hargaTebusTawarruq($kodcaw,$norujukan){ $master = new MasterServices($kodcaw); $response = $master->hargaTebusTawarruq($kodcaw,$norujukan); @@ -66,7 +69,8 @@ class TebusController extends Controller return $response; } - public function kiraUpahRebet($kodcaw,$norujukan,$jeniskeuntungan){ + public function kiraUpahRebet($kodcaw,$norujukan,Request $request){ + $jeniskeuntungan = ($request->jeniskeuntungan == 'onepercent') ? 'onepercent' : 'asal'; $master = new MasterServices($kodcaw); $response = $master->kiraupahRebet($kodcaw,$norujukan,$jeniskeuntungan); @@ -80,14 +84,16 @@ class TebusController extends Controller return $response; } - public function upahTawarruq($kodcaw,$norujukan,$jeniskeuntungan){ + public function upahTawarruq($kodcaw,$norujukan,Request $request){ + $jeniskeuntungan = ($request->jeniskeuntungan == 'onepercent') ? 'onepercent' : 'asal'; $master = new MasterServices($kodcaw); $response = $master->upahTawarruq($kodcaw,$norujukan,$jeniskeuntungan); return $response; } - public function upahRebetTawarruq($kodcaw,$norujukan,$jeniskeuntungan){ + public function upahRebetTawarruq($kodcaw,$norujukan,Request $request){ + $jeniskeuntungan = ($request->jeniskeuntungan == 'onepercent') ? 'onepercent' : 'asal'; $master = new MasterServices($kodcaw); $response = $master->upahRebetTawarruq($kodcaw,$norujukan,$jeniskeuntungan); diff --git a/app/Services/MasterServices.php b/app/Services/MasterServices.php index 15de4a9..0df8790 100644 --- a/app/Services/MasterServices.php +++ b/app/Services/MasterServices.php @@ -57,12 +57,12 @@ class MasterServices } public function kiraUpahRebet($kodcaw,$norujukan,$jeniskeuntungan){ - if($jeniskeuntungan == 'asal'){ - $tawarruq = new TawarruqEngine($this->cawangan); - $response = $tawarruq->getUpahRebet($kodcaw,$norujukan); + if($jeniskeuntungan == 'onepercent'){ + $onepercent = new OnePercentEngine($this->cawangan); + $response = $onepercent->getUpahRebet($kodcaw,$norujukan); }else{ - $tawarruq = new OnePercentEngine($this->cawangan); + $tawarruq = new TawarruqEngine($this->cawangan); $response = $tawarruq->getUpahRebet($kodcaw,$norujukan); } @@ -79,9 +79,16 @@ class MasterServices /* Start Penebusan */ - public function tebusTawarruq($kodcaw,$norujukan){ - $response = $this->engine->tebusTawarruq($kodcaw,$norujukan); + public function tebusTawarruq($kodcaw,$norujukan,$jeniskeuntungan){ + if($jeniskeuntungan == 'onepercent'){ + $onepercent = new OnePercentEngine($this->cawangan); + $response = $onepercent->tebusTawarruq($kodcaw,$norujukan,$jeniskeuntungan); + }else{ + $tawarruq = new TawarruqEngine($this->cawangan); + $response = $tawarruq->tebusTawarruq($kodcaw,$norujukan,$jeniskeuntungan); + + } return $response; } @@ -98,12 +105,11 @@ class MasterServices } public function upahTawarruq($kodcaw,$norujukan,$jeniskeuntungan){ - if($jeniskeuntungan == 'asal'){ - $tawarruq = new TawarruqEngine($this->cawangan); - $response = $tawarruq->upahTawarruq($kodcaw,$norujukan,$jeniskeuntungan); - + if($jeniskeuntungan == 'onepercent'){ + $onepercent = new OnePercentEngine($this->cawangan); + $response = $onepercent->upahTawarruq($kodcaw,$norujukan,$jeniskeuntungan); }else{ - $tawarruq = new OnePercentEngine($this->cawangan); + $tawarruq = new TawarruqEngine($this->cawangan); $response = $tawarruq->upahTawarruq($kodcaw,$norujukan,$jeniskeuntungan); } @@ -111,13 +117,13 @@ class MasterServices } public function upahRebetTawarruq($kodcaw,$norujukan,$jeniskeuntungan){ - if($jeniskeuntungan == 'asal'){ + if($jeniskeuntungan == 'onepercent'){ + $onepercent = new OnePercentEngine($this->cawangan); + $response = $onepercent->upahRebetTawarruq($kodcaw,$norujukan,$jeniskeuntungan); + }else{ $tawarruq = new TawarruqEngine($this->cawangan); $response = $tawarruq->upahRebetTawarruq($kodcaw,$norujukan,$jeniskeuntungan); - }else{ - $tawarruq = new OnePercentEngine($this->cawangan); - $response = $tawarruq->upahRebetTawarruq($kodcaw,$norujukan,$jeniskeuntungan); } return $response; } @@ -171,13 +177,28 @@ class MasterServices } public function tebusUpdate($kodcaw,$norujukan,HttpRequest $request){ - $response = $this->engine->tebusUpdate($kodcaw,$norujukan,$request); + + if($request->jeniskeuntungan == 'onepercent'){ + $onepercent = new OnePercentEngine($this->cawangan); + $response = $onepercent->tebusUpdate($kodcaw,$norujukan,$request); + + }else{ + $tawarruq = new TawarruqEngine($this->cawangan); + $response = $tawarruq->tebusUpdate($kodcaw,$norujukan,$request); + } return $response; } public function tebusUpdateAutoTawarruq($kodcaw,$norujukan,HttpRequest $request){ - $response = $this->engine->tebusUpdateAutoTawarruq($kodcaw,$norujukan,$request); + if($request->jeniskeuntungan == 'onepercent'){ + $onepercent = new OnePercentEngine($this->cawangan); + $response = $onepercent->tebusUpdateAutoTawarruq($kodcaw,$norujukan,$request); + + }else{ + $tawarruq = new TawarruqEngine($this->cawangan); + $response = $tawarruq->tebusUpdateAutoTawarruq($kodcaw,$norujukan,$request); + } return $response; } diff --git a/app/Support/Onepercent.php b/app/Support/Onepercent.php index 9969899..69a0f32 100644 --- a/app/Support/Onepercent.php +++ b/app/Support/Onepercent.php @@ -75,7 +75,7 @@ class OnePercent extends MasterServices /* Start Penebusan */ - public function tebusTawarruq($kodcaw,$norujukan){ + public function tebusTawarruq($kodcaw,$norujukan,$jeniskeuntungan){ $tebus = new Penebusan($this->kodcaw,$this->cawangan_info); $response = $tebus->tebusTawarruq($this->kodcaw,$norujukan); diff --git a/app/Support/Tawarruq.php b/app/Support/Tawarruq.php index 0e8db31..aff1913 100644 --- a/app/Support/Tawarruq.php +++ b/app/Support/Tawarruq.php @@ -59,9 +59,9 @@ class Tawarruq extends MasterServices /* Start Penebusan */ - public function tebusTawarruq($kodcaw,$norujukan){ + public function tebusTawarruq($kodcaw,$norujukan,$jeniskeuntungan){ $tebus = new Penebusan($this->kodcaw,$this->cawangan_info); - $response = $tebus->hargaTebusTawarruq($this->kodcaw,$norujukan); + $response = $tebus->tebusTawarruq($this->kodcaw,$norujukan); return $response; } diff --git a/app/Support/v1/GadaiV1.php b/app/Support/v1/GadaiV1.php index 2ee2999..08c54cb 100644 --- a/app/Support/v1/GadaiV1.php +++ b/app/Support/v1/GadaiV1.php @@ -143,9 +143,9 @@ class GadaiV1 ->first(); if($gadai_data['tempoh'] >= 12.0){ - $tempoh = 12; + $tempoh = 12; }else{ - $tempoh = $gadai_data['tempoh']; + $tempoh = $gadai_data['tempoh']; } $bilang_bln = $tempoh - $gadai_data['tempohbayar']; @@ -199,8 +199,8 @@ class GadaiV1 $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); $gadai = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->first(); - $upahsemasa = $this->kiraupahTawarruq($kodcaw,$norujukan); - $upahrebet = $this->kiraUpahRebet($kodcaw,$norujukan); + $upahsemasa = $this->kiraupahTawarruq($norujukan); + $upahrebet = $this->kiraUpahRebet($norujukan); $total_bayaran_prev = Transaction::on('mysql7')->where([['norujukan','=',$norujukan],['trans_type','=','A']])->sum('duit_masuk'); diff --git a/app/Support/v1/Penebusan.php b/app/Support/v1/Penebusan.php index dce689d..c4f2fb7 100644 --- a/app/Support/v1/Penebusan.php +++ b/app/Support/v1/Penebusan.php @@ -23,7 +23,7 @@ use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Log; use PDO; -class Penebusan extends Tawarruq +class Penebusan { protected $kodcaw; protected $cawangan_info; @@ -77,6 +77,65 @@ class Penebusan extends Tawarruq return $hargatebus; } + public function kiraupahTawarruq($kodcaw,$norujukan){ + $cawangan = Cawangan::on('mysql7') + ->where('kodcaw','=',$kodcaw) + ->first(); + + $gadai_data = Gadai::on($cawangan['mysql']) + ->where('norujukan','=',$norujukan) + ->first(); + + if($gadai_data['tempoh'] >= 12.0){ + $tempoh = 12; + }else{ + $tempoh = $gadai_data['tempoh']; + } + $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); + } + + return $upah_semasa; + } + + public function kiraUpahRebet($norujukan){ + $cawangan = $this->cawangan_info; + + $gadai_data = Gadai::on($cawangan['mysql']) + ->where('norujukan','=',$norujukan) + ->first(); + + if($gadai_data['tempoh'] >= 12.0){ + $tempoh = 12; + }else{ + $tempoh = $gadai_data['tempoh']; + } + + $bilang_bln = $tempoh - $gadai_data['tempohbayar']; + + $upahrebet_raw = $bilang_bln * (($gadai_data['kadarupah']/100 )* $gadai_data['bakipjm']); + + $upah_rebet_round = number_format($upahrebet_raw,2); + if(strpos($upah_rebet_round,',')){ + $upah_rebet_round = str_replace(',','',$upah_rebet_round); + } + $upah_rebet = substr($upah_rebet_round, 0, -1); + if(strpos($upah_rebet,',')){ + $upah_rebet = str_replace(',','',$upah_rebet); + } + + return $upah_rebet; + } + public function kiraUpahRebetSebenar($kodcaw,$norujukan){ $cawangan = Cawangan::on('mysql7') ->where('kodcaw','=',$kodcaw) @@ -363,7 +422,7 @@ class Penebusan extends Tawarruq ->where('norujukan','=',$norujukan) ->sum('keuntungan_rebet'); - $upah_rebet = $this->kiraUpahRebet($kodcaw,$norujukan); + $upah_rebet = $this->kiraUpahRebet($norujukan); $rebet_raw =$gadai_data['upah12'] - $transaction_keuntungan - $upah_rebet; @@ -536,7 +595,7 @@ class Penebusan extends Tawarruq 't_update' => $current->toDateString(), )); - $upah_rebet = $this->kiraUpahRebet($kodcaw,$norujukan); + $upah_rebet = $this->kiraUpahRebet($norujukan); $create_tebus = Tebus::on($cawangan['mysql'])->create([ 'kodcaw'=> $kodcaw, diff --git a/app/Support/v2/Calculation.php b/app/Support/v2/Calculation.php index a6cd427..4b3d3cc 100644 --- a/app/Support/v2/Calculation.php +++ b/app/Support/v2/Calculation.php @@ -60,6 +60,9 @@ class Calculation $onepercent = $this->kiraanOnePercent($pembiayaan); $ujrah_sebenar = $this->kiraanUjrahSebenar($nilaimarhun,$kadarujrah,$margin); + $onepercent = $this->getRoundedMethod($onepercent); + $ujrah_sebenar = $this->getRoundedMethod($ujrah_sebenar); + $keuntungan = $onepercent + $ujrah_sebenar; return ['keuntungan' => $keuntungan,'onepercent' => $onepercent, 'ujrah' => $ujrah_sebenar]; @@ -70,6 +73,9 @@ class Calculation $onepercent = $this->kiraanOnePercent($pembiayaan); $ujrah_sebenar = $this->kiraanUjrah($nilaimarhun,$kadarujrah,$margin); + $onepercent = $this->getRoundedMethod($onepercent); + $ujrah_sebenar = $this->getRoundedMethod($ujrah_sebenar); + $keuntungan = $onepercent + $ujrah_sebenar; return ['keuntungan' => $keuntungan,'onepercent' => $onepercent, 'ujrah' => $ujrah_sebenar]; diff --git a/app/Support/v2/GadaiV2.php b/app/Support/v2/GadaiV2.php index fc0ae87..cbea893 100644 --- a/app/Support/v2/GadaiV2.php +++ b/app/Support/v2/GadaiV2.php @@ -263,7 +263,6 @@ class GadaiV2 } $bilang_bln = $tempoh - $gadai['tempohbayar']; - $rounded = $upahsemasa - (($keuntungan['ujrah'] * $bilang_bln) + ($onepercentasal * $bilang_bln)); $transaction_upah = TransaksiKeuntungan::on('mysql7')->create([ 'norujukan' => $norujukan, @@ -279,7 +278,6 @@ class GadaiV2 'tempoh' => $gadai['tempoh'], 'beza_tempoh' => $bilang_bln, 'margin_semasa' => $margin_semasa, - 'rounded' => $rounded, ]); DB::connection($cawangan['mysql'])->transaction(function () use($cawangan,$baki_pinjaman,$current,$norujukan,$gadai,$baki_hargajualan,$lelong_tawarruq,$margin_semasa){ diff --git a/app/Support/v2/Penebusan.php b/app/Support/v2/Penebusan.php index 3a3ac48..3ce5167 100644 --- a/app/Support/v2/Penebusan.php +++ b/app/Support/v2/Penebusan.php @@ -77,9 +77,7 @@ class Penebusan $hargatebus = str_replace(',','',$hargatebus); } - $rounded = $hargatebus - $harga_tebus; - Log::info([$harga_tebus,$rebet]); - $arrayharga = ['harga' => $hargatebus, 'rounded' => $rounded]; + $arrayharga = ['harga' => $hargatebus]; return $arrayharga; } @@ -139,9 +137,15 @@ class Penebusan $upah = $onepercentservices->kiraanKeuntunganSebenar($gadai_data['pinjaman'],$gadai_data['nilaimarhun'],$gadai_data['kadarupah'],$gadai_data['percentpinj']); $upahsemasa_raw = $bilang_bln * $upah['keuntungan']; + $keuntungan_semasa = $onepercentservices->getRoundedMethod($bilang_bln * $upah['onepercent']); + $ujrah_semasa = $onepercentservices->getRoundedMethod($bilang_bln * $upah['ujrah']); $upahsemasa_raw = $onepercentservices->getRoundedMethod($upahsemasa_raw); - return $upahsemasa_raw; + $array_upah = ['pendapatan' => $upahsemasa_raw, + 'keuntungan' => $keuntungan_semasa, + 'ujrah' => $ujrah_semasa]; + + return $array_upah; } public function upahRebetTawarruq($kodcaw,$norujukan,$jeniskeuntungan){ @@ -171,6 +175,29 @@ class Penebusan return $upahrebet_raw; } + public function kiraupahTawarruq($norujukan){ + $onepercentservices = new Calculation(); + + $cawangan = $this->cawangan_info; + + $gadai_data = Gadai::on($cawangan['mysql']) + ->where('norujukan','=',$norujukan) + ->first(); + + if($gadai_data['tempoh'] >= 12.0){ + $tempoh = 12; + }else{ + $tempoh = $gadai_data['tempoh']; + } + $bilang_bln = $tempoh - $gadai_data['tempohbayar']; + + $upah = $onepercentservices->kiraanKeuntunganSebenar($gadai_data['pinjaman'],$gadai_data['nilaimarhun'],$gadai_data['kadarupah'],$gadai_data['percentpinj']); + $upahsemasa_raw = $bilang_bln * $upah['keuntungan']; + $upahsemasa_raw = $onepercentservices->getRoundedMethod($upahsemasa_raw); + + return $upahsemasa_raw; +} + public function tebusSeparuhTawarruq($kodcaw,$norujukan,HttpRequest $request){ $cawangan = Cawangan::on('mysql7') @@ -181,7 +208,7 @@ class Penebusan ->where('norujukan','=',$norujukan) ->first(); - $upahsemasa = $this->kiraupahTawarruq($kodcaw,$norujukan,$request->jeniskeuntungan); + $upahsemasa = $this->kiraupahTawarruq($norujukan); $array_recno_marhun = $request->array_recno; @@ -446,7 +473,7 @@ class Penebusan $upah_rebet_sebenar = 0; }else{ $harga_tebus = $this->hargaTebusTawarruq($kodcaw,$norujukan,$request->jeniskeuntungan); - $upah_tebus = $this->kiraupahTawarruq($kodcaw,$norujukan,$request->jeniskeuntungan); + $upah_tebus = $this->kiraupahTawarruq($norujukan); $upah_rebet = $this->kiraUpahRebetSebenar($kodcaw,$norujukan); $upah_rebet_sebenar = $harga_tebus['harga'] - $gadai['bakipjm']; @@ -516,7 +543,6 @@ class Penebusan 'margin_semasa' => ($request->jeniskeuntungan == 'onepercent') ? $margin_semasa : 0, 'tempoh' => $gadai['tempoh'], 'beza_tempoh' => ($gadai['tempoh'] - $gadai['tempohbayar']), - 'rounded' => $harga_tebus['rounded'], ]); if($request->jenistebus == 'P'){ @@ -580,7 +606,7 @@ class Penebusan if($request->jenisbayarantebus == "tawarruq") { - $rebet = $this->rebetselepastawarruq($kodcaw,$norujukan,$request->jeniskeuntungan); + $rebet = $this->rebetselepastawarruq($kodcaw,$norujukan); } else if($request->jenisbayarantebus == "nottawarruq") { @@ -597,7 +623,7 @@ class Penebusan 't_update' => $current->toDateString(), )); - $upah_rebet = $this->kiraUpahRebet($kodcaw,$norujukan,$request->jeniskeuntungan); + $upah_rebet = $this->kiraUpahRebet($kodcaw,$norujukan); $create_tebus = Tebus::on($cawangan['mysql'])->create([ 'kodcaw'=> $kodcaw, diff --git a/database/factories/GadaiFactory.php b/database/factories/GadaiFactory.php index 6ca8d29..8a951aa 100644 --- a/database/factories/GadaiFactory.php +++ b/database/factories/GadaiFactory.php @@ -17,10 +17,10 @@ class GadaiFactory return [ 'kodcaw' => 'KB2', - 'norujukan' => ($number > 9) ? 'KB2231207-00' . $number : 'KB2231207-000' . $number , + 'norujukan' => ($number > 9) ? 'KB2231211-00' . $number : 'KB2231211-000' . $number , 'nopelanggan' => 'M03-00009968', 'nokp' => '630411035213', - 't_gadai' => '2023-12-07', + 't_gadai' => '2023-12-11', 'masa' => '13:46:57', 'sirig' => $number++, 'nilaimarhun' => 3000.09, @@ -53,7 +53,7 @@ class GadaiFactory 'upahdibayar' => 0.00, 'marhun' => '1 R/L,', 'taglel' => null, - 't_update' => '2023-11-23', + 't_update' => '2023-12-11', 't_matang' => '2024-06-24', 't_matang1' => '2024-06-24', 'penilai' => 'MOHD KHALID ABDUL RAHMAN', diff --git a/database/factories/MarhunFactory.php b/database/factories/MarhunFactory.php index 5945000..4aca234 100644 --- a/database/factories/MarhunFactory.php +++ b/database/factories/MarhunFactory.php @@ -18,8 +18,8 @@ class MarhunFactory return [ 'kodcaw' => 'KB2', 'marhun' => 'R/L', - 't_gadai' => '2023-11-23', - 'norujukan' => ($number > 9) ? 'KB2231207-00' . $number : 'KB2231207-000' . $number , + 't_gadai' => '2023-12-11', + 'norujukan' => ($number > 9) ? 'KB2231211-00' . $number : 'KB2231211-000' . $number , 'bil' => 1, 'nota' => $number++, 'karat' => '24.0K', diff --git a/routes/web.php b/routes/web.php index 65f5c39..ee44873 100644 --- a/routes/web.php +++ b/routes/web.php @@ -106,8 +106,8 @@ $router->group(['prefix'=>'api'], function () use ($router){ //Tebus API $router->get('tebustawarruq/{kodcaw}/{norujukan}',['uses'=>'TebusController@tebusTawarruq']); - $router->get('upahtawarruq/{kodcaw}/{norujukan}/{jeniskeuntungan}',['uses'=>'TebusController@upahTawarruq']); - $router->get('upahrebettawarruq/{kodcaw}/{norujukan}/{jeniskeuntungan}',['uses'=>'TebusController@upahRebetTawarruq']); + $router->get('upahtawarruq/{kodcaw}/{norujukan}',['uses'=>'TebusController@upahTawarruq']); + $router->get('upahrebettawarruq/{kodcaw}/{norujukan}',['uses'=>'TebusController@upahRebetTawarruq']); $router->get('tebusseparuhtawarruq/{kodcaw}/{norujukan}',['uses'=>'TebusController@tebusSeparuhTawarruq']); $router->get('tebusseparuhbukantawarruq/{kodcaw}/{norujukan}',['uses'=>'TebusController@tebusSeparuhNotTawarruq']); $router->get('tebusbukantawarruq/{kodcaw}/{norujukan}',['uses'=>'TebusController@tebusNotTawarruq']); diff --git a/tinker/getOnePercent.php b/tinker/getOnePercent.php index 5c0671b..965da66 100644 --- a/tinker/getOnePercent.php +++ b/tinker/getOnePercent.php @@ -3,9 +3,11 @@ use App\Services\MasterServices; use App\Support\v2\Calculation; + $number = 1456.50; $test2 = new Calculation(); $test = new MasterServices('KB2'); // $response = $test->kiraUpahTawarruq('KB2231207-0004'); + $testrounded = $test2->getRoundedMethod($number); $response = 'tes'; -dd($response); + dd($testrounded);