Files
api_arrahn/app/Support/v2/Penebusan.php
T

916 lines
35 KiB
PHP

<?php
namespace App\Support\v2;
use App\Advansur;
use App\Audit;
use App\Cawangan;
use App\KadarUpah;
use App\Support\v2\Calculation;
use Carbon\Carbon;
use App\Gadai;
use App\InOutMar;
use App\Marhun;
use App\Moratorium;
use App\Support\OnePercent;
use App\Tebus;
use App\Transaction;
use App\TransaksiKeuntungan;
use Illuminate\Http\Request as HttpRequest;
use App\Support\v2\GadaiV2 as Version2Gadai;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
use PDO;
class Penebusan
{
protected $kodcaw;
protected $cawangan_info;
public function __construct(String $kodcaw,Object $cawangan_info){
$this->kodcaw = $kodcaw;
$this->cawangan_info = $cawangan_info;
}
public function tebusTawarruq($kodcaw,$norujukan){
$onepercentservices = new Calculation();
$cawangan = Cawangan::on('mysql7')
->where('kodcaw','=',$kodcaw)
->first();
$gadai_data = Gadai::on($cawangan['mysql'])
->where('norujukan','=',$norujukan)
->first();
$jeniskeuntungan = ($gadai_data['tagbaru'] == 1) ? 'onepercent' : 'asal';
$rebet = $this->rebetselepastawarruq($kodcaw,$norujukan,$jeniskeuntungan);
$harga_tebus = $gadai_data['bakihargajualan'] - $rebet;
// $hargatebus = round($harga_tebus,PHP_ROUND_HALF_UP);
// $hargatebus = bcdiv(round($harga_tebus,2),1,1);
// $hargatebus = number_format($hargatebus,2);
// if(strpos($hargatebus,',')){
// $hargatebus = str_replace(',','',$hargatebus);
// }
$hargatebus = $onepercentservices->getRoundedMethod($harga_tebus);
return response()->json($hargatebus);
}
public function hargaTebusTawarruq($kodcaw,$norujukan){
$onepercentservices = new Calculation();
$cawangan = Cawangan::on('mysql7')
->where('kodcaw','=',$kodcaw)
->first();
$gadai_data = Gadai::on($cawangan['mysql'])
->where('norujukan','=',$norujukan)
->first();
$rebet = $this->rebetselepastawarruq($kodcaw,$norujukan);
$harga_tebus = $gadai_data['bakihargajualan'] - $rebet;
// $hargatebus = round($harga_tebus,PHP_ROUND_HALF_UP);
// $hargatebus = bcdiv(round($harga_tebus,2),1,1);
// $hargatebus = number_format($hargatebus,2);
// if(strpos($hargatebus,',')){
// $hargatebus = str_replace(',','',$hargatebus);
// }
$hargatebus = $onepercentservices->getRoundedMethod($harga_tebus);
$arrayharga = ['harga' => $hargatebus];
return $arrayharga;
}
public function kiraUpahRebetSebenar($kodcaw,$norujukan){
$cawangan = Cawangan::on('mysql7')
->where('kodcaw','=',$kodcaw)
->first();
$gadai_data = Gadai::on($cawangan['mysql'])
->where('norujukan','=',$norujukan)
->first();
if($gadai_data['tempoh'] >= 12.0){
$tempoh = 12;
}else{
$tempoh = $gadai_data['tempoh'];
}
$bilang_bln = $gadai_data['tempoh'] - $gadai_data['tempohbayar'];
$upahrebet_raw = $bilang_bln * (($gadai_data['kadarupah']/100 )* $gadai_data['bakipjm']);
// $upah_rebet = round($upahrebet_raw,PHP_ROUND_HALF_UP);
$upah_rebet_round = number_format($upahrebet_raw,2);
if(strpos($upah_rebet_round,',')){
$upah_rebet_round = str_replace(',','',$upah_rebet_round);
}
$upah_rebet = substr($upah_rebet_round, 0, -1);
if(strpos($upah_rebet,',')){
$upah_rebet = str_replace(',','',$upah_rebet);
}
$total_untung_rebet = TransaksiKeuntungan::on('mysql7')->where('norujukan','=',$norujukan)->sum('keuntungan_rebet');
$total_untung_asal = TransaksiKeuntungan::on('mysql7')->where('norujukan','=',$norujukan)->sum('bayaran_keuntungan');
$beza_keuntungan = $total_untung_asal - $total_untung_rebet;
$keuntungan_rebet_sebenar = $upah_rebet - $beza_keuntungan;
return $keuntungan_rebet_sebenar;
}
public function upahTawarruq($kodcaw,$norujukan,$jeniskeuntungan){
$onepercentservices = new Calculation();
$cawangan = $this->cawangan_info;
$gadai_data = Gadai::on($cawangan['mysql'])
->where('norujukan','=',$norujukan)
->first();
if($gadai_data['tempoh'] >= 12.0){
$tempoh = 12;
}else{
$tempoh = $gadai_data['tempoh'];
}
$bilang_bln = $tempoh - $gadai_data['tempohbayar'];
$upah = $onepercentservices->kiraanKeuntunganSebenar($gadai_data['pinjaman'],$gadai_data['nilaimarhun'],$gadai_data['kadarupah'],$gadai_data['percentpinj']);
$keuntungan_semasa = $onepercentservices->getRoundedMethod($bilang_bln * $upah['onepercent']);
$ujrah_semasa = $onepercentservices->getRoundedMethod($bilang_bln * $upah['ujrah']);
$upahsemasa_raw = $keuntungan_semasa + $ujrah_semasa;
$upahsemasa_raw = $onepercentservices->getRoundedMethod($upahsemasa_raw);
$keuntungan_1bln = $onepercentservices->getRoundedMethod((1 * $upah['onepercent'])+(1 * $upah['ujrah']));
$array_upah =
[
'keuntungan_1bln' => $keuntungan_1bln,
'pendapatan' => $upahsemasa_raw,
'keuntungan' => $keuntungan_semasa,
'ujrah' => $ujrah_semasa
];
return $array_upah;
}
public function upahRebetTawarruq($kodcaw,$norujukan,$jeniskeuntungan){
$onepercentservices = new Calculation();
$cawangan = Cawangan::on('mysql7')
->where('kodcaw','=',$this->kodcaw)
->first();
$gadai_data = Gadai::on($cawangan['mysql'])
->where('norujukan','=',$norujukan)
->first();
if($gadai_data['tempoh'] >= 12.0){
$tempoh = 12;
}else{
$tempoh = $gadai_data['tempoh'];
}
$bilang_bln = $tempoh - $gadai_data['tempohbayar'];
$upah = $onepercentservices->kiraanKeuntunganRebet($gadai_data['bakipjm'],$gadai_data['nilaimarhun'],$gadai_data['kadarupah'],$gadai_data['margin_semasa']);
$upahrebet_raw = $onepercentservices->getRoundedMethod($bilang_bln * $upah['keuntungan']);
$upahujrah_raw = $onepercentservices->getRoundedMethod($bilang_bln * $upah['ujrah']);
$upahonepercent_raw = $onepercentservices->getRoundedMethod($bilang_bln * $upah['onepercent']);
$array_upah =
[
'pendapatan' => $upahrebet_raw,
'keuntungan' => $upahonepercent_raw,
'ujrah' => $upahujrah_raw
];
return $array_upah;
}
public function kiraupahTawarruq($norujukan){
$onepercentservices = new Calculation();
$cawangan = $this->cawangan_info;
$gadai_data = Gadai::on($cawangan['mysql'])
->where('norujukan','=',$norujukan)
->first();
if($gadai_data['tempoh'] >= 12.0){
$tempoh = 12;
}else{
$tempoh = $gadai_data['tempoh'];
}
$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);
return $upahsemasa_raw;
}
public function tebusSeparuhTawarruq($kodcaw,$norujukan,HttpRequest $request){
$onepercentservices = new Calculation();
$cawangan = Cawangan::on('mysql7')
->where('kodcaw','=',$kodcaw)
->first();
$gadai_data = Gadai::on($cawangan['mysql'])
->where('norujukan','=',$norujukan)
->first();
$upahsemasa = $this->upahRebetTawarruq($kodcaw,$norujukan,$request->jeniskeuntungan);
$array_recno_marhun = $request->array_recno;
$margin_pembiayaan = round(($gadai_data['bakipjm']/$gadai_data['nilaimarhun'])*100,2);
// $margin_pembiayaan = round(($gadai_data['bakipjm']/$request->hargasemasa)*100,2);
$total_harga_tebus = 0;
foreach($array_recno_marhun as $recno){
$marhun = Marhun::on($cawangan['mysql'])->where([['recno','=',$recno],['norujukan','=',$norujukan]])->first();
$harga_tebus = ($margin_pembiayaan/100)*$marhun['n_marhun'];
$total_harga_tebus += $harga_tebus;
}
// $total_harga_tebus = $onepercentservices->getRoundedMethod($total_harga_tebus);
// $totalhargatebus = $total_harga_tebus + $upahsemasa['keuntungan'];
$total_harga_tebus_round = round($total_harga_tebus,2);
$totalhargatebus = substr($total_harga_tebus_round, 0, -1);
return response()->json($totalhargatebus);
}
public function tebusNotTawarruq($kodcaw,$norujukan){
$cawangan = Cawangan::on('mysql7')
->where('kodcaw','=',$kodcaw)
->first();
$gadai_data = Gadai::on($cawangan['mysql'])
->where('norujukan','=',$norujukan)
->first();
$upah_semasa = $this->kiraUpahNotTawarruq($kodcaw,$norujukan);
$harga_tebus = $upah_semasa + $gadai_data['pinjaman'];
return response()->json($harga_tebus);
}
public function hargaTebusNotTawarruq($kodcaw,$norujukan){
$cawangan = Cawangan::on('mysql7')
->where('kodcaw','=',$kodcaw)
->first();
$gadai_data = Gadai::on($cawangan['mysql'])
->where('norujukan','=',$norujukan)
->first();
$upah_semasa = $this->kiraUpahNotTawarruq($kodcaw,$norujukan);
$harga_tebus = $upah_semasa + $gadai_data['pinjaman'];
return $harga_tebus;
}
public function kiraUpahNotTawarruq($kodcaw,$norujukan){
$cawangan = Cawangan::on('mysql7')
->where('kodcaw','=',$kodcaw)
->first();
$gadai_data = Gadai::on($cawangan['mysql'])
->where('norujukan','=',$norujukan)
->first();
$upahtelahbayar = Advansur::on($cawangan['mysql'])
->where('norujukan','=',$norujukan)
->sum('upahdibayar');
$upah_asal = $gadai_data['nilaimarhun'] / 100 * $gadai_data['kadarupah'];
$margin_pinjaman = $gadai_data['pinjaman'] / $gadai_data['nilaimarhun'] * 100;
$margin_kadarupah = 80;
$rebet = ($margin_kadarupah-$margin_pinjaman)/$margin_kadarupah * $upah_asal;
$bln_mora = Moratorium::first();
$upah_sebenar = $upah_asal - $rebet;
$bln_upah = $gadai_data['tempoh'];
if($bln_upah > $bln_mora['bln_mora']){
$bln_upah = $bln_mora['bln_mora'];
}
$upahsemasa = $upah_sebenar * $bln_upah;
$upah_semasa = bcdiv(round($upahsemasa,2),1,1);
$upah_semasa = number_format($upah_semasa,2);
if(strpos($upah_semasa,',')){
$upah_semasa = str_replace(',','',$upah_semasa);
}
$upah_semasa = (float)$upah_semasa - $upahtelahbayar;
if($upah_semasa <= 0){
$upah_semasa = 0;
}
return $upah_semasa;
}
public function upahNotTawarruq($kodcaw,$norujukan){
$cawangan = Cawangan::on('mysql7')
->where('kodcaw','=',$kodcaw)
->first();
$gadai_data = Gadai::on($cawangan['mysql'])
->where('norujukan','=',$norujukan)
->first();
$upahtelahbayar = Advansur::on($cawangan['mysql'])
->where('norujukan','=',$norujukan)
->sum('upahdibayar');
$upah_asal = $gadai_data['nilaimarhun'] / 100 * $gadai_data['kadarupah'];
$margin_pinjaman = $gadai_data['pinjaman'] / $gadai_data['nilaimarhun'] * 100;
$margin_kadarupah = 80;
$rebet = ($margin_kadarupah-$margin_pinjaman)/$margin_kadarupah * $upah_asal;
$bln_mora = Moratorium::first();
$upah_sebenar = $upah_asal - $rebet;
$bln_upah = $gadai_data['tempoh'];
if($bln_upah > $bln_mora['bln_mora']){
$bln_upah = $bln_mora['bln_mora'];
}
$upahsemasa = $upah_sebenar * $bln_upah;
$upah_semasa = bcdiv(round($upahsemasa,2),1,1);
$upah_semasa = number_format($upah_semasa,2);
if(strpos($upah_semasa,',')){
$upah_semasa = str_replace(',','',$upah_semasa);
}
$upah_semasa = (float)$upah_semasa - $upahtelahbayar;
if($upah_semasa <= 0){
$upah_semasa = 0;
}
return response()->json($upah_semasa);
}
public function tebusSeparuhNotTawarruq($kodcaw,$norujukan,HttpRequest $request){
$cawangan = Cawangan::on('mysql7')
->where('kodcaw','=',$kodcaw)
->first();
$gadai_data = Gadai::on($cawangan['mysql'])
->where('norujukan','=',$norujukan)
->first();
$upah_asal = $gadai_data['nilaimarhun'] / 100 * $gadai_data['kadarupah'];
$margin_pinjaman = $gadai_data['pinjaman'] / $gadai_data['nilaimarhun'] * 100;
$margin_kadarupah = 80;
$rebet = ($margin_kadarupah-$margin_pinjaman)/$margin_kadarupah * $upah_asal;
$upah_sebenar = $upah_asal - $rebet;
$upah_semasa = bcdiv(round($upah_sebenar * $gadai_data['jbg'],2),1,1);
$upah_semasa = (float)number_format($upah_semasa,2);
$array_recno_marhun = $request->array_recno;
$margin_pembiayaan = round(($gadai_data['pinjaman']/$gadai_data['nilaimarhun'])*100,2);
$nilai_marhun = $gadai_data['nilaimarhun'];
$total_harga_tebus = 0;
foreach($array_recno_marhun as $recno){
$marhun = Marhun::on($cawangan['mysql'])->where([['recno','=',$recno],['norujukan','=',$norujukan]])->first();
$harga_tebus = ($margin_pembiayaan/100)*$marhun['n_marhun'];
$total_harga_tebus += $harga_tebus;
}
// $total_harga_tebus += $upah_semasa;
return response()->json($total_harga_tebus);
}
function rebet($kodcaw,$norujukan){
$cawangan = Cawangan::on('mysql7')
->where('kodcaw','=',$kodcaw)
->first();
$gadai_data = Gadai::on($cawangan['mysql'])
->where('norujukan','=',$norujukan)
->first();
$upah_asal = $gadai_data['nilaimarhun'] / 100 * $gadai_data['kadarupah'];
$margin_pinjaman = $gadai_data['pinjaman'] / $gadai_data['nilaimarhun'] * 100;
$margin_kadarupah = 80;
$rebet = ($margin_kadarupah-$margin_pinjaman)/$margin_kadarupah * $upah_asal;
return floatval(number_format($rebet,2));
}
function rebetselepastawarruq($kodcaw,$norujukan){
$cawangan = Cawangan::on('mysql7')
->where('kodcaw','=',$kodcaw)
->first();
$gadai_data = Gadai::on($cawangan['mysql'])
->where('norujukan','=',$norujukan)
->first();
$transaction_keuntungan = TransaksiKeuntungan::on('mysql7')
->where('norujukan','=',$norujukan)
->sum('keuntungan_rebet');
$upah_rebet = $this->kiraUpahRebet($kodcaw,$norujukan);
$rebet_raw =$gadai_data['upah12'] - $transaction_keuntungan - $upah_rebet;
return $rebet_raw;
}
public function kiraupahRebet($kodcaw,$norujukan){
$onepercentservices = new Calculation();
$cawangan = Cawangan::on('mysql7')
->where('kodcaw','=',$this->kodcaw)
->first();
$gadai_data = Gadai::on($cawangan['mysql'])
->where('norujukan','=',$norujukan)
->first();
if($gadai_data['tempoh'] >= 12.0){
$tempoh = 12;
}else{
$tempoh = $gadai_data['tempoh'];
}
$bilang_bln = $tempoh - $gadai_data['tempohbayar'];
$upah = $onepercentservices->kiraanKeuntunganRebet($gadai_data['bakipjm'],$gadai_data['nilaimarhun'],$gadai_data['kadarupah'],$gadai_data['margin_semasa']);
$ujrah = $onepercentservices->getRoundedMethod($bilang_bln * $upah['ujrah']);
$onepercent = $onepercentservices->getRoundedMethod($bilang_bln * $upah['onepercent']);
$keuntungan = $ujrah + $onepercent;
$upahrebet_raw = $onepercentservices->getRoundedMethod($keuntungan);
return $upahrebet_raw;
}
public function tebusUpdate($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,$request->jeniskeuntungan);
}
else if($request->jenisbayarantebus == "nottawarruq")
{
$rebet = $this->rebet($kodcaw,$norujukan);
}
else{
$rebet = 0;
}
$gadai = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->first();
$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);
$margin_semasa = ($gadai['bakipjm']/$gadai['nilaimarhun']) * 100;
$ujrah = $array_onepercent['ujrah'];
$onepercent = $array_onepercent['onepercent'];
}
}
$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,
'onepercent' => $onepercent,
]);
$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
]);
$transaction_upah = TransaksiKeuntungan::on('mysql7')->create([
'norujukan' => $norujukan,
'bayaran_keuntungan' => $upah_tebus,
'bayaran_pembiayaan' => $gadai['bakipjm'],
'keuntungan_rebet' => $upah_rebet_sebenar,
'tarikh_bayaran'=> $current,
'kodcaw'=> $kodcaw,
'ujrah' => ($request->jeniskeuntungan == 'onepercent') ? $array_onepercent['ujrah'] : 0,
'ujrah_rebet' => ($request->jeniskeuntungan == 'onepercent') ? $array_onepercent_rebet['ujrah'] : 0,
'onepercent' => ($request->jeniskeuntungan == 'onepercent') ? $array_onepercent['onepercent'] : 0,
'onepercent_rebet' => ($request->jeniskeuntungan == 'onepercent') ? $array_onepercent_rebet['onepercent'] : 0,
'margin_semasa' => ($request->jeniskeuntungan == 'onepercent') ? $margin_semasa : 0,
'tempoh' => $gadai['tempoh'],
'beza_tempoh' => ($gadai['tempoh'] - $gadai['tempohbayar']),
]);
if($request->jenistebus == 'P'){
$baki_hargajualan = $gadai['bakihargajualan'] - $request->bakiupah;
$transaction = Transaction::on('mysql7')->create([
'trans_type' => $request->jenistebus,
'norujukan' => $norujukan,
'nokp' => $gadai['nokp'],
'teller' => $request->teller,
'kodcaw' => $kodcaw,
'duit_masuk' => $request->bakiupah,
'created_at' => $current,
'bakiharga' => $baki_hargajualan,
'nowakil' => (int)$request->nowakil,
'duitpelanggan' => isset($request->duitpelanggan) ? $request->duitpelanggan : 0,
'bakipelanggan' => $request->bakipelanggan
]);
}else{
$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' => $harga_tebus['harga'],
'created_at' => $current,
'bakiharga' => $baki_hargajualan,
'nowakil' => (int)$request->nowakil,
'duitpelanggan' => isset($request->duitpelanggan) ? $request->duitpelanggan : 0,
'bakipelanggan' => $request->bakipelanggan
]);
}
$update_gadai = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(array(
'sttebus' => "T",
't_update' => $current->toDateString(),
));
$audit = new Audit();
$audit->users = $request->teller;
if($request->jenistebus == 'P'){
$audit->actions = "Tambah Pembiayaan";
}else if($request->jenistebus == 'S'){
$audit->actions = "Tebus Separuh";
}else if($request->jenistebus == 'T'){
$audit->actions = "Tebus Penuh";
}
$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);
}
public function tebusUpdateAutoTawarruq($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();
$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);
$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,
'onepercent' => $onepercent,
]);
$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' => $gadai['bakipjm'],
'keuntungan_rebet' => $upah_rebet_sebenar,
'tarikh_bayaran'=> $current,
'kodcaw'=> $kodcaw,
'ujrah' => ($request->jeniskeuntungan == 'onepercent') ? $array_onepercent['ujrah'] : 0,
'ujrah_rebet' => ($request->jeniskeuntungan == 'onepercent') ? $array_onepercent_rebet['ujrah'] : 0,
'onepercent' => ($request->jeniskeuntungan == 'onepercent') ? $array_onepercent['onepercent'] : 0,
'onepercent_rebet' => ($request->jeniskeuntungan == 'onepercent') ? $array_onepercent_rebet['onepercent'] : 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' => $harga_tebus['harga'],
'created_at' => $current,
'bakiharga' => $baki_hargajualan,
'nowakil' => (int)$request->nowakil,
'duitpelanggan' => isset($request->duitpelanggan) ? $request->duitpelanggan : 0,
'bakipelanggan' => $request->bakipelanggan
]);
$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);
}
public function kiraupahUjrahOnePercent($kodcaw,$norujukan){
$onepercentservices = new Calculation();
$cawangan = $this->cawangan_info;
$gadai_data = Gadai::on($cawangan['mysql'])
->where('norujukan','=',$norujukan)
->first();
if($gadai_data['tempoh'] >= 12.0){
$tempoh = 12;
}else{
$tempoh = $gadai_data['tempoh'];
}
$bilang_bln = $tempoh - $gadai_data['tempohbayar'];
$array_upah = $onepercentservices->kiraanKeuntunganSebenar($gadai_data['pinjaman'],$gadai_data['nilaimarhun'],$gadai_data['kadarupah'],$gadai_data['percentpinj']);
$onepercent = $onepercentservices->getRoundedMethod($array_upah['onepercent']);
$ujrah = $onepercentservices->getRoundedMethod($array_upah['ujrah']);
$onepercent_semasa = $bilang_bln * $onepercent;
$ujrah_semasa = $bilang_bln * $ujrah;
$onepercent_semasa = $onepercentservices->getRoundedMethod($onepercent_semasa);
$ujrah_semasa = $onepercentservices->getRoundedMethod($ujrah_semasa);
return ['ujrah' => $ujrah_semasa, 'onepercent' => $onepercent_semasa];
}
public function kiraupahUjrahOnePercentRebate($kodcaw,$norujukan){
$onepercentservices = new Calculation();
$cawangan = $this->cawangan_info;
$gadai_data = Gadai::on($cawangan['mysql'])
->where('norujukan','=',$norujukan)
->first();
if($gadai_data['tempoh'] >= 12.0){
$tempoh = 12;
}else{
$tempoh = $gadai_data['tempoh'];
}
$bilang_bln = $tempoh - $gadai_data['tempohbayar'];
$array_upah = $onepercentservices->kiraanKeuntunganRebet($gadai_data['bakipjm'],$gadai_data['nilaimarhun'],$gadai_data['kadarupah'],$gadai_data['margin_semasa']);
// $ujrah_rounded = $onepercentservices->getRoundedMethod($array_upah['ujrah']);
// $keuntungan_rounded = $onepercentservices->getRoundedMethod($array_upah['onepercent']);
$ujrah = $bilang_bln * $array_upah['ujrah'];
$onepercent = $bilang_bln * $array_upah['onepercent'];
$ujrah = $onepercentservices->getRoundedMethod($ujrah);
$onepercent = $onepercentservices->getRoundedMethod($onepercent);
return ['ujrah' => $ujrah, 'onepercent' => $onepercent];
}
public function kiraupahTawarruqByTarikh($kodcaw,$norujukan,$tarikh){
$onepercentservices = new Calculation();
$cawangan = $this->cawangan_info;
$gadai_data = Gadai::on($cawangan['mysql'])
->where('norujukan','=',$norujukan)
->first();
$transaction_keuntungan = TransaksiKeuntungan::on('mysql7')
->where('norujukan','=',$norujukan)
->sum('keuntungan_rebet');
$tempoh_func = $this->kiraanTarikhJBG($gadai_data['t_gadai'],$tarikh);
if($tempoh_func >= 12.0){
$tempoh = 12;
}else{
$tempoh = $tempoh_func;
}
$bilang_bln = $tempoh - $gadai_data['tempohbayar'];
/* Keuntungan Sebenar */
$upah = $onepercentservices->kiraanKeuntunganSebenar($gadai_data['pinjaman'],$gadai_data['nilaimarhun'],$gadai_data['kadarupah'],$gadai_data['margin_semasa']);
$keuntungan_semasa = $onepercentservices->getRoundedMethod($bilang_bln * $upah['onepercent']);
$ujrah_semasa = $onepercentservices->getRoundedMethod($bilang_bln * $upah['ujrah']);
$upahsemasa_raw = $keuntungan_semasa + $ujrah_semasa;
$upahsemasa_raw = $onepercentservices->getRoundedMethod($upahsemasa_raw);
$keuntungan_1bln = $onepercentservices->getRoundedMethod((1 * $upah['onepercent'])+(1 * $upah['ujrah']));
/* Keuntungan Rebet */
$upah_rebet_kira = $onepercentservices->kiraanKeuntunganRebet($gadai_data['bakipjm'],$gadai_data['nilaimarhun'],$gadai_data['kadarupah'],$gadai_data['margin_semasa']);
$ujrah = $onepercentservices->getRoundedMethod($bilang_bln * $upah_rebet_kira['ujrah']);
$onepercent = $onepercentservices->getRoundedMethod($bilang_bln * $upah_rebet_kira['onepercent']);
$keuntungan = $ujrah + $onepercent;
$upahrebet_raw = $onepercentservices->getRoundedMethod($keuntungan);
$rebet_raw =$gadai_data['upah12'] - $transaction_keuntungan - $upahrebet_raw;
$harga_tebus = $gadai_data['bakihargajualan'] - $rebet_raw;
$array_return = [
'keuntungan_1bln' => $keuntungan_1bln,
'pendapatan' => $upahsemasa_raw,
'keuntungan' => $keuntungan_semasa,
'ujrah' => $ujrah_semasa,
'keuntungan_rebet' => $onepercent,
'ujrah_rebet' => $ujrah,
'tempoh' => $tempoh,
'harga_tebus' => $harga_tebus,
];
return $array_return;
}
private function kiraanTarikhJBG($tarikhgadai,$tarikh){
$tarikh_gadai = Carbon::parse($tarikhgadai. ' 00:00:00');
$tarikh = new Carbon($tarikh);
$tahun_gadai = $tarikh_gadai->year;
$bulan_gadai = $tarikh_gadai->month;
$hari_gadai = $tarikh_gadai->day;
$tahun_semasa = $tarikh->year;
$bulan_semasa = $tarikh->month;
$hari_semasa = $tarikh->day;
if($hari_semasa >= $hari_gadai){
$beza_hari = $hari_semasa - $hari_gadai + 1;
}else if($hari_semasa < $hari_gadai){
$bulan_semasa = $bulan_semasa - 1;
$beza_hari = ($hari_semasa + 30) - $hari_gadai + 1;
}
$extensivemonth_gadai = 0;
if($beza_hari >= 1 && $beza_hari <= 15){
$extensivemonth_gadai = 0.5;
}else if($beza_hari >= 16){
$extensivemonth_gadai = 1;
}else{
$extensivemonth_gadai = 0;
}
$beza_tahun = $tahun_semasa - $tahun_gadai;
$beza_bulan = ($bulan_semasa + ($beza_tahun * 12)) - $bulan_gadai;
$tempoh_gadai = $beza_bulan + $extensivemonth_gadai;
return $tempoh_gadai;
}
}