diff --git a/app/Http/Controllers/TransactionOnlineController.php b/app/Http/Controllers/TransactionOnlineController.php index 7bfd1ef..60224df 100644 --- a/app/Http/Controllers/TransactionOnlineController.php +++ b/app/Http/Controllers/TransactionOnlineController.php @@ -11,6 +11,9 @@ use App\Cawangan; use App\GlDetail; use Illuminate\Http\Request; use Carbon\Carbon; +use App\Services\OnePercentServices; +use Log; +use Illuminate\Support\Facades\DB; use App\Http\Controllers\TebusController as TebusController; @@ -167,6 +170,9 @@ class TransactionOnlineController extends Controller }else{ $lelong_tawarruq = 1; } + $onepercent = new OnePercentServices(); + + $old_data = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->first(); $baki_hargajualan = $gadai['bakihargajualan'] - $bayaran; @@ -174,35 +180,92 @@ class TransactionOnlineController extends Controller $baki_pinjaman = $gadai['bakipjm'] - $baki_bayaran; - $transaction = Transaction::on('mysql7')->create([ - 'trans_type' => 'A', - 'norujukan' => $norujukan, - 'nokp' => $gadai['nokp'], - 'teller' => 'Online', - 'kodcaw' => $kodcaw, - 'duit_masuk' => $bayaran, - 'created_at' => Carbon::parse($paid_at), - 'bakiharga' => $baki_hargajualan, - ]); + $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'=> Carbon::parse($paid_at), - 'kodcaw'=> $kodcaw - ]); + $keuntungan = $onepercent->kiraanKeuntunganSebenar($gadai['bakipjm'],$gadai['nilaimarhun'],$gadai['kadarupah'],$margin_semasa); + $ujrahasal = $onepercent->kiraanUjrahSebenar($gadai['nilaimarhun'],$gadai['kadarupah'],$gadai['margin_semasa']); - $update_gadai = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(array( - 'bakipjm' => $baki_pinjaman, - 'jbg' => 0, - 't_update' => Carbon::parse($paid_at)->toDateString(), - 'bakihargajualan' => $baki_hargajualan, - 'tempohbayar' => $tempohbayar, - 'lelong_tawarruq' => $lelong_tawarruq - )); - return response()->json($update_gadai, 200); + $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' => 'Online', + 'kodcaw' => $kodcaw, + 'duit_masuk' => $bayaran, + 'created_at' => $current, + 'bakiharga' => $baki_hargajualan, + ]); + + 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' => ($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, + ]); + + 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 = 'Online'; + $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); } public function createAdvansur($kodcaw,$norujukan,$bayaran,$paid_at){