From 72a8d3228c1926acb2bed3761e288026be5370a6 Mon Sep 17 00:00:00 2001 From: Hafifie PKB Date: Tue, 12 Nov 2024 13:50:07 +0800 Subject: [PATCH] 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