271 lines
10 KiB
PHP
271 lines
10 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\TransactionOnline;
|
|
use App\Advansur;
|
|
use App\Transaction;
|
|
use App\TransaksiKeuntungan;
|
|
use App\Gadai;
|
|
use App\Cawangan;
|
|
use App\GlDetail;
|
|
use Illuminate\Http\Request;
|
|
use Carbon\Carbon;
|
|
|
|
class TransactionOnlineController extends Controller
|
|
{
|
|
public function getTransactionOnline(Request $request){
|
|
$transactionOnline = TransactionOnline::on('mysql7')->where('billplz_id',$request->billplz_id)->first();
|
|
|
|
return response()->json($transactionOnline);
|
|
}
|
|
public function getLatestNosiri(){
|
|
$current = Carbon::now();
|
|
$current = new Carbon();
|
|
|
|
$nosiri = TransactionOnline::on('mysql7')->where('tarikh','=',$current->toDateString())->orderBy('nosiri','desc')->first();
|
|
|
|
return response()->json($nosiri);
|
|
}
|
|
|
|
public function create(Request $request){
|
|
$current = Carbon::now();
|
|
$current = new Carbon();
|
|
|
|
$cawangan = Cawangan::on('mysql7')->where('kodcaw',$request->kodcaw)->first();
|
|
|
|
$sag = Gadai::on($cawangan['mysql'])->where('norujukan',$request->norujukan)->first();
|
|
|
|
$transaction = TransactionOnline::on('mysql7')->create([
|
|
'nokp' => $request->nokp,
|
|
'reference_no' => $request->reference_no,
|
|
'nosiri' => $request->nosiri,
|
|
'billplz_id' => $request->billplz_id,
|
|
'norujukan' => $request->norujukan,
|
|
'kodcaw' => $request->kodcaw,
|
|
'total_payment' => $request->total_payment,
|
|
'tarikh' => $current->toDateString(),
|
|
'masa' => $current->toTimeString(),
|
|
'customer_name' => $request->customer_name,
|
|
'tempohbayar'=>$sag['tempoh']
|
|
]);
|
|
|
|
return response()->json($transaction,201);
|
|
}
|
|
|
|
public function updateStatus(Request $request){
|
|
$transaction = TransactionOnline::on('mysql7')->where('billplz_id','=',$request->billplz_id)->update(array(
|
|
'status' => $request->status,
|
|
'paid_at' => $request->paid_at
|
|
));
|
|
|
|
return response()->json($transaction,200);
|
|
}
|
|
|
|
public function updateTransactionOnline(){
|
|
$transactions = TransactionOnline::on('mysql7')->where([['status','=','PAID'],['update_status',0]])->get();
|
|
$current = Carbon::now();
|
|
$current = new Carbon();
|
|
foreach($transactions as $index=>$transaction){
|
|
$cawangan = Cawangan::on('mysql7')
|
|
->where('kodcaw','=',$transaction['kodcaw'])
|
|
->first();
|
|
$gadai_data = Gadai::on($cawangan['mysql'])->where([['norujukan',$transaction['norujukan']],['nokp',$transaction['nokp']]])->first();
|
|
|
|
if($gadai_data['hargajualan'] > 0){
|
|
$this->updateGadaiMarhunKaunter($transaction['kodcaw'],$transaction['norujukan'],$transaction['total_payment'],$transaction['paid_at'],$transaction['tempohbayar']);
|
|
}else{
|
|
$this->createAdvansur($transaction['kodcaw'],$transaction['norujukan'],$transaction['total_payment'],$transaction['paid_at']);
|
|
}
|
|
|
|
GlDetail::on($cawangan['mysql'])->create([
|
|
'kodcaw' => $transaction['kodcaw'],
|
|
'tarikh' => Carbon::parse($transaction['paid_at'])->format('Y-m-d'),
|
|
'dtacct' => '1000/010',
|
|
'ktacct' => '1000/020',
|
|
'descpt' => 'SERAHAN BAYAR ONLINE - ' . $transaction['norujukan'],
|
|
'serahan' => $transaction['total_payment'],
|
|
'teller' => 'ONLINE'
|
|
]);
|
|
|
|
TransactionOnline::on('mysql7')->where([['norujukan',$transaction['norujukan']],['billplz_id',$transaction['billplz_id']]])->update([
|
|
'update_status' => 1,
|
|
'update_serahan' => 1
|
|
]);
|
|
}
|
|
|
|
return response()->json('success');
|
|
}
|
|
|
|
public function kiraupahTawarruq($kodcaw,$norujukan,$tempohbayar){
|
|
$cawangan = Cawangan::on('mysql7')
|
|
->where('kodcaw','=',$kodcaw)
|
|
->first();
|
|
|
|
$gadai_data = Gadai::on($cawangan['mysql'])
|
|
->where('norujukan','=',$norujukan)
|
|
->first();
|
|
|
|
$bilang_bln = $tempohbayar - $gadai_data['tempohbayar'];
|
|
|
|
$upahsemasa_raw = $bilang_bln * (($gadai_data['kadarupah']/100 )* $gadai_data['pinjaman']);
|
|
|
|
$upah_semasa_round = number_format($upahsemasa_raw,2);
|
|
$upah_semasa = substr($upah_semasa_round, 0, -1);
|
|
if(strpos($upah_semasa,',')){
|
|
$upah_semasa = str_replace(',','',$upah_semasa);
|
|
}
|
|
// $upah_semasa = floatval(preg_replace('/[^\d.]/', '', $upah_semasa));
|
|
return $upah_semasa;
|
|
}
|
|
|
|
public function kiraUpahRebet($kodcaw,$norujukan,$tempohbayar){
|
|
$cawangan = Cawangan::on('mysql7')
|
|
->where('kodcaw','=',$kodcaw)
|
|
->first();
|
|
|
|
$gadai_data = Gadai::on($cawangan['mysql'])
|
|
->where('norujukan','=',$norujukan)
|
|
->first();
|
|
|
|
$bilang_bln = $tempohbayar - $gadai_data['tempohbayar'];
|
|
|
|
$upahrebet_raw = $bilang_bln * (($gadai_data['kadarupah']/100 )* $gadai_data['bakipjm']);
|
|
|
|
$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 updateGadaiMarhunKaunter($kodcaw,$norujukan,$bayaran,$paid_at,$tempohbayar){
|
|
$current = Carbon::now();
|
|
$current = new Carbon();
|
|
|
|
$cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first();
|
|
$gadai = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->first();
|
|
|
|
if($tempohbayar == 0.0){
|
|
$tempohbayar = $gadai['tempoh'];
|
|
}
|
|
|
|
$upahsemasa = $this->kiraupahTawarruq($kodcaw,$norujukan,$tempohbayar);
|
|
$upahrebet = $this->kiraUpahRebet($kodcaw,$norujukan,$tempohbayar);
|
|
|
|
$total_bayaran_prev = Transaction::on('mysql7')->where([['norujukan','=',$norujukan],['trans_type','=','A']])->sum('duit_masuk');
|
|
|
|
$total_bayaran_semasa = $total_bayaran_prev + $bayaran;
|
|
|
|
if($total_bayaran_semasa >= $gadai['bakiupah']){
|
|
$lelong_tawarruq = 0;
|
|
}else{
|
|
$lelong_tawarruq = 1;
|
|
}
|
|
|
|
$baki_hargajualan = $gadai['bakihargajualan'] - $bayaran;
|
|
|
|
$baki_bayaran = $bayaran - $upahsemasa;
|
|
|
|
$baki_pinjaman = $gadai['bakipjm'] - $baki_bayaran;
|
|
|
|
$transaction = Transaction::on('mysql7')->create([
|
|
'trans_type' => 'A',
|
|
'norujukan' => $norujukan,
|
|
'nokp' => $gadai['nokp'],
|
|
'teller' => 'Online',
|
|
'kodcaw' => $kodcaw,
|
|
'duit_masuk' => $bayaran,
|
|
'created_at' => Carbon::parse($paid_at),
|
|
'bakiharga' => $baki_hargajualan,
|
|
]);
|
|
|
|
$transaction_upah = TransaksiKeuntungan::on('mysql7')->create([
|
|
'norujukan' => $norujukan,
|
|
'bayaran_keuntungan' => $upahsemasa,
|
|
'bayaran_pembiayaan' => $baki_bayaran,
|
|
'keuntungan_rebet'=> $upahrebet,
|
|
'tarikh_bayaran'=> Carbon::parse($paid_at),
|
|
'kodcaw'=> $kodcaw
|
|
]);
|
|
|
|
$update_gadai = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(array(
|
|
'bakipjm' => $baki_pinjaman,
|
|
'jbg' => 0,
|
|
't_update' => Carbon::parse($paid_at)->toDateString(),
|
|
'bakihargajualan' => $baki_hargajualan,
|
|
'tempohbayar' => $tempohbayar,
|
|
'lelong_tawarruq' => $lelong_tawarruq
|
|
));
|
|
return response()->json($update_gadai, 200);
|
|
}
|
|
|
|
public function createAdvansur($kodcaw,$norujukan,$bayaran,$paid_at){
|
|
$current = Carbon::now();
|
|
$current = new Carbon();
|
|
|
|
$cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first();
|
|
|
|
$gadai = Gadai::on($cawangan['mysql'])->where('norujukan',$norujukan)->first();
|
|
|
|
$create_advansur = Advansur::on($cawangan['mysql'])->create([
|
|
'tarikh'=> Carbon::parse($paid_at)->toDateString(),
|
|
'noresit'=> 0,
|
|
'norujukan' => $norujukan,
|
|
'nopelanggan' => $gadai['nopelanggan'],
|
|
'nilaimarhun' => $gadai['nilaimarhun'],
|
|
'pinjaman' => $gadai['pinjaman'],
|
|
'kadarupah' => $gadai['kadarupah'],
|
|
'glcode' => "1000/010",
|
|
'upahsebenar' => $bayaran,
|
|
'upahDibayar' => $bayaran,
|
|
'teller' => 'Online',
|
|
'prkod' => $gadai['prkod'],
|
|
'jbg' => $gadai['tempoh'],
|
|
'nowakil' => 0,
|
|
'hubungan' => 0,
|
|
'status' => 0,
|
|
'historygadaian' => $norujukan
|
|
]);
|
|
|
|
return response()->json($create_advansur ,201);
|
|
}
|
|
|
|
public function getTransactionOnlineLogin(Request $request){
|
|
$transactionOnline = TransactionOnline::on('mysql7')->where('billplz_id',$request->billplz_id)->get();
|
|
|
|
return response()->json($transactionOnline);
|
|
}
|
|
|
|
public function searchSAGOnline(Request $request){
|
|
|
|
$current = Carbon::now();
|
|
$current = new Carbon();
|
|
|
|
$transaction_online = TransactionOnline::on('mysql7')->where([['norujukan',$request->norujukan],['status','PAID'],['update_status',0],['tarikh',$current->toDateString()]])->first();
|
|
if($transaction_online){
|
|
return response()->json(true);
|
|
}else{
|
|
return response()->json(false);
|
|
}
|
|
}
|
|
|
|
public function getListUnsuccessful(){
|
|
$list = TransactionOnline::on('mysql7')->whereIn('status',['NOT PAID','UNSUCCESSFUL'])->get();
|
|
|
|
return response()->json($list);
|
|
}
|
|
|
|
public function updateUnsuccessfulTransaction(Request $request){
|
|
$transaction = TransactionOnline::on('mysql7')->where('billplz_id','=',$request->billplz_id)->update(array(
|
|
'status' => $request->status,
|
|
'paid_at' => $request->paid_at
|
|
));
|
|
|
|
return response()->json($transaction,200);
|
|
}
|
|
}
|