Files
api_arrahn/app/Support/v1/GadaiV1.php
T

272 lines
9.2 KiB
PHP

<?php
namespace App\Support\v1;
use App\Audit;
use App\Cawangan;
use App\Gadai;
use App\KadarUpah;
use App\Marhun;
use App\Support\v1\Calculation;
use App\Transaction;
use App\TransaksiKeuntungan;
use Carbon\Carbon;
use Illuminate\Http\Request as HttpRequest;
use Illuminate\Support\Facades\DB;
class GadaiV1
{
protected $kodcaw;
protected $cawangan_info;
public function __construct(String $kodcaw,Object $cawangan_info){
$this->kodcaw = $kodcaw;
$this->cawangan_info = $cawangan_info;
}
public function create(HttpRequest $request){
$current = Carbon::now();
$current = new Carbon();
$kodcaw = $this->kodcaw;
$cawangan = $this->cawangan_info;
try{
DB::transaction(function () use ($cawangan, $kodcaw, $request, $current) {
$gadai = Gadai::on($cawangan['mysql'])->create([
'kodcaw'=>$kodcaw,
'norujukan' => $request->norujukan,
'nopelanggan' => $request->nopelanggan,
'nokp' => $request->nokp,
'sirig' => $request->sirig,
't_gadai' => $current->toDateString(),
'sttebus' => '',
'masa' =>$current->toTimeString()
]);
return response()->json($gadai, 201);
});
}catch(\Exception $e){
echo "Gadaian Gagal: " . $e->getMessage();
}
}
public function createMarhun($norujukan,HttpRequest $request){
$current = Carbon::now();
$current = new Carbon();
$t_matang = Carbon::now();
$t_matang = new Carbon();
$t_matang = $t_matang->addMonths(6)->subDays(1);
$t_kontrak = Carbon::now();
$t_kontrak = new Carbon();
$t_kontrak = $t_kontrak->addMonths(12)->subDays(1);
$margin_pinjam = $request->percentpinj *100;
$cawangan = Cawangan::on('mysql7')
->where('kodcaw','=',$request->kodcaw)
->first();
if($request->transaction == 'Ubah Gadai'){
$old_data = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->first();
}
$bil_marhun = Marhun::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->count();
$total_nilai_marhun = Marhun::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->sum('n_marhun');
$total_berat = Marhun::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->sum('berat');
$kadar_raw = KadarUpah::where('min','<=',$total_nilai_marhun)->where('max','>=',$total_nilai_marhun)->first();
$tawarruqservices = new Calculation();
$upahcalculation = $tawarruqservices->kiraanTawarruq($request->pinjaman,$kadar_raw['kadarupdah']);
$upah1 = $upahcalculation;
$upah6 = $upah1 * 6;
$upah12 = $upah1 * 12;
$hargajualan = $request->pinjaman + $upah12;
$gadai = Gadai::on($cawangan['mysql'])
->where('norujukan','=',$norujukan)
->update(array(
'nilaimarhun' => $total_nilai_marhun,
'berat'=> $total_berat,
'pinjaman' => $request->pinjaman,
'kadarupah' => $kadar_raw['kadarupdah'],
'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
));
$new_data = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->first();
$audit = new Audit();
$audit->users = $request->teller;
$audit->actions = $request->transaction;
$audit->norujukan = $norujukan;
$audit->new_data = $new_data;
if($request->transaction == 'Ubah Gadai'){
$audit->old_data = $old_data;
}
$audit->kodcaw = $request->kodcaw;
$audit->created_at = $current;
$audit->updated_at = $current;
$audit->save();
return response()->json($gadai, 200);
}
public function kiraupahTawarruq($norujukan){
$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'];
$tawarruqservices = new Calculation();
$keuntungan = $tawarruqservices->kiraanTawarruq($gadai_data['pinjaman'],$gadai_data['kadarupah']);
$upahsemasa_raw = $bilang_bln * $keuntungan;
$upah_semasa_round = number_format($upahsemasa_raw,2);
$upah_semasa = substr($upah_semasa_round, 0, -1);
// $upah_semasa = floatval(preg_replace('/[^\d.]/', '', $upah_semasa));
if(strpos($upah_semasa,',')){
$upah_semasa = str_replace(',','',$upah_semasa);
}
return $upah_semasa;
}
public function kiraUpahRebet($norujukan){
$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'];
$tawarruqservices = new Calculation();
$keuntungan = $tawarruqservices->kiraanTawarruq($gadai_data['pinjaman'],$gadai_data['kadarupah']);
$upahrebet_raw = $bilang_bln * $keuntungan;
$upah_rebet_round = number_format($upahrebet_raw,2);
$upah_rebet = substr($upah_rebet_round, 0, -1);
if(strpos($upah_rebet,',')){
$upah_rebet = str_replace(',','',$upah_rebet);
}
// $upah_rebet = floatval(preg_replace('/[^\d.]/', '', $upah_rebet));
return $upah_rebet;
}
public function updateAnsuranKaunter($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();
$upahsemasa = $this->kiraupahTawarruq($norujukan);
$upahrebet = $this->kiraUpahRebet($norujukan);
$total_bayaran_prev = Transaction::on('mysql7')->where([['norujukan','=',$norujukan],['trans_type','=','A']])->sum('duit_masuk');
$total_bayaran_semasa = $total_bayaran_prev + $request->bayaran;
if($total_bayaran_semasa >= $gadai['bakiupah']){
$lelong_tawarruq = 0;
}else{
$lelong_tawarruq = 1;
}
$old_data = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->first();
$baki_hargajualan = $gadai['bakihargajualan'] - $request->bayaran;
$baki_bayaran = $request->bayaran - $upahsemasa;
$baki_pinjaman = $gadai['bakipjm'] - $baki_bayaran;
$transaction = Transaction::on('mysql7')->create([
'trans_type' => 'A',
'norujukan' => $norujukan,
'nokp' => $gadai['nokp'],
'teller' => $request->teller,
'kodcaw' => $kodcaw,
'duit_masuk' => $request->bayaran,
'created_at' => $current,
'bakiharga' => $baki_hargajualan,
'nowakil' => (int)$request->nowakil
]);
$transaction_upah = TransaksiKeuntungan::on('mysql7')->create([
'norujukan' => $norujukan,
'bayaran_keuntungan' => $upahsemasa,
'bayaran_pembiayaan' => $baki_bayaran,
'keuntungan_rebet'=> $upahrebet,
'tarikh_bayaran'=> $current,
'kodcaw'=> $kodcaw
]);
$update_gadai = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(array(
'bakipjm' => $baki_pinjaman,
'jbg' => 0,
't_update' => $current->toDateString(),
'bakihargajualan' => $baki_hargajualan,
'tempohbayar' => $gadai['tempoh'],
'lelong_tawarruq' => $lelong_tawarruq
));
$new_data = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->first();
$audit = new Audit();
$audit->users = $request->teller;
$audit->actions = 'Bayaran Ansuran';
$audit->norujukan = $norujukan;
$audit->new_data = $new_data;
$audit->old_data = $old_data;
$audit->kodcaw = $kodcaw;
$audit->created_at = $current;
$audit->updated_at = $current;
$audit->save();
return response()->json($update_gadai, 200);
}
}