From 3c110bde43680bed646c46cceac7d66758d80509 Mon Sep 17 00:00:00 2001 From: hafifierahman Date: Sun, 10 Nov 2024 08:18:34 +0800 Subject: [PATCH 01/13] first commit --- app/Http/Controllers/TebusController.php | 7 + app/Services/MasterServices.php | 13 + app/Support/OnePercent.php | 7 + app/Support/v2/Penebusan.php | 432 +++++++++++++++++++++++ routes/web.php | 2 +- 5 files changed, 460 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/TebusController.php b/app/Http/Controllers/TebusController.php index d3efa6a..44d6da0 100644 --- a/app/Http/Controllers/TebusController.php +++ b/app/Http/Controllers/TebusController.php @@ -2001,6 +2001,13 @@ class TebusController extends Controller return $response; } + public function tebusTransaksiUpdate($kodcaw,$norujukan,Request $request){ + $master = new MasterServices($kodcaw); + $response = $master->tebusTransaksiUpdate($kodcaw,$norujukan,$request); + + return $response; + } + } diff --git a/app/Services/MasterServices.php b/app/Services/MasterServices.php index 8a01139..b304244 100644 --- a/app/Services/MasterServices.php +++ b/app/Services/MasterServices.php @@ -247,6 +247,19 @@ class MasterServices } } + public function tebusTransaksiUpdate($kodcaw,$norujukan,HttpRequest $request){ + if($request->jeniskeuntungan == 'onepercent'){ + $onepercent = new OnePercentEngine($this->cawangan); + $response = $onepercent->tebusTransaksiUpdate($kodcaw,$norujukan,$request); + + }else{ + $tawarruq = new TawarruqEngine($this->cawangan); + $response = $tawarruq->tebusTransaksiUpdate($kodcaw,$norujukan,$request); + } + + return $response; + } + /* End Penebusan */ public function test(){ diff --git a/app/Support/OnePercent.php b/app/Support/OnePercent.php index 1638a45..b55ab5c 100644 --- a/app/Support/OnePercent.php +++ b/app/Support/OnePercent.php @@ -207,6 +207,13 @@ class OnePercent extends MasterServices return $response; } + public function tebusTransaksiUpdate($kodcaw,$norujukan,HttpRequest $request){ + $tebus = new Penebusan($this->kodcaw,$this->cawangan_info); + $response = $tebus->tebusTransaksiUpdate($this->kodcaw,$norujukan,$request); + + return $response; + } + /* End Penebusan */ public function test(){ diff --git a/app/Support/v2/Penebusan.php b/app/Support/v2/Penebusan.php index af95f76..5243e97 100644 --- a/app/Support/v2/Penebusan.php +++ b/app/Support/v2/Penebusan.php @@ -9,7 +9,10 @@ use App\KadarUpah; use App\Support\v2\Calculation; use Carbon\Carbon; use App\Gadai; +use App\HargaEmas; use App\InOutMar; +use App\KomuditiPurchase; +use App\KomuditiTransaksi; use App\Marhun; use App\Moratorium; use App\Support\OnePercent; @@ -916,5 +919,434 @@ class Penebusan return $tempoh_gadai; } + public function tebusTransaksiUpdate($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(); + + //check duplicate + $data = Transaction::on('mysql7')->where('norujukan','=',$norujukan)->where('trans_type','=','AT')->first(); + + if(!empty($data)){ + return 'duplicate'; + } + + $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($norujukan); + $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); + + $onepercent_rebet = $array_onepercent_rebet['onepercent'] - $upah_rebet['onepercent']; + $ujrah_rebet = $array_onepercent_rebet['ujrah'] - $upah_rebet['ujrah']; + + $margin_semasa = ($gadai['bakipjm']/$gadai['nilaimarhun']) * 100; + $ujrah = $array_onepercent['ujrah']; + $onepercent = $array_onepercent['onepercent']; + } + } + + $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' => $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_rebet, + 'onepercent' => $onepercent_rebet, + ]); + + $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' => $upah_tebus, + 'bayaran_pembiayaan' => $bayaran_pembiayaan, + 'keuntungan_rebet' => $upah_rebet_sebenar, + 'tarikh_bayaran'=> $current, + 'kodcaw'=> $kodcaw, + 'ujrah' => ($request->jeniskeuntungan == 'onepercent') ? $array_onepercent['ujrah'] : 0, + 'ujrah_rebet' => ($request->jeniskeuntungan == 'onepercent') ? $ujrah_rebet : 0, + 'onepercent' => ($request->jeniskeuntungan == 'onepercent') ? $array_onepercent['onepercent'] : 0, + 'onepercent_rebet' => ($request->jeniskeuntungan == 'onepercent') ? $onepercent_rebet : 0, + 'margin_semasa' => ($request->jeniskeuntungan == 'onepercent') ? $margin_semasa : 0, + 'tempoh' => $gadai['tempoh'], + 'beza_tempoh' => ($gadai['tempoh'] - $gadai['tempohbayar']), + ]); + + $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' => $request->totalbayaran, + 'created_at' => $current, + 'bakiharga' => $baki_hargajualan, + 'nowakil' => (int)$request->nowakil, + 'duitpelanggan' => isset($request->duitpelanggan) ? $request->duitpelanggan : 0, + 'bakipelanggan' => isset($request->bakipelanggan) ? $request->bakipelanggan : 0 + ]); + + $audit = new Audit(); + $audit->users = $request->teller; + $audit->actions = "Pembiayaan Semula"; + $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); + } + + private function transaksiPembiayaanSemula($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(); + $gadai = optional($gadai)->toArray(); + + //check duplicate + $data = Transaction::on('mysql7')->where('norujukan','=',$norujukan)->where('trans_type','=','AT')->first(); + + if(!empty($data)){ + return 'duplicate'; + } + + if(!$gadai){ + return 'gadai no-data'; + } + + try{ + $harga_tebus = $this->hargaTebusTawarruq($kodcaw,$norujukan,$request->jeniskeuntungan); + + if($gadai['tagbaru'] == 0){ + $upah_tebus = $this->kiraupahTawarruq($norujukan); + $upah_rebet = $this->kiraUpahRebetSebenar($kodcaw,$norujukan); + $upah_rebet_sebenar = $harga_tebus['harga'] - $gadai['bakipjm']; + }else{ + $array_onepercent = $this->kiraupahUjrahOnePercent($kodcaw,$norujukan); + $array_onepercent_rebet = $this->kiraupahUjrahOnePercentRebate($kodcaw,$norujukan); + + $onepercent_rebet = $array_onepercent_rebet['onepercent'] - $upah_rebet['onepercent']; + $ujrah_rebet = $array_onepercent_rebet['ujrah'] - $upah_rebet['ujrah']; + + $margin_semasa = ($gadai['bakipjm']/$gadai['nilaimarhun']) * 100; + $ujrah = $array_onepercent['ujrah']; + $onepercent = $array_onepercent['onepercent']; + } + + 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_rebet, + 'onepercent' => $onepercent_rebet, + ]); + + $bayaran_pembiayaan = $request->totalbayaran - $request->bakiupah; + + TransaksiKeuntungan::on('mysql7')->create([ + 'norujukan' => $norujukan, + 'bayaran_keuntungan' => $upah_tebus, + 'bayaran_pembiayaan' => $bayaran_pembiayaan, + 'keuntungan_rebet' => $upah_rebet_sebenar, + 'tarikh_bayaran'=> $current, + 'kodcaw'=> $kodcaw, + 'ujrah' => ($request->jeniskeuntungan == 'onepercent') ? $array_onepercent['ujrah'] : 0, + 'ujrah_rebet' => ($request->jeniskeuntungan == 'onepercent') ? $ujrah_rebet : 0, + 'onepercent' => ($request->jeniskeuntungan == 'onepercent') ? $array_onepercent['onepercent'] : 0, + 'onepercent_rebet' => ($request->jeniskeuntungan == 'onepercent') ? $onepercent_rebet : 0, + 'margin_semasa' => ($request->jeniskeuntungan == 'onepercent') ? $margin_semasa : 0, + 'tempoh' => $gadai['tempoh'], + 'beza_tempoh' => ($gadai['tempoh'] - $gadai['tempohbayar']), + ]); + + $baki_hargajualan = $gadai['bakihargajualan'] - $request->bakipinjaman; + 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' => $baki_hargajualan, + 'nowakil' => (int)$request->nowakil, + 'duitpelanggan' => isset($request->duitpelanggan) ? $request->duitpelanggan : 0, + 'bakipelanggan' => isset($request->bakipelanggan) ? $request->bakipelanggan : 0 + ]); + + /* Create Gadai */ + $gadaiTransaction = Gadai::on($cawangan['mysql'])->where('t_gadai','=',$current->toDateString())->orderBy('sirig', 'desc')->first(); + $gadaiTransaction = optional($gadaiTransaction)->toArray(); + + $new_sirig = ($gadaiTransaction) ? $gadaiTransaction['sirig'] + 1 : 1; + + $new_transaction = sprintf("%04d",$new_sirig); + $new_sag_number = strtoupper($cawangan['kodcaw']) . $current->year . $current->month . $current->day . '-' .$new_transaction; + + $gadai = Gadai::on($cawangan['mysql'])->create([ + 'kodcaw'=>$kodcaw, + 'norujukan' => $new_sag_number, + 'nopelanggan' => $request->nopelanggan, + 'nokp' => $request->nokp, + 'sirig' => $request->sirig, + 't_gadai' => $current->toDateString(), + 'sttebus' => '', + 'masa' =>$current->toTimeString(), + 'tagbaru' => 1 + ]); + + $marhun = Marhun::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->get(); + + foreach($marhun as $marhunloop){ + $karatbaru = str_replace('.','-',$marhunloop['karat']); + $harga_emas = HargaEmas::on('mysql7')->select('harga')->where('karat','=',$karatbaru)->first(); + + $harga = ($request->jenisAT == 'hargalama') ? $marhunloop['harga'] : $harga_emas['harga']; + + $nilai_marhun = (floatval($harga) * floatval($marhunloop['berat'])); + + $marhunToCreate = [ + 'kodcaw'=> $kodcaw, + 'norujukan'=> $new_sag_number, + 't_gadai' => $current->toDateString(), + 'bil' => $marhun['kuantiti'], + 'marhun' => $marhun['marhun'], + 'nota' => $marhun['nota'], + 'tag_permata' => $marhun['tag_permata'] != null ? $marhun['tag_permata'] : 0, + 'berat_batu_permata' => $marhun['berat_batu_permata'] != null ? $marhun['berat_batu_permata'] : '', + 'karat' => $marhun['karat'], + 'berat' => $marhun['berat_emas'], + 'harga' => $harga, + 'n_marhun' => $nilai_marhun + ]; + + if($marhunToCreate['berat_batu_permata'] == '') { + $marhunToCreate['berat_batu_permata'] = null; + }; + + $new_marhun = Marhun::on($cawangan['mysql'])->create($marhunToCreate); + } + + $total_nilai_marhun = Marhun::on($cawangan['mysql'])->where('norujukan',$new_sag_number)->sum('n_marhun'); + + $total_nilai_marhun = $request->total_nilai_marhun; + $margin_pinjaman = ($request->pinjaman / $total_nilai_marhun); + + $onePercentServices = new Calculation(); + $keuntungan = $onePercentServices->kiraanKeuntunganSebenar($request->pembiayaan,$request->nilaimarhun,$request->kadarujrah,$margin_pinjaman); + + $keuntungan_sebln = $keuntungan['keuntungan']; + $keuntungan_sebln = str_replace(',','',$keuntungan_sebln); + + $kadarupah = $request->kadarkeuntungan * 100; + $keuntungan6bulan = $keuntungan_sebln * 6; + $keuntungan12bulan = $keuntungan_sebln * 12; + $hargajualan = $request->pinjaman + $keuntungan12bulan; + + $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, + 'tunggakanujrah' => $akrual['ujrah'], + 'tunggakanonepercent' => $akrual['keuntungan'], + )); + + $new_data = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->first(); + + $komuditi_current = KomuditiPurchase::on('mysql7')->where('date_purchase','=',$current->toDateString())->orderBy('created_at','desc')->first(); + + $unit_current = $komuditi_current['unit_komuditi']; + + $update_unit = $unit_current - $request->unit_komuditi; + + $update_komuditi = KomuditiPurchase::on('mysql7')->where('id','=',$komuditi_current['id'])->update([ + 'unit_komuditi' => $update_unit + ]); + + $komuditi_transaksi = KomuditiTransaksi::on('mysql7')->create([ + 'unit_komuditi' => $request->unit_komuditi, + 'nosijil'=>$komuditi_current['no_sijil'], + 'norujukan' => $request->norujukan, + 'kodcaw' => $request->kodcaw , + 'teller' => $request->teller , + 'masa' => $current->toTimeString(), + 'tarikh' => $current->toDateString() + ]); + + Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(array( + 'sttebus' => "T", + 't_update' => $current->toDateString(), + 'historygadaian' => $new_sag_number, + 'tag_tebus' => $request->jenistebus, + )); + + }catch(\Exception $e){ + + + } + + + } + + private function transaksiTambahPembiayaan($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(); + + try{ + //check duplicate + $data = Transaction::on('mysql7')->where('norujukan','=',$norujukan)->where('trans_type','=','AT')->first(); + + if(!empty($data)){ + return 'duplicate'; + } + }catch(\Exception $e){ + + } + } + + private function transaksiPenyelesaianSebahagian($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(); + + try{ + //check duplicate + $data = Transaction::on('mysql7')->where('norujukan','=',$norujukan)->where('trans_type','=','AT')->first(); + + if(!empty($data)){ + return 'duplicate'; + } + }catch(\Exception $e){ + + } + } + } \ No newline at end of file diff --git a/routes/web.php b/routes/web.php index 18ac768..a3b8b27 100644 --- a/routes/web.php +++ b/routes/web.php @@ -150,7 +150,7 @@ $router->group(['prefix'=>'api'], function () use ($router){ $router->put('updatetebus/{kodcaw}/{norujukan}',['uses'=>'TebusController@tebusUpdate']); $router->put('updateautotawarruq/{kodcaw}/{norujukan}',['uses'=>'TebusController@tebusUpdateAutoTawarruq']); $router->get('listpenebusanhistory/{kodcaw}',['uses'=>'TebusController@listhistorypenebusan']); - + $router->post('updatetransaksi/{kodcaw}/{norujukan}',['uses'=>'TebusController@tebusTransaksiUpdate']); //API FARIS $router->put('tebus/serah_marhun_teller/{kodcaw}/{norujukan}',['uses'=>'GadaiController@barcodescanTebus']); // $router->get('tebus_serahan/{kodcaw}',['uses'=>'TebusController@SerahMarhunTeller']); From 72a8d3228c1926acb2bed3761e288026be5370a6 Mon Sep 17 00:00:00 2001 From: Hafifie PKB Date: Tue, 12 Nov 2024 13:50:07 +0800 Subject: [PATCH 02/13] test transaction --- app/Support/OnePercent.php | 2 +- app/Support/v2/Penebusan.php | 644 +++++++++++++++-------------------- 2 files changed, 283 insertions(+), 363 deletions(-) diff --git a/app/Support/OnePercent.php b/app/Support/OnePercent.php index b55ab5c..2bb5d18 100644 --- a/app/Support/OnePercent.php +++ b/app/Support/OnePercent.php @@ -181,7 +181,7 @@ class OnePercent extends MasterServices public function tebusUpdateAutoTawarruq($kodcaw,$norujukan,HttpRequest $request){ $tebus = new Penebusan($this->kodcaw,$this->cawangan_info); - $response = $tebus->tebusUpdateAutoTawarruq($this->kodcaw,$norujukan,$request); + $response = $tebus->transaksiPembiayaanSemula($this->kodcaw,$norujukan,$request); return $response; } diff --git a/app/Support/v2/Penebusan.php b/app/Support/v2/Penebusan.php index 5243e97..b2ba225 100644 --- a/app/Support/v2/Penebusan.php +++ b/app/Support/v2/Penebusan.php @@ -203,8 +203,9 @@ class Penebusan $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); + $onepercent = $onepercentservices->getRoundedMethod($bilang_bln * $upah['onepercent']); + $ujrah = $onepercentservices->getRoundedMethod($bilang_bln * $upah['ujrah']); + $upahsemasa_raw = $onepercentservices->getRoundedMethod($onepercent + $ujrah); return $upahsemasa_raw; } @@ -919,156 +920,8 @@ class Penebusan return $tempoh_gadai; } - public function tebusTransaksiUpdate($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(); - - //check duplicate - $data = Transaction::on('mysql7')->where('norujukan','=',$norujukan)->where('trans_type','=','AT')->first(); - - if(!empty($data)){ - return 'duplicate'; - } - - $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($norujukan); - $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); - - $onepercent_rebet = $array_onepercent_rebet['onepercent'] - $upah_rebet['onepercent']; - $ujrah_rebet = $array_onepercent_rebet['ujrah'] - $upah_rebet['ujrah']; - - $margin_semasa = ($gadai['bakipjm']/$gadai['nilaimarhun']) * 100; - $ujrah = $array_onepercent['ujrah']; - $onepercent = $array_onepercent['onepercent']; - } - } - - $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' => $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_rebet, - 'onepercent' => $onepercent_rebet, - ]); - - $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' => $upah_tebus, - 'bayaran_pembiayaan' => $bayaran_pembiayaan, - 'keuntungan_rebet' => $upah_rebet_sebenar, - 'tarikh_bayaran'=> $current, - 'kodcaw'=> $kodcaw, - 'ujrah' => ($request->jeniskeuntungan == 'onepercent') ? $array_onepercent['ujrah'] : 0, - 'ujrah_rebet' => ($request->jeniskeuntungan == 'onepercent') ? $ujrah_rebet : 0, - 'onepercent' => ($request->jeniskeuntungan == 'onepercent') ? $array_onepercent['onepercent'] : 0, - 'onepercent_rebet' => ($request->jeniskeuntungan == 'onepercent') ? $onepercent_rebet : 0, - 'margin_semasa' => ($request->jeniskeuntungan == 'onepercent') ? $margin_semasa : 0, - 'tempoh' => $gadai['tempoh'], - 'beza_tempoh' => ($gadai['tempoh'] - $gadai['tempohbayar']), - ]); - - $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' => $request->totalbayaran, - 'created_at' => $current, - 'bakiharga' => $baki_hargajualan, - 'nowakil' => (int)$request->nowakil, - 'duitpelanggan' => isset($request->duitpelanggan) ? $request->duitpelanggan : 0, - 'bakipelanggan' => isset($request->bakipelanggan) ? $request->bakipelanggan : 0 - ]); - - $audit = new Audit(); - $audit->users = $request->teller; - $audit->actions = "Pembiayaan Semula"; - $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); - } - - private function transaksiPembiayaanSemula($kodcaw,$norujukan,HttpRequest $request){ - $current = Carbon::now(); - $current = new Carbon(); + public function transaksiPembiayaanSemula($kodcaw,$norujukan,HttpRequest $request){ $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); @@ -1086,223 +939,38 @@ class Penebusan return 'gadai no-data'; } + $array_tebus = $request->only(['jeniskeuntungan', 'nopelanggan','jenistebus','addpinjaman','nowakil','marhun','teller']); + $array_trans = $request->only(['nopelanggan', 'noic','jenisAT','pinjaman','marhun','teller','jenistebus']); + $array_tebus_base = $request->only(['totalbayaran', 'bakiupah','jeniskeuntungan','bakipinjaman','jenistebus','teller','nowakil','duitpelanggan']); + $array_trans_base = $request->only(['pinjaman','teller']); + try{ - $harga_tebus = $this->hargaTebusTawarruq($kodcaw,$norujukan,$request->jeniskeuntungan); + DB::transaction(function () use ($kodcaw,$norujukan,$gadai,$cawangan,$array_tebus,$array_trans,$array_tebus_base,$array_trans_base) { + $this->saveTebus($kodcaw,$norujukan,$gadai,$cawangan,$array_tebus); + $this->createTransaction($cawangan,$kodcaw,$norujukan,$array_trans); - if($gadai['tagbaru'] == 0){ - $upah_tebus = $this->kiraupahTawarruq($norujukan); - $upah_rebet = $this->kiraUpahRebetSebenar($kodcaw,$norujukan); - $upah_rebet_sebenar = $harga_tebus['harga'] - $gadai['bakipjm']; - }else{ - $array_onepercent = $this->kiraupahUjrahOnePercent($kodcaw,$norujukan); - $array_onepercent_rebet = $this->kiraupahUjrahOnePercentRebate($kodcaw,$norujukan); + DB::connection('mysql7')->transaction(function () use ($kodcaw,$norujukan,$gadai,$array_tebus_base,$array_trans_base) { + $this->saveTebusBase($kodcaw,$norujukan,$gadai,$array_tebus_base); + $this->createTransactionBase($norujukan,$kodcaw,$array_trans_base); + }); + }); - $onepercent_rebet = $array_onepercent_rebet['onepercent'] - $upah_rebet['onepercent']; - $ujrah_rebet = $array_onepercent_rebet['ujrah'] - $upah_rebet['ujrah']; - - $margin_semasa = ($gadai['bakipjm']/$gadai['nilaimarhun']) * 100; - $ujrah = $array_onepercent['ujrah']; - $onepercent = $array_onepercent['onepercent']; - } - - 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_rebet, - 'onepercent' => $onepercent_rebet, - ]); - - $bayaran_pembiayaan = $request->totalbayaran - $request->bakiupah; - - TransaksiKeuntungan::on('mysql7')->create([ - 'norujukan' => $norujukan, - 'bayaran_keuntungan' => $upah_tebus, - 'bayaran_pembiayaan' => $bayaran_pembiayaan, - 'keuntungan_rebet' => $upah_rebet_sebenar, - 'tarikh_bayaran'=> $current, - 'kodcaw'=> $kodcaw, - 'ujrah' => ($request->jeniskeuntungan == 'onepercent') ? $array_onepercent['ujrah'] : 0, - 'ujrah_rebet' => ($request->jeniskeuntungan == 'onepercent') ? $ujrah_rebet : 0, - 'onepercent' => ($request->jeniskeuntungan == 'onepercent') ? $array_onepercent['onepercent'] : 0, - 'onepercent_rebet' => ($request->jeniskeuntungan == 'onepercent') ? $onepercent_rebet : 0, - 'margin_semasa' => ($request->jeniskeuntungan == 'onepercent') ? $margin_semasa : 0, - 'tempoh' => $gadai['tempoh'], - 'beza_tempoh' => ($gadai['tempoh'] - $gadai['tempohbayar']), - ]); - - $baki_hargajualan = $gadai['bakihargajualan'] - $request->bakipinjaman; - 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' => $baki_hargajualan, - 'nowakil' => (int)$request->nowakil, - 'duitpelanggan' => isset($request->duitpelanggan) ? $request->duitpelanggan : 0, - 'bakipelanggan' => isset($request->bakipelanggan) ? $request->bakipelanggan : 0 - ]); - - /* Create Gadai */ - $gadaiTransaction = Gadai::on($cawangan['mysql'])->where('t_gadai','=',$current->toDateString())->orderBy('sirig', 'desc')->first(); - $gadaiTransaction = optional($gadaiTransaction)->toArray(); - - $new_sirig = ($gadaiTransaction) ? $gadaiTransaction['sirig'] + 1 : 1; - - $new_transaction = sprintf("%04d",$new_sirig); - $new_sag_number = strtoupper($cawangan['kodcaw']) . $current->year . $current->month . $current->day . '-' .$new_transaction; - - $gadai = Gadai::on($cawangan['mysql'])->create([ - 'kodcaw'=>$kodcaw, - 'norujukan' => $new_sag_number, - 'nopelanggan' => $request->nopelanggan, - 'nokp' => $request->nokp, - 'sirig' => $request->sirig, - 't_gadai' => $current->toDateString(), - 'sttebus' => '', - 'masa' =>$current->toTimeString(), - 'tagbaru' => 1 - ]); - - $marhun = Marhun::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->get(); - - foreach($marhun as $marhunloop){ - $karatbaru = str_replace('.','-',$marhunloop['karat']); - $harga_emas = HargaEmas::on('mysql7')->select('harga')->where('karat','=',$karatbaru)->first(); - - $harga = ($request->jenisAT == 'hargalama') ? $marhunloop['harga'] : $harga_emas['harga']; - - $nilai_marhun = (floatval($harga) * floatval($marhunloop['berat'])); - - $marhunToCreate = [ - 'kodcaw'=> $kodcaw, - 'norujukan'=> $new_sag_number, - 't_gadai' => $current->toDateString(), - 'bil' => $marhun['kuantiti'], - 'marhun' => $marhun['marhun'], - 'nota' => $marhun['nota'], - 'tag_permata' => $marhun['tag_permata'] != null ? $marhun['tag_permata'] : 0, - 'berat_batu_permata' => $marhun['berat_batu_permata'] != null ? $marhun['berat_batu_permata'] : '', - 'karat' => $marhun['karat'], - 'berat' => $marhun['berat_emas'], - 'harga' => $harga, - 'n_marhun' => $nilai_marhun - ]; - - if($marhunToCreate['berat_batu_permata'] == '') { - $marhunToCreate['berat_batu_permata'] = null; - }; - - $new_marhun = Marhun::on($cawangan['mysql'])->create($marhunToCreate); - } - - $total_nilai_marhun = Marhun::on($cawangan['mysql'])->where('norujukan',$new_sag_number)->sum('n_marhun'); - - $total_nilai_marhun = $request->total_nilai_marhun; - $margin_pinjaman = ($request->pinjaman / $total_nilai_marhun); - - $onePercentServices = new Calculation(); - $keuntungan = $onePercentServices->kiraanKeuntunganSebenar($request->pembiayaan,$request->nilaimarhun,$request->kadarujrah,$margin_pinjaman); - - $keuntungan_sebln = $keuntungan['keuntungan']; - $keuntungan_sebln = str_replace(',','',$keuntungan_sebln); - - $kadarupah = $request->kadarkeuntungan * 100; - $keuntungan6bulan = $keuntungan_sebln * 6; - $keuntungan12bulan = $keuntungan_sebln * 12; - $hargajualan = $request->pinjaman + $keuntungan12bulan; - - $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, - 'tunggakanujrah' => $akrual['ujrah'], - 'tunggakanonepercent' => $akrual['keuntungan'], - )); - - $new_data = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->first(); - - $komuditi_current = KomuditiPurchase::on('mysql7')->where('date_purchase','=',$current->toDateString())->orderBy('created_at','desc')->first(); - - $unit_current = $komuditi_current['unit_komuditi']; - - $update_unit = $unit_current - $request->unit_komuditi; - - $update_komuditi = KomuditiPurchase::on('mysql7')->where('id','=',$komuditi_current['id'])->update([ - 'unit_komuditi' => $update_unit - ]); - - $komuditi_transaksi = KomuditiTransaksi::on('mysql7')->create([ - 'unit_komuditi' => $request->unit_komuditi, - 'nosijil'=>$komuditi_current['no_sijil'], - 'norujukan' => $request->norujukan, - 'kodcaw' => $request->kodcaw , - 'teller' => $request->teller , - 'masa' => $current->toTimeString(), - 'tarikh' => $current->toDateString() - ]); - - Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(array( - 'sttebus' => "T", - 't_update' => $current->toDateString(), - 'historygadaian' => $new_sag_number, - 'tag_tebus' => $request->jenistebus, - )); + $array_response = [ + 'result' => 'success', + 'data' => 1 + ]; + return response()->json($array_response); }catch(\Exception $e){ + $array_response = [ + 'result' => 'error', + 'data' => $e->getMessage() + ]; - + Log::debug('Exception: ' . $e->getMessage()); + Log::debug('Line: ' . $e->getLine()); + + return response()->json($array_response); } @@ -1348,5 +1016,257 @@ class Penebusan } } + private function saveTebus($kodcaw,$norujukan,$gadai,$cawangan,$array_tebus){ + $current = Carbon::now(); + $current = new Carbon(); + + /* + Rebet Still looking for the calculation + */ + $rebet = 0; + $harga_tebus = $this->hargaTebusTawarruq($kodcaw,$norujukan,$array_tebus['jeniskeuntungan']); + + $upah_tebus = $this->kiraupahTawarruq($norujukan); + $upah_rebet = $this->kiraUpahRebetSebenar($kodcaw,$norujukan); + + $array_onepercent_rebet = $this->kiraupahUjrahOnePercentRebate($kodcaw,$norujukan); + + $onepercent_rebet = $array_onepercent_rebet['onepercent'] - $upah_rebet['onepercent']; + $ujrah_rebet = $array_onepercent_rebet['ujrah'] - $upah_rebet['ujrah']; + + Tebus::on($cawangan['mysql'])->create([ + 'kodcaw'=> $kodcaw, + 'norujukan'=> $norujukan, + 'nopelanggan' => $array_tebus['nopelanggan'], + 'jenisbyr' => "TN", + 'jenistebus' => $array_tebus['jenistebus'], + 'glcode' => "0", + 't_tebus' => $current->toDateString(), + 'jbg' => $gadai['tempoh'], + 'kadarupah' => $gadai['kadarupah'], + 'nilaimarhun' => $gadai['nilaimarhun'], + 'pinjaman' => $gadai['pinjaman'], + 'ansuran' => 0.00, + 'addpinjaman' => $array_tebus['addpinjaman'], + 'bakipjm' => $harga_tebus['harga'], + 'bakiupah' => $upah_tebus, + 'terima' => "*", + 'kodgl' => "0", + 'nowakil' => $array_tebus['nowakil'], + 'rebate' => $rebet, + 'marhuntebus' => $array_tebus['marhun'], + 'historygadaian' => $norujukan, + 'tarikhbyrn' => $current->toDateString(), + 'teller' => $array_tebus['teller'], + 'ujrah' => $ujrah_rebet, + 'onepercent' => $onepercent_rebet, + ]); + + + } + + private function saveTebusBase($kodcaw,$norujukan,$gadai,$array_tebus_base){ + $current = Carbon::now(); + $bayaran_pembiayaan = $array_tebus_base['totalbayaran'] - $array_tebus_base['bakiupah']; + + $margin_semasa = ($gadai['bakipjm']/$gadai['nilaimarhun']) * 100; + + $harga_tebus = $this->hargaTebusTawarruq($kodcaw,$norujukan,$array_tebus_base['jeniskeuntungan']); + $upah_tebus = $this->kiraupahTawarruq($norujukan); + $array_onepercent = $this->kiraupahUjrahOnePercent($kodcaw,$norujukan); + $array_onepercent_rebet = $this->kiraupahUjrahOnePercentRebate($kodcaw,$norujukan); + $upah_rebet = $this->kiraUpahRebetSebenar($kodcaw,$norujukan); + + $ujrah = $array_onepercent['ujrah']; + $onepercent = $array_onepercent['onepercent']; + $onepercent_rebet = $array_onepercent_rebet['onepercent'] - $upah_rebet['onepercent']; + $ujrah_rebet = $array_onepercent_rebet['ujrah'] - $upah_rebet['ujrah']; + + $upah_rebet_sebenar = $harga_tebus['harga'] - $gadai['bakipjm']; + + TransaksiKeuntungan::on('mysql7')->create([ + 'norujukan' => $norujukan, + 'bayaran_keuntungan' => $upah_tebus, + 'bayaran_pembiayaan' => $bayaran_pembiayaan, + 'keuntungan_rebet' => $upah_rebet_sebenar, + 'tarikh_bayaran'=> $current, + 'kodcaw'=> $kodcaw, + 'ujrah' => ($array_tebus_base['jeniskeuntungan'] == 'onepercent') ? $ujrah : 0, + 'ujrah_rebet' => ($array_tebus_base['jeniskeuntungan'] == 'onepercent') ? $ujrah_rebet : 0, + 'onepercent' => ($array_tebus_base['jeniskeuntungan'] == 'onepercent') ? $onepercent : 0, + 'onepercent_rebet' => ($array_tebus_base['jeniskeuntungan'] == 'onepercent') ? $onepercent_rebet : 0, + 'margin_semasa' => ($array_tebus_base['jeniskeuntungan'] == 'onepercent') ? $margin_semasa : 0, + 'tempoh' => $gadai['tempoh'], + 'beza_tempoh' => ($gadai['tempoh'] - $gadai['tempohbayar']), + ]); + + $baki_hargajualan = $gadai['bakihargajualan'] - $array_tebus_base['bakipinjaman']; + Transaction::on('mysql7')->create([ + 'trans_type' => $array_tebus_base['jenistebus'], + 'norujukan' => $norujukan, + 'nokp' => $gadai['nokp'], + 'teller' => $array_tebus_base['teller'], + 'kodcaw' => $kodcaw, + 'duit_masuk' => $array_tebus_base['totalbayaran'], + 'created_at' => $current, + 'bakiharga' => $baki_hargajualan, + 'nowakil' => (int)$array_tebus_base['nowakil'], + 'duitpelanggan' => isset($array_tebus_base['duitpelanggan']) ? $array_tebus_base['duitpelanggan'] : 0, + 'bakipelanggan' => isset($array_tebus_base['bakipelanggan']) ? $array_tebus_base['bakipelanggan'] : 0 + ]); + } + + private function createTransaction($cawangan,$kodcaw,$norujukan,$array_trans){ + $current = Carbon::now(); + + /* Create Gadai */ + $gadaiTransaction = Gadai::on($cawangan['mysql'])->where('t_gadai','=',$current->toDateString())->orderBy('sirig', 'desc')->first(); + $gadaiTransaction = optional($gadaiTransaction)->toArray(); + + $new_sirig = ($gadaiTransaction) ? $gadaiTransaction['sirig'] + 1 : 1; + + $new_transaction = sprintf("%04d",$new_sirig); + $new_sag_number = strtoupper($cawangan['kodcaw']) . $current->year . $current->month . $current->day . '-' .$new_transaction; + + Gadai::on($cawangan['mysql'])->create([ + 'kodcaw'=>$kodcaw, + 'norujukan' => $new_sag_number, + 'nopelanggan' => $array_trans['nopelanggan'], + 'nokp' => $array_trans['noic'], + 'sirig' => $new_sirig, + 't_gadai' => $current->toDateString(), + 'sttebus' => '', + 'masa' =>$current->toTimeString(), + 'tagbaru' => 1 + ]); + + $marhun = Marhun::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->get(); + + foreach($marhun as $marhunloop){ + $karatbaru = (strpos($marhunloop['karat'], '.') !== false) ? str_replace('-','.',$marhunloop['karat']) : $marhunloop['karat']; + $karatbaru = $marhunloop['karat']; + $harga_emas = HargaEmas::on('mysql7')->select('harga')->where('karat','=',$karatbaru)->first(); + + $harga = ($array_trans['jenisAT'] == 'hargalama') ? $marhunloop['harga'] : $harga_emas['harga']; + + $nilai_marhun = (floatval($harga) * floatval($marhunloop['berat'])); + + $marhunToCreate = [ + 'kodcaw'=> $kodcaw, + 'norujukan'=> $new_sag_number, + 't_gadai' => $current->toDateString(), + 'bil' => $marhunloop['kuantiti'], + 'marhun' => $marhunloop['marhun'], + 'nota' => $marhunloop['nota'], + 'tag_permata' => $marhunloop['tag_permata'] != null ? $marhunloop['tag_permata'] : 0, + 'berat_batu_permata' => $marhunloop['berat_batu_permata'] != null ? $marhunloop['berat_batu_permata'] : '', + 'karat' => $marhunloop['karat'], + 'berat' => $marhunloop['berat_emas'], + 'harga' => $harga, + 'n_marhun' => $nilai_marhun + ]; + + if($marhunToCreate['berat_batu_permata'] == '') { + $marhunToCreate['berat_batu_permata'] = null; + }; + + Marhun::on($cawangan['mysql'])->create($marhunToCreate); + } + + $total_nilai_marhun = Marhun::on($cawangan['mysql'])->where('norujukan',$new_sag_number)->sum('n_marhun'); + $total_bil_marhun = Marhun::on($cawangan['mysql'])->where('norujukan',$new_sag_number)->sum('bil'); + $total_berat_marhun = Marhun::on($cawangan['mysql'])->where('norujukan',$new_sag_number)->sum('berat'); + + $margin_pinjaman = ($array_trans['pinjaman'] / $total_nilai_marhun); + + $t_matang = Carbon::now(); + $t_matang = $t_matang->addMonths(6)->subDays(1); + + $t_kontrak = Carbon::now(); + $t_kontrak = $t_kontrak->addMonths(12)->subDays(1); + + $kadar_raw = KadarUpah::where('min','<=',$total_nilai_marhun)->where('max','>=',$total_nilai_marhun)->where('group_id',$cawangan['group_id'])->first(); + + $onepercentservices = new Calculation(); + $keuntungan = $onepercentservices->kiraanKeuntunganSebenar($array_trans['pinjaman'],$total_nilai_marhun,$kadar_raw['kadarujrah'],$margin_pinjaman); + + $upah1 = $onepercentservices->getRoundedMethod($keuntungan['keuntungan']); + $upah6 = $onepercentservices->getRoundedMethod($upah1 * 6); + $upah12 = $onepercentservices->getRoundedMethod($upah1 * 12); + $ujrah = $onepercentservices->getRoundedMethod($keuntungan['ujrah']); + $onepercent = $onepercentservices->getRoundedMethod($keuntungan['onepercent']); + $akrual_ujrah = $onepercentservices->getRoundedMethod($keuntungan['ujrah'] * 0.5); + $akrual_onepercent = $onepercentservices->getRoundedMethod($keuntungan['onepercent'] * 0.5); + + $hargajualan = $array_trans['pinjaman'] + $upah12; + + Gadai::on($cawangan['mysql']) + ->where('norujukan','=',$new_sag_number) + ->update(array( + 'nilaimarhun' => $total_nilai_marhun, + 'berat'=> $total_berat_marhun, + 'pinjaman' => $array_trans['pinjaman'], + 'kadarupah' => $kadar_raw['kadarujrah'], + 'marhun' => $array_trans['marhun'], + 'percentpinj' => $margin_pinjaman, + 'teller' => $array_trans['teller'], + 'bakipjm' => $array_trans['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' => $total_bil_marhun, + 'tagkomuditi' => 0, + 'upahdibayar' => 0.00, + 'tempohbayar' => 0.00, + 'lelong_tawarruq' => 1, + 'kadarujrah' => $kadar_raw['kadarujrah'], + 'ujrah' => $ujrah, + 'onepercent' => $onepercent, + 'margin_semasa' => $margin_pinjaman, + 'tagbaru' => 1, + 'tunggakanujrah' => $akrual_ujrah, + 'tunggakanonepercent' => $akrual_onepercent, + )); + + Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(array( + 'sttebus' => "T", + 't_update' => $current->toDateString(), + 'historygadaian' => $new_sag_number, + 'tag_tebus' => $array_trans['jenistebus'], + )); + } + + private function createTransactionBase($norujukan,$kodcaw,$array_trans_base){ + $current = Carbon::now(); + + $komuditi_current = KomuditiPurchase::on('mysql7')->where('date_purchase','=',$current->toDateString())->orderBy('created_at','desc')->first(); + + $unit_current = isset($komuditi_current['unit_komuditi']) ? $komuditi_current['unit_komuditi']: 0; + + $update_unit = $unit_current - $array_trans_base['pinjaman']; + + KomuditiPurchase::on('mysql7')->where('id','=',$komuditi_current['id'])->update([ + 'unit_komuditi' => $update_unit + ]); + + KomuditiTransaksi::on('mysql7')->create([ + 'unit_komuditi' => $update_unit, + 'nosijil'=>$komuditi_current['no_sijil'], + 'norujukan' => $norujukan, + 'kodcaw' => $kodcaw, + 'teller' => $array_trans_base['teller'], + 'masa' => $current->toTimeString(), + 'tarikh' => $current->toDateString() + ]); + } + } \ No newline at end of file From 5d18764a34832486701a845a52a01c51ed8e9a1c Mon Sep 17 00:00:00 2001 From: hafifierahman Date: Mon, 18 Nov 2024 00:29:27 +0800 Subject: [PATCH 03/13] added failover transaction to seize the error from transactions. --- app/FailoverTransaction.php | 43 +++++++++++ app/Support/v2/Penebusan.php | 72 ++++++++++++++++--- ...3407_create_failover_transaction_table.php | 39 ++++++++++ 3 files changed, 144 insertions(+), 10 deletions(-) create mode 100644 app/FailoverTransaction.php create mode 100644 database/migrations/2024_11_17_163407_create_failover_transaction_table.php diff --git a/app/FailoverTransaction.php b/app/FailoverTransaction.php new file mode 100644 index 0000000..2872b32 --- /dev/null +++ b/app/FailoverTransaction.php @@ -0,0 +1,43 @@ + 'boolean', + 'db_online' => 'boolean', + 'resolve_time' => 'datetime', + ]; +} diff --git a/app/Support/v2/Penebusan.php b/app/Support/v2/Penebusan.php index b2ba225..f6ee098 100644 --- a/app/Support/v2/Penebusan.php +++ b/app/Support/v2/Penebusan.php @@ -14,6 +14,7 @@ use App\InOutMar; use App\KomuditiPurchase; use App\KomuditiTransaksi; use App\Marhun; +use App\FailoverTransaction; use App\Moratorium; use App\Support\OnePercent; use App\Tebus; @@ -945,16 +946,19 @@ class Penebusan $array_trans_base = $request->only(['pinjaman','teller']); try{ - DB::transaction(function () use ($kodcaw,$norujukan,$gadai,$cawangan,$array_tebus,$array_trans,$array_tebus_base,$array_trans_base) { + $failover_response = $this->handleFailOverTransaction($kodcaw,'create',$norujukan,$request->teller); + DB::transaction(function () use ($failover_response,$kodcaw,$norujukan,$gadai,$cawangan,$array_tebus,$array_trans) { $this->saveTebus($kodcaw,$norujukan,$gadai,$cawangan,$array_tebus); - $this->createTransaction($cawangan,$kodcaw,$norujukan,$array_trans); - - DB::connection('mysql7')->transaction(function () use ($kodcaw,$norujukan,$gadai,$array_tebus_base,$array_trans_base) { - $this->saveTebusBase($kodcaw,$norujukan,$gadai,$array_tebus_base); - $this->createTransactionBase($norujukan,$kodcaw,$array_trans_base); - }); + $this->createTransaction($cawangan,$kodcaw,$norujukan,$array_trans,$failover_response['id']); }); + DB::connection('mysql7')->transaction(function () use ($kodcaw,$norujukan,$gadai,$array_tebus_base,$array_trans_base) { + $this->saveTebusBase($kodcaw,$norujukan,$gadai,$array_tebus_base); + $this->createTransactionBase($norujukan,$kodcaw,$array_trans_base); + }); + + $this->handleFailOverTransaction($kodcaw,'done',$norujukan,$request->teller,$failover_response['id']); + $array_response = [ 'result' => 'success', 'data' => 1 @@ -962,13 +966,20 @@ class Penebusan return response()->json($array_response); }catch(\Exception $e){ + if (isset($failover_response['id'])) { + $this->handleFailOverTransaction($kodcaw,'fail',$norujukan,$request->teller,$failover_response['id']); + } + $array_response = [ 'result' => 'error', 'data' => $e->getMessage() ]; - Log::debug('Exception: ' . $e->getMessage()); - Log::debug('Line: ' . $e->getLine()); + Log::error('Transaction failed', [ + 'exception' => $e->getMessage(), + 'line' => $e->getLine(), + 'file' => $e->getFile(), + ]); return response()->json($array_response); } @@ -1116,7 +1127,7 @@ class Penebusan ]); } - private function createTransaction($cawangan,$kodcaw,$norujukan,$array_trans){ + private function createTransaction($cawangan,$kodcaw,$norujukan,$array_trans,$fail_id = 0){ $current = Carbon::now(); /* Create Gadai */ @@ -1242,6 +1253,9 @@ class Penebusan 'historygadaian' => $new_sag_number, 'tag_tebus' => $array_trans['jenistebus'], )); + + $this->handleFailOverTransaction($kodcaw,'update',$new_sag_number,$array_trans['teller'],$fail_id); + } private function createTransactionBase($norujukan,$kodcaw,$array_trans_base){ @@ -1268,5 +1282,43 @@ class Penebusan ]); } + private function handleFailOverTransaction($kodcaw,$status,$norujukan,$teller,$fail_id = 0){ + $current = Carbon::now(); + + if($status == 'create'){ + return FailoverTransaction::on('mysql7')->create([ + 'kodcaw' => $kodcaw, + 'teller' => $teller, + 'old_norujukan' => $norujukan, + 'new_norujukan' => null, + 'db_caw' => false, + 'db_online' => false, + 'status' => 'pending' + ]); + }else if($status == 'update'){ + return FailoverTransaction::on('mysql7')->where('id',$fail_id)->update([ + 'new_norujukan' => $norujukan, + 'db_caw' => true, + 'db_online' => false, + 'status' => 'pending' + ]); + + }else if($status == 'done'){ + return FailoverTransaction::on('mysql7')->where('id',$fail_id)->update([ + 'new_norujukan' => $norujukan, + 'db_caw' => true, + 'db_online' => true, + 'status' => 'resolved', + 'resolve_time' => $current + ]); + }else{ + return FailoverTransaction::on('mysql7')->where('id',$fail_id)->update([ + 'old_norujukan' => $norujukan, + 'status' => 'fail', + ]); + } + + } + } \ No newline at end of file diff --git a/database/migrations/2024_11_17_163407_create_failover_transaction_table.php b/database/migrations/2024_11_17_163407_create_failover_transaction_table.php new file mode 100644 index 0000000..14717ad --- /dev/null +++ b/database/migrations/2024_11_17_163407_create_failover_transaction_table.php @@ -0,0 +1,39 @@ +create('failover_transaction', function (Blueprint $table) { + $table->id(); + $table->string('kodcaw',10); + $table->string('teller',255); + $table->string('old_norujukan',50); + $table->string('new_norujukan',50)->nullable(); + $table->boolean('db_caw')->default(false); // Boolean for db_caw, default to false + $table->boolean('db_online')->default(false); + $table->enum('status', ['pending', 'resolved', 'failed'])->default('pending'); // Use ENUM for statuses + $table->timestamp('resolve_time')->nullable(); // Timestamp for resolve time, nullable + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::connection('mysql7')->dropIfExists('failover_transaction'); + } +} From 3f4d0412df7a628bcb1a3681bd2563e2de1198ec Mon Sep 17 00:00:00 2001 From: Hafifie PKB Date: Mon, 18 Nov 2024 20:20:36 +0800 Subject: [PATCH 04/13] added failover failed --- app/FailoverTransactionFailed.php | 30 ++ app/Http/Controllers/LelongController.php | 2 +- app/Support/v2/Penebusan.php | 408 ++++++++++-------- ...eate_failover_transaction_failed_table.php | 36 ++ 4 files changed, 288 insertions(+), 188 deletions(-) create mode 100644 app/FailoverTransactionFailed.php create mode 100644 database/migrations/2024_11_18_111139_create_failover_transaction_failed_table.php diff --git a/app/FailoverTransactionFailed.php b/app/FailoverTransactionFailed.php new file mode 100644 index 0000000..e45546e --- /dev/null +++ b/app/FailoverTransactionFailed.php @@ -0,0 +1,30 @@ +handleFailOverTransaction($kodcaw,'create',$norujukan,$request->teller); - DB::transaction(function () use ($failover_response,$kodcaw,$norujukan,$gadai,$cawangan,$array_tebus,$array_trans) { - $this->saveTebus($kodcaw,$norujukan,$gadai,$cawangan,$array_tebus); - $this->createTransaction($cawangan,$kodcaw,$norujukan,$array_trans,$failover_response['id']); - }); + // DB::connection($cawangan['mysql'])->transaction(function () use ($failover_response,$kodcaw,$norujukan,$gadai,$cawangan,$array_tebus,$array_trans) { + DB::connection($cawangan['mysql'])->beginTransaction(); + $this->saveTebus($kodcaw,$norujukan,$gadai,$cawangan,$array_tebus); + $this->createTransaction($cawangan,$kodcaw,$norujukan,$array_trans,$failover_response['id']); + // }); - DB::connection('mysql7')->transaction(function () use ($kodcaw,$norujukan,$gadai,$array_tebus_base,$array_trans_base) { + DB::connection('mysql7')->beginTransaction(); + // DB::connection('mysql7')->transaction(function () use ($kodcaw,$norujukan,$gadai,$array_tebus_base,$array_trans_base) { $this->saveTebusBase($kodcaw,$norujukan,$gadai,$array_tebus_base); $this->createTransactionBase($norujukan,$kodcaw,$array_trans_base); - }); + // }); $this->handleFailOverTransaction($kodcaw,'done',$norujukan,$request->teller,$failover_response['id']); @@ -963,13 +966,19 @@ class Penebusan 'result' => 'success', 'data' => 1 ]; + + DB::connection($cawangan['mysql'])->commit(); + DB::connection('mysql7')->commit(); + return response()->json($array_response); }catch(\Exception $e){ if (isset($failover_response['id'])) { - $this->handleFailOverTransaction($kodcaw,'fail',$norujukan,$request->teller,$failover_response['id']); + $this->handleFailOverTransaction($kodcaw,'fail',$norujukan,$request->teller,$failover_response['id'],$e->getCode(),$e->getMessage()); } + DB::connection($cawangan['mysql'])->rollBack(); + DB::connection('mysql7')->rollBack(); $array_response = [ 'result' => 'error', 'data' => $e->getMessage() @@ -1041,39 +1050,40 @@ class Penebusan $upah_rebet = $this->kiraUpahRebetSebenar($kodcaw,$norujukan); $array_onepercent_rebet = $this->kiraupahUjrahOnePercentRebate($kodcaw,$norujukan); + try{ + $onepercent_rebet = $array_onepercent_rebet['onepercent'] - $upah_rebet['onepercent']; + $ujrah_rebet = $array_onepercent_rebet['ujrah'] - $upah_rebet['ujrah']; - $onepercent_rebet = $array_onepercent_rebet['onepercent'] - $upah_rebet['onepercent']; - $ujrah_rebet = $array_onepercent_rebet['ujrah'] - $upah_rebet['ujrah']; - - Tebus::on($cawangan['mysql'])->create([ - 'kodcaw'=> $kodcaw, - 'norujukan'=> $norujukan, - 'nopelanggan' => $array_tebus['nopelanggan'], - 'jenisbyr' => "TN", - 'jenistebus' => $array_tebus['jenistebus'], - 'glcode' => "0", - 't_tebus' => $current->toDateString(), - 'jbg' => $gadai['tempoh'], - 'kadarupah' => $gadai['kadarupah'], - 'nilaimarhun' => $gadai['nilaimarhun'], - 'pinjaman' => $gadai['pinjaman'], - 'ansuran' => 0.00, - 'addpinjaman' => $array_tebus['addpinjaman'], - 'bakipjm' => $harga_tebus['harga'], - 'bakiupah' => $upah_tebus, - 'terima' => "*", - 'kodgl' => "0", - 'nowakil' => $array_tebus['nowakil'], - 'rebate' => $rebet, - 'marhuntebus' => $array_tebus['marhun'], - 'historygadaian' => $norujukan, - 'tarikhbyrn' => $current->toDateString(), - 'teller' => $array_tebus['teller'], - 'ujrah' => $ujrah_rebet, - 'onepercent' => $onepercent_rebet, - ]); - - + Tebus::on($cawangan['mysql'])->create([ + 'kodcaw'=> $kodcaw, + 'norujukan'=> $norujukan, + 'nopelanggan' => $array_tebus['nopelanggan'], + 'jenisbyr' => "TN", + 'jenistebus' => $array_tebus['jenistebus'], + 'glcode' => "0", + 't_tebus' => $current->toDateString(), + 'jbg' => $gadai['tempoh'], + 'kadarupah' => $gadai['kadarupah'], + 'nilaimarhun' => $gadai['nilaimarhun'], + 'pinjaman' => $gadai['pinjaman'], + 'ansuran' => 0.00, + 'addpinjaman' => $array_tebus['addpinjaman'], + 'bakipjm' => $harga_tebus['harga'], + 'bakiupah' => $upah_tebus, + 'terima' => "*", + 'kodgl' => "0", + 'nowakil' => $array_tebus['nowakil'], + 'rebate' => $rebet, + 'marhuntebus' => $array_tebus['marhun'], + 'historygadaian' => $norujukan, + 'tarikhbyrn' => $current->toDateString(), + 'teller' => $array_tebus['teller'], + 'ujrah' => $ujrah_rebet, + 'onepercent' => $onepercent_rebet, + ]); + }catch(\Exception $e){ + throw new \Exception("Error in Tebus: " . $e->getMessage()); + } } private function saveTebusBase($kodcaw,$norujukan,$gadai,$array_tebus_base){ @@ -1095,36 +1105,40 @@ class Penebusan $upah_rebet_sebenar = $harga_tebus['harga'] - $gadai['bakipjm']; - TransaksiKeuntungan::on('mysql7')->create([ - 'norujukan' => $norujukan, - 'bayaran_keuntungan' => $upah_tebus, - 'bayaran_pembiayaan' => $bayaran_pembiayaan, - 'keuntungan_rebet' => $upah_rebet_sebenar, - 'tarikh_bayaran'=> $current, - 'kodcaw'=> $kodcaw, - 'ujrah' => ($array_tebus_base['jeniskeuntungan'] == 'onepercent') ? $ujrah : 0, - 'ujrah_rebet' => ($array_tebus_base['jeniskeuntungan'] == 'onepercent') ? $ujrah_rebet : 0, - 'onepercent' => ($array_tebus_base['jeniskeuntungan'] == 'onepercent') ? $onepercent : 0, - 'onepercent_rebet' => ($array_tebus_base['jeniskeuntungan'] == 'onepercent') ? $onepercent_rebet : 0, - 'margin_semasa' => ($array_tebus_base['jeniskeuntungan'] == 'onepercent') ? $margin_semasa : 0, - 'tempoh' => $gadai['tempoh'], - 'beza_tempoh' => ($gadai['tempoh'] - $gadai['tempohbayar']), - ]); + try{ + TransaksiKeuntungan::on('mysql7')->create([ + 'norujukan' => $norujukan, + 'bayaran_keuntungan' => $upah_tebus, + 'bayaran_pembiayaan' => $bayaran_pembiayaan, + 'keuntungan_rebet' => $upah_rebet_sebenar, + 'tarikh_bayaran'=> $current, + 'kodcaw'=> $kodcaw, + 'ujrah' => ($array_tebus_base['jeniskeuntungan'] == 'onepercent') ? $ujrah : 0, + 'ujrah_rebet' => ($array_tebus_base['jeniskeuntungan'] == 'onepercent') ? $ujrah_rebet : 0, + 'onepercent' => ($array_tebus_base['jeniskeuntungan'] == 'onepercent') ? $onepercent : 0, + 'onepercent_rebet' => ($array_tebus_base['jeniskeuntungan'] == 'onepercent') ? $onepercent_rebet : 0, + 'margin_semasa' => ($array_tebus_base['jeniskeuntungan'] == 'onepercent') ? $margin_semasa : 0, + 'tempoh' => $gadai['tempoh'], + 'beza_tempoh' => ($gadai['tempoh'] - $gadai['tempohbayar']), + ]); - $baki_hargajualan = $gadai['bakihargajualan'] - $array_tebus_base['bakipinjaman']; - Transaction::on('mysql7')->create([ - 'trans_type' => $array_tebus_base['jenistebus'], - 'norujukan' => $norujukan, - 'nokp' => $gadai['nokp'], - 'teller' => $array_tebus_base['teller'], - 'kodcaw' => $kodcaw, - 'duit_masuk' => $array_tebus_base['totalbayaran'], - 'created_at' => $current, - 'bakiharga' => $baki_hargajualan, - 'nowakil' => (int)$array_tebus_base['nowakil'], - 'duitpelanggan' => isset($array_tebus_base['duitpelanggan']) ? $array_tebus_base['duitpelanggan'] : 0, - 'bakipelanggan' => isset($array_tebus_base['bakipelanggan']) ? $array_tebus_base['bakipelanggan'] : 0 - ]); + $baki_hargajualan = $gadai['bakihargajualan'] - $array_tebus_base['bakipinjaman']; + Transaction::on('mysql7')->create([ + 'trans_type' => $array_tebus_base['jenistebus'], + 'norujukan' => $norujukan, + 'nokp' => $gadai['nokp'], + 'teller' => $array_tebus_base['teller'], + 'kodcaw' => $kodcaw, + 'duit_masuk' => $array_tebus_base['totalbayaran'], + 'created_at' => $current, + 'bakiharga' => $baki_hargajualan, + 'nowakil' => (int)$array_tebus_base['nowakil'], + 'duitpelanggan' => isset($array_tebus_base['duitpelanggan']) ? $array_tebus_base['duitpelanggan'] : 0, + 'bakipelanggan' => isset($array_tebus_base['bakipelanggan']) ? $array_tebus_base['bakipelanggan'] : 0 + ]); + }catch(\Exception $e){ + throw new \Exception("Error in TebusBase: " . $e->getMessage()); + } } private function createTransaction($cawangan,$kodcaw,$norujukan,$array_trans,$fail_id = 0){ @@ -1139,122 +1153,127 @@ class Penebusan $new_transaction = sprintf("%04d",$new_sirig); $new_sag_number = strtoupper($cawangan['kodcaw']) . $current->year . $current->month . $current->day . '-' .$new_transaction; - Gadai::on($cawangan['mysql'])->create([ - 'kodcaw'=>$kodcaw, - 'norujukan' => $new_sag_number, - 'nopelanggan' => $array_trans['nopelanggan'], - 'nokp' => $array_trans['noic'], - 'sirig' => $new_sirig, - 't_gadai' => $current->toDateString(), - 'sttebus' => '', - 'masa' =>$current->toTimeString(), - 'tagbaru' => 1 - ]); - - $marhun = Marhun::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->get(); - - foreach($marhun as $marhunloop){ - $karatbaru = (strpos($marhunloop['karat'], '.') !== false) ? str_replace('-','.',$marhunloop['karat']) : $marhunloop['karat']; - $karatbaru = $marhunloop['karat']; - $harga_emas = HargaEmas::on('mysql7')->select('harga')->where('karat','=',$karatbaru)->first(); - - $harga = ($array_trans['jenisAT'] == 'hargalama') ? $marhunloop['harga'] : $harga_emas['harga']; - - $nilai_marhun = (floatval($harga) * floatval($marhunloop['berat'])); - - $marhunToCreate = [ - 'kodcaw'=> $kodcaw, - 'norujukan'=> $new_sag_number, + try{ + Gadai::on($cawangan['mysql'])->create([ + 'kodcaw'=>$kodcaw, + 'norujukan' => $new_sag_number, + 'nopelanggan' => $array_trans['nopelanggan'], + 'nokp' => $array_trans['noic'], + 'sirig' => $new_sirig, 't_gadai' => $current->toDateString(), - 'bil' => $marhunloop['kuantiti'], - 'marhun' => $marhunloop['marhun'], - 'nota' => $marhunloop['nota'], - 'tag_permata' => $marhunloop['tag_permata'] != null ? $marhunloop['tag_permata'] : 0, - 'berat_batu_permata' => $marhunloop['berat_batu_permata'] != null ? $marhunloop['berat_batu_permata'] : '', - 'karat' => $marhunloop['karat'], - 'berat' => $marhunloop['berat_emas'], - 'harga' => $harga, - 'n_marhun' => $nilai_marhun - ]; + 'sttebus' => '', + 'masa' =>$current->toTimeString(), + 'tagbaru' => 1 + ]); - if($marhunToCreate['berat_batu_permata'] == '') { - $marhunToCreate['berat_batu_permata'] = null; - }; + $marhun = Marhun::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->get(); - Marhun::on($cawangan['mysql'])->create($marhunToCreate); - } + foreach($marhun as $marhunloop){ + $karatbaru = (strpos($marhunloop['karat'], '.') !== false) ? str_replace('-','.',$marhunloop['karat']) : $marhunloop['karat']; + $karatbaru = $marhunloop['karat']; + $harga_emas = HargaEmas::on('mysql7')->select('harga')->where('karat','=',$karatbaru)->first(); - $total_nilai_marhun = Marhun::on($cawangan['mysql'])->where('norujukan',$new_sag_number)->sum('n_marhun'); - $total_bil_marhun = Marhun::on($cawangan['mysql'])->where('norujukan',$new_sag_number)->sum('bil'); - $total_berat_marhun = Marhun::on($cawangan['mysql'])->where('norujukan',$new_sag_number)->sum('berat'); + $harga = ($array_trans['jenisAT'] == 'hargalama') ? $marhunloop['harga'] : $harga_emas['harga']; - $margin_pinjaman = ($array_trans['pinjaman'] / $total_nilai_marhun); + $nilai_marhun = (floatval($harga) * floatval($marhunloop['berat'])); - $t_matang = Carbon::now(); - $t_matang = $t_matang->addMonths(6)->subDays(1); + $marhunToCreate = [ + 'kodcaw'=> $kodcaw, + 'norujukan'=> $new_sag_number, + 't_gadai' => $current->toDateString(), + 'bil' => $marhunloop['kuantiti'], + 'marhun' => $marhunloop['marhun'], + 'nota' => $marhunloop['nota'], + 'tag_permata' => $marhunloop['tag_permata'] != null ? $marhunloop['tag_permata'] : 0, + 'berat_batu_permata' => $marhunloop['berat_batu_permata'] != null ? $marhunloop['berat_batu_permata'] : '', + 'karat' => $marhunloop['karat'], + 'berat' => $marhunloop['berat_emas'], + 'harga' => $harga, + 'n_marhun' => $nilai_marhun + ]; - $t_kontrak = Carbon::now(); - $t_kontrak = $t_kontrak->addMonths(12)->subDays(1); + if($marhunToCreate['berat_batu_permata'] == '') { + $marhunToCreate['berat_batu_permata'] = null; + }; - $kadar_raw = KadarUpah::where('min','<=',$total_nilai_marhun)->where('max','>=',$total_nilai_marhun)->where('group_id',$cawangan['group_id'])->first(); + Marhun::on($cawangan['mysql'])->create($marhunToCreate); + } - $onepercentservices = new Calculation(); - $keuntungan = $onepercentservices->kiraanKeuntunganSebenar($array_trans['pinjaman'],$total_nilai_marhun,$kadar_raw['kadarujrah'],$margin_pinjaman); + $total_nilai_marhun = Marhun::on($cawangan['mysql'])->where('norujukan',$new_sag_number)->sum('n_marhun'); + $total_bil_marhun = Marhun::on($cawangan['mysql'])->where('norujukan',$new_sag_number)->sum('bil'); + $total_berat_marhun = Marhun::on($cawangan['mysql'])->where('norujukan',$new_sag_number)->sum('berat'); - $upah1 = $onepercentservices->getRoundedMethod($keuntungan['keuntungan']); - $upah6 = $onepercentservices->getRoundedMethod($upah1 * 6); - $upah12 = $onepercentservices->getRoundedMethod($upah1 * 12); - $ujrah = $onepercentservices->getRoundedMethod($keuntungan['ujrah']); - $onepercent = $onepercentservices->getRoundedMethod($keuntungan['onepercent']); - $akrual_ujrah = $onepercentservices->getRoundedMethod($keuntungan['ujrah'] * 0.5); - $akrual_onepercent = $onepercentservices->getRoundedMethod($keuntungan['onepercent'] * 0.5); + $margin_pinjaman = ($array_trans['pinjaman'] / $total_nilai_marhun); - $hargajualan = $array_trans['pinjaman'] + $upah12; + $t_matang = Carbon::now(); + $t_matang = $t_matang->addMonths(6)->subDays(1); - Gadai::on($cawangan['mysql']) - ->where('norujukan','=',$new_sag_number) - ->update(array( - 'nilaimarhun' => $total_nilai_marhun, - 'berat'=> $total_berat_marhun, - 'pinjaman' => $array_trans['pinjaman'], - 'kadarupah' => $kadar_raw['kadarujrah'], - 'marhun' => $array_trans['marhun'], - 'percentpinj' => $margin_pinjaman, - 'teller' => $array_trans['teller'], - 'bakipjm' => $array_trans['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' => $total_bil_marhun, - 'tagkomuditi' => 0, - 'upahdibayar' => 0.00, - 'tempohbayar' => 0.00, - 'lelong_tawarruq' => 1, - 'kadarujrah' => $kadar_raw['kadarujrah'], - 'ujrah' => $ujrah, - 'onepercent' => $onepercent, - 'margin_semasa' => $margin_pinjaman, - 'tagbaru' => 1, - 'tunggakanujrah' => $akrual_ujrah, - 'tunggakanonepercent' => $akrual_onepercent, - )); + $t_kontrak = Carbon::now(); + $t_kontrak = $t_kontrak->addMonths(12)->subDays(1); - Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(array( - 'sttebus' => "T", - 't_update' => $current->toDateString(), - 'historygadaian' => $new_sag_number, - 'tag_tebus' => $array_trans['jenistebus'], - )); + $kadar_raw = KadarUpah::where('min','<=',$total_nilai_marhun)->where('max','>=',$total_nilai_marhun)->where('group_id',$cawangan['group_id'])->first(); + + $onepercentservices = new Calculation(); + $keuntungan = $onepercentservices->kiraanKeuntunganSebenar($array_trans['pinjaman'],$total_nilai_marhun,$kadar_raw['kadarujrah'],$margin_pinjaman); + + $upah1 = $onepercentservices->getRoundedMethod($keuntungan['keuntungan']); + $upah6 = $onepercentservices->getRoundedMethod($upah1 * 6); + $upah12 = $onepercentservices->getRoundedMethod($upah1 * 12); + $ujrah = $onepercentservices->getRoundedMethod($keuntungan['ujrah']); + $onepercent = $onepercentservices->getRoundedMethod($keuntungan['onepercent']); + $akrual_ujrah = $onepercentservices->getRoundedMethod($keuntungan['ujrah'] * 0.5); + $akrual_onepercent = $onepercentservices->getRoundedMethod($keuntungan['onepercent'] * 0.5); + + $hargajualan = $array_trans['pinjaman'] + $upah12; + + Gadai::on($cawangan['mysql']) + ->where('norujukan','=',$new_sag_number) + ->update(array( + 'nilaimarhun' => $total_nilai_marhun, + 'berat'=> $total_berat_marhun, + 'pinjaman' => $array_trans['pinjaman'], + 'kadarupah' => $kadar_raw['kadarujrah'], + 'marhun' => $array_trans['marhun'], + 'percentpinj' => $margin_pinjaman, + 'teller' => $array_trans['teller'], + 'bakipjm' => $array_trans['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' => $total_bil_marhun, + 'tagkomuditi' => 0, + 'upahdibayar' => 0.00, + 'tempohbayar' => 0.00, + 'lelong_tawarruq' => 1, + 'kadarujrah' => $kadar_raw['kadarujrah'], + 'ujrah' => $ujrah, + 'onepercent' => $onepercent, + 'margin_semasa' => $margin_pinjaman, + 'tagbaru' => 1, + 'tunggakanujrah' => $akrual_ujrah, + 'tunggakanonepercent' => $akrual_onepercent, + )); + + Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(array( + 'sttebus' => "T", + 't_update' => $current->toDateString(), + 'historygadaian' => $new_sag_number, + 'tag_tebus' => $array_trans['jenistebus'], + )); $this->handleFailOverTransaction($kodcaw,'update',$new_sag_number,$array_trans['teller'],$fail_id); + + }catch(\Exception $e){ + throw new \Exception("Error in Transaction: " . $e->getMessage()); + } } @@ -1264,25 +1283,30 @@ class Penebusan $komuditi_current = KomuditiPurchase::on('mysql7')->where('date_purchase','=',$current->toDateString())->orderBy('created_at','desc')->first(); $unit_current = isset($komuditi_current['unit_komuditi']) ? $komuditi_current['unit_komuditi']: 0; + throw new \Exception('testis'); - $update_unit = $unit_current - $array_trans_base['pinjaman']; + try{ + $update_unit = $unit_current - $array_trans_base['pinjaman']; - KomuditiPurchase::on('mysql7')->where('id','=',$komuditi_current['id'])->update([ - 'unit_komuditi' => $update_unit - ]); + KomuditiPurchase::on('mysql7')->where('id','=',$komuditi_current['id'])->update([ + 'unit_komuditi' => $update_unit + ]); - KomuditiTransaksi::on('mysql7')->create([ - 'unit_komuditi' => $update_unit, - 'nosijil'=>$komuditi_current['no_sijil'], - 'norujukan' => $norujukan, - 'kodcaw' => $kodcaw, - 'teller' => $array_trans_base['teller'], - 'masa' => $current->toTimeString(), - 'tarikh' => $current->toDateString() - ]); + KomuditiTransaksi::on('mysql7')->create([ + 'unit_komuditi' => $update_unit, + 'nosijil'=>$komuditi_current['no_sijil'], + 'norujukan' => $norujukan, + 'kodcaw' => $kodcaw, + 'teller' => $array_trans_base['teller'], + 'masa' => $current->toTimeString(), + 'tarikh' => $current->toDateString() + ]); + }catch(\Exception $e){ + throw new \Exception("Error in TransactionBase: " . $e->getMessage()); + } } - private function handleFailOverTransaction($kodcaw,$status,$norujukan,$teller,$fail_id = 0){ + private function handleFailOverTransaction($kodcaw,$status,$norujukan,$teller,$fail_id = 0,$code_error = 500,$error_message = ''){ $current = Carbon::now(); if($status == 'create'){ @@ -1304,18 +1328,28 @@ class Penebusan ]); }else if($status == 'done'){ - return FailoverTransaction::on('mysql7')->where('id',$fail_id)->update([ - 'new_norujukan' => $norujukan, + return FailoverTransaction::on('mysql7')->where('id',$fail_id)->where('old_norujukan',$norujukan)->update([ 'db_caw' => true, 'db_online' => true, 'status' => 'resolved', 'resolve_time' => $current ]); }else{ - return FailoverTransaction::on('mysql7')->where('id',$fail_id)->update([ + FailoverTransaction::on('mysql7')->where('id',$fail_id)->where('old_norujukan',$norujukan)->update([ 'old_norujukan' => $norujukan, - 'status' => 'fail', + 'status' => 'failed', ]); + + FailoverTransactionFailed::on('mysql7')->create([ + 'original_id' => $fail_id, + 'kodcaw' => $kodcaw, + 'norujukan' => $norujukan, + 'code_error' => $code_error, + 'error_message' => $error_message, + ]); + + return; + } } diff --git a/database/migrations/2024_11_18_111139_create_failover_transaction_failed_table.php b/database/migrations/2024_11_18_111139_create_failover_transaction_failed_table.php new file mode 100644 index 0000000..e322922 --- /dev/null +++ b/database/migrations/2024_11_18_111139_create_failover_transaction_failed_table.php @@ -0,0 +1,36 @@ +id(); + $table->unsignedBigInteger('original_id'); // Reference to failover_transaction + $table->string('kodcaw'); + $table->string('norujukan'); + $table->integer('code_error'); + $table->text('error_message')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('failover_transaction_failed'); + } +} From 51aaa20078b82f39dba0a50cc83090897874821a Mon Sep 17 00:00:00 2001 From: hafifierahman Date: Mon, 25 Nov 2024 01:31:05 +0800 Subject: [PATCH 05/13] added test for tebus AT and P and added P --- app/Http/Controllers/LelongController.php | 2 +- app/Http/Controllers/TebusController.php | 17 +- app/Services/MasterServices.php | 19 +- app/Support/OnePercent.php | 7 + app/Support/v2/Penebusan.php | 142 ++++++-------- routes/web.php | 2 +- tests/TestCase.php | 43 +++- tests/Traits/DatabaseTransactions.php | 50 +++++ tests/TransactionTest.php | 228 ++++++++++++++++++++++ 9 files changed, 407 insertions(+), 103 deletions(-) create mode 100644 tests/Traits/DatabaseTransactions.php create mode 100644 tests/TransactionTest.php diff --git a/app/Http/Controllers/LelongController.php b/app/Http/Controllers/LelongController.php index 56d066e..76ab0f2 100644 --- a/app/Http/Controllers/LelongController.php +++ b/app/Http/Controllers/LelongController.php @@ -598,7 +598,7 @@ class LelongController extends Controller if($cawangan['tagarrahnbid'] == 1){ if(env('APP_ENV') != 'production'){ - $link = 'http://adminbid.arrahn/api/portalApi'; + $link = 'http://niklah.arrahn.com.my/api/portalApi'; }else{ $link = 'http://adminbid.arrahn/api/portalApi'; } diff --git a/app/Http/Controllers/TebusController.php b/app/Http/Controllers/TebusController.php index 44d6da0..4d69eaf 100644 --- a/app/Http/Controllers/TebusController.php +++ b/app/Http/Controllers/TebusController.php @@ -182,6 +182,13 @@ class TebusController extends Controller return $response; } + public function tebusUpdateTambahPinjaman($kodcaw,$norujukan,Request $request){ + $master = new MasterServices($kodcaw); + $response = $master->tebusUpdateTambahPinjaman($kodcaw,$norujukan,$request); + + return $response; + } + public function getLaporanTebus($kodcaw,$tarikh){ $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); @@ -2000,14 +2007,4 @@ class TebusController extends Controller return $response; } - - public function tebusTransaksiUpdate($kodcaw,$norujukan,Request $request){ - $master = new MasterServices($kodcaw); - $response = $master->tebusTransaksiUpdate($kodcaw,$norujukan,$request); - - return $response; - } - - - } diff --git a/app/Services/MasterServices.php b/app/Services/MasterServices.php index b304244..1f903f9 100644 --- a/app/Services/MasterServices.php +++ b/app/Services/MasterServices.php @@ -223,6 +223,12 @@ class MasterServices return $response; } + public function tebusUpdateTambahPinjaman($kodcaw,$norujukan,HttpRequest $request){ + $onepercent = new OnePercentEngine($this->cawangan); + $response = $onepercent->tebusUpdateAutoTawarruq($kodcaw,$norujukan,$request); + return $response; + } + public function kiraupahUjrahOnePercent($kodcaw,$norujukan){ $response = $this->engine->kiraupahUjrahOnePercent($kodcaw,$norujukan); @@ -247,19 +253,6 @@ class MasterServices } } - public function tebusTransaksiUpdate($kodcaw,$norujukan,HttpRequest $request){ - if($request->jeniskeuntungan == 'onepercent'){ - $onepercent = new OnePercentEngine($this->cawangan); - $response = $onepercent->tebusTransaksiUpdate($kodcaw,$norujukan,$request); - - }else{ - $tawarruq = new TawarruqEngine($this->cawangan); - $response = $tawarruq->tebusTransaksiUpdate($kodcaw,$norujukan,$request); - } - - return $response; - } - /* End Penebusan */ public function test(){ diff --git a/app/Support/OnePercent.php b/app/Support/OnePercent.php index 2bb5d18..e924fc1 100644 --- a/app/Support/OnePercent.php +++ b/app/Support/OnePercent.php @@ -186,6 +186,13 @@ class OnePercent extends MasterServices return $response; } + public function tebusUpdateTambahPinjaman($kodcaw,$norujukan,HttpRequest $request){ + $tebus = new Penebusan($this->kodcaw,$this->cawangan_info); + $response = $tebus->transaksiTambahPembiayaan($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); diff --git a/app/Support/v2/Penebusan.php b/app/Support/v2/Penebusan.php index ac88d87..6e9bcb2 100644 --- a/app/Support/v2/Penebusan.php +++ b/app/Support/v2/Penebusan.php @@ -947,21 +947,14 @@ class Penebusan $array_trans_base = $request->only(['pinjaman','teller']); try{ - $failover_response = $this->handleFailOverTransaction($kodcaw,'create',$norujukan,$request->teller); - // DB::connection($cawangan['mysql'])->transaction(function () use ($failover_response,$kodcaw,$norujukan,$gadai,$cawangan,$array_tebus,$array_trans) { + DB::connection($cawangan['mysql'])->beginTransaction(); $this->saveTebus($kodcaw,$norujukan,$gadai,$cawangan,$array_tebus); - $this->createTransaction($cawangan,$kodcaw,$norujukan,$array_trans,$failover_response['id']); - // }); + $this->createTransaction($cawangan,$kodcaw,$norujukan,$array_trans); DB::connection('mysql7')->beginTransaction(); - // DB::connection('mysql7')->transaction(function () use ($kodcaw,$norujukan,$gadai,$array_tebus_base,$array_trans_base) { - $this->saveTebusBase($kodcaw,$norujukan,$gadai,$array_tebus_base); - $this->createTransactionBase($norujukan,$kodcaw,$array_trans_base); - // }); - - $this->handleFailOverTransaction($kodcaw,'done',$norujukan,$request->teller,$failover_response['id']); - + $this->saveTebusBase($kodcaw,$norujukan,$gadai,$array_tebus_base); + $this->createTransactionBase($norujukan,$kodcaw,$array_trans_base); $array_response = [ 'result' => 'success', 'data' => 1 @@ -973,10 +966,6 @@ class Penebusan return response()->json($array_response); }catch(\Exception $e){ - if (isset($failover_response['id'])) { - $this->handleFailOverTransaction($kodcaw,'fail',$norujukan,$request->teller,$failover_response['id'],$e->getCode(),$e->getMessage()); - } - DB::connection($cawangan['mysql'])->rollBack(); DB::connection('mysql7')->rollBack(); $array_response = [ @@ -996,7 +985,7 @@ class Penebusan } - private function transaksiTambahPembiayaan($kodcaw,$norujukan,HttpRequest $request){ + public function transaksiTambahPembiayaan($kodcaw,$norujukan,HttpRequest $request){ $current = Carbon::now(); $current = new Carbon(); @@ -1004,6 +993,11 @@ class Penebusan $gadai = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->first(); + $array_tebus = $request->only(['jeniskeuntungan', 'nopelanggan','jenistebus','addpinjaman','nowakil','marhun','teller']); + $array_trans = $request->only(['nopelanggan', 'noic','pinjaman','marhun','teller','jenistebus']); + $array_tebus_base = $request->only(['totalbayaran', 'bakiupah','jeniskeuntungan','bakipinjaman','jenistebus','teller','nowakil','duitpelanggan']); + $array_trans_base = $request->only(['pinjaman','teller']); + try{ //check duplicate $data = Transaction::on('mysql7')->where('norujukan','=',$norujukan)->where('trans_type','=','AT')->first(); @@ -1011,8 +1005,40 @@ class Penebusan if(!empty($data)){ return 'duplicate'; } - }catch(\Exception $e){ + + DB::connection($cawangan['mysql'])->beginTransaction(); + $this->saveTebus($kodcaw,$norujukan,$gadai,$cawangan,$array_tebus); + $this->createTransaction($cawangan,$kodcaw,$norujukan,$array_trans); + DB::connection('mysql7')->beginTransaction(); + $this->saveTebusBase($kodcaw,$norujukan,$gadai,$array_tebus_base); + $this->createTransactionBase($norujukan,$kodcaw,$array_trans_base); + + $array_response = [ + 'result' => 'success', + 'data' => 1 + ]; + + DB::connection($cawangan['mysql'])->commit(); + DB::connection('mysql7')->commit(); + + return response()->json($array_response); + }catch(\Exception $e){ + DB::connection($cawangan['mysql'])->rollBack(); + DB::connection('mysql7')->rollBack(); + + $array_response = [ + 'result' => 'error', + 'data' => $e->getMessage() + ]; + + Log::error('Transaction failed', [ + 'exception' => $e->getMessage(), + 'line' => $e->getLine(), + 'file' => $e->getFile(), + ]); + + return response()->json($array_response); } } @@ -1038,17 +1064,13 @@ class Penebusan private function saveTebus($kodcaw,$norujukan,$gadai,$cawangan,$array_tebus){ $current = Carbon::now(); - $current = new Carbon(); - /* Rebet Still looking for the calculation */ $rebet = 0; $harga_tebus = $this->hargaTebusTawarruq($kodcaw,$norujukan,$array_tebus['jeniskeuntungan']); - $upah_tebus = $this->kiraupahTawarruq($norujukan); $upah_rebet = $this->kiraUpahRebetSebenar($kodcaw,$norujukan); - $array_onepercent_rebet = $this->kiraupahUjrahOnePercentRebate($kodcaw,$norujukan); try{ $onepercent_rebet = $array_onepercent_rebet['onepercent'] - $upah_rebet['onepercent']; @@ -1088,7 +1110,12 @@ class Penebusan private function saveTebusBase($kodcaw,$norujukan,$gadai,$array_tebus_base){ $current = Carbon::now(); - $bayaran_pembiayaan = $array_tebus_base['totalbayaran'] - $array_tebus_base['bakiupah']; + + if($array_tebus_base['jenistebus'] == 'AT'){ + $bayaran_pembiayaan = $array_tebus_base['totalbayaran'] - $array_tebus_base['bakiupah']; + }else{ + $bayaran_pembiayaan = $array_tebus_base['bakipinjaman']; + } $margin_semasa = ($gadai['bakipjm']/$gadai['nilaimarhun']) * 100; @@ -1122,14 +1149,22 @@ class Penebusan 'beza_tempoh' => ($gadai['tempoh'] - $gadai['tempohbayar']), ]); - $baki_hargajualan = $gadai['bakihargajualan'] - $array_tebus_base['bakipinjaman']; + if($array_tebus_base['jenistebus'] == 'P'){ + $duit_masuk = $array_tebus_base['bakiupah']; + }else if($array_tebus_base['jenistebus'] == 'AT'){ + $duit_masuk = $array_tebus_base['totalbayaran']; + }else{ + $duit_masuk = $harga_tebus['harga']; + } + + $baki_hargajualan = ($array_tebus_base['jenistebus'] == 'P') ? $gadai['bakihargajualan'] = $array_tebus_base['bakiupah'] : $gadai['bakihargajualan'] - $array_tebus_base['bakipinjaman']; Transaction::on('mysql7')->create([ 'trans_type' => $array_tebus_base['jenistebus'], 'norujukan' => $norujukan, 'nokp' => $gadai['nokp'], 'teller' => $array_tebus_base['teller'], 'kodcaw' => $kodcaw, - 'duit_masuk' => $array_tebus_base['totalbayaran'], + 'duit_masuk' => $duit_masuk, 'created_at' => $current, 'bakiharga' => $baki_hargajualan, 'nowakil' => (int)$array_tebus_base['nowakil'], @@ -1141,7 +1176,7 @@ class Penebusan } } - private function createTransaction($cawangan,$kodcaw,$norujukan,$array_trans,$fail_id = 0){ + private function createTransaction($cawangan,$kodcaw,$norujukan,$array_trans){ $current = Carbon::now(); /* Create Gadai */ @@ -1173,7 +1208,11 @@ class Penebusan $karatbaru = $marhunloop['karat']; $harga_emas = HargaEmas::on('mysql7')->select('harga')->where('karat','=',$karatbaru)->first(); - $harga = ($array_trans['jenisAT'] == 'hargalama') ? $marhunloop['harga'] : $harga_emas['harga']; + if(isset($array_trans['jenisAT'])){ + $harga = ($array_trans['jenisAT'] == 'hargalama') ? $marhunloop['harga'] : $harga_emas['harga']; + }else{ + $harga = $harga_emas['harga']; + } $nilai_marhun = (floatval($harga) * floatval($marhunloop['berat'])); @@ -1269,8 +1308,6 @@ class Penebusan 'tag_tebus' => $array_trans['jenistebus'], )); - $this->handleFailOverTransaction($kodcaw,'update',$new_sag_number,$array_trans['teller'],$fail_id); - }catch(\Exception $e){ throw new \Exception("Error in Transaction: " . $e->getMessage()); } @@ -1283,7 +1320,6 @@ class Penebusan $komuditi_current = KomuditiPurchase::on('mysql7')->where('date_purchase','=',$current->toDateString())->orderBy('created_at','desc')->first(); $unit_current = isset($komuditi_current['unit_komuditi']) ? $komuditi_current['unit_komuditi']: 0; - throw new \Exception('testis'); try{ $update_unit = $unit_current - $array_trans_base['pinjaman']; @@ -1306,53 +1342,5 @@ class Penebusan } } - private function handleFailOverTransaction($kodcaw,$status,$norujukan,$teller,$fail_id = 0,$code_error = 500,$error_message = ''){ - $current = Carbon::now(); - - if($status == 'create'){ - return FailoverTransaction::on('mysql7')->create([ - 'kodcaw' => $kodcaw, - 'teller' => $teller, - 'old_norujukan' => $norujukan, - 'new_norujukan' => null, - 'db_caw' => false, - 'db_online' => false, - 'status' => 'pending' - ]); - }else if($status == 'update'){ - return FailoverTransaction::on('mysql7')->where('id',$fail_id)->update([ - 'new_norujukan' => $norujukan, - 'db_caw' => true, - 'db_online' => false, - 'status' => 'pending' - ]); - - }else if($status == 'done'){ - return FailoverTransaction::on('mysql7')->where('id',$fail_id)->where('old_norujukan',$norujukan)->update([ - 'db_caw' => true, - 'db_online' => true, - 'status' => 'resolved', - 'resolve_time' => $current - ]); - }else{ - FailoverTransaction::on('mysql7')->where('id',$fail_id)->where('old_norujukan',$norujukan)->update([ - 'old_norujukan' => $norujukan, - 'status' => 'failed', - ]); - - FailoverTransactionFailed::on('mysql7')->create([ - 'original_id' => $fail_id, - 'kodcaw' => $kodcaw, - 'norujukan' => $norujukan, - 'code_error' => $code_error, - 'error_message' => $error_message, - ]); - - return; - - } - - } - } \ No newline at end of file diff --git a/routes/web.php b/routes/web.php index a3b8b27..3f7334e 100644 --- a/routes/web.php +++ b/routes/web.php @@ -150,7 +150,7 @@ $router->group(['prefix'=>'api'], function () use ($router){ $router->put('updatetebus/{kodcaw}/{norujukan}',['uses'=>'TebusController@tebusUpdate']); $router->put('updateautotawarruq/{kodcaw}/{norujukan}',['uses'=>'TebusController@tebusUpdateAutoTawarruq']); $router->get('listpenebusanhistory/{kodcaw}',['uses'=>'TebusController@listhistorypenebusan']); - $router->post('updatetransaksi/{kodcaw}/{norujukan}',['uses'=>'TebusController@tebusTransaksiUpdate']); + $router->put('updatetambahpinjaman/{kodcaw}/{norujukan}',['uses'=>'TebusController@tebusUpdateTambahPinjaman']); //API FARIS $router->put('tebus/serah_marhun_teller/{kodcaw}/{norujukan}',['uses'=>'GadaiController@barcodescanTebus']); // $router->get('tebus_serahan/{kodcaw}',['uses'=>'TebusController@SerahMarhunTeller']); diff --git a/tests/TestCase.php b/tests/TestCase.php index 136846b..1782d8e 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -1,7 +1,8 @@ table($table); + + foreach ($data as $key => $value) { + $query->where($key, $value); + } + + $record = $query->first(); + + if (!$record) { + // Check if a record exists but doesn't match the expected attributes + $actualRecord = DB::connection($connection)->table($table)->where('norujukan', $data['norujukan'])->first(); + + if ($actualRecord) { + $mismatchedColumns = []; + foreach ($data as $key => $value) { + if ($actualRecord->$key !== $value) { + $expectedValue = stripslashes($value); // Remove backslashes from expected + $mismatchedColumns[$key] = [ + 'expected' => $expectedValue, + 'actual' => $actualRecord->$key, + ]; + } + } + + PHPUnit::fail( + "A record exists in the table [{$table}] but does not match the expected attributes. " . + "Mismatched columns: " . json_encode($mismatchedColumns) + ); + } + + PHPUnit::fail( + "Failed asserting that a record exists in the table [{$table}] with the attributes " . json_encode($data) + ); + } + + PHPUnit::assertNotNull($record, "Record exists and matches the expected attributes."); +} } diff --git a/tests/Traits/DatabaseTransactions.php b/tests/Traits/DatabaseTransactions.php new file mode 100644 index 0000000..f1bc75e --- /dev/null +++ b/tests/Traits/DatabaseTransactions.php @@ -0,0 +1,50 @@ +connections as $connection) { + DB::connection($connection)->beginTransaction(); + } + } + + /** + * Rollback transactions on all specified database connections. + */ + protected function tearDown(): void + { + foreach ($this->connections as $connection) { + DB::connection($connection)->rollBack(); + } + + parent::tearDown(); + } + + /** + * Set the database connections for transactions. + * + * @param string|array $connections + * @return void + */ + protected function setTransactionConnections(array $connections): void + { + $this->connections = $connections; + } +} \ No newline at end of file diff --git a/tests/TransactionTest.php b/tests/TransactionTest.php new file mode 100644 index 0000000..93b76c6 --- /dev/null +++ b/tests/TransactionTest.php @@ -0,0 +1,228 @@ +where('kodcaw', 'KB2')->first(); + $this->setTransactionConnections([$cawangan['mysql'], 'mysql7']); + $current = new Carbon(); + $array_test = [ + 'norujukan' => 'KB2240327-0009', + "nopelanggan" => "M03-00133879", + "jenistebus" => "AT", + "jbg" => 6.5, + "kadarupah" => 0.56, + "pinjaman_lama" => 2000, + "pinjaman" => 2000, + "ansuran" => 0, + "addpinjaman" => 0, + "bakipinjaman" => 2221, + "bakiupah" => 221, + "historygadaian" => "KB2240327-0009", + "marhun" => "1 R/L,", + "kuantiti_marhun" => 1, + "total_berat" => 8.5, + "kadarkeuntungan" => 0.56, + "noic" => "980412035872", + "jenisbayarantebus" => "nottawarruq", + "teller" => "MOHD KHALID ABDUL RAHMAN", + "jeniskeuntungan" => "onepercent", + "nilai_marhun" => 2943.21, + "jenisAT" => "none", + "totalbayaran" => 221, + "bayaran" => 300, + "bakipelanggan" => 79, + "nowakil" => 0, + "total_nilai_marhun" => 3171.265, + "marhun_detail" => "1 R/L,", + ]; + + // Create a mock request + $request = new Request($array_test); + + $penebusan_services = new V2Penebusan('KB2',$cawangan); + $response = $penebusan_services->transaksiPembiayaanSemula('KB2','KB2240327-0009',$request); + $responseArray = json_decode($response->getContent(), true); + $this->assertIsArray($responseArray, 'Response is not an array'); + $this->assertEquals('success', $responseArray['result'], 'Result should be success'); + $this->assertEquals(1, $responseArray['data'], 'Data should be 1'); + + /* Tebus Assert */ + $this->assertDatabaseHasThroughNorujukan('tebus', [ + 'kodcaw'=> "KB2", + 'norujukan'=> "KB2240327-0009", + 'nopelanggan' => "M03-00133879", + 'jenisbyr' => "TN", + 'jenistebus' => "A", + 'glcode' => "0", + 't_tebus' => $current->toDateString(), + 'jbg' => "6.50", + 'kadarupah' => "0.56", + 'nilaimarhun' => "2943.21", + 'pinjaman' => "2000.00", + 'ansuran' => "0.00", + 'addpinjaman' => 0, + 'bakipjm' => "2221", + 'bakiupah' => "221", + 'terima' => "*", + 'kodgl' => "0", + 'nowakil' => 0, + 'rebate' => 0, + 'marhuntebus' => "1 R/L,", + 'historygadaian' => "KB2240327-0009", + 'tarikhbyrn' => $current->toDateString(), + 'teller' => "MOHD KHALID ABDUL RAHMAN", + 'ujrah' => 0, + 'onepercent' => 0, + ], $cawangan['mysql']); + + + $this->assertDatabaseHasThroughNorujukan('gadai', [ + 'norujukan' => 'KB2240327-0009', + 'sttebus' => 'T' + ], $cawangan['mysql']); + } + + public function testTransactionP(){ + $cawangan = Cawangan::on('mysql7')->where('kodcaw', 'KB2')->first(); + $this->setTransactionConnections([$cawangan['mysql'], 'mysql7']); + $current = new Carbon(); + $array_test = [ + 'norujukan' => 'KB2240327-0009', + 'nopelanggan' => 'M03-00133879', + 'jenistebus' => 'P', + 'jbg' => 6.5, + 'kadarupah' => 0.56, + 'pinjaman_lama' => 2000, + 'pinjaman' => 2010, + 'ansuran' => 0, + 'addpinjaman' => 10, + 'bakipinjaman' => 2221, + 'bakiupah' => 221, + 'history_gadaian' => 'KB2240327-0009', + 'marhun' => '1 R/L,', + 'kuantiti_marhun' => 1, + 'total_berat' => 8.5, + 'kadarkeuntungan' => 0.56, + "noic" => "980412035872", + 'jenisbayarantebus' => 'tawarruq', + "teller" => "MOHD KHALID ABDUL RAHMAN", + 'jeniskeuntungan' => 'onepercent', + 'nilai_marhun' => 3171.265, + // 'jenisAT' => 'Tiada', + // 'totalbayaran' => 'Tiada', + 'bayaran' => 222, + 'bakipelanggan' => 1, + 'nowakil' => 0, //Sebenar Tiada Kena Add dalam series + // 'total_nilai_marhun' => 'Tiada', + 'keuntungan_6bln' => 6753.6, + 'keuntungan_sebulan' => 1125.6, + // 'marhun_detail' => 'Tiada', + ]; + + // Create a mock request + $request = new Request($array_test); + + $penebusan_services = new V2Penebusan('KB2',$cawangan); + $response = $penebusan_services->transaksiTambahPembiayaan('KB2','KB2240327-0009',$request); + + $responseArray = json_decode($response->getContent(), true); + $this->assertIsArray($responseArray, 'Response is not an array'); + $this->assertEquals('success', $responseArray['result'], 'Result should be success'); + $this->assertEquals(1, $responseArray['data'], 'Data should be 1'); + + /* Tebus Assert */ + $this->assertDatabaseHasThroughNorujukan('tebus', [ + 'kodcaw'=> "KB2", + 'norujukan'=> "KB2240327-0009", + 'nopelanggan' => "M03-00133879", + 'jenisbyr' => "TN", + 'jenistebus' => "P", + 'glcode' => "0", + 't_tebus' => $current->toDateString(), + 'jbg' => "6.50", + 'kadarupah' => "0.56", + 'nilaimarhun' => "2943.21", + 'pinjaman' => "2000.00", + 'ansuran' => "0.00", + 'addpinjaman' => "10.00", + 'bakipjm' => "2221.00", + 'bakiupah' => "221.00", + 'terima' => "*", + 'kodgl' => "0", + 'nowakil' => 0, + 'rebate' => "0.00", + 'marhuntebus' => "1 R/L,", + 'historygadaian' => "KB2240327-0009", + 'tarikhbyrn' => $current->toDateString(), + 'teller' => "MOHD KHALID ABDUL RAHMAN", + 'ujrah' => "91.00", + 'onepercent' => "130.00", + ], $cawangan['mysql']); + + /* Gadai Assert */ + + /* Create Gadai */ + $gadaiTransaction = Gadai::on($cawangan['mysql'])->where('t_gadai','=',$current->toDateString())->orderBy('sirig', 'desc')->first(); + $gadaiTransaction = optional($gadaiTransaction)->toArray(); + + /* Gadai Baru */ + $this->assertDatabaseHasThroughNorujukan('gadai',[ + 'kodcaw'=>'KB2', + 'norujukan' => $gadaiTransaction['norujukan'], + 'nopelanggan' => "M03-00133879", + "nokp" => "980412035872", + 'sirig' => $gadaiTransaction['sirig'], + 't_gadai' => $current->toDateString(), + 'sttebus' => '', + 'masa' =>$current->toTimeString(), + 'tagbaru' => 1, + 'nilaimarhun' => "3171.27", + 'berat'=> "0.00", + 'pinjaman' => "2010.00", + 'kadarupah' => "0.56", + // 'marhun' => "1 R\/L,", + 'percentpinj' => "0.63", + 'teller' => "MOHD KHALID ABDUL RAHMAN", + 'bakipjm' => "2010.00", + 'bakiupah' => "121.50", + 'jbg' => "0.50", + 't_update' => $current->toDateString(), + 'cetak' => 0, + 'upah12' => "243.00", + 'hargajualan' => "2253.00", + 'bakihargajualan' => "2253.00", + 'tagserah' => 0, + 't_matang' => "2025-05-24", + 't_matang1' => "2025-11-24", + 'tempoh' => "0.50", + 'kuantiti' => 0, + 'tagkomuditi' => 0, + 'upahdibayar' => "0.00", + 'tempohbayar' => 0.00, + 'lelong_tawarruq' => 1, + 'kadarujrah' => "0.56", + 'ujrah' => "0.15", + 'onepercent' => "20.10", + 'margin_semasa' => "0.63", + 'tagbaru' => 1, + 'tunggakanujrah' => "0.05", + 'tunggakanonepercent' => "10.05", + ], $cawangan['mysql']); + + $this->assertDatabaseHasThroughNorujukan('marhun',[ + + ]); + + } +} From f986e0a5156e6fdfafd4657e6656b54b8eb579f7 Mon Sep 17 00:00:00 2001 From: Hafifie PKB Date: Mon, 25 Nov 2024 12:02:46 +0800 Subject: [PATCH 06/13] added database transaction in hapus tebus and gadai and put auto tawarruq in V1 --- app/Http/Controllers/GadaiController.php | 415 +++++++++++++---------- app/Support/v1/Penebusan.php | 322 ++++++++++++++++++ 2 files changed, 558 insertions(+), 179 deletions(-) diff --git a/app/Http/Controllers/GadaiController.php b/app/Http/Controllers/GadaiController.php index eeff97f..ce77bb8 100644 --- a/app/Http/Controllers/GadaiController.php +++ b/app/Http/Controllers/GadaiController.php @@ -35,7 +35,7 @@ use Illuminate\Http\Request; use App\Services\MasterServices; use App\Support\OnePercent; use App\Services\Transaction\AnsuranServices as AnsServ; -use Log; +use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\DB; @@ -2017,159 +2017,188 @@ class GadaiController extends Controller $audit->updated_at = $current; $audit->save(); - - if($gadai[0]['historygadaian'] != "0" && $gadai[0]['historygadaian'] != '') - { - - if($tebus['tagterima'] == 1) + try{ + DB::connection($cawangan['mysql'])->beginTransaction(); + DB::connection('mysql7')->beginTransaction(); + + if($gadai[0]['historygadaian'] != "0" && $gadai[0]['historygadaian'] != '') { - if($tebus['jenistebus'] == 'P') + + if($tebus['tagterima'] == 1) { + if($tebus['jenistebus'] == 'P') + { - $totalkeluar = $keluar - ($tebus['addpinjaman'] + $tebus['pinjaman']); - $totalmasuk = $masuk - ($tebus['bakiupah'] + $tebus['pinjaman']); + $totalkeluar = $keluar - ($tebus['addpinjaman'] + $tebus['pinjaman']); + $totalmasuk = $masuk - ($tebus['bakiupah'] + $tebus['pinjaman']); - // $bakiakhir = $bakiawal - $totalkeluar + $totalmasuk + $pendahuluan - $serahan; - $bakiakhir = $baki - $tebus['bakiupah'] + $tebus['addpinjaman']; + // $bakiakhir = $bakiawal - $totalkeluar + $totalmasuk + $pendahuluan - $serahan; + $bakiakhir = $baki - $tebus['bakiupah'] + $tebus['addpinjaman']; - $updatetunai=Tunai::on($cawangan['mysql'])->where( [['tarikh','=', $current->toDateString()],['kodlaluan','=', $request->kodlaluan] ])-> - update(array( - 'keluar' => $totalkeluar, - 'masuk' => $totalmasuk, - 'baki' => $bakiakhir - )); + $updatetunai=Tunai::on($cawangan['mysql'])->where( [['tarikh','=', $current->toDateString()],['kodlaluan','=', $request->kodlaluan] ])-> + update(array( + 'keluar' => $totalkeluar, + 'masuk' => $totalmasuk, + 'baki' => $bakiakhir + )); + }else{ + + $totalmasuk = $masuk - ($tebus['pinjaman']+$tebus['bakiupah']); + $totalkeluar = $keluar - (($tebus['pinjaman'] + $tebus['bakiupah']) - $tebus['bakipjm']); + // $bakiakhir = $bakiawal - $totalkeluar + $totalmasuk + $pendahuluan - $serahan; + + if($tebus['jenistebus'] == 'S') + $bakiakhir = $baki - $tebus['bakipjm']; + else + $bakiakhir = $bakiawal - $totalkeluar + $totalmasuk + $pendahuluan - $serahan; + + $updatetunai=Tunai::on($cawangan['mysql'])->where( [['tarikh','=', $current->toDateString()],['kodlaluan','=', $request->kodlaluan] ])-> + update(array( + 'keluar' => $totalkeluar, + 'masuk' => $totalmasuk, + 'baki' => $bakiakhir + )); + + } }else{ - $totalmasuk = $masuk - ($tebus['pinjaman']+$tebus['bakiupah']); - $totalkeluar = $keluar - (($tebus['pinjaman'] + $tebus['bakiupah']) - $tebus['bakipjm']); - // $bakiakhir = $bakiawal - $totalkeluar + $totalmasuk + $pendahuluan - $serahan; + $bakiakhir = $baki; - if($tebus['jenistebus'] == 'S') - $bakiakhir = $baki - $tebus['bakipjm']; - else - $bakiakhir = $bakiawal - $totalkeluar + $totalmasuk + $pendahuluan - $serahan; + if($tebus['jenistebus'] == 'P') + { - $updatetunai=Tunai::on($cawangan['mysql'])->where( [['tarikh','=', $current->toDateString()],['kodlaluan','=', $request->kodlaluan] ])-> - update(array( - 'keluar' => $totalkeluar, - 'masuk' => $totalmasuk, - 'baki' => $bakiakhir - )); + $bakiakhir = $bakiakhir - $tebus['bakiupah'] + $tebus['addpinjaman']; + + $updatetunai=Tunai::on($cawangan['mysql'])->where( [['tarikh','=', $current->toDateString()],['kodlaluan','=', $request->kodlaluan] ])-> + update(array( + 'keluar' => $keluar, + 'masuk' => $masuk, + 'baki' => $bakiakhir + )); + + }else{ + + $totalmasuk = $masuk; + $totalkeluar = $keluar; + + if($tebus['jenistebus'] == 'S') + $bakiakhir = ($bakiakhir - $tebus['bakipjm']); + else + $bakiakhir = $bakiawal - $totalkeluar + $totalmasuk + $pendahuluan - $serahan; + + $updatetunai=Tunai::on($cawangan['mysql'])->where( [['tarikh','=', $current->toDateString()],['kodlaluan','=', $request->kodlaluan] ])-> + update(array( + 'keluar' => $keluar, + 'masuk' => $masuk, + 'baki' => $bakiakhir + )); + + } } - }else{ - $bakiakhir = $baki; - if($tebus['jenistebus'] == 'P') + Gadai::on($cawangan['mysql'])->where('norujukan','=',$gadai[0]['historygadaian'])->update(['sttebus' => '']); + + + $saved_historygadaian = $gadai[0]['historygadaian']; + + Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->delete(); + + TransaksiKeuntungan::on('mysql7')->where('norujukan','=',$gadai[0]['historygadaian'])->orderBy('id', 'desc')->limit(1)->delete(); + + Transaction::on('mysql7')->where('norujukan','=',$gadai[0]['historygadaian'])->orderBy('id', 'desc')->limit(1)->delete(); + + Tebus::on($cawangan['mysql'])->where('norujukan','=',$gadai[0]['historygadaian'])->delete(); + + Marhun::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->delete(); + + $gadaiDouble = Gadai::on($cawangan['mysql'])->where([['historygadaian',$gadai[0]['historygadaian']],['norujukan','<>',$gadai[0]['historygadaian']]])->pluck('norujukan'); + + if($gadaiDouble){ + + $isGadaianTawarruq = $saved_historygadaian !== '0' || $saved_historygadaian !== null || $saved_historygadaian !== ''; + if($isGadaianTawarruq){ + + $this->batalKomuditiTawarruq($norujukan); + Gadai::on($cawangan['mysql'])->where('norujukan', $norujukan)->delete(); + Marhun::on($cawangan['mysql'])->where('norujukan', $norujukan)->delete(); + } else { + + Gadai::on($cawangan['mysql'])->whereIn('norujukan',$gadaiDouble)->delete(); + Marhun::on($cawangan['mysql'])->whereIn('norujukan',$gadaiDouble)->delete(); + $this->batalKomuditi($gadai[0]['historygadaian'],$cawangan['mysql']); + } + + } + + // return response('Deleted Successfully', 200); + } + else + { + + if($gadai[0]['semakbarcode'] == 'Lulus') { + $totalkeluar = $keluar - $gadai[0]['pinjaman']; - $bakiakhir = $bakiakhir - $tebus['bakiupah'] + $tebus['addpinjaman']; + $bakiakhir = $baki; + + $bakiakhir += $gadai[0]['pinjaman']; $updatetunai=Tunai::on($cawangan['mysql'])->where( [['tarikh','=', $current->toDateString()],['kodlaluan','=', $request->kodlaluan] ])-> update(array( - 'keluar' => $keluar, - 'masuk' => $masuk, - 'baki' => $bakiakhir + 'keluar' => $totalkeluar, + 'masuk' => $masuk, + 'baki' => $bakiakhir )); - }else{ - $totalmasuk = $masuk; - $totalkeluar = $keluar; + $bakiakhir = $baki; - if($tebus['jenistebus'] == 'S') - $bakiakhir = ($bakiakhir - $tebus['bakipjm']); - else - $bakiakhir = $bakiawal - $totalkeluar + $totalmasuk + $pendahuluan - $serahan; + $bakiakhir += $gadai[0]['pinjaman']; $updatetunai=Tunai::on($cawangan['mysql'])->where( [['tarikh','=', $current->toDateString()],['kodlaluan','=', $request->kodlaluan] ])-> update(array( - 'keluar' => $keluar, - 'masuk' => $masuk, - 'baki' => $bakiakhir + 'keluar' => $keluar, + 'masuk' => $masuk, + 'baki' => $bakiakhir )); - } + Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->delete(); + Marhun::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->delete(); + TransaksiKeuntungan::on('mysql7')->where('norujukan','=',$norujukan)->orderBy('id', 'desc')->limit(1)->delete(); + Transaction::on('mysql7')->where('norujukan','=',$norujukan)->orderBy('id', 'desc')->limit(1)->delete(); + + // return response('Deleted Successfully', 200); } + $array_response = [ + 'result' => 'success', + 'data' => 1 + ]; - Gadai::on($cawangan['mysql'])->where('norujukan','=',$gadai[0]['historygadaian'])->update(['sttebus' => '']); + DB::connection($cawangan['mysql'])->commit(); + DB::connection('mysql7')->commit(); + return response()->json($array_response); + }catch(\Exception $e){ + DB::connection($cawangan['mysql'])->rollBack(); + DB::connection('mysql7')->rollBack(); + $array_response = [ + 'result' => 'error', + 'data' => $e->getMessage() + ]; - $saved_historygadaian = $gadai[0]['historygadaian']; - - Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->delete(); - - TransaksiKeuntungan::on('mysql7')->where('norujukan','=',$gadai[0]['historygadaian'])->orderBy('id', 'desc')->limit(1)->delete(); - - Transaction::on('mysql7')->where('norujukan','=',$gadai[0]['historygadaian'])->orderBy('id', 'desc')->limit(1)->delete(); - - Tebus::on($cawangan['mysql'])->where('norujukan','=',$gadai[0]['historygadaian'])->delete(); - - Marhun::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->delete(); - - $gadaiDouble = Gadai::on($cawangan['mysql'])->where([['historygadaian',$gadai[0]['historygadaian']],['norujukan','<>',$gadai[0]['historygadaian']]])->pluck('norujukan'); - - if($gadaiDouble){ - - $isGadaianTawarruq = $saved_historygadaian !== '0' || $saved_historygadaian !== null || $saved_historygadaian !== ''; - if($isGadaianTawarruq){ - - $this->batalKomuditiTawarruq($norujukan); - Gadai::on($cawangan['mysql'])->where('norujukan', $norujukan)->delete(); - Marhun::on($cawangan['mysql'])->where('norujukan', $norujukan)->delete(); - } else { - - Gadai::on($cawangan['mysql'])->whereIn('norujukan',$gadaiDouble)->delete(); - Marhun::on($cawangan['mysql'])->whereIn('norujukan',$gadaiDouble)->delete(); - $this->batalKomuditi($gadai[0]['historygadaian'],$cawangan['mysql']); - } - - } - - return response('Deleted Successfully', 200); - } - else - { - - if($gadai[0]['semakbarcode'] == 'Lulus') - { - $totalkeluar = $keluar - $gadai[0]['pinjaman']; - - $bakiakhir = $baki; - - $bakiakhir += $gadai[0]['pinjaman']; - - $updatetunai=Tunai::on($cawangan['mysql'])->where( [['tarikh','=', $current->toDateString()],['kodlaluan','=', $request->kodlaluan] ])-> - update(array( - 'keluar' => $totalkeluar, - 'masuk' => $masuk, - 'baki' => $bakiakhir - )); - }else{ - - $bakiakhir = $baki; - - $bakiakhir += $gadai[0]['pinjaman']; - - $updatetunai=Tunai::on($cawangan['mysql'])->where( [['tarikh','=', $current->toDateString()],['kodlaluan','=', $request->kodlaluan] ])-> - update(array( - 'keluar' => $keluar, - 'masuk' => $masuk, - 'baki' => $bakiakhir - )); - } - - Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->delete(); - Marhun::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->delete(); - TransaksiKeuntungan::on('mysql7')->where('norujukan','=',$norujukan)->orderBy('id', 'desc')->limit(1)->delete(); - Transaction::on('mysql7')->where('norujukan','=',$norujukan)->orderBy('id', 'desc')->limit(1)->delete(); - - return response('Deleted Successfully', 200); + Log::error('Transaction failed', [ + 'exception' => $e->getMessage(), + 'line' => $e->getLine(), + 'file' => $e->getFile(), + ]); + + return response()->json($array_response); } } @@ -2202,6 +2231,7 @@ class GadaiController extends Controller $transaksi_asal = KomuditiTransaksi::on('mysql7')->whereIn('norujukan','=',$gadaiDouble)->sum('unit_komuditi'); + $unit_current = $komuditi_current['unit_komuditi']; $update_unit = $unit_current + $transaksi_asal['unit_komuditi']; @@ -2239,82 +2269,109 @@ class GadaiController extends Controller $bakiakhir = $baki; $totalkeluar = 0; - if($gadai){ - return response('Bukan-Tebus', 200); - }else{ - - $audit = new Audit(); - $audit->users = $request->kodlaluan; - $audit->actions = 'Hapus Tebus'; - $audit->norujukan = $norujukan; - $audit->old_data = $gadai; - $audit->kodcaw = $kodcaw; - $audit->created_at = $current; - $audit->updated_at = $current; - $audit->save(); - - if($tebus[0]['tagterima'] == 1) - { - if($tebus[0]['jenistebus'] == 'T') - { - $totalmasuk = $masuk - $tebus[0]['bakipjm']; - - // $bakiakhir = $bakiawal-$keluar+$totalmasuk+$pendahuluan-$serahan; - $bakiakhir = $baki - $tebus[0]['bakipjm']; - - $updatetunai=Tunai::on($cawangan['mysql'])->where( [['tarikh','=', $current->toDateString()],['kodlaluan','=', $request->kodlaluan] ])-> - update(array( - 'keluar' => $keluar, - 'masuk' => $totalmasuk, - 'baki' => $bakiakhir - )); - - Tebus::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->delete(); - - InOutMar::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->delete(); - - TransaksiKeuntungan::on('mysql7')->where('norujukan','=',$norujukan)->orderBy('id', 'desc')->limit(1)->delete(); - - Transaction::on('mysql7')->where('norujukan','=',$norujukan)->orderBy('id', 'desc')->limit(1)->delete(); - - Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(['sttebus' => '']); - - return response('Deleted Successfully', 200); - } - else - return response('Bukan-Tebus', 200); + try{ + if($gadai){ + return response('Bukan-Tebus', 200); }else{ + DB::connection($cawangan['mysql'])->beginTransaction(); + DB::connection('mysql7')->beginTransaction(); - if($tebus[0]['jenistebus'] == 'T') + $audit = new Audit(); + $audit->users = $request->kodlaluan; + $audit->actions = 'Hapus Tebus'; + $audit->norujukan = $norujukan; + $audit->old_data = $gadai; + $audit->kodcaw = $kodcaw; + $audit->created_at = $current; + $audit->updated_at = $current; + $audit->save(); + + if($tebus[0]['tagterima'] == 1) { + if($tebus[0]['jenistebus'] == 'T') + { + $totalmasuk = $masuk - $tebus[0]['bakipjm']; - $bakiakhir = $bakiakhir - $tebus[0]['bakipjm']; + // $bakiakhir = $bakiawal-$keluar+$totalmasuk+$pendahuluan-$serahan; + $bakiakhir = $baki - $tebus[0]['bakipjm']; - $updatetunai=Tunai::on($cawangan['mysql'])->where( [['tarikh','=', $current->toDateString()],['kodlaluan','=', $request->kodlaluan] ])-> - update(array( - 'keluar' => $keluar, - 'masuk' => $masuk, - 'baki' => $bakiakhir - )); + $updatetunai=Tunai::on($cawangan['mysql'])->where( [['tarikh','=', $current->toDateString()],['kodlaluan','=', $request->kodlaluan] ])-> + update(array( + 'keluar' => $keluar, + 'masuk' => $totalmasuk, + 'baki' => $bakiakhir + )); + + Tebus::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->delete(); + + InOutMar::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->delete(); + + TransaksiKeuntungan::on('mysql7')->where('norujukan','=',$norujukan)->orderBy('id', 'desc')->limit(1)->delete(); + + Transaction::on('mysql7')->where('norujukan','=',$norujukan)->orderBy('id', 'desc')->limit(1)->delete(); + + Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(['sttebus' => '']); + + DB::connection($cawangan['mysql'])->commit(); + DB::connection('mysql7')->commit(); + + return response('Deleted Successfully', 200); + } + else + return response('Bukan-Tebus', 200); + }else{ + + if($tebus[0]['jenistebus'] == 'T') + { + + $bakiakhir = $bakiakhir - $tebus[0]['bakipjm']; + + $updatetunai=Tunai::on($cawangan['mysql'])->where( [['tarikh','=', $current->toDateString()],['kodlaluan','=', $request->kodlaluan] ])-> + update(array( + 'keluar' => $keluar, + 'masuk' => $masuk, + 'baki' => $bakiakhir + )); - Tebus::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->delete(); + Tebus::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->delete(); - InOutMar::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->delete(); + InOutMar::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->delete(); - TransaksiKeuntungan::on('mysql7')->where('norujukan','=',$norujukan)->orderBy('id', 'desc')->limit(1)->delete(); + TransaksiKeuntungan::on('mysql7')->where('norujukan','=',$norujukan)->orderBy('id', 'desc')->limit(1)->delete(); - Transaction::on('mysql7')->where('norujukan','=',$norujukan)->orderBy('id', 'desc')->limit(1)->delete(); + Transaction::on('mysql7')->where('norujukan','=',$norujukan)->orderBy('id', 'desc')->limit(1)->delete(); - Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(['sttebus' => '']); + Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(['sttebus' => '']); - return response('Deleted Successfully', 200); + DB::connection($cawangan['mysql'])->commit(); + DB::connection('mysql7')->commit(); + return response('Deleted Successfully', 200); + } + else + return response('Bukan-Tebus', 200); } - else - return response('Bukan-Tebus', 200); } + + return response()->json($array_response); + }catch(\Exception $e){ + DB::connection($cawangan['mysql'])->rollBack(); + DB::connection('mysql7')->rollBack(); + $array_response = [ + 'result' => 'error', + 'data' => $e->getMessage() + ]; + + Log::error('Transaction failed', [ + 'exception' => $e->getMessage(), + 'line' => $e->getLine(), + 'file' => $e->getFile(), + ]); + + return response()->json($array_response); } + } public function senaraiLelong($kodcaw,Request $request){ diff --git a/app/Support/v1/Penebusan.php b/app/Support/v1/Penebusan.php index 7c35110..88033cb 100644 --- a/app/Support/v1/Penebusan.php +++ b/app/Support/v1/Penebusan.php @@ -9,7 +9,10 @@ use App\KadarUpah; use App\Support\v2\Calculation; use Carbon\Carbon; use App\Gadai; +use App\HargaEmas; use App\InOutMar; +use App\KomuditiPurchase; +use App\KomuditiTransaksi; use App\Marhun; use App\Moratorium; use App\Support\OnePercent; @@ -771,4 +774,323 @@ class Penebusan return $tempoh_gadai; } + + public function transaksiPembiayaanSemula($kodcaw,$norujukan,HttpRequest $request){ + $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); + + $gadai = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->first(); + $gadai = optional($gadai)->toArray(); + + //check duplicate + $data = Transaction::on('mysql7')->where('norujukan','=',$norujukan)->where('trans_type','=','AT')->first(); + + if(!empty($data)){ + return 'duplicate'; + } + + if(!$gadai){ + return 'gadai no-data'; + } + + $array_tebus = $request->only(['jeniskeuntungan', 'nopelanggan','jenistebus','addpinjaman','nowakil','marhun','teller','bakipinjaman','bakiupah']); + $array_trans = $request->only(['nopelanggan', 'noic','jenisAT','pinjaman','marhun','teller','jenistebus']); + $array_tebus_base = $request->only(['totalbayaran', 'bakiupah','jeniskeuntungan','bakipinjaman','jenistebus','teller','nowakil','duitpelanggan']); + $array_trans_base = $request->only(['pinjaman','teller']); + + try{ + DB::connection($cawangan['mysql'])->beginTransaction(); + $this->saveTebus($kodcaw,$norujukan,$gadai,$cawangan,$array_tebus); + $this->createTransaction($cawangan,$kodcaw,$norujukan,$array_trans); + + DB::connection('mysql7')->beginTransaction(); + $this->saveTebusBase($kodcaw,$norujukan,$gadai,$array_tebus_base); + $this->createTransactionBase($norujukan,$kodcaw,$array_trans_base); + $array_response = [ + 'result' => 'success', + 'data' => 1 + ]; + + DB::connection($cawangan['mysql'])->commit(); + DB::connection('mysql7')->commit(); + + return response()->json($array_response); + + }catch(\Exception $e){ + DB::connection($cawangan['mysql'])->rollBack(); + DB::connection('mysql7')->rollBack(); + $array_response = [ + 'result' => 'error', + 'data' => $e->getMessage() + ]; + + Log::error('Transaction failed', [ + 'exception' => $e->getMessage(), + 'line' => $e->getLine(), + 'file' => $e->getFile(), + ]); + + return response()->json($array_response); + } + + } + + private function saveTebus($kodcaw,$norujukan,$gadai,$cawangan,$array_tebus){ + $current = Carbon::now(); + + $rebet = 0; + + $rebet = $this->rebetselepastawarruq($kodcaw,$norujukan); + + $upah_rebet = $this->kiraUpahRebet($norujukan); + + try{ + Tebus::on($cawangan['mysql'])->create([ + 'kodcaw'=> $kodcaw, + 'norujukan'=> $norujukan, + 'nopelanggan' => $array_tebus['nopelanggan'], + 'jenisbyr' => "TN", + 'jenistebus' => $array_tebus['jenistebus'], + 'glcode' => "0", + 't_tebus' => $current->toDateString(), + 'jbg' => $gadai['tempoh'], + 'kadarupah' => $gadai['kadarupah'], + 'nilaimarhun' => $gadai['nilaimarhun'], + 'pinjaman' => $gadai['pinjaman'], + 'ansuran' => 0.00, + 'addpinjaman' => $array_tebus['addpinjaman'], + 'bakipjm' => $array_tebus['bakipinjaman'], + 'bakiupah' => $array_tebus['bakiupah'], + 'terima' => "*", + 'kodgl' => "0", + 'nowakil' => $array_tebus['nowakil'], + 'rebate' => $rebet, + 'marhuntebus' => $array_tebus['marhun'], + 'historygadaian' => $norujukan, + 'tarikhbyrn' => $current->toDateString(), + 'teller' => $array_tebus['teller'], + ]); + }catch(\Exception $e){ + throw new \Exception("Error in Tebus: " . $e->getMessage()); + } + } + + private function saveTebusBase($kodcaw,$norujukan,$gadai,$array_tebus_base){ + $current = Carbon::now(); + + if($array_tebus_base['jenistebus'] == 'AT'){ + $bayaran_pembiayaan = $array_tebus_base['totalbayaran'] - $array_tebus_base['bakiupah']; + }else{ + $bayaran_pembiayaan = $array_tebus_base['bakipinjaman']; + } + + $margin_semasa = ($gadai['bakipjm']/$gadai['nilaimarhun']) * 100; + + $harga_tebus = $this->hargaTebusTawarruq($kodcaw,$norujukan,$array_tebus_base['jeniskeuntungan']); + $upah_rebet = $this->kiraUpahRebetSebenar($kodcaw,$norujukan); + + $bayaran_pembiayaan = $array_tebus_base['totalbayaran'] - $array_tebus_base['bakiupah']; + + $upah_rebet_sebenar = $harga_tebus['harga'] - $gadai['bakipjm']; + + try{ + TransaksiKeuntungan::on('mysql7')->create([ + 'norujukan' => $norujukan, + 'bayaran_keuntungan' => $array_tebus_base['bakiupah'], + 'bayaran_pembiayaan' => $bayaran_pembiayaan, + 'keuntungan_rebet' => $array_tebus_base['bakiupah'], + 'tarikh_bayaran'=> $current, + 'kodcaw'=> $kodcaw + ]); + + if($array_tebus_base['jenistebus'] == 'P'){ + $duit_masuk = $array_tebus_base['bakiupah']; + }else if($array_tebus_base['jenistebus'] == 'AT'){ + $duit_masuk = $array_tebus_base['totalbayaran']; + }else{ + $duit_masuk = $harga_tebus['harga']; + } + + $baki_hargajualan = ($array_tebus_base['jenistebus'] == 'P') ? $gadai['bakihargajualan'] = $array_tebus_base['bakiupah'] : $gadai['bakihargajualan'] - $array_tebus_base['bakipinjaman']; + Transaction::on('mysql7')->create([ + 'trans_type' => $array_tebus_base['jenistebus'], + 'norujukan' => $norujukan, + 'nokp' => $gadai['nokp'], + 'teller' => $array_tebus_base['teller'], + 'kodcaw' => $kodcaw, + 'duit_masuk' => $array_tebus_base['totalbayaran'], + 'created_at' => $current, + 'bakiharga' => 0, + 'duitpelanggan' => isset($array_tebus_base['duitpelanggan']) ? $array_tebus_base['duitpelanggan'] : 0, + 'bakipelanggan' => isset($array_tebus_base['bakipelanggan']) ? $array_tebus_base['bakipelanggan'] : 0 + ]); + }catch(\Exception $e){ + throw new \Exception("Error in TebusBase: " . $e->getMessage()); + } + } + + private function createTransaction($cawangan,$kodcaw,$norujukan,$array_trans){ + $current = Carbon::now(); + + /* Create Gadai */ + $gadaiTransaction = Gadai::on($cawangan['mysql'])->where('t_gadai','=',$current->toDateString())->orderBy('sirig', 'desc')->first(); + $gadaiTransaction = optional($gadaiTransaction)->toArray(); + + $new_sirig = ($gadaiTransaction) ? $gadaiTransaction['sirig'] + 1 : 1; + + $new_transaction = sprintf("%04d",$new_sirig); + $new_sag_number = strtoupper($cawangan['kodcaw']) . $current->year . $current->month . $current->day . '-' .$new_transaction; + + try{ + Gadai::on($cawangan['mysql'])->create([ + 'kodcaw'=>$kodcaw, + 'norujukan' => $new_sag_number, + 'nopelanggan' => $array_trans['nopelanggan'], + 'nokp' => $array_trans['noic'], + 'sirig' => $new_sirig, + 't_gadai' => $current->toDateString(), + 'sttebus' => '', + 'masa' =>$current->toTimeString(), + 'tagbaru' => 1 + ]); + + $marhun = Marhun::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->get(); + + foreach($marhun as $marhunloop){ + $karatbaru = (strpos($marhunloop['karat'], '.') !== false) ? str_replace('-','.',$marhunloop['karat']) : $marhunloop['karat']; + $karatbaru = $marhunloop['karat']; + $harga_emas = HargaEmas::on('mysql7')->select('harga')->where('karat','=',$karatbaru)->first(); + + if(isset($array_trans['jenisAT'])){ + $harga = ($array_trans['jenisAT'] == 'hargalama') ? $marhunloop['harga'] : $harga_emas['harga']; + }else{ + $harga = $harga_emas['harga']; + } + + $nilai_marhun = (floatval($harga) * floatval($marhunloop['berat'])); + + $marhunToCreate = [ + 'kodcaw'=> $kodcaw, + 'norujukan'=> $new_sag_number, + 't_gadai' => $current->toDateString(), + 'bil' => $marhunloop['kuantiti'], + 'marhun' => $marhunloop['marhun'], + 'nota' => $marhunloop['nota'], + 'tag_permata' => $marhunloop['tag_permata'] != null ? $marhunloop['tag_permata'] : 0, + 'berat_batu_permata' => $marhunloop['berat_batu_permata'] != null ? $marhunloop['berat_batu_permata'] : '', + 'karat' => $marhunloop['karat'], + 'berat' => $marhunloop['berat_emas'], + 'harga' => $harga, + 'n_marhun' => $nilai_marhun + ]; + + if($marhunToCreate['berat_batu_permata'] == '') { + $marhunToCreate['berat_batu_permata'] = null; + }; + + Marhun::on($cawangan['mysql'])->create($marhunToCreate); + } + + $total_nilai_marhun = Marhun::on($cawangan['mysql'])->where('norujukan',$new_sag_number)->sum('n_marhun'); + $total_bil_marhun = Marhun::on($cawangan['mysql'])->where('norujukan',$new_sag_number)->sum('bil'); + $total_berat_marhun = Marhun::on($cawangan['mysql'])->where('norujukan',$new_sag_number)->sum('berat'); + + $margin_pinjaman = ($array_trans['pinjaman'] / $total_nilai_marhun); + + $t_matang = Carbon::now(); + $t_matang = $t_matang->addMonths(6)->subDays(1); + + $t_kontrak = Carbon::now(); + $t_kontrak = $t_kontrak->addMonths(12)->subDays(1); + + $kadar_raw = KadarUpah::where('min','<=',$total_nilai_marhun)->where('max','>=',$total_nilai_marhun)->where('group_id',$cawangan['group_id'])->first(); + + $onepercentservices = new Calculation(); + $keuntungan = $onepercentservices->kiraanKeuntunganSebenar($array_trans['pinjaman'],$total_nilai_marhun,$kadar_raw['kadarujrah'],$margin_pinjaman); + + $upah1 = $onepercentservices->getRoundedMethod($keuntungan['keuntungan']); + $upah6 = $onepercentservices->getRoundedMethod($upah1 * 6); + $upah12 = $onepercentservices->getRoundedMethod($upah1 * 12); + $ujrah = $onepercentservices->getRoundedMethod($keuntungan['ujrah']); + $onepercent = $onepercentservices->getRoundedMethod($keuntungan['onepercent']); + $akrual_ujrah = $onepercentservices->getRoundedMethod($keuntungan['ujrah'] * 0.5); + $akrual_onepercent = $onepercentservices->getRoundedMethod($keuntungan['onepercent'] * 0.5); + + $hargajualan = $array_trans['pinjaman'] + $upah12; + + Gadai::on($cawangan['mysql']) + ->where('norujukan','=',$new_sag_number) + ->update(array( + 'nilaimarhun' => $total_nilai_marhun, + 'berat'=> $total_berat_marhun, + 'pinjaman' => $array_trans['pinjaman'], + 'kadarupah' => $kadar_raw['kadarujrah'], + 'marhun' => $array_trans['marhun'], + 'percentpinj' => $margin_pinjaman, + 'teller' => $array_trans['teller'], + 'bakipjm' => $array_trans['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' => $total_bil_marhun, + 'tagkomuditi' => 0, + 'upahdibayar' => 0.00, + 'tempohbayar' => 0.00, + 'lelong_tawarruq' => 1, + 'kadarujrah' => $kadar_raw['kadarujrah'], + 'ujrah' => $ujrah, + 'onepercent' => $onepercent, + 'margin_semasa' => $margin_pinjaman, + 'tagbaru' => 1, + 'tunggakanujrah' => $akrual_ujrah, + 'tunggakanonepercent' => $akrual_onepercent, + )); + + Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(array( + 'sttebus' => "T", + 't_update' => $current->toDateString(), + 'historygadaian' => $new_sag_number, + 'tag_tebus' => $array_trans['jenistebus'], + )); + + }catch(\Exception $e){ + throw new \Exception("Error in Transaction: " . $e->getMessage()); + } + + } + + private function createTransactionBase($norujukan,$kodcaw,$array_trans_base){ + $current = Carbon::now(); + + $komuditi_current = KomuditiPurchase::on('mysql7')->where('date_purchase','=',$current->toDateString())->orderBy('created_at','desc')->first(); + + $unit_current = isset($komuditi_current['unit_komuditi']) ? $komuditi_current['unit_komuditi']: 0; + + try{ + $update_unit = $unit_current - $array_trans_base['pinjaman']; + + KomuditiPurchase::on('mysql7')->where('id','=',$komuditi_current['id'])->update([ + 'unit_komuditi' => $update_unit + ]); + + KomuditiTransaksi::on('mysql7')->create([ + 'unit_komuditi' => $update_unit, + 'nosijil'=>$komuditi_current['no_sijil'], + 'norujukan' => $norujukan, + 'kodcaw' => $kodcaw, + 'teller' => $array_trans_base['teller'], + 'masa' => $current->toTimeString(), + 'tarikh' => $current->toDateString() + ]); + }catch(\Exception $e){ + throw new \Exception("Error in TransactionBase: " . $e->getMessage()); + } + } } \ No newline at end of file From e33af1a75eb5bcb4a5922bcd8ac2cf3fa43fba14 Mon Sep 17 00:00:00 2001 From: Hafifie PKB Date: Sun, 15 Dec 2024 12:14:22 +0800 Subject: [PATCH 07/13] fix add api --- app/Support/v2/Penebusan.php | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/app/Support/v2/Penebusan.php b/app/Support/v2/Penebusan.php index 6e9bcb2..ee306ce 100644 --- a/app/Support/v2/Penebusan.php +++ b/app/Support/v2/Penebusan.php @@ -994,9 +994,9 @@ class Penebusan $gadai = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->first(); $array_tebus = $request->only(['jeniskeuntungan', 'nopelanggan','jenistebus','addpinjaman','nowakil','marhun','teller']); - $array_trans = $request->only(['nopelanggan', 'noic','pinjaman','marhun','teller','jenistebus']); + $array_trans = $request->only(['nopelanggan', 'noic','pinjaman','pinjamanbaru','marhun','teller','jenistebus']); $array_tebus_base = $request->only(['totalbayaran', 'bakiupah','jeniskeuntungan','bakipinjaman','jenistebus','teller','nowakil','duitpelanggan']); - $array_trans_base = $request->only(['pinjaman','teller']); + $array_trans_base = $request->only(['pinjaman','teller','pinjamanbaru']); try{ //check duplicate @@ -1226,7 +1226,7 @@ class Penebusan 'tag_permata' => $marhunloop['tag_permata'] != null ? $marhunloop['tag_permata'] : 0, 'berat_batu_permata' => $marhunloop['berat_batu_permata'] != null ? $marhunloop['berat_batu_permata'] : '', 'karat' => $marhunloop['karat'], - 'berat' => $marhunloop['berat_emas'], + 'berat' => $marhunloop['berat'], 'harga' => $harga, 'n_marhun' => $nilai_marhun ]; @@ -1242,7 +1242,7 @@ class Penebusan $total_bil_marhun = Marhun::on($cawangan['mysql'])->where('norujukan',$new_sag_number)->sum('bil'); $total_berat_marhun = Marhun::on($cawangan['mysql'])->where('norujukan',$new_sag_number)->sum('berat'); - $margin_pinjaman = ($array_trans['pinjaman'] / $total_nilai_marhun); + $margin_pinjaman = ($array_trans['pinjamanbaru'] / $total_nilai_marhun); $t_matang = Carbon::now(); $t_matang = $t_matang->addMonths(6)->subDays(1); @@ -1253,7 +1253,7 @@ class Penebusan $kadar_raw = KadarUpah::where('min','<=',$total_nilai_marhun)->where('max','>=',$total_nilai_marhun)->where('group_id',$cawangan['group_id'])->first(); $onepercentservices = new Calculation(); - $keuntungan = $onepercentservices->kiraanKeuntunganSebenar($array_trans['pinjaman'],$total_nilai_marhun,$kadar_raw['kadarujrah'],$margin_pinjaman); + $keuntungan = $onepercentservices->kiraanKeuntunganSebenar($array_trans['pinjamanbaru'],$total_nilai_marhun,$kadar_raw['kadarujrah'],$margin_pinjaman); $upah1 = $onepercentservices->getRoundedMethod($keuntungan['keuntungan']); $upah6 = $onepercentservices->getRoundedMethod($upah1 * 6); @@ -1263,19 +1263,19 @@ class Penebusan $akrual_ujrah = $onepercentservices->getRoundedMethod($keuntungan['ujrah'] * 0.5); $akrual_onepercent = $onepercentservices->getRoundedMethod($keuntungan['onepercent'] * 0.5); - $hargajualan = $array_trans['pinjaman'] + $upah12; + $hargajualan = $array_trans['pinjamanbaru'] + $upah12; Gadai::on($cawangan['mysql']) ->where('norujukan','=',$new_sag_number) ->update(array( 'nilaimarhun' => $total_nilai_marhun, 'berat'=> $total_berat_marhun, - 'pinjaman' => $array_trans['pinjaman'], + 'pinjaman' => $array_trans['pinjamanbaru'], 'kadarupah' => $kadar_raw['kadarujrah'], 'marhun' => $array_trans['marhun'], 'percentpinj' => $margin_pinjaman, 'teller' => $array_trans['teller'], - 'bakipjm' => $array_trans['pinjaman'], + 'bakipjm' => $array_trans['pinjamanbaru'], 'bakiupah' => $upah6, 'jbg' => 0.5, 't_update' => $current->toDateString(), @@ -1322,7 +1322,7 @@ class Penebusan $unit_current = isset($komuditi_current['unit_komuditi']) ? $komuditi_current['unit_komuditi']: 0; try{ - $update_unit = $unit_current - $array_trans_base['pinjaman']; + $update_unit = $unit_current - $array_trans_base['pinjamanbaru']; KomuditiPurchase::on('mysql7')->where('id','=',$komuditi_current['id'])->update([ 'unit_komuditi' => $update_unit From f13dd32146ea035a5921a52afb7b6cb175a7487c Mon Sep 17 00:00:00 2001 From: Hafifie PKB Date: Mon, 16 Dec 2024 01:05:42 +0800 Subject: [PATCH 08/13] fix ps --- app/Support/v2/Penebusan.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/Support/v2/Penebusan.php b/app/Support/v2/Penebusan.php index ee306ce..1b93ca1 100644 --- a/app/Support/v2/Penebusan.php +++ b/app/Support/v2/Penebusan.php @@ -942,9 +942,9 @@ class Penebusan } $array_tebus = $request->only(['jeniskeuntungan', 'nopelanggan','jenistebus','addpinjaman','nowakil','marhun','teller']); - $array_trans = $request->only(['nopelanggan', 'noic','jenisAT','pinjaman','marhun','teller','jenistebus']); + $array_trans = $request->only(['nopelanggan', 'noic','jenisAT','pinjaman','pinjamanbaru','marhun','teller','jenistebus']); $array_tebus_base = $request->only(['totalbayaran', 'bakiupah','jeniskeuntungan','bakipinjaman','jenistebus','teller','nowakil','duitpelanggan']); - $array_trans_base = $request->only(['pinjaman','teller']); + $array_trans_base = $request->only(['pinjaman','teller','pinjamanbaru']); try{ @@ -1299,12 +1299,12 @@ class Penebusan 'tagbaru' => 1, 'tunggakanujrah' => $akrual_ujrah, 'tunggakanonepercent' => $akrual_onepercent, + 'historygadaian' => $norujukan, )); Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(array( 'sttebus' => "T", 't_update' => $current->toDateString(), - 'historygadaian' => $new_sag_number, 'tag_tebus' => $array_trans['jenistebus'], )); From b5e17aaee2dfcecea8a56ac23b68eb7233f908a9 Mon Sep 17 00:00:00 2001 From: Hafifie PKB Date: Mon, 16 Dec 2024 10:44:56 +0800 Subject: [PATCH 09/13] fix untuk surat lama --- app/Support/v1/Penebusan.php | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/app/Support/v1/Penebusan.php b/app/Support/v1/Penebusan.php index 88033cb..9738527 100644 --- a/app/Support/v1/Penebusan.php +++ b/app/Support/v1/Penebusan.php @@ -793,9 +793,9 @@ class Penebusan } $array_tebus = $request->only(['jeniskeuntungan', 'nopelanggan','jenistebus','addpinjaman','nowakil','marhun','teller','bakipinjaman','bakiupah']); - $array_trans = $request->only(['nopelanggan', 'noic','jenisAT','pinjaman','marhun','teller','jenistebus']); + $array_trans = $request->only(['nopelanggan', 'noic','jenisAT','pinjaman','pinjamanbaru','marhun','teller','jenistebus']); $array_tebus_base = $request->only(['totalbayaran', 'bakiupah','jeniskeuntungan','bakipinjaman','jenistebus','teller','nowakil','duitpelanggan']); - $array_trans_base = $request->only(['pinjaman','teller']); + $array_trans_base = $request->only(['pinjaman','teller','pinjamanbaru']); try{ DB::connection($cawangan['mysql'])->beginTransaction(); @@ -978,7 +978,7 @@ class Penebusan 'tag_permata' => $marhunloop['tag_permata'] != null ? $marhunloop['tag_permata'] : 0, 'berat_batu_permata' => $marhunloop['berat_batu_permata'] != null ? $marhunloop['berat_batu_permata'] : '', 'karat' => $marhunloop['karat'], - 'berat' => $marhunloop['berat_emas'], + 'berat' => $marhunloop['berat'], 'harga' => $harga, 'n_marhun' => $nilai_marhun ]; @@ -1022,12 +1022,12 @@ class Penebusan ->update(array( 'nilaimarhun' => $total_nilai_marhun, 'berat'=> $total_berat_marhun, - 'pinjaman' => $array_trans['pinjaman'], + 'pinjaman' => $array_trans['pinjamanbaru'], 'kadarupah' => $kadar_raw['kadarujrah'], 'marhun' => $array_trans['marhun'], 'percentpinj' => $margin_pinjaman, 'teller' => $array_trans['teller'], - 'bakipjm' => $array_trans['pinjaman'], + 'bakipjm' => $array_trans['pinjamanbaru'], 'bakiupah' => $upah6, 'jbg' => 0.5, 't_update' => $current->toDateString(), @@ -1051,12 +1051,12 @@ class Penebusan 'tagbaru' => 1, 'tunggakanujrah' => $akrual_ujrah, 'tunggakanonepercent' => $akrual_onepercent, + 'historygadaian' => $norujukan, )); Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(array( 'sttebus' => "T", 't_update' => $current->toDateString(), - 'historygadaian' => $new_sag_number, 'tag_tebus' => $array_trans['jenistebus'], )); @@ -1074,7 +1074,7 @@ class Penebusan $unit_current = isset($komuditi_current['unit_komuditi']) ? $komuditi_current['unit_komuditi']: 0; try{ - $update_unit = $unit_current - $array_trans_base['pinjaman']; + $update_unit = $unit_current - $array_trans_base['pinjamanbaru']; KomuditiPurchase::on('mysql7')->where('id','=',$komuditi_current['id'])->update([ 'unit_komuditi' => $update_unit From 954568b086fb45ba4c936094558d376ad8628c40 Mon Sep 17 00:00:00 2001 From: Hafifie PKB Date: Mon, 16 Dec 2024 21:58:04 +0800 Subject: [PATCH 10/13] fix sag lama untuk ps --- app/Services/MasterServices.php | 2 +- app/Support/Tawarruq.php | 3 ++- app/Support/v1/Penebusan.php | 11 +++++++---- app/Support/v2/Penebusan.php | 20 ++++++++++++-------- 4 files changed, 22 insertions(+), 14 deletions(-) diff --git a/app/Services/MasterServices.php b/app/Services/MasterServices.php index 1f903f9..adb2adf 100644 --- a/app/Services/MasterServices.php +++ b/app/Services/MasterServices.php @@ -7,7 +7,7 @@ use App\KadarUpah; use Illuminate\Http\Request as HttpRequest; use App\Support\OnePercent as OnePercentEngine; use App\Support\Tawarruq as TawarruqEngine; - +use Illuminate\Support\Facades\Log; class MasterServices { protected $cawangan; diff --git a/app/Support/Tawarruq.php b/app/Support/Tawarruq.php index 2ac6755..be5506f 100644 --- a/app/Support/Tawarruq.php +++ b/app/Support/Tawarruq.php @@ -8,6 +8,7 @@ use App\Support\v1\GadaiV1 as Version1Gadai; use App\Services\MasterServices; use App\Support\v1\Penebusan; use Illuminate\Http\Request as HttpRequest; +use Illuminate\Support\Facades\Log; class Tawarruq extends MasterServices { @@ -165,7 +166,7 @@ class Tawarruq extends MasterServices public function tebusUpdateAutoTawarruq($kodcaw,$norujukan,HttpRequest $request){ $tebus = new Penebusan($this->kodcaw,$this->cawangan_info); - $response = $tebus->tebusUpdateAutoTawarruq($this->kodcaw,$norujukan,$request); + $response = $tebus->transaksiPembiayaanSemula($this->kodcaw,$norujukan,$request); return $response; } diff --git a/app/Support/v1/Penebusan.php b/app/Support/v1/Penebusan.php index 9738527..0862945 100644 --- a/app/Support/v1/Penebusan.php +++ b/app/Support/v1/Penebusan.php @@ -890,7 +890,7 @@ class Penebusan $bayaran_pembiayaan = $array_tebus_base['totalbayaran'] - $array_tebus_base['bakiupah']; - $upah_rebet_sebenar = $harga_tebus['harga'] - $gadai['bakipjm']; + $upah_rebet_sebenar = $harga_tebus - $gadai['bakipjm']; try{ TransaksiKeuntungan::on('mysql7')->create([ @@ -936,9 +936,12 @@ class Penebusan $gadaiTransaction = optional($gadaiTransaction)->toArray(); $new_sirig = ($gadaiTransaction) ? $gadaiTransaction['sirig'] + 1 : 1; + $curent_year = substr($current->year,2,2); + $curent_month = sprintf("%02d", $current->month); + $current_day = sprintf("%02d", $current->day); $new_transaction = sprintf("%04d",$new_sirig); - $new_sag_number = strtoupper($cawangan['kodcaw']) . $current->year . $current->month . $current->day . '-' .$new_transaction; + $new_sag_number = strtoupper($cawangan['kodcaw']) . $curent_year . $curent_month . $current_day . '-' .$new_transaction; try{ Gadai::on($cawangan['mysql'])->create([ @@ -994,7 +997,7 @@ class Penebusan $total_bil_marhun = Marhun::on($cawangan['mysql'])->where('norujukan',$new_sag_number)->sum('bil'); $total_berat_marhun = Marhun::on($cawangan['mysql'])->where('norujukan',$new_sag_number)->sum('berat'); - $margin_pinjaman = ($array_trans['pinjaman'] / $total_nilai_marhun); + $margin_pinjaman = ($array_trans['pinjamanbaru'] / $total_nilai_marhun); $t_matang = Carbon::now(); $t_matang = $t_matang->addMonths(6)->subDays(1); @@ -1005,7 +1008,7 @@ class Penebusan $kadar_raw = KadarUpah::where('min','<=',$total_nilai_marhun)->where('max','>=',$total_nilai_marhun)->where('group_id',$cawangan['group_id'])->first(); $onepercentservices = new Calculation(); - $keuntungan = $onepercentservices->kiraanKeuntunganSebenar($array_trans['pinjaman'],$total_nilai_marhun,$kadar_raw['kadarujrah'],$margin_pinjaman); + $keuntungan = $onepercentservices->kiraanKeuntunganSebenar($array_trans['pinjamanbaru'],$total_nilai_marhun,$kadar_raw['kadarujrah'],$margin_pinjaman); $upah1 = $onepercentservices->getRoundedMethod($keuntungan['keuntungan']); $upah6 = $onepercentservices->getRoundedMethod($upah1 * 6); diff --git a/app/Support/v2/Penebusan.php b/app/Support/v2/Penebusan.php index 1b93ca1..a0de8b4 100644 --- a/app/Support/v2/Penebusan.php +++ b/app/Support/v2/Penebusan.php @@ -992,6 +992,14 @@ class Penebusan $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); $gadai = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->first(); + $gadai = optional($gadai)->toArray(); + + //check duplicate + $data = Transaction::on('mysql7')->where('norujukan','=',$norujukan)->where('trans_type','=','AT')->first(); + + if(!empty($data)){ + return 'duplicate'; + } $array_tebus = $request->only(['jeniskeuntungan', 'nopelanggan','jenistebus','addpinjaman','nowakil','marhun','teller']); $array_trans = $request->only(['nopelanggan', 'noic','pinjaman','pinjamanbaru','marhun','teller','jenistebus']); @@ -999,13 +1007,6 @@ class Penebusan $array_trans_base = $request->only(['pinjaman','teller','pinjamanbaru']); try{ - //check duplicate - $data = Transaction::on('mysql7')->where('norujukan','=',$norujukan)->where('trans_type','=','AT')->first(); - - if(!empty($data)){ - return 'duplicate'; - } - DB::connection($cawangan['mysql'])->beginTransaction(); $this->saveTebus($kodcaw,$norujukan,$gadai,$cawangan,$array_tebus); $this->createTransaction($cawangan,$kodcaw,$norujukan,$array_trans); @@ -1184,9 +1185,12 @@ class Penebusan $gadaiTransaction = optional($gadaiTransaction)->toArray(); $new_sirig = ($gadaiTransaction) ? $gadaiTransaction['sirig'] + 1 : 1; + $curent_year = substr($current->year,2,2); + $curent_month = sprintf("%02d", $current->month); + $current_day = sprintf("%02d", $current->day); $new_transaction = sprintf("%04d",$new_sirig); - $new_sag_number = strtoupper($cawangan['kodcaw']) . $current->year . $current->month . $current->day . '-' .$new_transaction; + $new_sag_number = strtoupper($cawangan['kodcaw']) . $curent_year . $curent_month . $current_day . '-' .$new_transaction; try{ Gadai::on($cawangan['mysql'])->create([ From c512d8e5a4359251716a85d5997def466d4fb85e Mon Sep 17 00:00:00 2001 From: Hafifie PKB Date: Mon, 16 Dec 2024 22:13:37 +0800 Subject: [PATCH 11/13] fix tagtebus xmasuk --- app/Gadai.php | 3 ++- app/Support/v1/Penebusan.php | 2 +- app/Support/v2/Penebusan.php | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/app/Gadai.php b/app/Gadai.php index d5864da..7f3f595 100644 --- a/app/Gadai.php +++ b/app/Gadai.php @@ -72,7 +72,8 @@ class Gadai extends Model 'upah12', 'tagkomuditi', 'tempohbayar', - 'lelong_tawarruq' + 'lelong_tawarruq', + 'tag_tebus' ]; /** diff --git a/app/Support/v1/Penebusan.php b/app/Support/v1/Penebusan.php index 0862945..4ce7746 100644 --- a/app/Support/v1/Penebusan.php +++ b/app/Support/v1/Penebusan.php @@ -1055,12 +1055,12 @@ class Penebusan 'tunggakanujrah' => $akrual_ujrah, 'tunggakanonepercent' => $akrual_onepercent, 'historygadaian' => $norujukan, + 'tag_tebus' => $array_trans['jenistebus'], )); Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(array( 'sttebus' => "T", 't_update' => $current->toDateString(), - 'tag_tebus' => $array_trans['jenistebus'], )); }catch(\Exception $e){ diff --git a/app/Support/v2/Penebusan.php b/app/Support/v2/Penebusan.php index a0de8b4..ae67135 100644 --- a/app/Support/v2/Penebusan.php +++ b/app/Support/v2/Penebusan.php @@ -1304,12 +1304,12 @@ class Penebusan 'tunggakanujrah' => $akrual_ujrah, 'tunggakanonepercent' => $akrual_onepercent, 'historygadaian' => $norujukan, + 'tag_tebus' => $array_trans['jenistebus'], )); Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(array( 'sttebus' => "T", 't_update' => $current->toDateString(), - 'tag_tebus' => $array_trans['jenistebus'], )); }catch(\Exception $e){ From 645183a1a578629db1f274ca6c85f4354e19c450 Mon Sep 17 00:00:00 2001 From: hafifierahman Date: Tue, 31 Dec 2024 00:18:55 +0800 Subject: [PATCH 12/13] delete failover --- ...3407_create_failover_transaction_table.php | 39 ------------------- ...eate_failover_transaction_failed_table.php | 36 ----------------- 2 files changed, 75 deletions(-) delete mode 100644 database/migrations/2024_11_17_163407_create_failover_transaction_table.php delete mode 100644 database/migrations/2024_11_18_111139_create_failover_transaction_failed_table.php diff --git a/database/migrations/2024_11_17_163407_create_failover_transaction_table.php b/database/migrations/2024_11_17_163407_create_failover_transaction_table.php deleted file mode 100644 index 14717ad..0000000 --- a/database/migrations/2024_11_17_163407_create_failover_transaction_table.php +++ /dev/null @@ -1,39 +0,0 @@ -create('failover_transaction', function (Blueprint $table) { - $table->id(); - $table->string('kodcaw',10); - $table->string('teller',255); - $table->string('old_norujukan',50); - $table->string('new_norujukan',50)->nullable(); - $table->boolean('db_caw')->default(false); // Boolean for db_caw, default to false - $table->boolean('db_online')->default(false); - $table->enum('status', ['pending', 'resolved', 'failed'])->default('pending'); // Use ENUM for statuses - $table->timestamp('resolve_time')->nullable(); // Timestamp for resolve time, nullable - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::connection('mysql7')->dropIfExists('failover_transaction'); - } -} diff --git a/database/migrations/2024_11_18_111139_create_failover_transaction_failed_table.php b/database/migrations/2024_11_18_111139_create_failover_transaction_failed_table.php deleted file mode 100644 index e322922..0000000 --- a/database/migrations/2024_11_18_111139_create_failover_transaction_failed_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->unsignedBigInteger('original_id'); // Reference to failover_transaction - $table->string('kodcaw'); - $table->string('norujukan'); - $table->integer('code_error'); - $table->text('error_message')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('failover_transaction_failed'); - } -} From 040ba3c476703b1d1914c87e52376237b706da60 Mon Sep 17 00:00:00 2001 From: hafifierahman Date: Tue, 31 Dec 2024 00:19:58 +0800 Subject: [PATCH 13/13] delete app failover --- app/FailoverTransaction.php | 43 ------------------------------- app/FailoverTransactionFailed.php | 30 --------------------- 2 files changed, 73 deletions(-) delete mode 100644 app/FailoverTransaction.php delete mode 100644 app/FailoverTransactionFailed.php diff --git a/app/FailoverTransaction.php b/app/FailoverTransaction.php deleted file mode 100644 index 2872b32..0000000 --- a/app/FailoverTransaction.php +++ /dev/null @@ -1,43 +0,0 @@ - 'boolean', - 'db_online' => 'boolean', - 'resolve_time' => 'datetime', - ]; -} diff --git a/app/FailoverTransactionFailed.php b/app/FailoverTransactionFailed.php deleted file mode 100644 index e45546e..0000000 --- a/app/FailoverTransactionFailed.php +++ /dev/null @@ -1,30 +0,0 @@ -