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']);