From 2a8e972b3466b48847125d46a671ac2d63ec65e8 Mon Sep 17 00:00:00 2001 From: Hafifie PKB Date: Sun, 10 Dec 2023 00:05:30 +0800 Subject: [PATCH] separation of tawarruq and onepercent --- app/Http/Controllers/AdminPageController.php | 2 + app/Http/Controllers/GadaiController.php | 330 +------- app/Http/Controllers/TebusController.php | 742 ++---------------- app/Services/MasterServices.php | 203 +++++ app/Services/TawarruqServices.php | 16 - app/Support/Onepercent.php | 203 +++++ app/Support/Tawarruq.php | 172 ++++ app/Support/v1/Calculation.php | 14 + app/Support/v1/GadaiV1.php | 271 +++++++ app/Support/v1/Penebusan.php | 615 +++++++++++++++ .../v2/Calculation.php} | 38 +- app/Support/v2/GadaiV2.php | 330 ++++++++ app/Support/v2/Penebusan.php | 728 +++++++++++++++++ database/factories/GadaiFactory.php | 4 +- database/factories/MarhunFactory.php | 2 +- ...8_115215_add_onepercent_to_gadai_table.php | 2 +- ..._add_version_to_arrahn_master_db_table.php | 34 + tinker/getOnePercent.php | 17 +- 18 files changed, 2701 insertions(+), 1022 deletions(-) create mode 100644 app/Services/MasterServices.php delete mode 100644 app/Services/TawarruqServices.php create mode 100644 app/Support/Onepercent.php create mode 100644 app/Support/Tawarruq.php create mode 100644 app/Support/v1/Calculation.php create mode 100644 app/Support/v1/GadaiV1.php create mode 100644 app/Support/v1/Penebusan.php rename app/{Services/OnePercentServices.php => Support/v2/Calculation.php} (74%) create mode 100644 app/Support/v2/GadaiV2.php create mode 100644 app/Support/v2/Penebusan.php create mode 100644 database/migrations/2023_12_08_151908_add_version_to_arrahn_master_db_table.php diff --git a/app/Http/Controllers/AdminPageController.php b/app/Http/Controllers/AdminPageController.php index f6bf1aa..b69b826 100644 --- a/app/Http/Controllers/AdminPageController.php +++ b/app/Http/Controllers/AdminPageController.php @@ -3635,6 +3635,8 @@ class AdminPageController extends Controller if($kodcaw == '011229') $total -= 45390.37; + if($kodcaw == 'KB2') + $total -= 1378.5; return response()->json($total,200); } diff --git a/app/Http/Controllers/GadaiController.php b/app/Http/Controllers/GadaiController.php index 8008bb7..16b7687 100644 --- a/app/Http/Controllers/GadaiController.php +++ b/app/Http/Controllers/GadaiController.php @@ -32,7 +32,8 @@ use App\InOutMar; use Illuminate\Http\Request; -use App\Services\OnePercentServices; +use App\Services\MasterServices; +use App\Support\OnePercent; use Log; use Illuminate\Support\Facades\DB; @@ -130,33 +131,11 @@ class GadaiController extends Controller } public function create($kodcaw,Request $request){ - $current = Carbon::now(); - $current = new Carbon(); - - $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); + $master = new MasterServices($kodcaw); + $response = $master->createGadai($request); - try{ - DB::transaction(function () use ($cawangan, $kodcaw, $request, $current) { - $gadai = Gadai::on($cawangan['mysql'])->create([ - 'kodcaw'=>$kodcaw, - 'norujukan' => $request->norujukan, - 'nopelanggan' => $request->nopelanggan, - 'nokp' => $request->nokp, - 'sirig' => $request->sirig, - 't_gadai' => $current->toDateString(), - 'sttebus' => '', - 'masa' =>$current->toTimeString(), - 'tagbaru' => 1 - ]); - return response()->json($gadai, 201); - }); - - - }catch(\Exception $e){ - - echo "Gadaian Gagal: " . $e->getMessage(); - } + return $response; } public function createold($kodcaw,Request $request){ @@ -224,100 +203,10 @@ class GadaiController extends Controller public function daftarGadaiMarhun($norujukan,Request $request){ // dd("ggwp"); - $current = Carbon::now(); - $current = new Carbon(); + $master = new MasterServices($request->kodcaw); + $response = $master->createMarhunGadai($request->norujukan,$request); - $t_matang = Carbon::now(); - $t_matang = new Carbon(); - $t_matang = $t_matang->addMonths(6)->subDays(1); - - $t_kontrak = Carbon::now(); - $t_kontrak = new Carbon(); - $t_kontrak = $t_kontrak->addMonths(12)->subDays(1); - - $margin_pinjam = $request->percentpinj *100; - $cawangan = Cawangan::on('mysql7') - ->where('kodcaw','=',$request->kodcaw) - ->first(); - if($request->transaction == 'Ubah Gadai'){ - $old_data = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->first(); - } - - $bil_marhun = Marhun::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->count(); - - $total_nilai_marhun = Marhun::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->sum('n_marhun'); - $total_berat = Marhun::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->sum('berat'); - - //query kadar upah baru - $kadar_raw = KadarUpah::where('min','<=',$total_nilai_marhun)->where('max','>=',$total_nilai_marhun)->where('group_id',$cawangan['group_id'])->first(); - - - // query kadar upah lama - // $kadar_raw = KadarUpah::where('min','<=',$total_nilai_marhun)->where('max','>=',$total_nilai_marhun)->first(); - - $onepercentservices = new OnePercentServices(); - $keuntungan = $onepercentservices->kiraanKeuntunganSebenar($request->pinjaman,$total_nilai_marhun,$kadar_raw['kadarujrah'],$margin_pinjam); - // $upah1 = $request->pinjaman * ($kadar_raw['kadarupdah']/100); - // $upah6 = $upah1 * 6; - // $upah12 = $upah1 * 12; - $upah1 = $keuntungan['keuntungan']; - $upah6 = $upah1 * 6; - $upah12 = $upah1 * 12; - $ujrah = $keuntungan['ujrah']; - $onepercent = $keuntungan['onepercent']; - - $hargajualan = $request->pinjaman + $upah12; - - $gadai = Gadai::on($cawangan['mysql']) - ->where('norujukan','=',$norujukan) - ->update(array( - 'nilaimarhun' => $total_nilai_marhun, - 'berat'=> $total_berat, - 'pinjaman' => $request->pinjaman, - 'kadarupah' => $kadar_raw['kadarujrah'], - 'marhun' => $request->marhun, - 'percentpinj' => $margin_pinjam, - 'teller' => $request->teller, - 'bakipjm' => $request->pinjaman, - 'bakiupah' => $upah6, - 'jbg' => 0.5, - 't_update' => $current->toDateString(), - 'cetak' => 0, - 'upah12' => $upah12, - 'hargajualan' => $hargajualan, - 'bakihargajualan' => $hargajualan, - 'tagserah' => 0, - 't_matang' => $t_matang, - 't_matang1' => $t_kontrak, - 'tempoh' => 0.5, - 'kuantiti' => $bil_marhun, - 'tagkomuditi' => 0, - 'upahdibayar' => 0.00, - 'tempohbayar' => 0.00, - 'lelong_tawarruq' => 1, - 'kadarujrah' => $kadar_raw['kadarujrah'], - 'ujrah' => $ujrah, - 'onepercent' => $onepercent, - 'margin_semasa' => $margin_pinjam, - 'tagbaru' => 1 - )); - - $new_data = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->first(); - - $audit = new Audit(); - $audit->users = $request->teller; - $audit->actions = $request->transaction; - $audit->norujukan = $norujukan; - $audit->new_data = $new_data; - if($request->transaction == 'Ubah Gadai'){ - $audit->old_data = $old_data; - } - $audit->kodcaw = $request->kodcaw; - $audit->created_at = $current; - $audit->updated_at = $current; - $audit->save(); - - return response()->json($gadai, 200); + return response()->json($response, 200); } public function getTransactionByTarikh($kodcaw,$tarikh){ @@ -325,7 +214,7 @@ class GadaiController extends Controller $gadai_transaction = Gadai::on($cawangan['mysql'])->where('t_gadai','=',$tarikh)->get(); - return response()->json($gadai); + return response()->json($gadai_transaction); } public function checkNorujukan(Request $request){ @@ -345,68 +234,17 @@ class GadaiController extends Controller } public function kiraupahTawarruq($kodcaw,$norujukan){ - $onepercentservices = new OnePercentServices(); + $master = new MasterServices($kodcaw); + $response = $master->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']; - - $upah = $onepercentservices->kiraanKeuntunganSebenar($gadai_data['pinjaman'],$gadai_data['nilaimarhun'],$gadai_data['kadarupah'],$gadai_data['percentpinj']); - // $upahsemasa_raw = $bilang_bln * (($gadai_data['kadarupah']/100 )* $gadai_data['pinjaman']); - $upahsemasa_raw = $bilang_bln * $upah['keuntungan']; - - // $upah_semasa = round($upahsemasa_raw,PHP_ROUND_HALF_UP); - $upah_semasa_round = number_format($upahsemasa_raw,2); - $upah_semasa = substr($upah_semasa_round, 0, -1); - // $upah_semasa = floatval(preg_replace('/[^\d.]/', '', $upah_semasa)); - if(strpos($upah_semasa,',')){ - $upah_semasa = str_replace(',','',$upah_semasa); - } - return $upah_semasa; + return $response; } public function kiraUpahRebet($kodcaw,$norujukan){ - $onepercentservices = new OnePercentServices(); + $master = new MasterServices($kodcaw); + $response = $master->kiraUpahRebet($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']; - - $upah = $onepercentservices->kiraanKeuntunganRebet($gadai_data['bakipjm'],$gadai_data['nilaimarhun'],$gadai_data['kadarupah'],$gadai_data['margin_semasa']); - - // $upahrebet_raw = $bilang_bln * (($gadai_data['kadarupah']/100 )* $gadai_data['bakipjm']); - $upahrebet_raw = $bilang_bln * $upah['keuntungan']; - - // $upah_rebet_round = number_format($upahrebet_raw,2); - // $upah_rebet = substr($upah_rebet_round, 0, -1); - // if(strpos($upah_rebet,',')){ - // $upah_rebet = str_replace(',','',$upah_rebet); - // } - // $upah_rebet = floatval(preg_replace('/[^\d.]/', '', $upah_rebet)); - - return $upahrebet_raw; + return $response; } public function updateGadaiMarhunOnline($kodcaw,$norujukan,Request $request){ @@ -465,126 +303,10 @@ class GadaiController extends Controller } public function updateGadaiMarhunKaunter($kodcaw,$norujukan,Request $request){ - $current = Carbon::now(); - $current = new Carbon(); + $onePercentServices = new Onepercent($request->kodcaw); + $update = $onePercentServices->updateGadaiMarhunKaunter($kodcaw,$norujukan,$request); - $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); - - $total_bayaran_prev = Transaction::on('mysql7')->where([['norujukan','=',$norujukan],['trans_type','=','A']])->sum('duit_masuk'); - - $total_bayaran_semasa = $total_bayaran_prev + $request->bayaran; - - if($total_bayaran_semasa >= $gadai['bakiupah']){ - $lelong_tawarruq = 0; - }else{ - $lelong_tawarruq = 1; - } - $onepercent = new OnePercentServices(); - - $old_data = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->first(); - - $baki_hargajualan = $gadai['bakihargajualan'] - $request->bayaran; - - $baki_bayaran = $request->bayaran - $upahsemasa; - - $baki_pinjaman = $gadai['bakipjm'] - $baki_bayaran; - - $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']); - - $onepercentasal = $gadai['pinjaman'] * (1/100); - - try { - - DB::connection('mysql7')->transaction(function () use($onepercentasal,$ujrahasal,$keuntungan,$norujukan,$gadai,$request,$kodcaw,$current,$baki_hargajualan,$upahsemasa,$baki_bayaran,$upahrebet,$cawangan,$old_data,$baki_pinjaman,$lelong_tawarruq,$margin_semasa) { - - $transaction = Transaction::on('mysql7')->create([ - 'trans_type' => 'A', - 'norujukan' => $norujukan, - 'nokp' => $gadai['nokp'], - 'teller' => $request->teller, - 'kodcaw' => $kodcaw, - 'duit_masuk' => $request->bayaran, - 'created_at' => $current, - 'bakiharga' => $baki_hargajualan, - 'nowakil' => (int)$request->nowakil, - 'duitpelanggan' => $request->duitpelanggan, - 'bakipelanggan' => $request->bakipelanggan - ]); - - if($gadai['tempoh'] >= 12.0){ - $tempoh = 12; - }else{ - $tempoh = $gadai['tempoh']; - } - $bilang_bln = $tempoh - $gadai['tempohbayar']; - - $rounded = $upahsemasa - (($keuntungan['ujrah'] * $bilang_bln) + ($onepercentasal * $bilang_bln)); - - $transaction_upah = TransaksiKeuntungan::on('mysql7')->create([ - 'norujukan' => $norujukan, - 'bayaran_keuntungan' => $upahsemasa, - 'bayaran_pembiayaan' => $baki_bayaran, - 'keuntungan_rebet'=> $upahrebet, - 'tarikh_bayaran'=> $current, - 'kodcaw'=> $kodcaw, - 'ujrah' => ($keuntungan['ujrah'] * $bilang_bln), - 'ujrah_rebet' => ($ujrahasal*$bilang_bln), - 'onepercent' => ($onepercentasal * $bilang_bln), - 'onepercent_rebet' => ($keuntungan['onepercent'] * $bilang_bln), - '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){ - - $margin_updated = ($baki_pinjaman / $gadai['nilaimarhun']) * 100; - - $update_gadai = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(array( - 'bakipjm' => $baki_pinjaman, - 'jbg' => 0, - 't_update' => $current->toDateString(), - 'bakihargajualan' => $baki_hargajualan, - 'tempohbayar' => $gadai['tempoh'], - 'lelong_tawarruq' => $lelong_tawarruq, - 'margin_semasa' => $margin_updated, - )); - }); - - $new_data = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->first(); - - $audit = new Audit(); - $audit->users = $request->teller; - $audit->actions = 'Bayaran Ansuran'; - $audit->norujukan = $norujukan; - $audit->new_data = $new_data; - $audit->old_data = $old_data; - $audit->kodcaw = $kodcaw; - $audit->created_at = $current; - $audit->updated_at = $current; - $audit->save(); - - if(!$transaction || !$transaction_upah) { - throw new \Exception('One of the database operations failed.'); - } - - DB::commit(); - - }); - }catch(\Exception $e){ - Log::error("Transaction failed: " . $e->getMessage()); - return response()->json("Transaction failed: " . $e->getMessage(),500); - } - - return response()->json("success",200); + return $update; } public function getGadaianSemasa($kodcaw){ @@ -3871,21 +3593,15 @@ class GadaiController extends Controller } public function getKadarUjrah(Request $request){ - $cawangan = Cawangan::on('mysql7')->where('kodcaw',$request->kodcaw)->first(); - $onePercentServices = new OnePercentServices(); - - $kadarujrah = $onePercentServices->getKadarUjrah($request->nilaimarhun,$cawangan['group_id']); - - // $test = $this->kiraupahTawarruq('KB2','KB2231109-0001'); - // dd($test); + $onePercentServices = new Onepercent($request->kodcaw); + $kadarujrah = $onePercentServices->getKadarUjrah($request); + return $kadarujrah; } public function getOnePercent(Request $request){ - - $onePercentServices = new OnePercentServices(); - - $keuntungan = $onePercentServices->kiraanKeuntunganSebenar($request->pembiayaan,$request->nilaimarhun,$request->kadarujrah,$request->margin); + $onePercentServices = new Onepercent($request->kodcaw); + $keuntungan = $onePercentServices->getOnePercent($request); return $keuntungan; } diff --git a/app/Http/Controllers/TebusController.php b/app/Http/Controllers/TebusController.php index c031f56..e93f393 100644 --- a/app/Http/Controllers/TebusController.php +++ b/app/Http/Controllers/TebusController.php @@ -36,7 +36,7 @@ use App\StokAudit11; use App\StokAudit12; use App\AkruNet; -use App\Services\OnePercentServices; +use App\Services\MasterServices; use Illuminate\Http\Request; use Illuminate\Support\Facades\Log; @@ -46,247 +46,73 @@ use Carbon\Carbon; class TebusController extends Controller { public function tebusTawarruq($kodcaw,$norujukan){ - $cawangan = Cawangan::on('mysql7') - ->where('kodcaw','=',$kodcaw) - ->first(); + $master = new MasterServices($kodcaw); + $response = $master->tebusTawarruq($kodcaw,$norujukan); - $gadai_data = Gadai::on($cawangan['mysql']) - ->where('norujukan','=',$norujukan) - ->first(); - - $jeniskeuntungan = ($gadai_data['tagbaru'] == 1) ? 'onepercent' : 'asal'; - - $rebet = $this->rebetselepastawarruq($kodcaw,$norujukan,$jeniskeuntungan); - $harga_tebus = $gadai_data['bakihargajualan'] - $rebet; - - // $hargatebus = round($harga_tebus,PHP_ROUND_HALF_UP); - $hargatebus = bcdiv(round($harga_tebus,2),1,1); - $hargatebus = number_format($hargatebus,2); - if(strpos($hargatebus,',')){ - $hargatebus = str_replace(',','',$hargatebus); - } - return response()->json($hargatebus); + return $response; } public function hargaTebusTawarruq($kodcaw,$norujukan,$jeniskeuntungan){ - $cawangan = Cawangan::on('mysql7') - ->where('kodcaw','=',$kodcaw) - ->first(); + $master = new MasterServices($kodcaw); + $response = $master->hargaTebusTawarruq($kodcaw,$norujukan); - $gadai_data = Gadai::on($cawangan['mysql']) - ->where('norujukan','=',$norujukan) - ->first(); - - $rebet = $this->rebetselepastawarruq($kodcaw,$norujukan,$jeniskeuntungan); - - $harga_tebus = $gadai_data['bakihargajualan'] - $rebet; - - // $hargatebus = round($harga_tebus,PHP_ROUND_HALF_UP); - $hargatebus = bcdiv(round($harga_tebus,2),1,1); - $hargatebus = number_format($hargatebus,2); - if(strpos($hargatebus,',')){ - $hargatebus = str_replace(',','',$hargatebus); - } - - $rounded = $hargatebus - $harga_tebus; - Log::info([$harga_tebus,$rebet]); - $arrayharga = ['harga' => $hargatebus, 'rounded' => $rounded]; - - return $arrayharga; + return $response; } public function kiraupahTawarruq($kodcaw,$norujukan,$jeniskeuntungan){ - $onepercentservices = new OnePercentServices(); - - $cawangan = Cawangan::on('mysql7') - ->where('kodcaw','=',$kodcaw) - ->first(); + $master = new MasterServices($kodcaw); + $response = $master->kiraUpahTawarruq($kodcaw,$norujukan,$jeniskeuntungan); - $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']; - - if($jeniskeuntungan == 'onepercent'){ - $upah = $onepercentservices->kiraanKeuntunganSebenar($gadai_data['pinjaman'],$gadai_data['nilaimarhun'],$gadai_data['kadarupah'],$gadai_data['percentpinj']); - $upahsemasa_raw = $bilang_bln * $upah['keuntungan']; - }else{ - $upahsemasa_raw = $bilang_bln * (($gadai_data['kadarupah']/100 )* $gadai_data['pinjaman']); - } - - // $upah_semasa = round($upahsemasa_raw,PHP_ROUND_HALF_UP); - $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; + return $response; } public function kiraUpahRebet($kodcaw,$norujukan,$jeniskeuntungan){ - $onepercentservices = new OnePercentServices(); - - $cawangan = Cawangan::on('mysql7') - ->where('kodcaw','=',$kodcaw) - ->first(); + $master = new MasterServices($kodcaw); + $response = $master->kiraupahRebet($kodcaw,$norujukan,$jeniskeuntungan); - $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']; - - if($jeniskeuntungan == 'onepercent'){ - $upah = $onepercentservices->kiraanKeuntunganRebet($gadai_data['bakipjm'],$gadai_data['nilaimarhun'],$gadai_data['kadarupah'],$gadai_data['margin_semasa']); - $upahrebet_raw = $bilang_bln * $upah['keuntungan']; - }else{ - $upahrebet_raw = $bilang_bln * (($gadai_data['kadarupah']/100 )* $gadai_data['bakipjm']); - } - - // $upah_rebet = round($upahrebet_raw ,PHP_ROUND_HALF_UP); - // $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 $upahrebet_raw; + return $response; } public function kiraUpahRebetSebenar($kodcaw,$norujukan){ - $cawangan = Cawangan::on('mysql7') - ->where('kodcaw','=',$kodcaw) - ->first(); + $master = new MasterServices($kodcaw); + $response = $master->kiraUpahRebetSebenar($kodcaw,$norujukan); - $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 = $gadai_data['tempoh'] - $gadai_data['tempohbayar']; - - $upahrebet_raw = $bilang_bln * (($gadai_data['kadarupah']/100 )* $gadai_data['bakipjm']); - - // $upah_rebet = round($upahrebet_raw,PHP_ROUND_HALF_UP); - $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); - } - - $total_untung_rebet = TransaksiKeuntungan::on('mysql7')->where('norujukan','=',$norujukan)->sum('keuntungan_rebet'); - $total_untung_asal = TransaksiKeuntungan::on('mysql7')->where('norujukan','=',$norujukan)->sum('bayaran_keuntungan'); - $beza_keuntungan = $total_untung_asal - $total_untung_rebet; - - $keuntungan_rebet_sebenar = $upah_rebet - $beza_keuntungan; - return $keuntungan_rebet_sebenar; + return $response; } public function upahTawarruq($kodcaw,$norujukan,$jeniskeuntungan){ + $master = new MasterServices($kodcaw); + $response = $master->upahTawarruq($kodcaw,$norujukan,$jeniskeuntungan); - $upah_semasa = $this->kiraupahTawarruq($kodcaw,$norujukan,$jeniskeuntungan); - - return response()->json(number_format($upah_semasa,2)); + return $response; } public function upahRebetTawarruq($kodcaw,$norujukan,$jeniskeuntungan){ + $master = new MasterServices($kodcaw); + $response = $master->upahRebetTawarruq($kodcaw,$norujukan,$jeniskeuntungan); - $upah_rebet = $this->kiraUpahRebet($kodcaw,$norujukan,$jeniskeuntungan); - - return response()->json(number_format($upah_rebet,2)); + return $response; } public function tebusSeparuhTawarruq($kodcaw,$norujukan,Request $request){ + $master = new MasterServices($kodcaw); + $response = $master->tebusSeparuhTawarruq($kodcaw,$norujukan,$request); - $cawangan = Cawangan::on('mysql7') - ->where('kodcaw','=',$kodcaw) - ->first(); - - $gadai_data = Gadai::on($cawangan['mysql']) - ->where('norujukan','=',$norujukan) - ->first(); - - $upahsemasa = $this->kiraupahTawarruq($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(); - - $harga_tebus = ($margin_pembiayaan/100)*$marhun['n_marhun']; - - $total_harga_tebus += $harga_tebus; - } - - $total_harga_tebus_round = round($total_harga_tebus,2); - - $totalhargatebus = substr($total_harga_tebus_round, 0, -1); - - return response()->json($totalhargatebus); + return $response; } public function tebusNotTawarruq($kodcaw,$norujukan){ - $cawangan = Cawangan::on('mysql7') - ->where('kodcaw','=',$kodcaw) - ->first(); + $master = new MasterServices($kodcaw); + $response = $master->tebusNotTawarruq($kodcaw,$norujukan); - $gadai_data = Gadai::on($cawangan['mysql']) - ->where('norujukan','=',$norujukan) - ->first(); - - $upah_semasa = $this->kiraUpahNotTawarruq($kodcaw,$norujukan); - - $harga_tebus = $upah_semasa + $gadai_data['pinjaman']; - - return response()->json($harga_tebus); + return $response; } public function hargaTebusNotTawarruq($kodcaw,$norujukan){ - $cawangan = Cawangan::on('mysql7') - ->where('kodcaw','=',$kodcaw) - ->first(); + $master = new MasterServices($kodcaw); + $response = $master->hargaTebusNotTawarruq($kodcaw,$norujukan); - $gadai_data = Gadai::on($cawangan['mysql']) - ->where('norujukan','=',$norujukan) - ->first(); - - $upah_semasa = $this->kiraUpahNotTawarruq($kodcaw,$norujukan); - - $harga_tebus = $upah_semasa + $gadai_data['pinjaman']; - - return $harga_tebus; + return $response; } public function getMoratorium(){ @@ -300,424 +126,52 @@ class TebusController extends Controller } public function kiraUpahNotTawarruq($kodcaw,$norujukan){ - $cawangan = Cawangan::on('mysql7') - ->where('kodcaw','=',$kodcaw) - ->first(); + $master = new MasterServices($kodcaw); + $response = $master->kiraUpahNotTawarruq($kodcaw,$norujukan); - $gadai_data = Gadai::on($cawangan['mysql']) - ->where('norujukan','=',$norujukan) - ->first(); - - $upahtelahbayar = Advansur::on($cawangan['mysql']) - ->where('norujukan','=',$norujukan) - ->sum('upahdibayar'); - - $upah_asal = $gadai_data['nilaimarhun'] / 100 * $gadai_data['kadarupah']; - $margin_pinjaman = $gadai_data['pinjaman'] / $gadai_data['nilaimarhun'] * 100; - $margin_kadarupah = 80; - $rebet = ($margin_kadarupah-$margin_pinjaman)/$margin_kadarupah * $upah_asal; - - $bln_mora = Moratorium::first(); - - $upah_sebenar = $upah_asal - $rebet; - $bln_upah = $gadai_data['tempoh']; - if($bln_upah > $bln_mora['bln_mora']){ - $bln_upah = $bln_mora['bln_mora']; - } - $upahsemasa = $upah_sebenar * $bln_upah; - $upah_semasa = bcdiv(round($upahsemasa,2),1,1); - $upah_semasa = number_format($upah_semasa,2); - if(strpos($upah_semasa,',')){ - $upah_semasa = str_replace(',','',$upah_semasa); - } - $upah_semasa = (float)$upah_semasa - $upahtelahbayar; - - if($upah_semasa <= 0){ - $upah_semasa = 0; - } - - return $upah_semasa; + return $response; } public function upahNotTawarruq($kodcaw,$norujukan){ - $cawangan = Cawangan::on('mysql7') - ->where('kodcaw','=',$kodcaw) - ->first(); + $master = new MasterServices($kodcaw); + $response = $master->upahNotTawarruq($kodcaw,$norujukan); - $gadai_data = Gadai::on($cawangan['mysql']) - ->where('norujukan','=',$norujukan) - ->first(); - - $upahtelahbayar = Advansur::on($cawangan['mysql']) - ->where('norujukan','=',$norujukan) - ->sum('upahdibayar'); - - $upah_asal = $gadai_data['nilaimarhun'] / 100 * $gadai_data['kadarupah']; - $margin_pinjaman = $gadai_data['pinjaman'] / $gadai_data['nilaimarhun'] * 100; - $margin_kadarupah = 80; - $rebet = ($margin_kadarupah-$margin_pinjaman)/$margin_kadarupah * $upah_asal; - - $bln_mora = Moratorium::first(); - - $upah_sebenar = $upah_asal - $rebet; - $bln_upah = $gadai_data['tempoh']; - if($bln_upah > $bln_mora['bln_mora']){ - $bln_upah = $bln_mora['bln_mora']; - } - $upahsemasa = $upah_sebenar * $bln_upah; - $upah_semasa = bcdiv(round($upahsemasa,2),1,1); - $upah_semasa = number_format($upah_semasa,2); - if(strpos($upah_semasa,',')){ - $upah_semasa = str_replace(',','',$upah_semasa); - } - $upah_semasa = (float)$upah_semasa - $upahtelahbayar; - - if($upah_semasa <= 0){ - $upah_semasa = 0; - } - - return response()->json($upah_semasa); + return $response; } public function tebusSeparuhNotTawarruq($kodcaw,$norujukan,Request $request){ - $cawangan = Cawangan::on('mysql7') - ->where('kodcaw','=',$kodcaw) - ->first(); + $master = new MasterServices($kodcaw); + $response = $master->tebusSeparuhNotTawarruq($kodcaw,$norujukan,$request); - $gadai_data = Gadai::on($cawangan['mysql']) - ->where('norujukan','=',$norujukan) - ->first(); - - $upah_asal = $gadai_data['nilaimarhun'] / 100 * $gadai_data['kadarupah']; - $margin_pinjaman = $gadai_data['pinjaman'] / $gadai_data['nilaimarhun'] * 100; - $margin_kadarupah = 80; - $rebet = ($margin_kadarupah-$margin_pinjaman)/$margin_kadarupah * $upah_asal; - - $upah_sebenar = $upah_asal - $rebet; - - $upah_semasa = bcdiv(round($upah_sebenar * $gadai_data['jbg'],2),1,1); - $upah_semasa = (float)number_format($upah_semasa,2); - - $array_recno_marhun = $request->array_recno; - - $margin_pembiayaan = round(($gadai_data['pinjaman']/$gadai_data['nilaimarhun'])*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(); - - $harga_tebus = ($margin_pembiayaan/100)*$marhun['n_marhun']; - - $total_harga_tebus += $harga_tebus; - } - - // $total_harga_tebus += $upah_semasa; - - return response()->json($total_harga_tebus); + return $response; } function rebet($kodcaw,$norujukan){ - $cawangan = Cawangan::on('mysql7') - ->where('kodcaw','=',$kodcaw) - ->first(); + $master = new MasterServices($kodcaw); + $response = $master->rebet($kodcaw,$norujukan); - $gadai_data = Gadai::on($cawangan['mysql']) - ->where('norujukan','=',$norujukan) - ->first(); - - $upah_asal = $gadai_data['nilaimarhun'] / 100 * $gadai_data['kadarupah']; - $margin_pinjaman = $gadai_data['pinjaman'] / $gadai_data['nilaimarhun'] * 100; - $margin_kadarupah = 80; - - $rebet = ($margin_kadarupah-$margin_pinjaman)/$margin_kadarupah * $upah_asal; - - return floatval(number_format($rebet,2)); + return $response; } function rebetselepastawarruq($kodcaw,$norujukan,$jeniskeuntungan){ - $cawangan = Cawangan::on('mysql7') - ->where('kodcaw','=',$kodcaw) - ->first(); + $master = new MasterServices($kodcaw); + $response = $master->rebetselepastawarruq($kodcaw,$norujukan); - $gadai_data = Gadai::on($cawangan['mysql']) - ->where('norujukan','=',$norujukan) - ->first(); - - $transaction_keuntungan = TransaksiKeuntungan::on('mysql7') - ->where('norujukan','=',$norujukan) - ->sum('keuntungan_rebet'); - - $upah_rebet = $this->kiraUpahRebet($kodcaw,$norujukan,$jeniskeuntungan); - - $rebet_raw =$gadai_data['upah12'] - $transaction_keuntungan - $upah_rebet; - // dd($gadai_data['upah12'],$transaction_keuntungan,$upah_rebet,$jeniskeuntungan,$rebet_raw); - // $rebet_round = bcdiv(round($rebet_raw,2),1,1); - // $rebet_round = number_format($rebet_round,2); - - // if(strpos($rebet_round,',')){ - // $rebet_round = str_replace(',','',$rebet_round); - // } - // $rebet = substr($rebet_round, 0, -1); - - return $rebet_raw; + return $response; } public function tebusUpdate($kodcaw,$norujukan,Request $request){ - $current = Carbon::now(); - $current = new Carbon(); + $master = new MasterServices($kodcaw); + $response = $master->tebusUpdate($kodcaw,$norujukan,$request); - $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); - - if($request->jenisbayarantebus == "tawarruq"){ - $rebet = $this->rebetselepastawarruq($kodcaw,$norujukan,$request->jeniskeuntungan); - } - else if($request->jenisbayarantebus == "nottawarruq") - { - $rebet = $this->rebet($kodcaw,$norujukan); - } - else{ - $rebet = 0; - } - - $gadai = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->first(); - - $ujrah=0;$onepercent=0;$rounded=0; - if($gadai['hargajualan'] == null){ - $harga_tebus = $this->hargaTebusNotTawarruq($kodcaw,$norujukan); - $upah_tebus = $this->kiraUpahNotTawarruq($kodcaw,$norujukan); - $upah_rebet = 0; - $upah_rebet_sebenar = 0; - }else{ - $harga_tebus = $this->hargaTebusTawarruq($kodcaw,$norujukan,$request->jeniskeuntungan); - $upah_tebus = $this->kiraupahTawarruq($kodcaw,$norujukan,$request->jeniskeuntungan); - $upah_rebet = $this->kiraUpahRebetSebenar($kodcaw,$norujukan); - $upah_rebet_sebenar = $harga_tebus['harga'] - $gadai['bakipjm']; - - if($request->jeniskeuntungan == 'onepercent'){ - $array_onepercent = $this->kiraupahUjrahOnePercent($kodcaw,$norujukan); - $array_onepercent_rebet = $this->kiraupahUjrahOnePercentRebate($kodcaw,$norujukan); - $margin_semasa = ($gadai['bakipjm']/$gadai['nilaimarhun']) * 100; - $ujrah = $array_onepercent['ujrah']; - $onepercent = $array_onepercent['onepercent']; - } - } - - - $create_tebus = Tebus::on($cawangan['mysql'])->create([ - 'kodcaw'=> $kodcaw, - 'norujukan'=> $norujukan, - 'nopelanggan' => $request->nopelanggan, - 'jenisbyr' => "TN", - 'jenistebus' => $request->jenistebus, - 'glcode' => "0", - 't_tebus' => $current->toDateString(), - 'jbg' => $gadai['tempoh'], - 'kadarupah' => $gadai['kadarupah'], - 'nilaimarhun' => $gadai['nilaimarhun'], - 'pinjaman' => $gadai['pinjaman'], - 'ansuran' => 0.00, - 'addpinjaman' => $request->addpinjaman, - 'bakipjm' => $harga_tebus['harga'], - 'bakiupah' => $upah_tebus, - 'terima' => "*", - 'kodgl' => "0", - 'nowakil' => $request->nowakil, - 'rebate' => $rebet, - 'marhuntebus' => $request->marhun, - 'historygadaian' => $norujukan, - 'tarikhbyrn' => $current->toDateString(), - 'teller' => $request->teller, - 'ujrah' => $ujrah, - 'onepercent' => $onepercent, - ]); - - $create_inoutmar = InOutMar::on($cawangan['mysql'])->create([ - 'tarikh' => $current->toDateString(), - 'masa' => $current->toTimeString(), - 'norujukan' => $norujukan, - 'nm' => $request->nilai_marhun, - 'pkd' => $request->teller, - 'drp' => $request->teller, - 'bln' => $current->month, - 'thn' => $current->year, - 'tag' => 0, - 'jenistebus' => $request->jenistebus, - 'namateller' => $request->teller - ]); - - $transaction_upah = TransaksiKeuntungan::on('mysql7')->create([ - 'norujukan' => $norujukan, - 'bayaran_keuntungan' => $upah_tebus, - 'bayaran_pembiayaan' => $gadai['bakipjm'], - 'keuntungan_rebet' => $upah_rebet_sebenar, - 'tarikh_bayaran'=> $current, - 'kodcaw'=> $kodcaw, - 'ujrah' => ($request->jeniskeuntungan == 'onepercent') ? $array_onepercent['ujrah'] : 0, - 'ujrah_rebet' => ($request->jeniskeuntungan == 'onepercent') ? $array_onepercent_rebet['ujrah'] : 0, - 'onepercent' => ($request->jeniskeuntungan == 'onepercent') ? $array_onepercent['onepercent'] : 0, - 'onepercent_rebet' => ($request->jeniskeuntungan == 'onepercent') ? $array_onepercent_rebet['onepercent'] : 0, - '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'){ - $baki_hargajualan = $gadai['bakihargajualan'] - $request->bakiupah; - $transaction = Transaction::on('mysql7')->create([ - 'trans_type' => $request->jenistebus, - 'norujukan' => $norujukan, - 'nokp' => $gadai['nokp'], - 'teller' => $request->teller, - 'kodcaw' => $kodcaw, - 'duit_masuk' => $request->bakiupah, - 'created_at' => $current, - 'bakiharga' => $baki_hargajualan, - ]); - }else{ - $baki_hargajualan = $gadai['bakihargajualan'] - $request->bakipinjaman; - $transaction = Transaction::on('mysql7')->create([ - 'trans_type' => $request->jenistebus, - 'norujukan' => $norujukan, - 'nokp' => $gadai['nokp'], - 'teller' => $request->teller, - 'kodcaw' => $kodcaw, - 'duit_masuk' => $harga_tebus['harga'], - 'created_at' => $current, - 'bakiharga' => $baki_hargajualan, - 'nowakil' => (int)$request->nowakil, - 'duitpelanggan' => isset($request->duitpelanggan) ? $request->duitpelanggan : 0, - 'bakipelanggan' => $request->bakipelanggan - ]); - } - - $update_gadai = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(array( - 'sttebus' => "T", - 't_update' => $current->toDateString(), - )); - - $audit = new Audit(); - $audit->users = $request->teller; - if($request->jenistebus == 'P'){ - $audit->actions = "Tambah Pembiayaan"; - }else if($request->jenistebus == 'S'){ - $audit->actions = "Tebus Separuh"; - }else if($request->jenistebus == 'T'){ - $audit->actions = "Tebus Penuh"; - } - $audit->norujukan = $norujukan; - $audit->new_data = $create_tebus; - $audit->kodcaw = $kodcaw; - $audit->created_at = $current; - $audit->updated_at = $current; - $audit->save(); - - return response()->json($update_gadai, 201); + return $response; } public function tebusUpdateAutoTawarruq($kodcaw,$norujukan,Request $request){ - $current = Carbon::now(); - $current = new Carbon(); + $master = new MasterServices($kodcaw); + $response = $master->tebusUpdateAutoTawarruq($kodcaw,$norujukan,$request); - $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); - - if($request->jenisbayarantebus == "tawarruq") - { - $rebet = $this->rebetselepastawarruq($kodcaw,$norujukan,$request->jeniskeuntungan); - } - else if($request->jenisbayarantebus == "nottawarruq") - { - $rebet = $this->rebet($kodcaw,$norujukan); - } - else{ - $rebet = 0; - } - - $gadai = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->first(); - - $update_gadai = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(array( - 'sttebus' => "T", - 't_update' => $current->toDateString(), - )); - - $upah_rebet = $this->kiraUpahRebet($kodcaw,$norujukan,$request->jeniskeuntungan); - - $create_tebus = Tebus::on($cawangan['mysql'])->create([ - 'kodcaw'=> $kodcaw, - 'norujukan'=> $norujukan, - 'nopelanggan' => $request->nopelanggan, - 'jenisbyr' => "TN", - 'jenistebus' => $request->jenistebus, - 'glcode' => "0", - 't_tebus' => $current->toDateString(), - 'jbg' => $request->jbg, - 'kadarupah' => $request->kadarupah, - 'nilaimarhun' => $request->nilai_marhun, - 'pinjaman' => $request->pinjaman, - 'ansuran' => $request->ansuran, - 'addpinjaman' => $request->addpinjaman, - 'bakipjm' => $request->bakipinjaman, - 'bakiupah' => $request->bakiupah, - 'terima' => "*", - 'kodgl' => "0", - 'nowakil' => $request->nowakil, - 'rebate' => $rebet, - 'marhuntebus' => $request->marhun, - 'historygadaian' => $request->historygadaian, - 'tarikhbyrn' => $current->toDateString(), - 'teller' => $request->teller - ]); - - $create_inoutmar = InOutMar::on($cawangan['mysql'])->create([ - 'tarikh' => $current->toDateString(), - 'masa' => $current->toTimeString(), - 'norujukan' => $norujukan, - 'nm' => $request->nilai_marhun, - 'pkd' => $request->teller, - 'drp' => $request->teller, - 'bln' => $current->month, - 'thn' => $current->year, - 'tag' => 0, - 'jenistebus' => $request->jenistebus, - 'namateller' => $request->teller - ]); - - $bayaran_pembiayaan = $request->totalbayaran - $request->bakiupah; - - $transaction_upah = TransaksiKeuntungan::on('mysql7')->create([ - 'norujukan' => $norujukan, - 'bayaran_keuntungan' => $request->bakiupah, - 'bayaran_pembiayaan' => $bayaran_pembiayaan, - 'keuntungan_rebet' => 0, - 'tarikh_bayaran'=> $current, - 'kodcaw'=> $kodcaw - ]); - - $transaction = Transaction::on('mysql7')->create([ - 'trans_type' => $request->jenistebus, - 'norujukan' => $norujukan, - 'nokp' => $gadai['nokp'], - 'teller' => $request->teller, - 'kodcaw' => $kodcaw, - 'duit_masuk' => $request->totalbayaran, - 'created_at' => $current, - 'bakiharga' => 0, - 'duitpelanggan' => $request->bayaranpelanggan, - 'bakipelanggan' => $request->bakipelanggan - ]); - - $audit = new Audit(); - $audit->users = $request->teller; - $audit->actions = "Auto Tawarruq"; - $audit->norujukan = $norujukan; - $audit->new_data = $create_tebus; - $audit->kodcaw = $kodcaw; - $audit->created_at = $current; - $audit->updated_at = $current; - $audit->save(); - - return response()->json($update_gadai, 201); + return $response; } public function getLaporanTebus($kodcaw,$tarikh){ @@ -2103,7 +1557,7 @@ class TebusController extends Controller return response(0); } - public function removeUpahLamaToday($kodcaw,$norujukan) + public function removeUpahLamaToday($kodcaw,$norujukan,Request $request) { $current = Carbon::now(); $current = new Carbon(); @@ -2383,95 +1837,17 @@ class TebusController extends Controller } public function kiraupahUjrahOnePercent($kodcaw,$norujukan){ - $onepercentservices = new OnePercentServices(); - - $cawangan = Cawangan::on('mysql7') - ->where('kodcaw','=',$kodcaw) - ->first(); + $master = new MasterServices($kodcaw); + $response = $master->kiraupahUjrahOnePercent($kodcaw,$norujukan); - $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']; - $array_upah = $onepercentservices->kiraanKeuntunganSebenar($gadai_data['pinjaman'],$gadai_data['nilaimarhun'],$gadai_data['kadarupah'],$gadai_data['percentpinj']); - $ujrah = $bilang_bln * $array_upah['ujrah']; - $onepercent = $bilang_bln * $array_upah['onepercent']; - $onepercent_semasa = $onepercent; - $ujrah_semasa = $ujrah; - - // $ujrah_semasa_round = number_format($ujrah,2); - // if(strpos($ujrah_semasa_round,',')){ - // $ujrah_semasa_round = str_replace(',','',$ujrah_semasa_round); - // } - // $ujrah_semasa = substr($ujrah_semasa_round, 0, -1); - // if(strpos($ujrah_semasa,',')){ - // $ujrah_semasa = str_replace(',','',$ujrah_semasa); - // } - - // $onepercent_semasa_round = number_format($onepercent,2); - // if(strpos($onepercent_semasa_round,',')){ - // $onepercent_semasa_round = str_replace(',','',$onepercent_semasa_round); - // } - // $onepercent_semasa = substr($onepercent_semasa_round, 0, -1); - // if(strpos($onepercent_semasa,',')){ - // $onepercent_semasa = str_replace(',','',$onepercent_semasa); - // } - - return ['ujrah' => $ujrah_semasa, 'onepercent' => $onepercent_semasa]; + return $response; } public function kiraupahUjrahOnePercentRebate($kodcaw,$norujukan){ - $onepercentservices = new OnePercentServices(); - - $cawangan = Cawangan::on('mysql7') - ->where('kodcaw','=',$kodcaw) - ->first(); + $master = new MasterServices($kodcaw); + $response = $master->kiraupahUjrahOnePercentRebate($kodcaw,$norujukan); - $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']; - $array_upah = $onepercentservices->kiraanKeuntunganRebet($gadai_data['bakipjm'],$gadai_data['nilaimarhun'],$gadai_data['kadarupah'],$gadai_data['margin_semasa']); - $ujrah = $bilang_bln * $array_upah['ujrah']; - $onepercent = $bilang_bln * $array_upah['onepercent']; - - $ujrah_semasa = $ujrah; - // $ujrah_semasa = round($ujrah,PHP_ROUND_HALF_UP); - // $ujrah_semasa_round = number_format($ujrah,2); - // if(strpos($ujrah_semasa_round,',')){ - // $ujrah_semasa_round = str_replace(',','',$ujrah_semasa_round); - // } - // $ujrah_semasa = substr($ujrah_semasa_round, 0, -1); - // if(strpos($ujrah_semasa,',')){ - // $ujrah_semasa = str_replace(',','',$ujrah_semasa); - // } - - $onepercent_semasa = $onepercent; - // $onepercent_semasa = round($onepercent,PHP_ROUND_HALF_UP); - // $onepercent_semasa_round = number_format($onepercent,2); - // if(strpos($onepercent_semasa_round,',')){ - // $onepercent_semasa_round = str_replace(',','',$onepercent_semasa_round); - // } - // $onepercent_semasa = substr($onepercent_semasa_round, 0, -1); - // if(strpos($onepercent_semasa,',')){ - // $onepercent_semasa = str_replace(',','',$onepercent_semasa); - // } - - return ['ujrah' => $ujrah_semasa, 'onepercent' => $onepercent_semasa]; + return $response; } diff --git a/app/Services/MasterServices.php b/app/Services/MasterServices.php new file mode 100644 index 0000000..15de4a9 --- /dev/null +++ b/app/Services/MasterServices.php @@ -0,0 +1,203 @@ +cawangan = $kodcaw; + $this->cawangan_info = $this->getInfoCawangan($kodcaw); + $this->engine = $this->getEngine($kodcaw); + } + + public function getInfoCawangan(String $kodcaw): Object{ + $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); + + return $cawangan; + } + + public function getEngine(String $kodcaw){ + if ($this->cawangan_info['version'] == 'v1') { + return new TawarruqEngine($kodcaw); + + } else if ($this->cawangan_info['version'] == 'v2') { + return new OnePercentEngine($kodcaw); + } else { + return new TawarruqEngine($kodcaw); + } + } + + /* Start Gadaian */ + public function createGadai(HttpRequest $request){ + $response = $this->engine->createGadai($request); + + return $response; + } + + public function createMarhunGadai($norujukan,HttpRequest $request){ + $response = $this->engine->createMarhunGadai($norujukan,$request); + + return $response; + } + + public function kiraUpahTawarruq($kodcaw,$norujukan){ + $response = $this->engine->getUpahSebenar($norujukan); + + return $response; + } + + public function kiraUpahRebet($kodcaw,$norujukan,$jeniskeuntungan){ + if($jeniskeuntungan == 'asal'){ + $tawarruq = new TawarruqEngine($this->cawangan); + $response = $tawarruq->getUpahRebet($kodcaw,$norujukan); + + }else{ + $tawarruq = new OnePercentEngine($this->cawangan); + $response = $tawarruq->getUpahRebet($kodcaw,$norujukan); + } + + return $response; + } + + public function updateGadaiMarhunKaunter($kodcaw, $norujukan, HttpRequest $request){ + $response = $this->engine->updateGadaiMarhunKaunter($kodcaw,$norujukan,$request); + + return $response; + } + + /* End Gadaian */ + + /* Start Penebusan */ + + public function tebusTawarruq($kodcaw,$norujukan){ + $response = $this->engine->tebusTawarruq($kodcaw,$norujukan); + + return $response; + } + + public function hargaTebusTawarruq($kodcaw,$norujukan){ + $response = $this->engine->hargaTebusTawarruq($kodcaw,$norujukan); + + return $response; + } + + public function kiraUpahRebetSebenar($kodcaw,$norujukan){ + $response = $this->engine->kiraUpahRebetSebenar($kodcaw,$norujukan); + + return $response; + } + + public function upahTawarruq($kodcaw,$norujukan,$jeniskeuntungan){ + if($jeniskeuntungan == 'asal'){ + $tawarruq = new TawarruqEngine($this->cawangan); + $response = $tawarruq->upahTawarruq($kodcaw,$norujukan,$jeniskeuntungan); + + }else{ + $tawarruq = new OnePercentEngine($this->cawangan); + $response = $tawarruq->upahTawarruq($kodcaw,$norujukan,$jeniskeuntungan); + } + + return $response; + } + + public function upahRebetTawarruq($kodcaw,$norujukan,$jeniskeuntungan){ + if($jeniskeuntungan == 'asal'){ + $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; + } + + public function tebusSeparuhTawarruq($kodcaw,$norujukan,HttpRequest $request){ + $response = $this->engine->tebusSeparuhTawarruq($kodcaw,$norujukan,$request); + + return $response; + } + + public function tebusNotTawarruq($kodcaw,$norujukan){ + $response = $this->engine->tebusNotTawarruq($kodcaw,$norujukan); + + return $response; + } + + public function hargaTebusNotTawarruq($kodcaw,$norujukan){ + $response = $this->engine->hargaTebusNotTawarruq($kodcaw,$norujukan); + + return $response; + } + + public function kiraUpahNotTawarruq($kodcaw,$norujukan){ + $response = $this->engine->kiraUpahNotTawarruq($kodcaw,$norujukan); + + return $response; + } + + public function upahNotTawarruq($kodcaw,$norujukan){ + $response = $this->engine->upahNotTawarruq($kodcaw,$norujukan); + + return $response; + } + + public function tebusSeparuhNotTawarruq($kodcaw,$norujukan,HttpRequest $request){ + $response = $this->engine->tebusSeparuhNotTawarruq($kodcaw,$norujukan,$request); + + return $response; + } + + function rebet($kodcaw,$norujukan){ + $response = $this->engine->rebet($kodcaw,$norujukan); + + return $response; + } + + function rebetselepastawarruq($kodcaw,$norujukan){ + $response = $this->engine->rebetselepastawarruq($kodcaw,$norujukan); + + return $response; + } + + public function tebusUpdate($kodcaw,$norujukan,HttpRequest $request){ + $response = $this->engine->tebusUpdate($kodcaw,$norujukan,$request); + + return $response; + } + + public function tebusUpdateAutoTawarruq($kodcaw,$norujukan,HttpRequest $request){ + $response = $this->engine->tebusUpdateAutoTawarruq($kodcaw,$norujukan,$request); + + return $response; + } + + public function kiraupahUjrahOnePercent($kodcaw,$norujukan){ + $response = $this->engine->kiraupahUjrahOnePercent($kodcaw,$norujukan); + + return $response; + } + + public function kiraupahUjrahOnePercentRebate($kodcaw,$norujukan){ + $response = $this->engine->kiraupahUjrahOnePercentRebate($kodcaw,$norujukan); + + return $response; + } + + /* End Penebusan */ + + public function test(){ + $this->engine->test(); + } + +} diff --git a/app/Services/TawarruqServices.php b/app/Services/TawarruqServices.php deleted file mode 100644 index 1905df4..0000000 --- a/app/Services/TawarruqServices.php +++ /dev/null @@ -1,16 +0,0 @@ -kodcaw = $kodcaw; + $this->cawangan_info = parent::getInfoCawangan($kodcaw); + } + + /* Start Gadaian */ + public function createGadai(HttpRequest $httpRequest){ + $gadai = new Version2Gadai($this->kodcaw,$this->cawangan_info); + $response = $gadai->create($httpRequest); + + return $response; + } + + public function createMarhunGadai($norujukan,HttpRequest $httpRequest){ + $gadai = new Version2Gadai($this->kodcaw,$this->cawangan_info); + $response = $gadai->createMarhun($norujukan,$httpRequest); + + return $response; + } + + public function getUpahSebenar($norujukan){ + $gadai = new Version2Gadai($this->kodcaw,$this->cawangan_info); + $response = $gadai->kiraupahOnePercent($this->kodcaw,$norujukan); + + return $response; + } + + public function getUpahRebet($kodcaw,$norujukan){ + $gadai = new Version2Gadai($this->kodcaw,$this->cawangan_info); + $response = $gadai->kiraupahRebet($this->kodcaw,$norujukan); + + return $response; + } + + public function updateGadaiMarhunKaunter($kodcaw, $norujukan, HttpRequest $request){ + $gadai = new Version2Gadai($this->kodcaw,$this->cawangan_info); + $response = $gadai->updateAnsuranKaunter($this->kodcaw,$norujukan,$request); + + return $response; + } + + public function getKadarUjrah(HttpRequest $request){ + $cawangan = Cawangan::on('mysql7')->where('kodcaw',$request->kodcaw)->first(); + $onePercentServices = new Calculation(); + $kadarujrah = $onePercentServices->getKadarUjrah($request->nilaimarhun,$cawangan['group_id']); + + return $kadarujrah; + } + + public function getOnePercent(HttpRequest $request){ + $onePercentServices = new Calculation(); + $keuntungan = $onePercentServices->kiraanKeuntunganSebenar($request->pembiayaan,$request->nilaimarhun,$request->kadarujrah,$request->margin); + + return $keuntungan; + } + + /* End Gadaian */ + + /* Start Penebusan */ + + public function tebusTawarruq($kodcaw,$norujukan){ + $tebus = new Penebusan($this->kodcaw,$this->cawangan_info); + $response = $tebus->tebusTawarruq($this->kodcaw,$norujukan); + + return $response; + } + + public function hargaTebusTawarruq($kodcaw,$norujukan){ + $tebus = new Penebusan($this->kodcaw,$this->cawangan_info); + $response = $tebus->hargaTebusTawarruq($this->kodcaw,$norujukan); + + return $response; + } + + public function kiraUpahRebetSebenar($kodcaw,$norujukan){ + $tebus = new Penebusan($this->kodcaw,$this->cawangan_info); + $response = $tebus->kiraUpahRebetSebenar($this->kodcaw,$norujukan); + + return $response; + } + + public function upahTawarruq($kodcaw,$norujukan,$jeniskeuntungan){ + $tebus = new Penebusan($this->kodcaw,$this->cawangan_info); + $response = $tebus->upahTawarruq($this->kodcaw,$norujukan,$jeniskeuntungan); + + return $response; + } + + public function upahRebetTawarruq($kodcaw,$norujukan,$jeniskeuntungan){ + $tebus = new Penebusan($this->kodcaw,$this->cawangan_info); + $response = $tebus->upahRebetTawarruq($this->kodcaw,$norujukan,$jeniskeuntungan); + + return $response; + } + + public function tebusSeparuhTawarruq($kodcaw,$norujukan,HttpRequest $request){ + $tebus = new Penebusan($this->kodcaw,$this->cawangan_info); + $response = $tebus->tebusSeparuhTawarruq($this->kodcaw,$norujukan,$request); + + return $response; + } + + public function tebusNotTawarruq($kodcaw,$norujukan){ + $tebus = new Penebusan($this->kodcaw,$this->cawangan_info); + $response = $tebus->tebusNotTawarruq($this->kodcaw,$norujukan); + + return $response; + } + + public function hargaTebusNotTawarruq($kodcaw,$norujukan){ + $tebus = new Penebusan($this->kodcaw,$this->cawangan_info); + $response = $tebus->hargaTebusNotTawarruq($this->kodcaw,$norujukan); + + return $response; + } + + public function kiraUpahNotTawarruq($kodcaw,$norujukan){ + $tebus = new Penebusan($this->kodcaw,$this->cawangan_info); + $response = $tebus->kiraUpahNotTawarruq($this->kodcaw,$norujukan); + + return $response; + } + + public function upahNotTawarruq($kodcaw,$norujukan){ + $tebus = new Penebusan($this->kodcaw,$this->cawangan_info); + $response = $tebus->upahNotTawarruq($this->kodcaw,$norujukan); + + return $response; + } + + public function tebusSeparuhNotTawarruq($kodcaw,$norujukan,HttpRequest $request){ + $tebus = new Penebusan($this->kodcaw,$this->cawangan_info); + $response = $tebus->tebusSeparuhNotTawarruq($this->kodcaw,$norujukan,$request); + + return $response; + } + + function rebet($kodcaw,$norujukan){ + $tebus = new Penebusan($this->kodcaw,$this->cawangan_info); + $response = $tebus->rebet($this->kodcaw,$norujukan); + + return $response; + } + + function rebetselepastawarruq($kodcaw,$norujukan){ + dd('tes'); + $tebus = new Penebusan($this->kodcaw,$this->cawangan_info); + $response = $tebus->rebetselepastawarruq($this->kodcaw,$norujukan); + + return $response; + } + + public function tebusUpdate($kodcaw,$norujukan,HttpRequest $request){ + $tebus = new Penebusan($this->kodcaw,$this->cawangan_info); + $response = $tebus->tebusUpdate($this->kodcaw,$norujukan,$request); + + return $response; + } + + public function tebusUpdateAutoTawarruq($kodcaw,$norujukan,HttpRequest $request){ + $tebus = new Penebusan($this->kodcaw,$this->cawangan_info); + $response = $tebus->tebusUpdateAutoTawarruq($this->kodcaw,$norujukan,$request); + + return $response; + } + + public function kiraupahUjrahOnePercent($kodcaw,$norujukan){ + $tebus = new Penebusan($this->kodcaw,$this->cawangan_info); + $response = $tebus->kiraupahUjrahOnePercent($this->kodcaw,$norujukan); + + return $response; + } + + public function kiraupahUjrahOnePercentRebate($kodcaw,$norujukan){ + $tebus = new Penebusan($this->kodcaw,$this->cawangan_info); + $response = $tebus->kiraupahUjrahOnePercentRebate($this->kodcaw,$norujukan); + + return $response; + } + + /* End Penebusan */ + + public function test(){ + echo 'onepercent'; + } +} diff --git a/app/Support/Tawarruq.php b/app/Support/Tawarruq.php new file mode 100644 index 0000000..0e8db31 --- /dev/null +++ b/app/Support/Tawarruq.php @@ -0,0 +1,172 @@ +kodcaw = $kodcaw; + $this->cawangan_info = parent::getInfoCawangan($kodcaw); + } + + /* Start Gadaian */ + public function createGadai(HttpRequest $httpRequest){ + $gadai = new Version1Gadai($this->kodcaw,$this->cawangan_info); + $response = $gadai->create($httpRequest); + + return $response; + } + + public function createMarhunGadai($norujukan,HttpRequest $httpRequest){ + $gadai = new Version1Gadai($this->kodcaw,$this->cawangan_info); + $response = $gadai->createMarhun($norujukan,$httpRequest); + + return $response; + } + + public function updateGadaiMarhunKaunter($kodcaw, $norujukan, HttpRequest $request){ + $gadai = new Version1Gadai($this->kodcaw,$this->cawangan_info); + $response = $gadai->updateAnsuranKaunter($this->kodcaw,$norujukan,$request); + + return $response; + } + + public function getUpahSebenar($norujukan){ + $gadai = new Version1Gadai($this->kodcaw,$this->cawangan_info); + $response = $gadai->kiraupahTawarruq($norujukan); + + return $response; + } + + public function getUpahRebet($norujukan){ + $gadai = new Version1Gadai($this->kodcaw,$this->cawangan_info); + $response = $gadai->kiraupahRebet($norujukan); + + return $response; + } + + /* End Gadaian */ + + /* Start Penebusan */ + + public function tebusTawarruq($kodcaw,$norujukan){ + $tebus = new Penebusan($this->kodcaw,$this->cawangan_info); + $response = $tebus->hargaTebusTawarruq($this->kodcaw,$norujukan); + + return $response; + } + + public function hargaTebusTawarruq($kodcaw,$norujukan){ + $tebus = new Penebusan($this->kodcaw,$this->cawangan_info); + $response = $tebus->hargaTebusTawarruq($this->kodcaw,$norujukan); + + return $response; + } + + public function kiraUpahRebetSebenar($kodcaw,$norujukan){ + $tebus = new Penebusan($this->kodcaw,$this->cawangan_info); + $response = $tebus->kiraUpahRebetSebenar($this->kodcaw,$norujukan); + + return $response; + } + + public function upahTawarruq($kodcaw,$norujukan,$jeniskeuntungan){ + $tebus = new Penebusan($this->kodcaw,$this->cawangan_info); + $response = $tebus->upahTawarruq($kodcaw,$norujukan,$jeniskeuntungan); + + return $response; + } + + public function upahRebetTawarruq($kodcaw,$norujukan,$jeniskeuntungan){ + $tebus = new Penebusan($this->kodcaw,$this->cawangan_info); + $response = $tebus->upahRebetTawarruq($kodcaw,$norujukan,$jeniskeuntungan); + + return $response; + } + + public function tebusSeparuhTawarruq($kodcaw,$norujukan,HttpRequest $request){ + $tebus = new Penebusan($this->kodcaw,$this->cawangan_info); + $response = $tebus->tebusSeparuhTawarruq($this->kodcaw,$norujukan,$request); + + return $response; + } + + public function tebusNotTawarruq($kodcaw,$norujukan){ + $tebus = new Penebusan($this->kodcaw,$this->cawangan_info); + $response = $tebus->tebusNotTawarruq($this->kodcaw,$norujukan); + + return $response; + } + + public function hargaTebusNotTawarruq($kodcaw,$norujukan){ + $tebus = new Penebusan($this->kodcaw,$this->cawangan_info); + $response = $tebus->hargaTebusNotTawarruq($this->kodcaw,$norujukan); + + return $response; + } + + public function kiraUpahNotTawarruq($kodcaw,$norujukan){ + $tebus = new Penebusan($this->kodcaw,$this->cawangan_info); + $response = $tebus->kiraUpahNotTawarruq($this->kodcaw,$norujukan); + + return $response; + } + + public function upahNotTawarruq($kodcaw,$norujukan){ + $tebus = new Penebusan($this->kodcaw,$this->cawangan_info); + $response = $tebus->upahNotTawarruq($this->kodcaw,$norujukan); + + return $response; + } + + public function tebusSeparuhNotTawarruq($kodcaw,$norujukan,HttpRequest $request){ + $tebus = new Penebusan($this->kodcaw,$this->cawangan_info); + $response = $tebus->tebusSeparuhNotTawarruq($this->kodcaw,$norujukan,$request); + + return $response; + } + + function rebet($kodcaw,$norujukan){ + $tebus = new Penebusan($this->kodcaw,$this->cawangan_info); + $response = $tebus->rebet($this->kodcaw,$norujukan); + + return $response; + } + + function rebetselepastawarruq($kodcaw,$norujukan){ + $tebus = new Penebusan($this->kodcaw,$this->cawangan_info); + $response = $tebus->rebetselepastawarruq($this->kodcaw,$norujukan); + + return $response; + } + + public function tebusUpdate($kodcaw,$norujukan,HttpRequest $request){ + $tebus = new Penebusan($this->kodcaw,$this->cawangan_info); + $response = $tebus->tebusUpdate($this->kodcaw,$norujukan,$request); + + return $response; + } + + public function tebusUpdateAutoTawarruq($kodcaw,$norujukan,HttpRequest $request){ + $tebus = new Penebusan($this->kodcaw,$this->cawangan_info); + $response = $tebus->tebusUpdateAutoTawarruq($this->kodcaw,$norujukan,$request); + + return $response; + } + + /* End Penebusan */ + + public function test(){ + echo 'tawarruq'; + } +} diff --git a/app/Support/v1/Calculation.php b/app/Support/v1/Calculation.php new file mode 100644 index 0000000..1bb810e --- /dev/null +++ b/app/Support/v1/Calculation.php @@ -0,0 +1,14 @@ +kodcaw = $kodcaw; + $this->cawangan_info = $cawangan_info; + } + + public function create(HttpRequest $request){ + $current = Carbon::now(); + $current = new Carbon(); + + $kodcaw = $this->kodcaw; + $cawangan = $this->cawangan_info; + + try{ + DB::transaction(function () use ($cawangan, $kodcaw, $request, $current) { + $gadai = Gadai::on($cawangan['mysql'])->create([ + 'kodcaw'=>$kodcaw, + 'norujukan' => $request->norujukan, + 'nopelanggan' => $request->nopelanggan, + 'nokp' => $request->nokp, + 'sirig' => $request->sirig, + 't_gadai' => $current->toDateString(), + 'sttebus' => '', + 'masa' =>$current->toTimeString() + ]); + return response()->json($gadai, 201); + }); + + + }catch(\Exception $e){ + + echo "Gadaian Gagal: " . $e->getMessage(); + } + } + + public function createMarhun($norujukan,HttpRequest $request){ + $current = Carbon::now(); + $current = new Carbon(); + + $t_matang = Carbon::now(); + $t_matang = new Carbon(); + $t_matang = $t_matang->addMonths(6)->subDays(1); + + $t_kontrak = Carbon::now(); + $t_kontrak = new Carbon(); + $t_kontrak = $t_kontrak->addMonths(12)->subDays(1); + + $margin_pinjam = $request->percentpinj *100; + $cawangan = Cawangan::on('mysql7') + ->where('kodcaw','=',$request->kodcaw) + ->first(); + if($request->transaction == 'Ubah Gadai'){ + $old_data = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->first(); + } + + $bil_marhun = Marhun::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->count(); + + $total_nilai_marhun = Marhun::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->sum('n_marhun'); + $total_berat = Marhun::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->sum('berat'); + + $kadar_raw = KadarUpah::where('min','<=',$total_nilai_marhun)->where('max','>=',$total_nilai_marhun)->first(); + $tawarruqservices = new Calculation(); + + $upahcalculation = $tawarruqservices->kiraanTawarruq($request->pinjaman,$kadar_raw['kadarupdah']); + $upah1 = $upahcalculation; + $upah6 = $upah1 * 6; + $upah12 = $upah1 * 12; + + $hargajualan = $request->pinjaman + $upah12; + + $gadai = Gadai::on($cawangan['mysql']) + ->where('norujukan','=',$norujukan) + ->update(array( + 'nilaimarhun' => $total_nilai_marhun, + 'berat'=> $total_berat, + 'pinjaman' => $request->pinjaman, + 'kadarupah' => $kadar_raw['kadarupdah'], + 'marhun' => $request->marhun, + 'percentpinj' => $margin_pinjam, + 'teller' => $request->teller, + 'bakipjm' => $request->pinjaman, + 'bakiupah' => $upah6, + 'jbg' => 0.5, + 't_update' => $current->toDateString(), + 'cetak' => 0, + 'upah12' => $upah12, + 'hargajualan' => $hargajualan, + 'bakihargajualan' => $hargajualan, + 'tagserah' => 0, + 't_matang' => $t_matang, + 't_matang1' => $t_kontrak, + 'tempoh' => 0.5, + 'kuantiti' => $bil_marhun, + 'tagkomuditi' => 0, + 'upahdibayar' => 0.00, + 'tempohbayar' => 0.00, + 'lelong_tawarruq' => 1 + )); + + $new_data = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->first(); + + $audit = new Audit(); + $audit->users = $request->teller; + $audit->actions = $request->transaction; + $audit->norujukan = $norujukan; + $audit->new_data = $new_data; + if($request->transaction == 'Ubah Gadai'){ + $audit->old_data = $old_data; + } + $audit->kodcaw = $request->kodcaw; + $audit->created_at = $current; + $audit->updated_at = $current; + $audit->save(); + + return response()->json($gadai, 200); + } + + public function kiraupahTawarruq($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']; + + $tawarruqservices = new Calculation(); + $keuntungan = $tawarruqservices->kiraanTawarruq($gadai_data['pinjaman'],$gadai_data['kadarupah']); + $upahsemasa_raw = $bilang_bln * $keuntungan; + + $upah_semasa_round = number_format($upahsemasa_raw,2); + $upah_semasa = substr($upah_semasa_round, 0, -1); + // $upah_semasa = floatval(preg_replace('/[^\d.]/', '', $upah_semasa)); + 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']; + + $tawarruqservices = new Calculation(); + $keuntungan = $tawarruqservices->kiraanTawarruq($gadai_data['pinjaman'],$gadai_data['kadarupah']); + + $upahrebet_raw = $bilang_bln * $keuntungan; + + $upah_rebet_round = number_format($upahrebet_raw,2); + $upah_rebet = substr($upah_rebet_round, 0, -1); + if(strpos($upah_rebet,',')){ + $upah_rebet = str_replace(',','',$upah_rebet); + } + // $upah_rebet = floatval(preg_replace('/[^\d.]/', '', $upah_rebet)); + + return $upah_rebet; + + } + + public function updateAnsuranKaunter($kodcaw,$norujukan,HttpRequest $request){ + $current = Carbon::now(); + $current = new Carbon(); + + $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); + + $total_bayaran_prev = Transaction::on('mysql7')->where([['norujukan','=',$norujukan],['trans_type','=','A']])->sum('duit_masuk'); + + $total_bayaran_semasa = $total_bayaran_prev + $request->bayaran; + + if($total_bayaran_semasa >= $gadai['bakiupah']){ + $lelong_tawarruq = 0; + }else{ + $lelong_tawarruq = 1; + } + + $old_data = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->first(); + + $baki_hargajualan = $gadai['bakihargajualan'] - $request->bayaran; + + $baki_bayaran = $request->bayaran - $upahsemasa; + + $baki_pinjaman = $gadai['bakipjm'] - $baki_bayaran; + + $transaction = Transaction::on('mysql7')->create([ + 'trans_type' => 'A', + 'norujukan' => $norujukan, + 'nokp' => $gadai['nokp'], + 'teller' => $request->teller, + 'kodcaw' => $kodcaw, + 'duit_masuk' => $request->bayaran, + 'created_at' => $current, + 'bakiharga' => $baki_hargajualan, + 'nowakil' => (int)$request->nowakil + ]); + + $transaction_upah = TransaksiKeuntungan::on('mysql7')->create([ + 'norujukan' => $norujukan, + 'bayaran_keuntungan' => $upahsemasa, + 'bayaran_pembiayaan' => $baki_bayaran, + 'keuntungan_rebet'=> $upahrebet, + 'tarikh_bayaran'=> $current, + 'kodcaw'=> $kodcaw + ]); + + $update_gadai = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(array( + 'bakipjm' => $baki_pinjaman, + 'jbg' => 0, + 't_update' => $current->toDateString(), + 'bakihargajualan' => $baki_hargajualan, + 'tempohbayar' => $gadai['tempoh'], + 'lelong_tawarruq' => $lelong_tawarruq + )); + + $new_data = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->first(); + + $audit = new Audit(); + $audit->users = $request->teller; + $audit->actions = 'Bayaran Ansuran'; + $audit->norujukan = $norujukan; + $audit->new_data = $new_data; + $audit->old_data = $old_data; + $audit->kodcaw = $kodcaw; + $audit->created_at = $current; + $audit->updated_at = $current; + $audit->save(); + + return response()->json($update_gadai, 200); + } + + + +} diff --git a/app/Support/v1/Penebusan.php b/app/Support/v1/Penebusan.php new file mode 100644 index 0000000..dce689d --- /dev/null +++ b/app/Support/v1/Penebusan.php @@ -0,0 +1,615 @@ +kodcaw = $kodcaw; + $this->cawangan_info = $cawangan_info; + } + + public function tebusTawarruq($kodcaw,$norujukan){ + $cawangan = Cawangan::on('mysql7') + ->where('kodcaw','=',$kodcaw) + ->first(); + + $gadai_data = Gadai::on($cawangan['mysql']) + ->where('norujukan','=',$norujukan) + ->first(); + + $rebet = $this->rebetselepastawarruq($kodcaw,$norujukan); + + $harga_tebus = $gadai_data['bakihargajualan'] - $rebet; + + $hargatebus = bcdiv(round($harga_tebus,2),1,1); + $hargatebus = number_format($hargatebus,2); + if(strpos($hargatebus,',')){ + $hargatebus = str_replace(',','',$hargatebus); + } + + return response()->json($hargatebus); + } + + public function hargaTebusTawarruq($kodcaw,$norujukan){ + $cawangan = Cawangan::on('mysql7') + ->where('kodcaw','=',$kodcaw) + ->first(); + + $gadai_data = Gadai::on($cawangan['mysql']) + ->where('norujukan','=',$norujukan) + ->first(); + + $rebet = $this->rebetselepastawarruq($kodcaw,$norujukan); + + $harga_tebus = $gadai_data['bakihargajualan'] - $rebet; + + $hargatebus = bcdiv(round($harga_tebus,2),1,1); + $hargatebus = number_format($hargatebus,2); + if(strpos($hargatebus,',')){ + $hargatebus = str_replace(',','',$hargatebus); + } + + return $hargatebus; + } + + public function kiraUpahRebetSebenar($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 = $gadai_data['tempoh'] - $gadai_data['tempohbayar']; + + $upahrebet_raw = $bilang_bln * (($gadai_data['kadarupah']/100 )* $gadai_data['bakipjm']); + + // $upah_rebet = round($upahrebet_raw,PHP_ROUND_HALF_UP); + $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); + } + + $total_untung_rebet = TransaksiKeuntungan::on('mysql7')->where('norujukan','=',$norujukan)->sum('keuntungan_rebet'); + $total_untung_asal = TransaksiKeuntungan::on('mysql7')->where('norujukan','=',$norujukan)->sum('bayaran_keuntungan'); + $beza_keuntungan = $total_untung_asal - $total_untung_rebet; + + $keuntungan_rebet_sebenar = $upah_rebet - $beza_keuntungan; + return $keuntungan_rebet_sebenar; + } + + public function upahTawarruq($kodcaw,$norujukan,$jeniskeuntungan){ + $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']; + + $tawarruqservices = new V1Calculation(); + $keuntungan = $tawarruqservices->kiraanTawarruq($gadai_data['pinjaman'],$gadai_data['kadarupah']); + $upahsemasa_raw = $bilang_bln * $keuntungan; + + $upah_semasa_round = number_format($upahsemasa_raw,2); + $upah_semasa = substr($upah_semasa_round, 0, -1); + // $upah_semasa = floatval(preg_replace('/[^\d.]/', '', $upah_semasa)); + if(strpos($upah_semasa,',')){ + $upah_semasa = str_replace(',','',$upah_semasa); + } + return $upah_semasa; + } + + public function upahRebetTawarruq($kodcaw,$norujukan,$jeniskeuntungan){ + + $upah_rebet = $this->kiraUpahRebet($norujukan); + + return response()->json(number_format($upah_rebet,2)); + } + + public function tebusSeparuhTawarruq($kodcaw,$norujukan,HttpRequest $request){ + + $cawangan = Cawangan::on('mysql7') + ->where('kodcaw','=',$kodcaw) + ->first(); + + $gadai_data = Gadai::on($cawangan['mysql']) + ->where('norujukan','=',$norujukan) + ->first(); + + $upahsemasa = $this->kiraupahTawarruq($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(); + + $harga_tebus = ($margin_pembiayaan/100)*$marhun['n_marhun']; + + $total_harga_tebus += $harga_tebus; + } + + $total_harga_tebus_round = round($total_harga_tebus,2); + + $totalhargatebus = substr($total_harga_tebus_round, 0, -1); + + return response()->json($totalhargatebus); + } + + public function tebusNotTawarruq($kodcaw,$norujukan){ + $cawangan = Cawangan::on('mysql7') + ->where('kodcaw','=',$kodcaw) + ->first(); + + $gadai_data = Gadai::on($cawangan['mysql']) + ->where('norujukan','=',$norujukan) + ->first(); + + $upah_semasa = $this->kiraUpahNotTawarruq($kodcaw,$norujukan); + + $harga_tebus = $upah_semasa + $gadai_data['pinjaman']; + + return response()->json($harga_tebus); + } + + public function hargaTebusNotTawarruq($kodcaw,$norujukan){ + $cawangan = Cawangan::on('mysql7') + ->where('kodcaw','=',$kodcaw) + ->first(); + + $gadai_data = Gadai::on($cawangan['mysql']) + ->where('norujukan','=',$norujukan) + ->first(); + + $upah_semasa = $this->kiraUpahNotTawarruq($kodcaw,$norujukan); + + $harga_tebus = $upah_semasa + $gadai_data['pinjaman']; + + return $harga_tebus; + } + + public function kiraUpahNotTawarruq($kodcaw,$norujukan){ + $cawangan = Cawangan::on('mysql7') + ->where('kodcaw','=',$kodcaw) + ->first(); + + $gadai_data = Gadai::on($cawangan['mysql']) + ->where('norujukan','=',$norujukan) + ->first(); + + $upahtelahbayar = Advansur::on($cawangan['mysql']) + ->where('norujukan','=',$norujukan) + ->sum('upahdibayar'); + + $upah_asal = $gadai_data['nilaimarhun'] / 100 * $gadai_data['kadarupah']; + $margin_pinjaman = $gadai_data['pinjaman'] / $gadai_data['nilaimarhun'] * 100; + $margin_kadarupah = 80; + $rebet = ($margin_kadarupah-$margin_pinjaman)/$margin_kadarupah * $upah_asal; + + $bln_mora = Moratorium::first(); + + $upah_sebenar = $upah_asal - $rebet; + $bln_upah = $gadai_data['tempoh']; + if($bln_upah > $bln_mora['bln_mora']){ + $bln_upah = $bln_mora['bln_mora']; + } + $upahsemasa = $upah_sebenar * $bln_upah; + $upah_semasa = bcdiv(round($upahsemasa,2),1,1); + $upah_semasa = number_format($upah_semasa,2); + if(strpos($upah_semasa,',')){ + $upah_semasa = str_replace(',','',$upah_semasa); + } + $upah_semasa = (float)$upah_semasa - $upahtelahbayar; + + if($upah_semasa <= 0){ + $upah_semasa = 0; + } + + return $upah_semasa; + } + + public function upahNotTawarruq($kodcaw,$norujukan){ + $cawangan = Cawangan::on('mysql7') + ->where('kodcaw','=',$kodcaw) + ->first(); + + $gadai_data = Gadai::on($cawangan['mysql']) + ->where('norujukan','=',$norujukan) + ->first(); + + $upahtelahbayar = Advansur::on($cawangan['mysql']) + ->where('norujukan','=',$norujukan) + ->sum('upahdibayar'); + + $upah_asal = $gadai_data['nilaimarhun'] / 100 * $gadai_data['kadarupah']; + $margin_pinjaman = $gadai_data['pinjaman'] / $gadai_data['nilaimarhun'] * 100; + $margin_kadarupah = 80; + $rebet = ($margin_kadarupah-$margin_pinjaman)/$margin_kadarupah * $upah_asal; + + $bln_mora = Moratorium::first(); + + $upah_sebenar = $upah_asal - $rebet; + $bln_upah = $gadai_data['tempoh']; + if($bln_upah > $bln_mora['bln_mora']){ + $bln_upah = $bln_mora['bln_mora']; + } + $upahsemasa = $upah_sebenar * $bln_upah; + $upah_semasa = bcdiv(round($upahsemasa,2),1,1); + $upah_semasa = number_format($upah_semasa,2); + if(strpos($upah_semasa,',')){ + $upah_semasa = str_replace(',','',$upah_semasa); + } + $upah_semasa = (float)$upah_semasa - $upahtelahbayar; + + if($upah_semasa <= 0){ + $upah_semasa = 0; + } + + return response()->json($upah_semasa); + } + + public function tebusSeparuhNotTawarruq($kodcaw,$norujukan,HttpRequest $request){ + $cawangan = Cawangan::on('mysql7') + ->where('kodcaw','=',$kodcaw) + ->first(); + + $gadai_data = Gadai::on($cawangan['mysql']) + ->where('norujukan','=',$norujukan) + ->first(); + + $upah_asal = $gadai_data['nilaimarhun'] / 100 * $gadai_data['kadarupah']; + $margin_pinjaman = $gadai_data['pinjaman'] / $gadai_data['nilaimarhun'] * 100; + $margin_kadarupah = 80; + $rebet = ($margin_kadarupah-$margin_pinjaman)/$margin_kadarupah * $upah_asal; + + $upah_sebenar = $upah_asal - $rebet; + + $upah_semasa = bcdiv(round($upah_sebenar * $gadai_data['jbg'],2),1,1); + $upah_semasa = (float)number_format($upah_semasa,2); + + $array_recno_marhun = $request->array_recno; + + $margin_pembiayaan = round(($gadai_data['pinjaman']/$gadai_data['nilaimarhun'])*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(); + + $harga_tebus = ($margin_pembiayaan/100)*$marhun['n_marhun']; + + $total_harga_tebus += $harga_tebus; + } + + // $total_harga_tebus += $upah_semasa; + + return response()->json($total_harga_tebus); + } + + function rebet($kodcaw,$norujukan){ + $cawangan = Cawangan::on('mysql7') + ->where('kodcaw','=',$kodcaw) + ->first(); + + $gadai_data = Gadai::on($cawangan['mysql']) + ->where('norujukan','=',$norujukan) + ->first(); + + $upah_asal = $gadai_data['nilaimarhun'] / 100 * $gadai_data['kadarupah']; + $margin_pinjaman = $gadai_data['pinjaman'] / $gadai_data['nilaimarhun'] * 100; + $margin_kadarupah = 80; + + $rebet = ($margin_kadarupah-$margin_pinjaman)/$margin_kadarupah * $upah_asal; + + return floatval(number_format($rebet,2)); + } + + function rebetselepastawarruq($kodcaw,$norujukan){ + $cawangan = Cawangan::on('mysql7') + ->where('kodcaw','=',$kodcaw) + ->first(); + + $gadai_data = Gadai::on($cawangan['mysql']) + ->where('norujukan','=',$norujukan) + ->first(); + + $transaction_keuntungan = TransaksiKeuntungan::on('mysql7') + ->where('norujukan','=',$norujukan) + ->sum('keuntungan_rebet'); + + $upah_rebet = $this->kiraUpahRebet($kodcaw,$norujukan); + + $rebet_raw =$gadai_data['upah12'] - $transaction_keuntungan - $upah_rebet; + + $rebet_round = bcdiv(round($rebet_raw,2),1,1); + $rebet_round = number_format($rebet_round,2); + + if(strpos($rebet_round,',')){ + $rebet_round = str_replace(',','',$rebet_round); + } + $rebet = substr($rebet_round, 0, -1); + + return $rebet; + } + + public function tebusUpdate($kodcaw,$norujukan,HttpRequest $request){ + $current = Carbon::now(); + $current = new Carbon(); + + $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); + + if($request->jenisbayarantebus == "tawarruq") + { + $rebet = $this->rebetselepastawarruq($kodcaw,$norujukan); + } + else if($request->jenisbayarantebus == "nottawarruq") + { + $rebet = $this->rebet($kodcaw,$norujukan); + } + else{ + $rebet = 0; + } + + $gadai = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->first(); + + if($gadai['hargajualan'] == null){ + $harga_tebus = $this->hargaTebusNotTawarruq($kodcaw,$norujukan); + $upah_tebus = $this->kiraUpahNotTawarruq($kodcaw,$norujukan); + $upah_rebet = 0; + $upah_rebet_sebenar = 0; + }else{ + $harga_tebus = $this->hargaTebusTawarruq($kodcaw,$norujukan); + $upah_tebus = $this->kiraupahTawarruq($kodcaw,$norujukan); + $upah_rebet = $this->kiraUpahRebetSebenar($kodcaw,$norujukan); + $upah_rebet_sebenar = $harga_tebus - $gadai['bakipjm']; + } + + + $create_tebus = Tebus::on($cawangan['mysql'])->create([ + 'kodcaw'=> $kodcaw, + 'norujukan'=> $norujukan, + 'nopelanggan' => $request->nopelanggan, + 'jenisbyr' => "TN", + 'jenistebus' => $request->jenistebus, + 'glcode' => "0", + 't_tebus' => $current->toDateString(), + 'jbg' => $gadai['tempoh'], + 'kadarupah' => $gadai['kadarupah'], + 'nilaimarhun' => $gadai['nilaimarhun'], + 'pinjaman' => $gadai['pinjaman'], + 'ansuran' => 0.00, + 'addpinjaman' => $request->addpinjaman, + 'bakipjm' => $harga_tebus, + 'bakiupah' => $upah_tebus, + 'terima' => "*", + 'kodgl' => "0", + 'nowakil' => $request->nowakil, + 'rebate' => $rebet, + 'marhuntebus' => $request->marhun, + 'historygadaian' => $norujukan, + 'tarikhbyrn' => $current->toDateString(), + 'teller' => $request->teller + ]); + + $create_inoutmar = InOutMar::on($cawangan['mysql'])->create([ + 'tarikh' => $current->toDateString(), + 'masa' => $current->toTimeString(), + 'norujukan' => $norujukan, + 'nm' => $request->nilai_marhun, + 'pkd' => $request->teller, + 'drp' => $request->teller, + 'bln' => $current->month, + 'thn' => $current->year, + 'tag' => 0, + 'jenistebus' => $request->jenistebus, + 'namateller' => $request->teller + ]); + + $transaction_upah = TransaksiKeuntungan::on('mysql7')->create([ + 'norujukan' => $norujukan, + 'bayaran_keuntungan' => $upah_tebus, + 'bayaran_pembiayaan' => $gadai['bakipjm'], + 'keuntungan_rebet' => $upah_rebet_sebenar, + 'tarikh_bayaran'=> $current, + 'kodcaw'=> $kodcaw + ]); + + if($request->jenistebus == 'P'){ + $baki_hargajualan = $gadai['bakihargajualan'] - $request->bakiupah; + $transaction = Transaction::on('mysql7')->create([ + 'trans_type' => $request->jenistebus, + 'norujukan' => $norujukan, + 'nokp' => $gadai['nokp'], + 'teller' => $request->teller, + 'kodcaw' => $kodcaw, + 'duit_masuk' => $request->bakiupah, + 'created_at' => $current, + 'bakiharga' => $baki_hargajualan, + ]); + }else{ + $baki_hargajualan = $gadai['bakihargajualan'] - $request->bakipinjaman; + $transaction = Transaction::on('mysql7')->create([ + 'trans_type' => $request->jenistebus, + 'norujukan' => $norujukan, + 'nokp' => $gadai['nokp'], + 'teller' => $request->teller, + 'kodcaw' => $kodcaw, + 'duit_masuk' => $harga_tebus, + 'created_at' => $current, + 'bakiharga' => $baki_hargajualan, + 'nowakil' => (int)$request->nowakil + ]); + } + + $update_gadai = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(array( + 'sttebus' => "T", + 't_update' => $current->toDateString(), + )); + + $audit = new Audit(); + $audit->users = $request->teller; + if($request->jenistebus == 'P'){ + $audit->actions = "Tambah Pembiayaan"; + }else if($request->jenistebus == 'S'){ + $audit->actions = "Tebus Separuh"; + }else if($request->jenistebus == 'T'){ + $audit->actions = "Tebus Penuh"; + } + $audit->norujukan = $norujukan; + $audit->new_data = $create_tebus; + $audit->kodcaw = $kodcaw; + $audit->created_at = $current; + $audit->updated_at = $current; + $audit->save(); + + return response()->json($update_gadai, 201); + } + + public function tebusUpdateAutoTawarruq($kodcaw,$norujukan,HttpRequest $request){ + $current = Carbon::now(); + $current = new Carbon(); + + $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); + + if($request->jenisbayarantebus == "tawarruq") + { + $rebet = $this->rebetselepastawarruq($kodcaw,$norujukan); + } + else if($request->jenisbayarantebus == "nottawarruq") + { + $rebet = $this->rebet($kodcaw,$norujukan); + } + else{ + $rebet = 0; + } + + $gadai = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->first(); + + $update_gadai = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(array( + 'sttebus' => "T", + 't_update' => $current->toDateString(), + )); + + $upah_rebet = $this->kiraUpahRebet($kodcaw,$norujukan); + + $create_tebus = Tebus::on($cawangan['mysql'])->create([ + 'kodcaw'=> $kodcaw, + 'norujukan'=> $norujukan, + 'nopelanggan' => $request->nopelanggan, + 'jenisbyr' => "TN", + 'jenistebus' => $request->jenistebus, + 'glcode' => "0", + 't_tebus' => $current->toDateString(), + 'jbg' => $request->jbg, + 'kadarupah' => $request->kadarupah, + 'nilaimarhun' => $request->nilai_marhun, + 'pinjaman' => $request->pinjaman, + 'ansuran' => $request->ansuran, + 'addpinjaman' => $request->addpinjaman, + 'bakipjm' => $request->bakipinjaman, + 'bakiupah' => $request->bakiupah, + 'terima' => "*", + 'kodgl' => "0", + 'nowakil' => $request->nowakil, + 'rebate' => $rebet, + 'marhuntebus' => $request->marhun, + 'historygadaian' => $request->historygadaian, + 'tarikhbyrn' => $current->toDateString(), + 'teller' => $request->teller + ]); + + $create_inoutmar = InOutMar::on($cawangan['mysql'])->create([ + 'tarikh' => $current->toDateString(), + 'masa' => $current->toTimeString(), + 'norujukan' => $norujukan, + 'nm' => $request->nilai_marhun, + 'pkd' => $request->teller, + 'drp' => $request->teller, + 'bln' => $current->month, + 'thn' => $current->year, + 'tag' => 0, + 'jenistebus' => $request->jenistebus, + 'namateller' => $request->teller + ]); + + $bayaran_pembiayaan = $request->totalbayaran - $request->bakiupah; + + $transaction_upah = TransaksiKeuntungan::on('mysql7')->create([ + 'norujukan' => $norujukan, + 'bayaran_keuntungan' => $request->bakiupah, + 'bayaran_pembiayaan' => $bayaran_pembiayaan, + 'keuntungan_rebet' => 0, + 'tarikh_bayaran'=> $current, + 'kodcaw'=> $kodcaw + ]); + + $transaction = Transaction::on('mysql7')->create([ + 'trans_type' => $request->jenistebus, + 'norujukan' => $norujukan, + 'nokp' => $gadai['nokp'], + 'teller' => $request->teller, + 'kodcaw' => $kodcaw, + 'duit_masuk' => $request->totalbayaran, + 'created_at' => $current, + 'bakiharga' => 0, + ]); + + $audit = new Audit(); + $audit->users = $request->teller; + $audit->actions = "Auto Tawarruq"; + $audit->norujukan = $norujukan; + $audit->new_data = $create_tebus; + $audit->kodcaw = $kodcaw; + $audit->created_at = $current; + $audit->updated_at = $current; + $audit->save(); + + return response()->json($update_gadai, 201); + } +} \ No newline at end of file diff --git a/app/Services/OnePercentServices.php b/app/Support/v2/Calculation.php similarity index 74% rename from app/Services/OnePercentServices.php rename to app/Support/v2/Calculation.php index afce9d0..a6cd427 100644 --- a/app/Services/OnePercentServices.php +++ b/app/Support/v2/Calculation.php @@ -1,15 +1,18 @@ = 0 && $lastDigit <= 2) { + if(strpos($rounded,',')){ + $rounded = str_replace(',','',$rounded); + } + return $rounded; + } elseif ($lastDigit >= 3 && $lastDigit <= 7) { + $rounded = $rounded . '5'; + if(strpos($rounded,',')){ + $rounded = str_replace(',','',$rounded); + } + return $rounded; + } else { + return round($number,PHP_ROUND_HALF_UP); + } + } + + /* End of Line Calculation */ + + + + + + + + } diff --git a/app/Support/v2/GadaiV2.php b/app/Support/v2/GadaiV2.php new file mode 100644 index 0000000..fc0ae87 --- /dev/null +++ b/app/Support/v2/GadaiV2.php @@ -0,0 +1,330 @@ +kodcaw = $kodcaw; + $this->cawangan_info = $cawangan_info; + } + + public function create(HttpRequest $request){ + $current = Carbon::now(); + $current = new Carbon(); + + $kodcaw = $this->kodcaw; + $cawangan = $this->cawangan_info; + try{ + DB::transaction(function () use ($cawangan, $kodcaw, $request, $current) { + $gadai = Gadai::on($cawangan['mysql'])->create([ + 'kodcaw'=>$kodcaw, + 'norujukan' => $request->norujukan, + 'nopelanggan' => $request->nopelanggan, + 'nokp' => $request->nokp, + 'sirig' => $request->sirig, + 't_gadai' => $current->toDateString(), + 'sttebus' => '', + 'masa' =>$current->toTimeString(), + 'tagbaru' => 1 + ]); + return response()->json($gadai, 201); + }); + + + }catch(\Exception $e){ + + echo "Gadaian Gagal: " . $e->getMessage(); + } + } + + public function createMarhun($norujukan,HttpRequest $request){ + $current = Carbon::now(); + $current = new Carbon(); + + $t_matang = Carbon::now(); + $t_matang = new Carbon(); + $t_matang = $t_matang->addMonths(6)->subDays(1); + + $t_kontrak = Carbon::now(); + $t_kontrak = new Carbon(); + $t_kontrak = $t_kontrak->addMonths(12)->subDays(1); + + $margin_pinjam = $request->percentpinj *100; + $cawangan = Cawangan::on('mysql7') + ->where('kodcaw','=',$request->kodcaw) + ->first(); + if($request->transaction == 'Ubah Gadai'){ + $old_data = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->first(); + } + + $bil_marhun = Marhun::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->count(); + + $total_nilai_marhun = Marhun::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->sum('n_marhun'); + $total_berat = Marhun::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->sum('berat'); + + //query kadar upah baru + $kadar_raw = KadarUpah::where('min','<=',$total_nilai_marhun)->where('max','>=',$total_nilai_marhun)->where('group_id',$cawangan['group_id'])->first(); + + + // query kadar upah lama + // $kadar_raw = KadarUpah::where('min','<=',$total_nilai_marhun)->where('max','>=',$total_nilai_marhun)->first(); + + $onepercentservices = new Calculation(); + $keuntungan = $onepercentservices->kiraanKeuntunganSebenar($request->pinjaman,$total_nilai_marhun,$kadar_raw['kadarujrah'],$margin_pinjam); + // $upah1 = $request->pinjaman * ($kadar_raw['kadarupdah']/100); + // $upah6 = $upah1 * 6; + // $upah12 = $upah1 * 12; + $upah1 = $keuntungan['keuntungan']; + $upah6 = $upah1 * 6; + $upah12 = $upah1 * 12; + $ujrah = $keuntungan['ujrah']; + $onepercent = $keuntungan['onepercent']; + + $hargajualan = $request->pinjaman + $upah12; + + $gadai = Gadai::on($cawangan['mysql']) + ->where('norujukan','=',$norujukan) + ->update(array( + 'nilaimarhun' => $total_nilai_marhun, + 'berat'=> $total_berat, + 'pinjaman' => $request->pinjaman, + 'kadarupah' => $kadar_raw['kadarujrah'], + 'marhun' => $request->marhun, + 'percentpinj' => $margin_pinjam, + 'teller' => $request->teller, + 'bakipjm' => $request->pinjaman, + 'bakiupah' => $upah6, + 'jbg' => 0.5, + 't_update' => $current->toDateString(), + 'cetak' => 0, + 'upah12' => $upah12, + 'hargajualan' => $hargajualan, + 'bakihargajualan' => $hargajualan, + 'tagserah' => 0, + 't_matang' => $t_matang, + 't_matang1' => $t_kontrak, + 'tempoh' => 0.5, + 'kuantiti' => $bil_marhun, + 'tagkomuditi' => 0, + 'upahdibayar' => 0.00, + 'tempohbayar' => 0.00, + 'lelong_tawarruq' => 1, + 'kadarujrah' => $kadar_raw['kadarujrah'], + 'ujrah' => $ujrah, + 'onepercent' => $onepercent, + 'margin_semasa' => $margin_pinjam, + 'tagbaru' => 1 + )); + + $new_data = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->first(); + + $audit = new Audit(); + $audit->users = $request->teller; + $audit->actions = $request->transaction; + $audit->norujukan = $norujukan; + $audit->new_data = $new_data; + if($request->transaction == 'Ubah Gadai'){ + $audit->old_data = $old_data; + } + $audit->kodcaw = $request->kodcaw; + $audit->created_at = $current; + $audit->updated_at = $current; + $audit->save(); + + return 'true'; + } + + public function kiraupahOnePercent($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 kiraupahRebet($kodcaw,$norujukan){ + $onepercentservices = new Calculation(); + + $cawangan = Cawangan::on('mysql7') + ->where('kodcaw','=',$this->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']; + + $upah = $onepercentservices->kiraanKeuntunganRebet($gadai_data['bakipjm'],$gadai_data['nilaimarhun'],$gadai_data['kadarupah'],$gadai_data['margin_semasa']); + + $upahrebet_raw = $bilang_bln * $upah['keuntungan']; + $upahrebet_raw = $onepercentservices->getRoundedMethod($upahrebet_raw); + + return $upahrebet_raw; + } + + public function updateAnsuranKaunter($kodcaw,$norujukan,HttpRequest $request){ + $current = Carbon::now(); + $current = new Carbon(); + + $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); + $gadai = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->first(); + + $upahsemasa = $this->kiraupahOnePercent($kodcaw,$norujukan); + $upahrebet = $this->kiraUpahRebet($kodcaw,$norujukan); + + $total_bayaran_prev = Transaction::on('mysql7')->where([['norujukan','=',$norujukan],['trans_type','=','A']])->sum('duit_masuk'); + + $total_bayaran_semasa = $total_bayaran_prev + $request->bayaran; + + if($total_bayaran_semasa >= $gadai['bakiupah']){ + $lelong_tawarruq = 0; + }else{ + $lelong_tawarruq = 1; + } + $onepercent = new Calculation(); + + $old_data = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->first(); + + $baki_hargajualan = $gadai['bakihargajualan'] - $request->bayaran; + + $baki_bayaran = $request->bayaran - $upahsemasa; + + $baki_pinjaman = $gadai['bakipjm'] - $baki_bayaran; + + $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']); + + $onepercentasal = $gadai['pinjaman'] * (1/100); + + try { + + DB::connection('mysql7')->transaction(function () use($onepercentasal,$ujrahasal,$keuntungan,$norujukan,$gadai,$request,$kodcaw,$current,$baki_hargajualan,$upahsemasa,$baki_bayaran,$upahrebet,$cawangan,$old_data,$baki_pinjaman,$lelong_tawarruq,$margin_semasa) { + + $transaction = Transaction::on('mysql7')->create([ + 'trans_type' => 'A', + 'norujukan' => $norujukan, + 'nokp' => $gadai['nokp'], + 'teller' => $request->teller, + 'kodcaw' => $kodcaw, + 'duit_masuk' => $request->bayaran, + 'created_at' => $current, + 'bakiharga' => $baki_hargajualan, + 'nowakil' => (int)$request->nowakil, + 'duitpelanggan' => $request->duitpelanggan, + 'bakipelanggan' => $request->bakipelanggan + ]); + + if($gadai['tempoh'] >= 12.0){ + $tempoh = 12; + }else{ + $tempoh = $gadai['tempoh']; + } + $bilang_bln = $tempoh - $gadai['tempohbayar']; + + $rounded = $upahsemasa - (($keuntungan['ujrah'] * $bilang_bln) + ($onepercentasal * $bilang_bln)); + + $transaction_upah = TransaksiKeuntungan::on('mysql7')->create([ + 'norujukan' => $norujukan, + 'bayaran_keuntungan' => $upahsemasa, + 'bayaran_pembiayaan' => $baki_bayaran, + 'keuntungan_rebet'=> $upahrebet, + 'tarikh_bayaran'=> $current, + 'kodcaw'=> $kodcaw, + 'ujrah' => ($keuntungan['ujrah'] * $bilang_bln), + 'ujrah_rebet' => ($ujrahasal*$bilang_bln), + 'onepercent' => ($onepercentasal * $bilang_bln), + 'onepercent_rebet' => ($keuntungan['onepercent'] * $bilang_bln), + '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){ + + $margin_updated = ($baki_pinjaman / $gadai['nilaimarhun']) * 100; + + $update_gadai = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(array( + 'bakipjm' => $baki_pinjaman, + 'jbg' => 0, + 't_update' => $current->toDateString(), + 'bakihargajualan' => $baki_hargajualan, + 'tempohbayar' => $gadai['tempoh'], + 'lelong_tawarruq' => $lelong_tawarruq, + 'margin_semasa' => $margin_updated, + )); + }); + + $new_data = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->first(); + + $audit = new Audit(); + $audit->users = $request->teller; + $audit->actions = 'Bayaran Ansuran'; + $audit->norujukan = $norujukan; + $audit->new_data = $new_data; + $audit->old_data = $old_data; + $audit->kodcaw = $kodcaw; + $audit->created_at = $current; + $audit->updated_at = $current; + $audit->save(); + + if(!$transaction || !$transaction_upah) { + throw new \Exception('One of the database operations failed.'); + } + + DB::commit(); + + }); + }catch(\Exception $e){ + Log::error("Transaction failed: " . $e->getMessage()); + return response()->json("Transaction failed: " . $e->getMessage(),500); + } + + return response()->json("success",200); + } + + +} + diff --git a/app/Support/v2/Penebusan.php b/app/Support/v2/Penebusan.php new file mode 100644 index 0000000..3a3ac48 --- /dev/null +++ b/app/Support/v2/Penebusan.php @@ -0,0 +1,728 @@ +kodcaw = $kodcaw; + $this->cawangan_info = $cawangan_info; + } + + public function tebusTawarruq($kodcaw,$norujukan){ + $cawangan = Cawangan::on('mysql7') + ->where('kodcaw','=',$kodcaw) + ->first(); + + $gadai_data = Gadai::on($cawangan['mysql']) + ->where('norujukan','=',$norujukan) + ->first(); + + $jeniskeuntungan = ($gadai_data['tagbaru'] == 1) ? 'onepercent' : 'asal'; + + $rebet = $this->rebetselepastawarruq($kodcaw,$norujukan,$jeniskeuntungan); + $harga_tebus = $gadai_data['bakihargajualan'] - $rebet; + + // $hargatebus = round($harga_tebus,PHP_ROUND_HALF_UP); + $hargatebus = bcdiv(round($harga_tebus,2),1,1); + $hargatebus = number_format($hargatebus,2); + if(strpos($hargatebus,',')){ + $hargatebus = str_replace(',','',$hargatebus); + } + return response()->json($hargatebus); + } + + public function hargaTebusTawarruq($kodcaw,$norujukan){ + $cawangan = Cawangan::on('mysql7') + ->where('kodcaw','=',$kodcaw) + ->first(); + + $gadai_data = Gadai::on($cawangan['mysql']) + ->where('norujukan','=',$norujukan) + ->first(); + + $rebet = $this->rebetselepastawarruq($kodcaw,$norujukan); + + $harga_tebus = $gadai_data['bakihargajualan'] - $rebet; + + // $hargatebus = round($harga_tebus,PHP_ROUND_HALF_UP); + $hargatebus = bcdiv(round($harga_tebus,2),1,1); + $hargatebus = number_format($hargatebus,2); + if(strpos($hargatebus,',')){ + $hargatebus = str_replace(',','',$hargatebus); + } + + $rounded = $hargatebus - $harga_tebus; + Log::info([$harga_tebus,$rebet]); + $arrayharga = ['harga' => $hargatebus, 'rounded' => $rounded]; + + return $arrayharga; + } + + public function kiraUpahRebetSebenar($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 = $gadai_data['tempoh'] - $gadai_data['tempohbayar']; + + $upahrebet_raw = $bilang_bln * (($gadai_data['kadarupah']/100 )* $gadai_data['bakipjm']); + + // $upah_rebet = round($upahrebet_raw,PHP_ROUND_HALF_UP); + $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); + } + + $total_untung_rebet = TransaksiKeuntungan::on('mysql7')->where('norujukan','=',$norujukan)->sum('keuntungan_rebet'); + $total_untung_asal = TransaksiKeuntungan::on('mysql7')->where('norujukan','=',$norujukan)->sum('bayaran_keuntungan'); + $beza_keuntungan = $total_untung_asal - $total_untung_rebet; + + $keuntungan_rebet_sebenar = $upah_rebet - $beza_keuntungan; + return $keuntungan_rebet_sebenar; + } + + public function upahTawarruq($kodcaw,$norujukan,$jeniskeuntungan){ + $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 upahRebetTawarruq($kodcaw,$norujukan,$jeniskeuntungan){ + + $onepercentservices = new Calculation(); + + $cawangan = Cawangan::on('mysql7') + ->where('kodcaw','=',$this->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']; + + $upah = $onepercentservices->kiraanKeuntunganRebet($gadai_data['bakipjm'],$gadai_data['nilaimarhun'],$gadai_data['kadarupah'],$gadai_data['margin_semasa']); + + $upahrebet_raw = $bilang_bln * $upah['keuntungan']; + $upahrebet_raw = $onepercentservices->getRoundedMethod($upahrebet_raw); + + return $upahrebet_raw; + } + + public function tebusSeparuhTawarruq($kodcaw,$norujukan,HttpRequest $request){ + + $cawangan = Cawangan::on('mysql7') + ->where('kodcaw','=',$kodcaw) + ->first(); + + $gadai_data = Gadai::on($cawangan['mysql']) + ->where('norujukan','=',$norujukan) + ->first(); + + $upahsemasa = $this->kiraupahTawarruq($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(); + + $harga_tebus = ($margin_pembiayaan/100)*$marhun['n_marhun']; + + $total_harga_tebus += $harga_tebus; + } + + $total_harga_tebus_round = round($total_harga_tebus,2); + + $totalhargatebus = substr($total_harga_tebus_round, 0, -1); + + return response()->json($totalhargatebus); + } + + public function tebusNotTawarruq($kodcaw,$norujukan){ + $cawangan = Cawangan::on('mysql7') + ->where('kodcaw','=',$kodcaw) + ->first(); + + $gadai_data = Gadai::on($cawangan['mysql']) + ->where('norujukan','=',$norujukan) + ->first(); + + $upah_semasa = $this->kiraUpahNotTawarruq($kodcaw,$norujukan); + + $harga_tebus = $upah_semasa + $gadai_data['pinjaman']; + + return response()->json($harga_tebus); + } + + public function hargaTebusNotTawarruq($kodcaw,$norujukan){ + $cawangan = Cawangan::on('mysql7') + ->where('kodcaw','=',$kodcaw) + ->first(); + + $gadai_data = Gadai::on($cawangan['mysql']) + ->where('norujukan','=',$norujukan) + ->first(); + + $upah_semasa = $this->kiraUpahNotTawarruq($kodcaw,$norujukan); + + $harga_tebus = $upah_semasa + $gadai_data['pinjaman']; + + return $harga_tebus; + } + + public function kiraUpahNotTawarruq($kodcaw,$norujukan){ + $cawangan = Cawangan::on('mysql7') + ->where('kodcaw','=',$kodcaw) + ->first(); + + $gadai_data = Gadai::on($cawangan['mysql']) + ->where('norujukan','=',$norujukan) + ->first(); + + $upahtelahbayar = Advansur::on($cawangan['mysql']) + ->where('norujukan','=',$norujukan) + ->sum('upahdibayar'); + + $upah_asal = $gadai_data['nilaimarhun'] / 100 * $gadai_data['kadarupah']; + $margin_pinjaman = $gadai_data['pinjaman'] / $gadai_data['nilaimarhun'] * 100; + $margin_kadarupah = 80; + $rebet = ($margin_kadarupah-$margin_pinjaman)/$margin_kadarupah * $upah_asal; + + $bln_mora = Moratorium::first(); + + $upah_sebenar = $upah_asal - $rebet; + $bln_upah = $gadai_data['tempoh']; + if($bln_upah > $bln_mora['bln_mora']){ + $bln_upah = $bln_mora['bln_mora']; + } + $upahsemasa = $upah_sebenar * $bln_upah; + $upah_semasa = bcdiv(round($upahsemasa,2),1,1); + $upah_semasa = number_format($upah_semasa,2); + if(strpos($upah_semasa,',')){ + $upah_semasa = str_replace(',','',$upah_semasa); + } + $upah_semasa = (float)$upah_semasa - $upahtelahbayar; + + if($upah_semasa <= 0){ + $upah_semasa = 0; + } + + return $upah_semasa; + } + + public function upahNotTawarruq($kodcaw,$norujukan){ + $cawangan = Cawangan::on('mysql7') + ->where('kodcaw','=',$kodcaw) + ->first(); + + $gadai_data = Gadai::on($cawangan['mysql']) + ->where('norujukan','=',$norujukan) + ->first(); + + $upahtelahbayar = Advansur::on($cawangan['mysql']) + ->where('norujukan','=',$norujukan) + ->sum('upahdibayar'); + + $upah_asal = $gadai_data['nilaimarhun'] / 100 * $gadai_data['kadarupah']; + $margin_pinjaman = $gadai_data['pinjaman'] / $gadai_data['nilaimarhun'] * 100; + $margin_kadarupah = 80; + $rebet = ($margin_kadarupah-$margin_pinjaman)/$margin_kadarupah * $upah_asal; + + $bln_mora = Moratorium::first(); + + $upah_sebenar = $upah_asal - $rebet; + $bln_upah = $gadai_data['tempoh']; + if($bln_upah > $bln_mora['bln_mora']){ + $bln_upah = $bln_mora['bln_mora']; + } + $upahsemasa = $upah_sebenar * $bln_upah; + $upah_semasa = bcdiv(round($upahsemasa,2),1,1); + $upah_semasa = number_format($upah_semasa,2); + if(strpos($upah_semasa,',')){ + $upah_semasa = str_replace(',','',$upah_semasa); + } + $upah_semasa = (float)$upah_semasa - $upahtelahbayar; + + if($upah_semasa <= 0){ + $upah_semasa = 0; + } + + return response()->json($upah_semasa); + } + + public function tebusSeparuhNotTawarruq($kodcaw,$norujukan,HttpRequest $request){ + $cawangan = Cawangan::on('mysql7') + ->where('kodcaw','=',$kodcaw) + ->first(); + + $gadai_data = Gadai::on($cawangan['mysql']) + ->where('norujukan','=',$norujukan) + ->first(); + + $upah_asal = $gadai_data['nilaimarhun'] / 100 * $gadai_data['kadarupah']; + $margin_pinjaman = $gadai_data['pinjaman'] / $gadai_data['nilaimarhun'] * 100; + $margin_kadarupah = 80; + $rebet = ($margin_kadarupah-$margin_pinjaman)/$margin_kadarupah * $upah_asal; + + $upah_sebenar = $upah_asal - $rebet; + + $upah_semasa = bcdiv(round($upah_sebenar * $gadai_data['jbg'],2),1,1); + $upah_semasa = (float)number_format($upah_semasa,2); + + $array_recno_marhun = $request->array_recno; + + $margin_pembiayaan = round(($gadai_data['pinjaman']/$gadai_data['nilaimarhun'])*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(); + + $harga_tebus = ($margin_pembiayaan/100)*$marhun['n_marhun']; + + $total_harga_tebus += $harga_tebus; + } + + // $total_harga_tebus += $upah_semasa; + + return response()->json($total_harga_tebus); + } + + function rebet($kodcaw,$norujukan){ + $cawangan = Cawangan::on('mysql7') + ->where('kodcaw','=',$kodcaw) + ->first(); + + $gadai_data = Gadai::on($cawangan['mysql']) + ->where('norujukan','=',$norujukan) + ->first(); + + $upah_asal = $gadai_data['nilaimarhun'] / 100 * $gadai_data['kadarupah']; + $margin_pinjaman = $gadai_data['pinjaman'] / $gadai_data['nilaimarhun'] * 100; + $margin_kadarupah = 80; + + $rebet = ($margin_kadarupah-$margin_pinjaman)/$margin_kadarupah * $upah_asal; + + return floatval(number_format($rebet,2)); + } + + function rebetselepastawarruq($kodcaw,$norujukan){ + $cawangan = Cawangan::on('mysql7') + ->where('kodcaw','=',$kodcaw) + ->first(); + + $gadai_data = Gadai::on($cawangan['mysql']) + ->where('norujukan','=',$norujukan) + ->first(); + + $transaction_keuntungan = TransaksiKeuntungan::on('mysql7') + ->where('norujukan','=',$norujukan) + ->sum('keuntungan_rebet'); + + $upah_rebet = $this->kiraUpahRebet($kodcaw,$norujukan); + + $rebet_raw =$gadai_data['upah12'] - $transaction_keuntungan - $upah_rebet; + + return $rebet_raw; + } + + public function kiraupahRebet($kodcaw,$norujukan){ + $onepercentservices = new Calculation(); + + $cawangan = Cawangan::on('mysql7') + ->where('kodcaw','=',$this->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']; + + $upah = $onepercentservices->kiraanKeuntunganRebet($gadai_data['bakipjm'],$gadai_data['nilaimarhun'],$gadai_data['kadarupah'],$gadai_data['margin_semasa']); + + $upahrebet_raw = $bilang_bln * $upah['keuntungan']; + $upahrebet_raw = $onepercentservices->getRoundedMethod($upahrebet_raw); + + return $upahrebet_raw; + } + + public function tebusUpdate($kodcaw,$norujukan,HttpRequest $request){ + $current = Carbon::now(); + $current = new Carbon(); + + $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); + + if($request->jenisbayarantebus == "tawarruq"){ + $rebet = $this->rebetselepastawarruq($kodcaw,$norujukan,$request->jeniskeuntungan); + } + else if($request->jenisbayarantebus == "nottawarruq") + { + $rebet = $this->rebet($kodcaw,$norujukan); + } + else{ + $rebet = 0; + } + + $gadai = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->first(); + + $ujrah=0;$onepercent=0;$rounded=0; + if($gadai['hargajualan'] == null){ + $harga_tebus = $this->hargaTebusNotTawarruq($kodcaw,$norujukan); + $upah_tebus = $this->kiraUpahNotTawarruq($kodcaw,$norujukan); + $upah_rebet = 0; + $upah_rebet_sebenar = 0; + }else{ + $harga_tebus = $this->hargaTebusTawarruq($kodcaw,$norujukan,$request->jeniskeuntungan); + $upah_tebus = $this->kiraupahTawarruq($kodcaw,$norujukan,$request->jeniskeuntungan); + $upah_rebet = $this->kiraUpahRebetSebenar($kodcaw,$norujukan); + $upah_rebet_sebenar = $harga_tebus['harga'] - $gadai['bakipjm']; + + if($request->jeniskeuntungan == 'onepercent'){ + $array_onepercent = $this->kiraupahUjrahOnePercent($kodcaw,$norujukan); + $array_onepercent_rebet = $this->kiraupahUjrahOnePercentRebate($kodcaw,$norujukan); + $margin_semasa = ($gadai['bakipjm']/$gadai['nilaimarhun']) * 100; + $ujrah = $array_onepercent['ujrah']; + $onepercent = $array_onepercent['onepercent']; + } + } + + + $create_tebus = Tebus::on($cawangan['mysql'])->create([ + 'kodcaw'=> $kodcaw, + 'norujukan'=> $norujukan, + 'nopelanggan' => $request->nopelanggan, + 'jenisbyr' => "TN", + 'jenistebus' => $request->jenistebus, + 'glcode' => "0", + 't_tebus' => $current->toDateString(), + 'jbg' => $gadai['tempoh'], + 'kadarupah' => $gadai['kadarupah'], + 'nilaimarhun' => $gadai['nilaimarhun'], + 'pinjaman' => $gadai['pinjaman'], + 'ansuran' => 0.00, + 'addpinjaman' => $request->addpinjaman, + 'bakipjm' => $harga_tebus['harga'], + 'bakiupah' => $upah_tebus, + 'terima' => "*", + 'kodgl' => "0", + 'nowakil' => $request->nowakil, + 'rebate' => $rebet, + 'marhuntebus' => $request->marhun, + 'historygadaian' => $norujukan, + 'tarikhbyrn' => $current->toDateString(), + 'teller' => $request->teller, + 'ujrah' => $ujrah, + 'onepercent' => $onepercent, + ]); + + $create_inoutmar = InOutMar::on($cawangan['mysql'])->create([ + 'tarikh' => $current->toDateString(), + 'masa' => $current->toTimeString(), + 'norujukan' => $norujukan, + 'nm' => $request->nilai_marhun, + 'pkd' => $request->teller, + 'drp' => $request->teller, + 'bln' => $current->month, + 'thn' => $current->year, + 'tag' => 0, + 'jenistebus' => $request->jenistebus, + 'namateller' => $request->teller + ]); + + $transaction_upah = TransaksiKeuntungan::on('mysql7')->create([ + 'norujukan' => $norujukan, + 'bayaran_keuntungan' => $upah_tebus, + 'bayaran_pembiayaan' => $gadai['bakipjm'], + 'keuntungan_rebet' => $upah_rebet_sebenar, + 'tarikh_bayaran'=> $current, + 'kodcaw'=> $kodcaw, + 'ujrah' => ($request->jeniskeuntungan == 'onepercent') ? $array_onepercent['ujrah'] : 0, + 'ujrah_rebet' => ($request->jeniskeuntungan == 'onepercent') ? $array_onepercent_rebet['ujrah'] : 0, + 'onepercent' => ($request->jeniskeuntungan == 'onepercent') ? $array_onepercent['onepercent'] : 0, + 'onepercent_rebet' => ($request->jeniskeuntungan == 'onepercent') ? $array_onepercent_rebet['onepercent'] : 0, + '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'){ + $baki_hargajualan = $gadai['bakihargajualan'] - $request->bakiupah; + $transaction = Transaction::on('mysql7')->create([ + 'trans_type' => $request->jenistebus, + 'norujukan' => $norujukan, + 'nokp' => $gadai['nokp'], + 'teller' => $request->teller, + 'kodcaw' => $kodcaw, + 'duit_masuk' => $request->bakiupah, + 'created_at' => $current, + 'bakiharga' => $baki_hargajualan, + ]); + }else{ + $baki_hargajualan = $gadai['bakihargajualan'] - $request->bakipinjaman; + $transaction = Transaction::on('mysql7')->create([ + 'trans_type' => $request->jenistebus, + 'norujukan' => $norujukan, + 'nokp' => $gadai['nokp'], + 'teller' => $request->teller, + 'kodcaw' => $kodcaw, + 'duit_masuk' => $harga_tebus['harga'], + 'created_at' => $current, + 'bakiharga' => $baki_hargajualan, + 'nowakil' => (int)$request->nowakil, + 'duitpelanggan' => isset($request->duitpelanggan) ? $request->duitpelanggan : 0, + 'bakipelanggan' => $request->bakipelanggan + ]); + } + + $update_gadai = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(array( + 'sttebus' => "T", + 't_update' => $current->toDateString(), + )); + + $audit = new Audit(); + $audit->users = $request->teller; + if($request->jenistebus == 'P'){ + $audit->actions = "Tambah Pembiayaan"; + }else if($request->jenistebus == 'S'){ + $audit->actions = "Tebus Separuh"; + }else if($request->jenistebus == 'T'){ + $audit->actions = "Tebus Penuh"; + } + $audit->norujukan = $norujukan; + $audit->new_data = $create_tebus; + $audit->kodcaw = $kodcaw; + $audit->created_at = $current; + $audit->updated_at = $current; + $audit->save(); + + return response()->json($update_gadai, 201); + } + + public function tebusUpdateAutoTawarruq($kodcaw,$norujukan,HttpRequest $request){ + $current = Carbon::now(); + $current = new Carbon(); + + $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); + + if($request->jenisbayarantebus == "tawarruq") + { + $rebet = $this->rebetselepastawarruq($kodcaw,$norujukan,$request->jeniskeuntungan); + } + else if($request->jenisbayarantebus == "nottawarruq") + { + $rebet = $this->rebet($kodcaw,$norujukan); + } + else{ + $rebet = 0; + } + + $gadai = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->first(); + + $update_gadai = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(array( + 'sttebus' => "T", + 't_update' => $current->toDateString(), + )); + + $upah_rebet = $this->kiraUpahRebet($kodcaw,$norujukan,$request->jeniskeuntungan); + + $create_tebus = Tebus::on($cawangan['mysql'])->create([ + 'kodcaw'=> $kodcaw, + 'norujukan'=> $norujukan, + 'nopelanggan' => $request->nopelanggan, + 'jenisbyr' => "TN", + 'jenistebus' => $request->jenistebus, + 'glcode' => "0", + 't_tebus' => $current->toDateString(), + 'jbg' => $request->jbg, + 'kadarupah' => $request->kadarupah, + 'nilaimarhun' => $request->nilai_marhun, + 'pinjaman' => $request->pinjaman, + 'ansuran' => $request->ansuran, + 'addpinjaman' => $request->addpinjaman, + 'bakipjm' => $request->bakipinjaman, + 'bakiupah' => $request->bakiupah, + 'terima' => "*", + 'kodgl' => "0", + 'nowakil' => $request->nowakil, + 'rebate' => $rebet, + 'marhuntebus' => $request->marhun, + 'historygadaian' => $request->historygadaian, + 'tarikhbyrn' => $current->toDateString(), + 'teller' => $request->teller + ]); + + $create_inoutmar = InOutMar::on($cawangan['mysql'])->create([ + 'tarikh' => $current->toDateString(), + 'masa' => $current->toTimeString(), + 'norujukan' => $norujukan, + 'nm' => $request->nilai_marhun, + 'pkd' => $request->teller, + 'drp' => $request->teller, + 'bln' => $current->month, + 'thn' => $current->year, + 'tag' => 0, + 'jenistebus' => $request->jenistebus, + 'namateller' => $request->teller + ]); + + $bayaran_pembiayaan = $request->totalbayaran - $request->bakiupah; + + $transaction_upah = TransaksiKeuntungan::on('mysql7')->create([ + 'norujukan' => $norujukan, + 'bayaran_keuntungan' => $request->bakiupah, + 'bayaran_pembiayaan' => $bayaran_pembiayaan, + 'keuntungan_rebet' => 0, + 'tarikh_bayaran'=> $current, + 'kodcaw'=> $kodcaw + ]); + + $transaction = Transaction::on('mysql7')->create([ + 'trans_type' => $request->jenistebus, + 'norujukan' => $norujukan, + 'nokp' => $gadai['nokp'], + 'teller' => $request->teller, + 'kodcaw' => $kodcaw, + 'duit_masuk' => $request->totalbayaran, + 'created_at' => $current, + 'bakiharga' => 0, + 'duitpelanggan' => $request->bayaranpelanggan, + 'bakipelanggan' => $request->bakipelanggan + ]); + + $audit = new Audit(); + $audit->users = $request->teller; + $audit->actions = "Auto Tawarruq"; + $audit->norujukan = $norujukan; + $audit->new_data = $create_tebus; + $audit->kodcaw = $kodcaw; + $audit->created_at = $current; + $audit->updated_at = $current; + $audit->save(); + + return response()->json($update_gadai, 201); + } + + public function kiraupahUjrahOnePercent($kodcaw,$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']; + $array_upah = $onepercentservices->kiraanKeuntunganSebenar($gadai_data['pinjaman'],$gadai_data['nilaimarhun'],$gadai_data['kadarupah'],$gadai_data['percentpinj']); + $ujrah = $bilang_bln * $array_upah['ujrah']; + $onepercent = $bilang_bln * $array_upah['onepercent']; + $onepercent_semasa = $onepercent; + $ujrah_semasa = $ujrah; + + return ['ujrah' => $ujrah_semasa, 'onepercent' => $onepercent_semasa]; + } + + public function kiraupahUjrahOnePercentRebate($kodcaw,$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']; + $array_upah = $onepercentservices->kiraanKeuntunganRebet($gadai_data['bakipjm'],$gadai_data['nilaimarhun'],$gadai_data['kadarupah'],$gadai_data['margin_semasa']); + $ujrah = $bilang_bln * $array_upah['ujrah']; + $onepercent = $bilang_bln * $array_upah['onepercent']; + + return ['ujrah' => $ujrah, 'onepercent' => $onepercent]; + } + + +} \ No newline at end of file diff --git a/database/factories/GadaiFactory.php b/database/factories/GadaiFactory.php index c9a3c5c..6ca8d29 100644 --- a/database/factories/GadaiFactory.php +++ b/database/factories/GadaiFactory.php @@ -17,10 +17,10 @@ class GadaiFactory return [ 'kodcaw' => 'KB2', - 'norujukan' => ($number > 9) ? 'KB2231123-00' . $number : 'KB2231123-000' . $number , + 'norujukan' => ($number > 9) ? 'KB2231207-00' . $number : 'KB2231207-000' . $number , 'nopelanggan' => 'M03-00009968', 'nokp' => '630411035213', - 't_gadai' => '2023-11-23', + 't_gadai' => '2023-12-07', 'masa' => '13:46:57', 'sirig' => $number++, 'nilaimarhun' => 3000.09, diff --git a/database/factories/MarhunFactory.php b/database/factories/MarhunFactory.php index ecad2f6..5945000 100644 --- a/database/factories/MarhunFactory.php +++ b/database/factories/MarhunFactory.php @@ -19,7 +19,7 @@ class MarhunFactory 'kodcaw' => 'KB2', 'marhun' => 'R/L', 't_gadai' => '2023-11-23', - 'norujukan' => ($number > 9) ? 'KB2231123-00' . $number : 'KB2231123-000' . $number , + 'norujukan' => ($number > 9) ? 'KB2231207-00' . $number : 'KB2231207-000' . $number , 'bil' => 1, 'nota' => $number++, 'karat' => '24.0K', diff --git a/database/migrations/2023_11_08_115215_add_onepercent_to_gadai_table.php b/database/migrations/2023_11_08_115215_add_onepercent_to_gadai_table.php index bd8661e..f22210a 100644 --- a/database/migrations/2023_11_08_115215_add_onepercent_to_gadai_table.php +++ b/database/migrations/2023_11_08_115215_add_onepercent_to_gadai_table.php @@ -62,7 +62,7 @@ class AddOnepercentToGadaiTable extends Migration $db_connection = $this->getActiveDB(); foreach($db_connection as $dbase){ - if (Schema::connection('mysql7')->hasColumn('ujrah', 'onepercent')){ + if (Schema::connection('mysql7')->hasColumn('kadarujrah', 'ujrah', 'onepercent','margin_semasa','tagbaru')){ Schema::connection($dbase)->table('gadai', function (Blueprint $table) { $table->dropColumn(['kadarujrah', 'ujrah', 'onepercent','margin_semasa','tagbaru']); }); diff --git a/database/migrations/2023_12_08_151908_add_version_to_arrahn_master_db_table.php b/database/migrations/2023_12_08_151908_add_version_to_arrahn_master_db_table.php new file mode 100644 index 0000000..03a9ac9 --- /dev/null +++ b/database/migrations/2023_12_08_151908_add_version_to_arrahn_master_db_table.php @@ -0,0 +1,34 @@ +char('version', 4)->default($value); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::connection('mysql7')->table('arrahn_master_db', function (Blueprint $table) { + $table->dropColumn(['version']); + }); + } +} diff --git a/tinker/getOnePercent.php b/tinker/getOnePercent.php index b050fb0..5c0671b 100644 --- a/tinker/getOnePercent.php +++ b/tinker/getOnePercent.php @@ -1,14 +1,11 @@ getTotalKeuntungan('B'); -$test2 = $report->getTotalUjrah('B'); - - -dd($test,$test2); +use App\Services\MasterServices; +use App\Support\v2\Calculation; + $test2 = new Calculation(); + $test = new MasterServices('KB2'); + // $response = $test->kiraUpahTawarruq('KB2231207-0004'); + $response = 'tes'; +dd($response);