diff --git a/app/Http/Controllers/GadaiController.php b/app/Http/Controllers/GadaiController.php index 8c26e0b..b017e23 100644 --- a/app/Http/Controllers/GadaiController.php +++ b/app/Http/Controllers/GadaiController.php @@ -144,7 +144,8 @@ class GadaiController extends Controller 'sirig' => $request->sirig, 't_gadai' => $current->toDateString(), 'sttebus' => '', - 'masa' =>$current->toTimeString() + 'masa' =>$current->toTimeString(), + 'tagbaru' => 1 ]); return response()->json($gadai, 201); }); @@ -336,7 +337,6 @@ class GadaiController extends Controller } public function kiraupahTawarruq($kodcaw,$norujukan){ - $onepercentservices = new OnePercentServices(); $cawangan = Cawangan::on('mysql7') @@ -354,7 +354,7 @@ class GadaiController extends Controller } $bilang_bln = $tempoh - $gadai_data['tempohbayar']; - $upah = $onepercentservices->kiraanKeuntunganSebenar($gadai_data['pinjaman'],$gadai_data['nilaimarhun'],$gadai_data['kadarupah'],$gadai_data['margin_semasa']); + $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']; @@ -385,7 +385,7 @@ class GadaiController extends Controller } $bilang_bln = $tempoh - $gadai_data['tempohbayar']; - $upah = $onepercentservices->kiraanKeuntunganSebenar($gadai_data['pinjaman'],$gadai_data['nilaimarhun'],$gadai_data['kadarupah'],$gadai_data['margin_semasa']); + $upah = $onepercentservices->kiraanKeuntunganSebenar($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']; @@ -474,6 +474,7 @@ class GadaiController extends Controller }else{ $lelong_tawarruq = 1; } + $onepercent = new OnePercentServices(); $old_data = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->first(); @@ -483,50 +484,91 @@ class GadaiController extends Controller $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 - ]); + $margin_semasa = ($gadai['bakipjm'] / $gadai['nilaimarhun']) * 100; - $transaction_upah = TransaksiKeuntungan::on('mysql7')->create([ - 'norujukan' => $norujukan, - 'bayaran_keuntungan' => $upahsemasa, - 'bayaran_pembiayaan' => $baki_bayaran, - 'keuntungan_rebet'=> $upahrebet, - 'tarikh_bayaran'=> $current, - 'kodcaw'=> $kodcaw - ]); + $keuntungan = $onepercent->kiraanKeuntunganSebenar($gadai['bakipjm'],$gadai['nilaimarhun'],$gadai['kadarupah'],$margin_semasa); + $ujrahasal = $onepercent->kiraanUjrahSebenar($gadai['nilaimarhun'],$gadai['kadarupah'],$gadai['percentpinj']); - $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 - )); + $onepercentasal = $gadai['pinjaman'] * (1/100); - $new_data = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->first(); + try { - $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(); + 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) { - return response()->json($update_gadai, 200); + $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 + ]); + + if($gadai['tempoh'] >= 12.0){ + $tempoh = 12; + }else{ + $tempoh = $gadai['tempoh']; + } + $bilang_bln = $tempoh - $gadai['tempohbayar']; + + $transaction_upah = TransaksiKeuntungan::on('mysql7')->create([ + 'norujukan' => $norujukan, + 'bayaran_keuntungan' => $upahsemasa, + 'bayaran_pembiayaan' => $baki_bayaran, + 'keuntungan_rebet'=> $upahrebet, + 'tarikh_bayaran'=> $current, + 'kodcaw'=> $kodcaw, + 'ujrah' => ($ujrahasal*$bilang_bln), + 'ujrah_rebet' => ($keuntungan['ujrah'] * $bilang_bln), + 'onepercent' => ($onepercentasal * $bilang_bln), + 'onepercent_rebet' => ($keuntungan['onepercent'] * $bilang_bln), + 'tempoh' => $gadai['tempoh'], + 'beza_tempoh' => $bilang_bln, + 'margin_semasa' => $margin_semasa, + ]); + + 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(); + return response()->json("success", 200); + + }); + }catch(\Exception $e){ + return response()->json("Transaction failed: " . $e->getMessage(),500); + } } public function getGadaianSemasa($kodcaw){ @@ -3667,8 +3709,8 @@ class GadaiController extends Controller $kadarujrah = $onePercentServices->getKadarUjrah($request->nilaimarhun); - $test = $this->kiraupahTawarruq('KB2','KB2231109-0001'); - dd($test); + // $test = $this->kiraupahTawarruq('KB2','KB2231109-0001'); + // dd($test); return $kadarujrah; } diff --git a/app/Http/Controllers/TebusController.php b/app/Http/Controllers/TebusController.php index ba04abe..24f7533 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 Illuminate\Http\Request; use Carbon\Carbon; @@ -88,6 +88,8 @@ class TebusController extends Controller } public function kiraupahTawarruq($kodcaw,$norujukan){ + $onepercentservices = new OnePercentServices(); + $cawangan = Cawangan::on('mysql7') ->where('kodcaw','=',$kodcaw) ->first(); @@ -103,7 +105,9 @@ class TebusController extends Controller } $bilang_bln = $tempoh - $gadai_data['tempohbayar']; - $upahsemasa_raw = $bilang_bln * (($gadai_data['kadarupah']/100 )* $gadai_data['pinjaman']); + $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 = number_format($upahsemasa_raw,2); if(strpos($upah_semasa_round,',')){ @@ -118,6 +122,8 @@ class TebusController extends Controller } public function kiraUpahRebet($kodcaw,$norujukan){ + $onepercentservices = new OnePercentServices(); + $cawangan = Cawangan::on('mysql7') ->where('kodcaw','=',$kodcaw) ->first(); @@ -134,7 +140,9 @@ class TebusController extends Controller $bilang_bln = $tempoh - $gadai_data['tempohbayar']; - $upahrebet_raw = $bilang_bln * (($gadai_data['kadarupah']/100 )* $gadai_data['bakipjm']); + $upah = $onepercentservices->kiraanKeuntunganSebenar($gadai_data['bakipjm'],$gadai_data['nilaimarhun'],$gadai_data['kadarupah'],$gadai_data['margin_semasa']); + $upahrebet_raw = $bilang_bln * $upah['keuntungan']; + // $upahrebet_raw = $bilang_bln * (($gadai_data['kadarupah']/100 )* $gadai_data['bakipjm']); $upah_rebet_round = number_format($upahrebet_raw,2); if(strpos($upah_rebet_round,',')){ diff --git a/app/Services/OnePercentServices.php b/app/Services/OnePercentServices.php index b917724..6e0099e 100644 --- a/app/Services/OnePercentServices.php +++ b/app/Services/OnePercentServices.php @@ -38,6 +38,20 @@ class OnePercentServices return $onepercent; } + public function kiraanUjrahSebenar(float $nilaimarhun = 0.0,float $kadarujrah = 0.0,float $margin = 0.0){ + + if($kadarujrah >= 1){ + return; + } + + $ujrah = ($kadarujrah/100) * $nilaimarhun; + $formula_margin = ($this->maks_margin - $margin) / $this->maks_margin; + $rebate_ujrah = $formula_margin * $ujrah; + $ujrah_sebenar = $ujrah - $rebate_ujrah; + + return $ujrah_sebenar; + } + public function kiraanKeuntunganSebenar(float $pembiayaan = 0.0,float $nilaimarhun = 0.0,float $kadarujrah = 0.0,float $margin = 0.0){ $onepercent = $this->kiraanOnePercent($pembiayaan); diff --git a/app/TransaksiKeuntungan.php b/app/TransaksiKeuntungan.php index 691485b..6176d26 100644 --- a/app/TransaksiKeuntungan.php +++ b/app/TransaksiKeuntungan.php @@ -14,7 +14,7 @@ class TransaksiKeuntungan extends Model * @var array */ protected $fillable = [ - 'norujukan','bayaran_keuntungan','tarikh_bayaran','kodcaw','bayaran_pembiayaan','keuntungan_rebet' + 'norujukan','bayaran_keuntungan','tarikh_bayaran','kodcaw','bayaran_pembiayaan','keuntungan_rebet','ujrah','ujrah_rebet','onepercent','onepercent_rebet','tempoh','beza_tempoh','margin_semasa' ]; /**