separation of tawarruq and onepercent

This commit is contained in:
Hafifie PKB
2023-12-10 00:05:30 +08:00
parent 88329b3298
commit 2a8e972b34
18 changed files with 2701 additions and 1022 deletions
@@ -3635,6 +3635,8 @@ class AdminPageController extends Controller
if($kodcaw == '011229')
$total -= 45390.37;
if($kodcaw == 'KB2')
$total -= 1378.5;
return response()->json($total,200);
}
+23 -307
View File
@@ -32,7 +32,8 @@ use App\InOutMar;
use Illuminate\Http\Request;
use App\Services\OnePercentServices;
use App\Services\MasterServices;
use App\Support\OnePercent;
use Log;
use Illuminate\Support\Facades\DB;
@@ -130,33 +131,11 @@ class GadaiController extends Controller
}
public function create($kodcaw,Request $request){
$current = Carbon::now();
$current = new Carbon();
$cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first();
$master = new MasterServices($kodcaw);
$response = $master->createGadai($request);
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(),
'tagbaru' => 1
]);
return response()->json($gadai, 201);
});
}catch(\Exception $e){
echo "Gadaian Gagal: " . $e->getMessage();
}
return $response;
}
public function createold($kodcaw,Request $request){
@@ -224,100 +203,10 @@ class GadaiController extends Controller
public function daftarGadaiMarhun($norujukan,Request $request){
// dd("ggwp");
$current = Carbon::now();
$current = new Carbon();
$master = new MasterServices($request->kodcaw);
$response = $master->createMarhunGadai($request->norujukan,$request);
$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');
//query kadar upah baru
$kadar_raw = KadarUpah::where('min','<=',$total_nilai_marhun)->where('max','>=',$total_nilai_marhun)->where('group_id',$cawangan['group_id'])->first();
// query kadar upah lama
// $kadar_raw = KadarUpah::where('min','<=',$total_nilai_marhun)->where('max','>=',$total_nilai_marhun)->first();
$onepercentservices = new OnePercentServices();
$keuntungan = $onepercentservices->kiraanKeuntunganSebenar($request->pinjaman,$total_nilai_marhun,$kadar_raw['kadarujrah'],$margin_pinjam);
// $upah1 = $request->pinjaman * ($kadar_raw['kadarupdah']/100);
// $upah6 = $upah1 * 6;
// $upah12 = $upah1 * 12;
$upah1 = $keuntungan['keuntungan'];
$upah6 = $upah1 * 6;
$upah12 = $upah1 * 12;
$ujrah = $keuntungan['ujrah'];
$onepercent = $keuntungan['onepercent'];
$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['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
));
$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);
return response()->json($response, 200);
}
public function getTransactionByTarikh($kodcaw,$tarikh){
@@ -325,7 +214,7 @@ class GadaiController extends Controller
$gadai_transaction = Gadai::on($cawangan['mysql'])->where('t_gadai','=',$tarikh)->get();
return response()->json($gadai);
return response()->json($gadai_transaction);
}
public function checkNorujukan(Request $request){
@@ -345,68 +234,17 @@ class GadaiController extends Controller
}
public function kiraupahTawarruq($kodcaw,$norujukan){
$onepercentservices = new OnePercentServices();
$master = new MasterServices($kodcaw);
$response = $master->kiraUpahTawarruq($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 = $tempoh - $gadai_data['tempohbayar'];
$upah = $onepercentservices->kiraanKeuntunganSebenar($gadai_data['pinjaman'],$gadai_data['nilaimarhun'],$gadai_data['kadarupah'],$gadai_data['percentpinj']);
// $upahsemasa_raw = $bilang_bln * (($gadai_data['kadarupah']/100 )* $gadai_data['pinjaman']);
$upahsemasa_raw = $bilang_bln * $upah['keuntungan'];
// $upah_semasa = round($upahsemasa_raw,PHP_ROUND_HALF_UP);
$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;
return $response;
}
public function kiraUpahRebet($kodcaw,$norujukan){
$onepercentservices = new OnePercentServices();
$master = new MasterServices($kodcaw);
$response = $master->kiraUpahRebet($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 = $tempoh - $gadai_data['tempohbayar'];
$upah = $onepercentservices->kiraanKeuntunganRebet($gadai_data['bakipjm'],$gadai_data['nilaimarhun'],$gadai_data['kadarupah'],$gadai_data['margin_semasa']);
// $upahrebet_raw = $bilang_bln * (($gadai_data['kadarupah']/100 )* $gadai_data['bakipjm']);
$upahrebet_raw = $bilang_bln * $upah['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 $upahrebet_raw;
return $response;
}
public function updateGadaiMarhunOnline($kodcaw,$norujukan,Request $request){
@@ -465,126 +303,10 @@ class GadaiController extends Controller
}
public function updateGadaiMarhunKaunter($kodcaw,$norujukan,Request $request){
$current = Carbon::now();
$current = new Carbon();
$onePercentServices = new Onepercent($request->kodcaw);
$update = $onePercentServices->updateGadaiMarhunKaunter($kodcaw,$norujukan,$request);
$cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first();
$gadai = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->first();
$upahsemasa = $this->kiraupahTawarruq($kodcaw,$norujukan);
$upahrebet = $this->kiraUpahRebet($kodcaw,$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;
}
$onepercent = new OnePercentServices();
$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;
$margin_semasa = ($gadai['bakipjm'] / $gadai['nilaimarhun']) * 100;
$keuntungan = $onepercent->kiraanKeuntunganSebenar($gadai['bakipjm'],$gadai['nilaimarhun'],$gadai['kadarupah'],$margin_semasa);
$ujrahasal = $onepercent->kiraanUjrahSebenar($gadai['nilaimarhun'],$gadai['kadarupah'],$gadai['margin_semasa']);
$onepercentasal = $gadai['pinjaman'] * (1/100);
try {
DB::connection('mysql7')->transaction(function () use($onepercentasal,$ujrahasal,$keuntungan,$norujukan,$gadai,$request,$kodcaw,$current,$baki_hargajualan,$upahsemasa,$baki_bayaran,$upahrebet,$cawangan,$old_data,$baki_pinjaman,$lelong_tawarruq,$margin_semasa) {
$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,
'duitpelanggan' => $request->duitpelanggan,
'bakipelanggan' => $request->bakipelanggan
]);
if($gadai['tempoh'] >= 12.0){
$tempoh = 12;
}else{
$tempoh = $gadai['tempoh'];
}
$bilang_bln = $tempoh - $gadai['tempohbayar'];
$rounded = $upahsemasa - (($keuntungan['ujrah'] * $bilang_bln) + ($onepercentasal * $bilang_bln));
$transaction_upah = TransaksiKeuntungan::on('mysql7')->create([
'norujukan' => $norujukan,
'bayaran_keuntungan' => $upahsemasa,
'bayaran_pembiayaan' => $baki_bayaran,
'keuntungan_rebet'=> $upahrebet,
'tarikh_bayaran'=> $current,
'kodcaw'=> $kodcaw,
'ujrah' => ($keuntungan['ujrah'] * $bilang_bln),
'ujrah_rebet' => ($ujrahasal*$bilang_bln),
'onepercent' => ($onepercentasal * $bilang_bln),
'onepercent_rebet' => ($keuntungan['onepercent'] * $bilang_bln),
'tempoh' => $gadai['tempoh'],
'beza_tempoh' => $bilang_bln,
'margin_semasa' => $margin_semasa,
'rounded' => $rounded,
]);
DB::connection($cawangan['mysql'])->transaction(function () use($cawangan,$baki_pinjaman,$current,$norujukan,$gadai,$baki_hargajualan,$lelong_tawarruq,$margin_semasa){
$margin_updated = ($baki_pinjaman / $gadai['nilaimarhun']) * 100;
$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,
'margin_semasa' => $margin_updated,
));
});
$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();
if(!$transaction || !$transaction_upah) {
throw new \Exception('One of the database operations failed.');
}
DB::commit();
});
}catch(\Exception $e){
Log::error("Transaction failed: " . $e->getMessage());
return response()->json("Transaction failed: " . $e->getMessage(),500);
}
return response()->json("success",200);
return $update;
}
public function getGadaianSemasa($kodcaw){
@@ -3871,21 +3593,15 @@ class GadaiController extends Controller
}
public function getKadarUjrah(Request $request){
$cawangan = Cawangan::on('mysql7')->where('kodcaw',$request->kodcaw)->first();
$onePercentServices = new OnePercentServices();
$kadarujrah = $onePercentServices->getKadarUjrah($request->nilaimarhun,$cawangan['group_id']);
// $test = $this->kiraupahTawarruq('KB2','KB2231109-0001');
// dd($test);
$onePercentServices = new Onepercent($request->kodcaw);
$kadarujrah = $onePercentServices->getKadarUjrah($request);
return $kadarujrah;
}
public function getOnePercent(Request $request){
$onePercentServices = new OnePercentServices();
$keuntungan = $onePercentServices->kiraanKeuntunganSebenar($request->pembiayaan,$request->nilaimarhun,$request->kadarujrah,$request->margin);
$onePercentServices = new Onepercent($request->kodcaw);
$keuntungan = $onePercentServices->getOnePercent($request);
return $keuntungan;
}
+59 -683
View File
@@ -36,7 +36,7 @@ use App\StokAudit11;
use App\StokAudit12;
use App\AkruNet;
use App\Services\OnePercentServices;
use App\Services\MasterServices;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
@@ -46,247 +46,73 @@ use Carbon\Carbon;
class TebusController extends Controller
{
public function tebusTawarruq($kodcaw,$norujukan){
$cawangan = Cawangan::on('mysql7')
->where('kodcaw','=',$kodcaw)
->first();
$master = new MasterServices($kodcaw);
$response = $master->tebusTawarruq($kodcaw,$norujukan);
$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);
}
return response()->json($hargatebus);
return $response;
}
public function hargaTebusTawarruq($kodcaw,$norujukan,$jeniskeuntungan){
$cawangan = Cawangan::on('mysql7')
->where('kodcaw','=',$kodcaw)
->first();
$master = new MasterServices($kodcaw);
$response = $master->hargaTebusTawarruq($kodcaw,$norujukan);
$gadai_data = Gadai::on($cawangan['mysql'])
->where('norujukan','=',$norujukan)
->first();
$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);
}
$rounded = $hargatebus - $harga_tebus;
Log::info([$harga_tebus,$rebet]);
$arrayharga = ['harga' => $hargatebus, 'rounded' => $rounded];
return $arrayharga;
return $response;
}
public function kiraupahTawarruq($kodcaw,$norujukan,$jeniskeuntungan){
$onepercentservices = new OnePercentServices();
$cawangan = Cawangan::on('mysql7')
->where('kodcaw','=',$kodcaw)
->first();
$master = new MasterServices($kodcaw);
$response = $master->kiraUpahTawarruq($kodcaw,$norujukan,$jeniskeuntungan);
$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'];
if($jeniskeuntungan == 'onepercent'){
$upah = $onepercentservices->kiraanKeuntunganSebenar($gadai_data['pinjaman'],$gadai_data['nilaimarhun'],$gadai_data['kadarupah'],$gadai_data['percentpinj']);
$upahsemasa_raw = $bilang_bln * $upah['keuntungan'];
}else{
$upahsemasa_raw = $bilang_bln * (($gadai_data['kadarupah']/100 )* $gadai_data['pinjaman']);
}
// $upah_semasa = round($upahsemasa_raw,PHP_ROUND_HALF_UP);
$upah_semasa_round = number_format($upahsemasa_raw,2);
if(strpos($upah_semasa_round,',')){
$upah_semasa_round = str_replace(',','',$upah_semasa_round);
}
$upah_semasa = substr($upah_semasa_round, 0, -1);
if(strpos($upah_semasa,',')){
$upah_semasa = str_replace(',','',$upah_semasa);
}
return $upah_semasa;
return $response;
}
public function kiraUpahRebet($kodcaw,$norujukan,$jeniskeuntungan){
$onepercentservices = new OnePercentServices();
$cawangan = Cawangan::on('mysql7')
->where('kodcaw','=',$kodcaw)
->first();
$master = new MasterServices($kodcaw);
$response = $master->kiraupahRebet($kodcaw,$norujukan,$jeniskeuntungan);
$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'];
if($jeniskeuntungan == 'onepercent'){
$upah = $onepercentservices->kiraanKeuntunganRebet($gadai_data['bakipjm'],$gadai_data['nilaimarhun'],$gadai_data['kadarupah'],$gadai_data['margin_semasa']);
$upahrebet_raw = $bilang_bln * $upah['keuntungan'];
}else{
$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);
// }
return $upahrebet_raw;
return $response;
}
public function kiraUpahRebetSebenar($kodcaw,$norujukan){
$cawangan = Cawangan::on('mysql7')
->where('kodcaw','=',$kodcaw)
->first();
$master = new MasterServices($kodcaw);
$response = $master->kiraUpahRebetSebenar($kodcaw,$norujukan);
$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;
return $response;
}
public function upahTawarruq($kodcaw,$norujukan,$jeniskeuntungan){
$master = new MasterServices($kodcaw);
$response = $master->upahTawarruq($kodcaw,$norujukan,$jeniskeuntungan);
$upah_semasa = $this->kiraupahTawarruq($kodcaw,$norujukan,$jeniskeuntungan);
return response()->json(number_format($upah_semasa,2));
return $response;
}
public function upahRebetTawarruq($kodcaw,$norujukan,$jeniskeuntungan){
$master = new MasterServices($kodcaw);
$response = $master->upahRebetTawarruq($kodcaw,$norujukan,$jeniskeuntungan);
$upah_rebet = $this->kiraUpahRebet($kodcaw,$norujukan,$jeniskeuntungan);
return response()->json(number_format($upah_rebet,2));
return $response;
}
public function tebusSeparuhTawarruq($kodcaw,$norujukan,Request $request){
$master = new MasterServices($kodcaw);
$response = $master->tebusSeparuhTawarruq($kodcaw,$norujukan,$request);
$cawangan = Cawangan::on('mysql7')
->where('kodcaw','=',$kodcaw)
->first();
$gadai_data = Gadai::on($cawangan['mysql'])
->where('norujukan','=',$norujukan)
->first();
$upahsemasa = $this->kiraupahTawarruq($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);
$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_round = round($total_harga_tebus,2);
$totalhargatebus = substr($total_harga_tebus_round, 0, -1);
return response()->json($totalhargatebus);
return $response;
}
public function tebusNotTawarruq($kodcaw,$norujukan){
$cawangan = Cawangan::on('mysql7')
->where('kodcaw','=',$kodcaw)
->first();
$master = new MasterServices($kodcaw);
$response = $master->tebusNotTawarruq($kodcaw,$norujukan);
$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);
return $response;
}
public function hargaTebusNotTawarruq($kodcaw,$norujukan){
$cawangan = Cawangan::on('mysql7')
->where('kodcaw','=',$kodcaw)
->first();
$master = new MasterServices($kodcaw);
$response = $master->hargaTebusNotTawarruq($kodcaw,$norujukan);
$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;
return $response;
}
public function getMoratorium(){
@@ -300,424 +126,52 @@ class TebusController extends Controller
}
public function kiraUpahNotTawarruq($kodcaw,$norujukan){
$cawangan = Cawangan::on('mysql7')
->where('kodcaw','=',$kodcaw)
->first();
$master = new MasterServices($kodcaw);
$response = $master->kiraUpahNotTawarruq($kodcaw,$norujukan);
$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;
return $response;
}
public function upahNotTawarruq($kodcaw,$norujukan){
$cawangan = Cawangan::on('mysql7')
->where('kodcaw','=',$kodcaw)
->first();
$master = new MasterServices($kodcaw);
$response = $master->upahNotTawarruq($kodcaw,$norujukan);
$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);
return $response;
}
public function tebusSeparuhNotTawarruq($kodcaw,$norujukan,Request $request){
$cawangan = Cawangan::on('mysql7')
->where('kodcaw','=',$kodcaw)
->first();
$master = new MasterServices($kodcaw);
$response = $master->tebusSeparuhNotTawarruq($kodcaw,$norujukan,$request);
$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);
return $response;
}
function rebet($kodcaw,$norujukan){
$cawangan = Cawangan::on('mysql7')
->where('kodcaw','=',$kodcaw)
->first();
$master = new MasterServices($kodcaw);
$response = $master->rebet($kodcaw,$norujukan);
$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));
return $response;
}
function rebetselepastawarruq($kodcaw,$norujukan,$jeniskeuntungan){
$cawangan = Cawangan::on('mysql7')
->where('kodcaw','=',$kodcaw)
->first();
$master = new MasterServices($kodcaw);
$response = $master->rebetselepastawarruq($kodcaw,$norujukan);
$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,$jeniskeuntungan);
$rebet_raw =$gadai_data['upah12'] - $transaction_keuntungan - $upah_rebet;
// dd($gadai_data['upah12'],$transaction_keuntungan,$upah_rebet,$jeniskeuntungan,$rebet_raw);
// $rebet_round = bcdiv(round($rebet_raw,2),1,1);
// $rebet_round = number_format($rebet_round,2);
// if(strpos($rebet_round,',')){
// $rebet_round = str_replace(',','',$rebet_round);
// }
// $rebet = substr($rebet_round, 0, -1);
return $rebet_raw;
return $response;
}
public function tebusUpdate($kodcaw,$norujukan,Request $request){
$current = Carbon::now();
$current = new Carbon();
$master = new MasterServices($kodcaw);
$response = $master->tebusUpdate($kodcaw,$norujukan,$request);
$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($kodcaw,$norujukan,$request->jeniskeuntungan);
$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']),
'rounded' => $harga_tebus['rounded'],
]);
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,
]);
}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);
return $response;
}
public function tebusUpdateAutoTawarruq($kodcaw,$norujukan,Request $request){
$current = Carbon::now();
$current = new Carbon();
$master = new MasterServices($kodcaw);
$response = $master->tebusUpdateAutoTawarruq($kodcaw,$norujukan,$request);
$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();
$update_gadai = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(array(
'sttebus' => "T",
't_update' => $current->toDateString(),
));
$upah_rebet = $this->kiraUpahRebet($kodcaw,$norujukan,$request->jeniskeuntungan);
$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' => $request->jbg,
'kadarupah' => $request->kadarupah,
'nilaimarhun' => $request->nilai_marhun,
'pinjaman' => $request->pinjaman,
'ansuran' => $request->ansuran,
'addpinjaman' => $request->addpinjaman,
'bakipjm' => $request->bakipinjaman,
'bakiupah' => $request->bakiupah,
'terima' => "*",
'kodgl' => "0",
'nowakil' => $request->nowakil,
'rebate' => $rebet,
'marhuntebus' => $request->marhun,
'historygadaian' => $request->historygadaian,
'tarikhbyrn' => $current->toDateString(),
'teller' => $request->teller
]);
$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' => $request->bakiupah,
'bayaran_pembiayaan' => $bayaran_pembiayaan,
'keuntungan_rebet' => 0,
'tarikh_bayaran'=> $current,
'kodcaw'=> $kodcaw
]);
$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' => 0,
'duitpelanggan' => $request->bayaranpelanggan,
'bakipelanggan' => $request->bakipelanggan
]);
$audit = new Audit();
$audit->users = $request->teller;
$audit->actions = "Auto Tawarruq";
$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);
return $response;
}
public function getLaporanTebus($kodcaw,$tarikh){
@@ -2103,7 +1557,7 @@ class TebusController extends Controller
return response(0);
}
public function removeUpahLamaToday($kodcaw,$norujukan)
public function removeUpahLamaToday($kodcaw,$norujukan,Request $request)
{
$current = Carbon::now();
$current = new Carbon();
@@ -2383,95 +1837,17 @@ class TebusController extends Controller
}
public function kiraupahUjrahOnePercent($kodcaw,$norujukan){
$onepercentservices = new OnePercentServices();
$cawangan = Cawangan::on('mysql7')
->where('kodcaw','=',$kodcaw)
->first();
$master = new MasterServices($kodcaw);
$response = $master->kiraupahUjrahOnePercent($kodcaw,$norujukan);
$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']);
$ujrah = $bilang_bln * $array_upah['ujrah'];
$onepercent = $bilang_bln * $array_upah['onepercent'];
$onepercent_semasa = $onepercent;
$ujrah_semasa = $ujrah;
// $ujrah_semasa_round = number_format($ujrah,2);
// if(strpos($ujrah_semasa_round,',')){
// $ujrah_semasa_round = str_replace(',','',$ujrah_semasa_round);
// }
// $ujrah_semasa = substr($ujrah_semasa_round, 0, -1);
// if(strpos($ujrah_semasa,',')){
// $ujrah_semasa = str_replace(',','',$ujrah_semasa);
// }
// $onepercent_semasa_round = number_format($onepercent,2);
// if(strpos($onepercent_semasa_round,',')){
// $onepercent_semasa_round = str_replace(',','',$onepercent_semasa_round);
// }
// $onepercent_semasa = substr($onepercent_semasa_round, 0, -1);
// if(strpos($onepercent_semasa,',')){
// $onepercent_semasa = str_replace(',','',$onepercent_semasa);
// }
return ['ujrah' => $ujrah_semasa, 'onepercent' => $onepercent_semasa];
return $response;
}
public function kiraupahUjrahOnePercentRebate($kodcaw,$norujukan){
$onepercentservices = new OnePercentServices();
$cawangan = Cawangan::on('mysql7')
->where('kodcaw','=',$kodcaw)
->first();
$master = new MasterServices($kodcaw);
$response = $master->kiraupahUjrahOnePercentRebate($kodcaw,$norujukan);
$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 = $bilang_bln * $array_upah['ujrah'];
$onepercent = $bilang_bln * $array_upah['onepercent'];
$ujrah_semasa = $ujrah;
// $ujrah_semasa = round($ujrah,PHP_ROUND_HALF_UP);
// $ujrah_semasa_round = number_format($ujrah,2);
// if(strpos($ujrah_semasa_round,',')){
// $ujrah_semasa_round = str_replace(',','',$ujrah_semasa_round);
// }
// $ujrah_semasa = substr($ujrah_semasa_round, 0, -1);
// if(strpos($ujrah_semasa,',')){
// $ujrah_semasa = str_replace(',','',$ujrah_semasa);
// }
$onepercent_semasa = $onepercent;
// $onepercent_semasa = round($onepercent,PHP_ROUND_HALF_UP);
// $onepercent_semasa_round = number_format($onepercent,2);
// if(strpos($onepercent_semasa_round,',')){
// $onepercent_semasa_round = str_replace(',','',$onepercent_semasa_round);
// }
// $onepercent_semasa = substr($onepercent_semasa_round, 0, -1);
// if(strpos($onepercent_semasa,',')){
// $onepercent_semasa = str_replace(',','',$onepercent_semasa);
// }
return ['ujrah' => $ujrah_semasa, 'onepercent' => $onepercent_semasa];
return $response;
}
+203
View File
@@ -0,0 +1,203 @@
<?php
namespace App\Services;
use App\Cawangan;
use App\KadarUpah;
use Illuminate\Http\Request as HttpRequest;
use App\Support\OnePercent as OnePercentEngine;
use App\Support\Tawarruq as TawarruqEngine;
class MasterServices
{
protected $cawangan;
protected $cawangan_info;
protected $engine;
public function __construct(String $kodcaw){
$this->cawangan = $kodcaw;
$this->cawangan_info = $this->getInfoCawangan($kodcaw);
$this->engine = $this->getEngine($kodcaw);
}
public function getInfoCawangan(String $kodcaw): Object{
$cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first();
return $cawangan;
}
public function getEngine(String $kodcaw){
if ($this->cawangan_info['version'] == 'v1') {
return new TawarruqEngine($kodcaw);
} else if ($this->cawangan_info['version'] == 'v2') {
return new OnePercentEngine($kodcaw);
} else {
return new TawarruqEngine($kodcaw);
}
}
/* Start Gadaian */
public function createGadai(HttpRequest $request){
$response = $this->engine->createGadai($request);
return $response;
}
public function createMarhunGadai($norujukan,HttpRequest $request){
$response = $this->engine->createMarhunGadai($norujukan,$request);
return $response;
}
public function kiraUpahTawarruq($kodcaw,$norujukan){
$response = $this->engine->getUpahSebenar($norujukan);
return $response;
}
public function kiraUpahRebet($kodcaw,$norujukan,$jeniskeuntungan){
if($jeniskeuntungan == 'asal'){
$tawarruq = new TawarruqEngine($this->cawangan);
$response = $tawarruq->getUpahRebet($kodcaw,$norujukan);
}else{
$tawarruq = new OnePercentEngine($this->cawangan);
$response = $tawarruq->getUpahRebet($kodcaw,$norujukan);
}
return $response;
}
public function updateGadaiMarhunKaunter($kodcaw, $norujukan, HttpRequest $request){
$response = $this->engine->updateGadaiMarhunKaunter($kodcaw,$norujukan,$request);
return $response;
}
/* End Gadaian */
/* Start Penebusan */
public function tebusTawarruq($kodcaw,$norujukan){
$response = $this->engine->tebusTawarruq($kodcaw,$norujukan);
return $response;
}
public function hargaTebusTawarruq($kodcaw,$norujukan){
$response = $this->engine->hargaTebusTawarruq($kodcaw,$norujukan);
return $response;
}
public function kiraUpahRebetSebenar($kodcaw,$norujukan){
$response = $this->engine->kiraUpahRebetSebenar($kodcaw,$norujukan);
return $response;
}
public function upahTawarruq($kodcaw,$norujukan,$jeniskeuntungan){
if($jeniskeuntungan == 'asal'){
$tawarruq = new TawarruqEngine($this->cawangan);
$response = $tawarruq->upahTawarruq($kodcaw,$norujukan,$jeniskeuntungan);
}else{
$tawarruq = new OnePercentEngine($this->cawangan);
$response = $tawarruq->upahTawarruq($kodcaw,$norujukan,$jeniskeuntungan);
}
return $response;
}
public function upahRebetTawarruq($kodcaw,$norujukan,$jeniskeuntungan){
if($jeniskeuntungan == 'asal'){
$tawarruq = new TawarruqEngine($this->cawangan);
$response = $tawarruq->upahRebetTawarruq($kodcaw,$norujukan,$jeniskeuntungan);
}else{
$tawarruq = new OnePercentEngine($this->cawangan);
$response = $tawarruq->upahRebetTawarruq($kodcaw,$norujukan,$jeniskeuntungan);
}
return $response;
}
public function tebusSeparuhTawarruq($kodcaw,$norujukan,HttpRequest $request){
$response = $this->engine->tebusSeparuhTawarruq($kodcaw,$norujukan,$request);
return $response;
}
public function tebusNotTawarruq($kodcaw,$norujukan){
$response = $this->engine->tebusNotTawarruq($kodcaw,$norujukan);
return $response;
}
public function hargaTebusNotTawarruq($kodcaw,$norujukan){
$response = $this->engine->hargaTebusNotTawarruq($kodcaw,$norujukan);
return $response;
}
public function kiraUpahNotTawarruq($kodcaw,$norujukan){
$response = $this->engine->kiraUpahNotTawarruq($kodcaw,$norujukan);
return $response;
}
public function upahNotTawarruq($kodcaw,$norujukan){
$response = $this->engine->upahNotTawarruq($kodcaw,$norujukan);
return $response;
}
public function tebusSeparuhNotTawarruq($kodcaw,$norujukan,HttpRequest $request){
$response = $this->engine->tebusSeparuhNotTawarruq($kodcaw,$norujukan,$request);
return $response;
}
function rebet($kodcaw,$norujukan){
$response = $this->engine->rebet($kodcaw,$norujukan);
return $response;
}
function rebetselepastawarruq($kodcaw,$norujukan){
$response = $this->engine->rebetselepastawarruq($kodcaw,$norujukan);
return $response;
}
public function tebusUpdate($kodcaw,$norujukan,HttpRequest $request){
$response = $this->engine->tebusUpdate($kodcaw,$norujukan,$request);
return $response;
}
public function tebusUpdateAutoTawarruq($kodcaw,$norujukan,HttpRequest $request){
$response = $this->engine->tebusUpdateAutoTawarruq($kodcaw,$norujukan,$request);
return $response;
}
public function kiraupahUjrahOnePercent($kodcaw,$norujukan){
$response = $this->engine->kiraupahUjrahOnePercent($kodcaw,$norujukan);
return $response;
}
public function kiraupahUjrahOnePercentRebate($kodcaw,$norujukan){
$response = $this->engine->kiraupahUjrahOnePercentRebate($kodcaw,$norujukan);
return $response;
}
/* End Penebusan */
public function test(){
$this->engine->test();
}
}
-16
View File
@@ -1,16 +0,0 @@
<?php
namespace App\Services;
use App\KadarUpah;
class TawarruqServices
{
protected $maks_margin = 80;
protected $one_percent = 1;
private function getCalculation(){
}
}
+203
View File
@@ -0,0 +1,203 @@
<?php
namespace App\Support;
use App\Cawangan;
use App\Services\MasterServices;
use App\Services\Request;
use App\Support\v2\Calculation;
use Illuminate\Http\Request as HttpRequest;
use App\Support\v2\GadaiV2 as Version2Gadai;
use App\Support\v2\Penebusan;
class OnePercent extends MasterServices
{
protected $kodcaw;
protected $cawangan_info;
public function __construct(String $kodcaw){
$this->kodcaw = $kodcaw;
$this->cawangan_info = parent::getInfoCawangan($kodcaw);
}
/* Start Gadaian */
public function createGadai(HttpRequest $httpRequest){
$gadai = new Version2Gadai($this->kodcaw,$this->cawangan_info);
$response = $gadai->create($httpRequest);
return $response;
}
public function createMarhunGadai($norujukan,HttpRequest $httpRequest){
$gadai = new Version2Gadai($this->kodcaw,$this->cawangan_info);
$response = $gadai->createMarhun($norujukan,$httpRequest);
return $response;
}
public function getUpahSebenar($norujukan){
$gadai = new Version2Gadai($this->kodcaw,$this->cawangan_info);
$response = $gadai->kiraupahOnePercent($this->kodcaw,$norujukan);
return $response;
}
public function getUpahRebet($kodcaw,$norujukan){
$gadai = new Version2Gadai($this->kodcaw,$this->cawangan_info);
$response = $gadai->kiraupahRebet($this->kodcaw,$norujukan);
return $response;
}
public function updateGadaiMarhunKaunter($kodcaw, $norujukan, HttpRequest $request){
$gadai = new Version2Gadai($this->kodcaw,$this->cawangan_info);
$response = $gadai->updateAnsuranKaunter($this->kodcaw,$norujukan,$request);
return $response;
}
public function getKadarUjrah(HttpRequest $request){
$cawangan = Cawangan::on('mysql7')->where('kodcaw',$request->kodcaw)->first();
$onePercentServices = new Calculation();
$kadarujrah = $onePercentServices->getKadarUjrah($request->nilaimarhun,$cawangan['group_id']);
return $kadarujrah;
}
public function getOnePercent(HttpRequest $request){
$onePercentServices = new Calculation();
$keuntungan = $onePercentServices->kiraanKeuntunganSebenar($request->pembiayaan,$request->nilaimarhun,$request->kadarujrah,$request->margin);
return $keuntungan;
}
/* End Gadaian */
/* Start Penebusan */
public function tebusTawarruq($kodcaw,$norujukan){
$tebus = new Penebusan($this->kodcaw,$this->cawangan_info);
$response = $tebus->tebusTawarruq($this->kodcaw,$norujukan);
return $response;
}
public function hargaTebusTawarruq($kodcaw,$norujukan){
$tebus = new Penebusan($this->kodcaw,$this->cawangan_info);
$response = $tebus->hargaTebusTawarruq($this->kodcaw,$norujukan);
return $response;
}
public function kiraUpahRebetSebenar($kodcaw,$norujukan){
$tebus = new Penebusan($this->kodcaw,$this->cawangan_info);
$response = $tebus->kiraUpahRebetSebenar($this->kodcaw,$norujukan);
return $response;
}
public function upahTawarruq($kodcaw,$norujukan,$jeniskeuntungan){
$tebus = new Penebusan($this->kodcaw,$this->cawangan_info);
$response = $tebus->upahTawarruq($this->kodcaw,$norujukan,$jeniskeuntungan);
return $response;
}
public function upahRebetTawarruq($kodcaw,$norujukan,$jeniskeuntungan){
$tebus = new Penebusan($this->kodcaw,$this->cawangan_info);
$response = $tebus->upahRebetTawarruq($this->kodcaw,$norujukan,$jeniskeuntungan);
return $response;
}
public function tebusSeparuhTawarruq($kodcaw,$norujukan,HttpRequest $request){
$tebus = new Penebusan($this->kodcaw,$this->cawangan_info);
$response = $tebus->tebusSeparuhTawarruq($this->kodcaw,$norujukan,$request);
return $response;
}
public function tebusNotTawarruq($kodcaw,$norujukan){
$tebus = new Penebusan($this->kodcaw,$this->cawangan_info);
$response = $tebus->tebusNotTawarruq($this->kodcaw,$norujukan);
return $response;
}
public function hargaTebusNotTawarruq($kodcaw,$norujukan){
$tebus = new Penebusan($this->kodcaw,$this->cawangan_info);
$response = $tebus->hargaTebusNotTawarruq($this->kodcaw,$norujukan);
return $response;
}
public function kiraUpahNotTawarruq($kodcaw,$norujukan){
$tebus = new Penebusan($this->kodcaw,$this->cawangan_info);
$response = $tebus->kiraUpahNotTawarruq($this->kodcaw,$norujukan);
return $response;
}
public function upahNotTawarruq($kodcaw,$norujukan){
$tebus = new Penebusan($this->kodcaw,$this->cawangan_info);
$response = $tebus->upahNotTawarruq($this->kodcaw,$norujukan);
return $response;
}
public function tebusSeparuhNotTawarruq($kodcaw,$norujukan,HttpRequest $request){
$tebus = new Penebusan($this->kodcaw,$this->cawangan_info);
$response = $tebus->tebusSeparuhNotTawarruq($this->kodcaw,$norujukan,$request);
return $response;
}
function rebet($kodcaw,$norujukan){
$tebus = new Penebusan($this->kodcaw,$this->cawangan_info);
$response = $tebus->rebet($this->kodcaw,$norujukan);
return $response;
}
function rebetselepastawarruq($kodcaw,$norujukan){
dd('tes');
$tebus = new Penebusan($this->kodcaw,$this->cawangan_info);
$response = $tebus->rebetselepastawarruq($this->kodcaw,$norujukan);
return $response;
}
public function tebusUpdate($kodcaw,$norujukan,HttpRequest $request){
$tebus = new Penebusan($this->kodcaw,$this->cawangan_info);
$response = $tebus->tebusUpdate($this->kodcaw,$norujukan,$request);
return $response;
}
public function tebusUpdateAutoTawarruq($kodcaw,$norujukan,HttpRequest $request){
$tebus = new Penebusan($this->kodcaw,$this->cawangan_info);
$response = $tebus->tebusUpdateAutoTawarruq($this->kodcaw,$norujukan,$request);
return $response;
}
public function kiraupahUjrahOnePercent($kodcaw,$norujukan){
$tebus = new Penebusan($this->kodcaw,$this->cawangan_info);
$response = $tebus->kiraupahUjrahOnePercent($this->kodcaw,$norujukan);
return $response;
}
public function kiraupahUjrahOnePercentRebate($kodcaw,$norujukan){
$tebus = new Penebusan($this->kodcaw,$this->cawangan_info);
$response = $tebus->kiraupahUjrahOnePercentRebate($this->kodcaw,$norujukan);
return $response;
}
/* End Penebusan */
public function test(){
echo 'onepercent';
}
}
+172
View File
@@ -0,0 +1,172 @@
<?php
namespace App\Support;
use App\KadarUpah;
use App\Support\v1\GadaiV1 as Version1Gadai;
use App\Services\MasterServices;
use App\Support\v1\Penebusan;
use Illuminate\Http\Request as HttpRequest;
class Tawarruq extends MasterServices
{
protected $kodcaw;
protected $cawangan_info;
public function __construct(String $kodcaw){
$this->kodcaw = $kodcaw;
$this->cawangan_info = parent::getInfoCawangan($kodcaw);
}
/* Start Gadaian */
public function createGadai(HttpRequest $httpRequest){
$gadai = new Version1Gadai($this->kodcaw,$this->cawangan_info);
$response = $gadai->create($httpRequest);
return $response;
}
public function createMarhunGadai($norujukan,HttpRequest $httpRequest){
$gadai = new Version1Gadai($this->kodcaw,$this->cawangan_info);
$response = $gadai->createMarhun($norujukan,$httpRequest);
return $response;
}
public function updateGadaiMarhunKaunter($kodcaw, $norujukan, HttpRequest $request){
$gadai = new Version1Gadai($this->kodcaw,$this->cawangan_info);
$response = $gadai->updateAnsuranKaunter($this->kodcaw,$norujukan,$request);
return $response;
}
public function getUpahSebenar($norujukan){
$gadai = new Version1Gadai($this->kodcaw,$this->cawangan_info);
$response = $gadai->kiraupahTawarruq($norujukan);
return $response;
}
public function getUpahRebet($norujukan){
$gadai = new Version1Gadai($this->kodcaw,$this->cawangan_info);
$response = $gadai->kiraupahRebet($norujukan);
return $response;
}
/* End Gadaian */
/* Start Penebusan */
public function tebusTawarruq($kodcaw,$norujukan){
$tebus = new Penebusan($this->kodcaw,$this->cawangan_info);
$response = $tebus->hargaTebusTawarruq($this->kodcaw,$norujukan);
return $response;
}
public function hargaTebusTawarruq($kodcaw,$norujukan){
$tebus = new Penebusan($this->kodcaw,$this->cawangan_info);
$response = $tebus->hargaTebusTawarruq($this->kodcaw,$norujukan);
return $response;
}
public function kiraUpahRebetSebenar($kodcaw,$norujukan){
$tebus = new Penebusan($this->kodcaw,$this->cawangan_info);
$response = $tebus->kiraUpahRebetSebenar($this->kodcaw,$norujukan);
return $response;
}
public function upahTawarruq($kodcaw,$norujukan,$jeniskeuntungan){
$tebus = new Penebusan($this->kodcaw,$this->cawangan_info);
$response = $tebus->upahTawarruq($kodcaw,$norujukan,$jeniskeuntungan);
return $response;
}
public function upahRebetTawarruq($kodcaw,$norujukan,$jeniskeuntungan){
$tebus = new Penebusan($this->kodcaw,$this->cawangan_info);
$response = $tebus->upahRebetTawarruq($kodcaw,$norujukan,$jeniskeuntungan);
return $response;
}
public function tebusSeparuhTawarruq($kodcaw,$norujukan,HttpRequest $request){
$tebus = new Penebusan($this->kodcaw,$this->cawangan_info);
$response = $tebus->tebusSeparuhTawarruq($this->kodcaw,$norujukan,$request);
return $response;
}
public function tebusNotTawarruq($kodcaw,$norujukan){
$tebus = new Penebusan($this->kodcaw,$this->cawangan_info);
$response = $tebus->tebusNotTawarruq($this->kodcaw,$norujukan);
return $response;
}
public function hargaTebusNotTawarruq($kodcaw,$norujukan){
$tebus = new Penebusan($this->kodcaw,$this->cawangan_info);
$response = $tebus->hargaTebusNotTawarruq($this->kodcaw,$norujukan);
return $response;
}
public function kiraUpahNotTawarruq($kodcaw,$norujukan){
$tebus = new Penebusan($this->kodcaw,$this->cawangan_info);
$response = $tebus->kiraUpahNotTawarruq($this->kodcaw,$norujukan);
return $response;
}
public function upahNotTawarruq($kodcaw,$norujukan){
$tebus = new Penebusan($this->kodcaw,$this->cawangan_info);
$response = $tebus->upahNotTawarruq($this->kodcaw,$norujukan);
return $response;
}
public function tebusSeparuhNotTawarruq($kodcaw,$norujukan,HttpRequest $request){
$tebus = new Penebusan($this->kodcaw,$this->cawangan_info);
$response = $tebus->tebusSeparuhNotTawarruq($this->kodcaw,$norujukan,$request);
return $response;
}
function rebet($kodcaw,$norujukan){
$tebus = new Penebusan($this->kodcaw,$this->cawangan_info);
$response = $tebus->rebet($this->kodcaw,$norujukan);
return $response;
}
function rebetselepastawarruq($kodcaw,$norujukan){
$tebus = new Penebusan($this->kodcaw,$this->cawangan_info);
$response = $tebus->rebetselepastawarruq($this->kodcaw,$norujukan);
return $response;
}
public function tebusUpdate($kodcaw,$norujukan,HttpRequest $request){
$tebus = new Penebusan($this->kodcaw,$this->cawangan_info);
$response = $tebus->tebusUpdate($this->kodcaw,$norujukan,$request);
return $response;
}
public function tebusUpdateAutoTawarruq($kodcaw,$norujukan,HttpRequest $request){
$tebus = new Penebusan($this->kodcaw,$this->cawangan_info);
$response = $tebus->tebusUpdateAutoTawarruq($this->kodcaw,$norujukan,$request);
return $response;
}
/* End Penebusan */
public function test(){
echo 'tawarruq';
}
}
+14
View File
@@ -0,0 +1,14 @@
<?php
namespace App\Support\v1;
use App\KadarUpah;
class Calculation
{
public function kiraanTawarruq(float $pembiayaan = 0.0, float $kadarupah = 0.0) : Float{
$total = ($kadarupah/100) * $pembiayaan;
return $total;
}
}
+271
View File
@@ -0,0 +1,271 @@
<?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($kodcaw,$norujukan);
$upahrebet = $this->kiraUpahRebet($kodcaw,$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);
}
}
+615
View File
@@ -0,0 +1,615 @@
<?php
namespace App\Support\v1;
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\Support\Tawarruq;
use App\Support\v1\Calculation as V1Calculation;
use App\Tebus;
use App\Transaction;
use App\TransaksiKeuntungan;
use Illuminate\Http\Request as HttpRequest;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
use PDO;
class Penebusan extends Tawarruq
{
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){
$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 = bcdiv(round($harga_tebus,2),1,1);
$hargatebus = number_format($hargatebus,2);
if(strpos($hargatebus,',')){
$hargatebus = str_replace(',','',$hargatebus);
}
return response()->json($hargatebus);
}
public function hargaTebusTawarruq($kodcaw,$norujukan){
$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 = bcdiv(round($harga_tebus,2),1,1);
$hargatebus = number_format($hargatebus,2);
if(strpos($hargatebus,',')){
$hargatebus = str_replace(',','',$hargatebus);
}
return $hargatebus;
}
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){
$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 V1Calculation();
$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 upahRebetTawarruq($kodcaw,$norujukan,$jeniskeuntungan){
$upah_rebet = $this->kiraUpahRebet($norujukan);
return response()->json(number_format($upah_rebet,2));
}
public function tebusSeparuhTawarruq($kodcaw,$norujukan,HttpRequest $request){
$cawangan = Cawangan::on('mysql7')
->where('kodcaw','=',$kodcaw)
->first();
$gadai_data = Gadai::on($cawangan['mysql'])
->where('norujukan','=',$norujukan)
->first();
$upahsemasa = $this->kiraupahTawarruq($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);
$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_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;
$rebet_round = bcdiv(round($rebet_raw,2),1,1);
$rebet_round = number_format($rebet_round,2);
if(strpos($rebet_round,',')){
$rebet_round = str_replace(',','',$rebet_round);
}
$rebet = substr($rebet_round, 0, -1);
return $rebet;
}
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);
}
else if($request->jenisbayarantebus == "nottawarruq")
{
$rebet = $this->rebet($kodcaw,$norujukan);
}
else{
$rebet = 0;
}
$gadai = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->first();
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);
$upah_tebus = $this->kiraupahTawarruq($kodcaw,$norujukan);
$upah_rebet = $this->kiraUpahRebetSebenar($kodcaw,$norujukan);
$upah_rebet_sebenar = $harga_tebus - $gadai['bakipjm'];
}
$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,
'bakiupah' => $upah_tebus,
'terima' => "*",
'kodgl' => "0",
'nowakil' => $request->nowakil,
'rebate' => $rebet,
'marhuntebus' => $request->marhun,
'historygadaian' => $norujukan,
'tarikhbyrn' => $current->toDateString(),
'teller' => $request->teller
]);
$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
]);
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,
]);
}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,
'created_at' => $current,
'bakiharga' => $baki_hargajualan,
'nowakil' => (int)$request->nowakil
]);
}
$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();
$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' => $request->jbg,
'kadarupah' => $request->kadarupah,
'nilaimarhun' => $request->nilai_marhun,
'pinjaman' => $request->pinjaman,
'ansuran' => $request->ansuran,
'addpinjaman' => $request->addpinjaman,
'bakipjm' => $request->bakipinjaman,
'bakiupah' => $request->bakiupah,
'terima' => "*",
'kodgl' => "0",
'nowakil' => $request->nowakil,
'rebate' => $rebet,
'marhuntebus' => $request->marhun,
'historygadaian' => $request->historygadaian,
'tarikhbyrn' => $current->toDateString(),
'teller' => $request->teller
]);
$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' => $request->bakiupah,
'bayaran_pembiayaan' => $bayaran_pembiayaan,
'keuntungan_rebet' => 0,
'tarikh_bayaran'=> $current,
'kodcaw'=> $kodcaw
]);
$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' => 0,
]);
$audit = new Audit();
$audit->users = $request->teller;
$audit->actions = "Auto Tawarruq";
$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);
}
}
@@ -1,15 +1,18 @@
<?php
namespace App\Services;
namespace App\Support\v2;
use App\KadarUpah;
use Illuminate\Http\Request;
class OnePercentServices
class Calculation
{
protected $maks_margin = 80;
protected $one_percent = 1;
/* Start Calculation of Ujrah */
private function kiraanUjrah(float $nilaimarhun = 0.0,float $kadarujrah = 0.0,float $margin = 0.0){
//periksa adakah kadar ujrah ini diberi percentage
@@ -78,4 +81,35 @@ class OnePercentServices
return isset($kadarujrah[0]) ? $kadarujrah[0]['kadarujrah'] : 0;
}
public function getRoundedMethod(float $number = 0.0) : Float{
$number_string = number_format($number,2);
$rounded = substr($number_string, 0, -1);
$lastDigit = substr($number_string, -1);
if ($lastDigit >= 0 && $lastDigit <= 2) {
if(strpos($rounded,',')){
$rounded = str_replace(',','',$rounded);
}
return $rounded;
} elseif ($lastDigit >= 3 && $lastDigit <= 7) {
$rounded = $rounded . '5';
if(strpos($rounded,',')){
$rounded = str_replace(',','',$rounded);
}
return $rounded;
} else {
return round($number,PHP_ROUND_HALF_UP);
}
}
/* End of Line Calculation */
}
+330
View File
@@ -0,0 +1,330 @@
<?php
namespace App\Support\v2;
use App\Audit;
use App\Cawangan;
use App\KadarUpah;
use App\Support\v2\Calculation;
use Carbon\Carbon;
use App\Gadai;
use App\Marhun;
use App\Support\OnePercent;
use App\Transaction;
use App\TransaksiKeuntungan;
use Illuminate\Http\Request as HttpRequest;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
use PDO;
class GadaiV2
{
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(),
'tagbaru' => 1
]);
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');
//query kadar upah baru
$kadar_raw = KadarUpah::where('min','<=',$total_nilai_marhun)->where('max','>=',$total_nilai_marhun)->where('group_id',$cawangan['group_id'])->first();
// query kadar upah lama
// $kadar_raw = KadarUpah::where('min','<=',$total_nilai_marhun)->where('max','>=',$total_nilai_marhun)->first();
$onepercentservices = new Calculation();
$keuntungan = $onepercentservices->kiraanKeuntunganSebenar($request->pinjaman,$total_nilai_marhun,$kadar_raw['kadarujrah'],$margin_pinjam);
// $upah1 = $request->pinjaman * ($kadar_raw['kadarupdah']/100);
// $upah6 = $upah1 * 6;
// $upah12 = $upah1 * 12;
$upah1 = $keuntungan['keuntungan'];
$upah6 = $upah1 * 6;
$upah12 = $upah1 * 12;
$ujrah = $keuntungan['ujrah'];
$onepercent = $keuntungan['onepercent'];
$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['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
));
$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 'true';
}
public function kiraupahOnePercent($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 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']);
$upahrebet_raw = $bilang_bln * $upah['keuntungan'];
$upahrebet_raw = $onepercentservices->getRoundedMethod($upahrebet_raw);
return $upahrebet_raw;
}
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->kiraupahOnePercent($kodcaw,$norujukan);
$upahrebet = $this->kiraUpahRebet($kodcaw,$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;
}
$onepercent = new Calculation();
$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;
$margin_semasa = ($gadai['bakipjm'] / $gadai['nilaimarhun']) * 100;
$keuntungan = $onepercent->kiraanKeuntunganSebenar($gadai['bakipjm'],$gadai['nilaimarhun'],$gadai['kadarupah'],$margin_semasa);
$ujrahasal = $onepercent->kiraanUjrahSebenar($gadai['nilaimarhun'],$gadai['kadarupah'],$gadai['margin_semasa']);
$onepercentasal = $gadai['pinjaman'] * (1/100);
try {
DB::connection('mysql7')->transaction(function () use($onepercentasal,$ujrahasal,$keuntungan,$norujukan,$gadai,$request,$kodcaw,$current,$baki_hargajualan,$upahsemasa,$baki_bayaran,$upahrebet,$cawangan,$old_data,$baki_pinjaman,$lelong_tawarruq,$margin_semasa) {
$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,
'duitpelanggan' => $request->duitpelanggan,
'bakipelanggan' => $request->bakipelanggan
]);
if($gadai['tempoh'] >= 12.0){
$tempoh = 12;
}else{
$tempoh = $gadai['tempoh'];
}
$bilang_bln = $tempoh - $gadai['tempohbayar'];
$rounded = $upahsemasa - (($keuntungan['ujrah'] * $bilang_bln) + ($onepercentasal * $bilang_bln));
$transaction_upah = TransaksiKeuntungan::on('mysql7')->create([
'norujukan' => $norujukan,
'bayaran_keuntungan' => $upahsemasa,
'bayaran_pembiayaan' => $baki_bayaran,
'keuntungan_rebet'=> $upahrebet,
'tarikh_bayaran'=> $current,
'kodcaw'=> $kodcaw,
'ujrah' => ($keuntungan['ujrah'] * $bilang_bln),
'ujrah_rebet' => ($ujrahasal*$bilang_bln),
'onepercent' => ($onepercentasal * $bilang_bln),
'onepercent_rebet' => ($keuntungan['onepercent'] * $bilang_bln),
'tempoh' => $gadai['tempoh'],
'beza_tempoh' => $bilang_bln,
'margin_semasa' => $margin_semasa,
'rounded' => $rounded,
]);
DB::connection($cawangan['mysql'])->transaction(function () use($cawangan,$baki_pinjaman,$current,$norujukan,$gadai,$baki_hargajualan,$lelong_tawarruq,$margin_semasa){
$margin_updated = ($baki_pinjaman / $gadai['nilaimarhun']) * 100;
$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,
'margin_semasa' => $margin_updated,
));
});
$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();
if(!$transaction || !$transaction_upah) {
throw new \Exception('One of the database operations failed.');
}
DB::commit();
});
}catch(\Exception $e){
Log::error("Transaction failed: " . $e->getMessage());
return response()->json("Transaction failed: " . $e->getMessage(),500);
}
return response()->json("success",200);
}
}
+728
View File
@@ -0,0 +1,728 @@
<?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){
$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);
}
return response()->json($hargatebus);
}
public function hargaTebusTawarruq($kodcaw,$norujukan){
$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);
}
$rounded = $hargatebus - $harga_tebus;
Log::info([$harga_tebus,$rebet]);
$arrayharga = ['harga' => $hargatebus, 'rounded' => $rounded];
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']);
$upahsemasa_raw = $bilang_bln * $upah['keuntungan'];
$upahsemasa_raw = $onepercentservices->getRoundedMethod($upahsemasa_raw);
return $upahsemasa_raw;
}
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 = $bilang_bln * $upah['keuntungan'];
$upahrebet_raw = $onepercentservices->getRoundedMethod($upahrebet_raw);
return $upahrebet_raw;
}
public function tebusSeparuhTawarruq($kodcaw,$norujukan,HttpRequest $request){
$cawangan = Cawangan::on('mysql7')
->where('kodcaw','=',$kodcaw)
->first();
$gadai_data = Gadai::on($cawangan['mysql'])
->where('norujukan','=',$norujukan)
->first();
$upahsemasa = $this->kiraupahTawarruq($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);
$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_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']);
$upahrebet_raw = $bilang_bln * $upah['keuntungan'];
$upahrebet_raw = $onepercentservices->getRoundedMethod($upahrebet_raw);
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($kodcaw,$norujukan,$request->jeniskeuntungan);
$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']),
'rounded' => $harga_tebus['rounded'],
]);
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,
]);
}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,$request->jeniskeuntungan);
}
else if($request->jenisbayarantebus == "nottawarruq")
{
$rebet = $this->rebet($kodcaw,$norujukan);
}
else{
$rebet = 0;
}
$gadai = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->first();
$update_gadai = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(array(
'sttebus' => "T",
't_update' => $current->toDateString(),
));
$upah_rebet = $this->kiraUpahRebet($kodcaw,$norujukan,$request->jeniskeuntungan);
$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' => $request->jbg,
'kadarupah' => $request->kadarupah,
'nilaimarhun' => $request->nilai_marhun,
'pinjaman' => $request->pinjaman,
'ansuran' => $request->ansuran,
'addpinjaman' => $request->addpinjaman,
'bakipjm' => $request->bakipinjaman,
'bakiupah' => $request->bakiupah,
'terima' => "*",
'kodgl' => "0",
'nowakil' => $request->nowakil,
'rebate' => $rebet,
'marhuntebus' => $request->marhun,
'historygadaian' => $request->historygadaian,
'tarikhbyrn' => $current->toDateString(),
'teller' => $request->teller
]);
$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' => $request->bakiupah,
'bayaran_pembiayaan' => $bayaran_pembiayaan,
'keuntungan_rebet' => 0,
'tarikh_bayaran'=> $current,
'kodcaw'=> $kodcaw
]);
$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' => 0,
'duitpelanggan' => $request->bayaranpelanggan,
'bakipelanggan' => $request->bakipelanggan
]);
$audit = new Audit();
$audit->users = $request->teller;
$audit->actions = "Auto Tawarruq";
$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']);
$ujrah = $bilang_bln * $array_upah['ujrah'];
$onepercent = $bilang_bln * $array_upah['onepercent'];
$onepercent_semasa = $onepercent;
$ujrah_semasa = $ujrah;
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 = $bilang_bln * $array_upah['ujrah'];
$onepercent = $bilang_bln * $array_upah['onepercent'];
return ['ujrah' => $ujrah, 'onepercent' => $onepercent];
}
}
+2 -2
View File
@@ -17,10 +17,10 @@ class GadaiFactory
return [
'kodcaw' => 'KB2',
'norujukan' => ($number > 9) ? 'KB2231123-00' . $number : 'KB2231123-000' . $number ,
'norujukan' => ($number > 9) ? 'KB2231207-00' . $number : 'KB2231207-000' . $number ,
'nopelanggan' => 'M03-00009968',
'nokp' => '630411035213',
't_gadai' => '2023-11-23',
't_gadai' => '2023-12-07',
'masa' => '13:46:57',
'sirig' => $number++,
'nilaimarhun' => 3000.09,
+1 -1
View File
@@ -19,7 +19,7 @@ class MarhunFactory
'kodcaw' => 'KB2',
'marhun' => 'R/L',
't_gadai' => '2023-11-23',
'norujukan' => ($number > 9) ? 'KB2231123-00' . $number : 'KB2231123-000' . $number ,
'norujukan' => ($number > 9) ? 'KB2231207-00' . $number : 'KB2231207-000' . $number ,
'bil' => 1,
'nota' => $number++,
'karat' => '24.0K',
@@ -62,7 +62,7 @@ class AddOnepercentToGadaiTable extends Migration
$db_connection = $this->getActiveDB();
foreach($db_connection as $dbase){
if (Schema::connection('mysql7')->hasColumn('ujrah', 'onepercent')){
if (Schema::connection('mysql7')->hasColumn('kadarujrah', 'ujrah', 'onepercent','margin_semasa','tagbaru')){
Schema::connection($dbase)->table('gadai', function (Blueprint $table) {
$table->dropColumn(['kadarujrah', 'ujrah', 'onepercent','margin_semasa','tagbaru']);
});
@@ -0,0 +1,34 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AddVersionToArrahnMasterDbTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
$value = 'v1';
Schema::table('arrahn_master_db', function (Blueprint $table) use($value) {
$table->char('version', 4)->default($value);
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::connection('mysql7')->table('arrahn_master_db', function (Blueprint $table) {
$table->dropColumn(['version']);
});
}
}
+7 -10
View File
@@ -1,14 +1,11 @@
<?php
use App\Services\Reports\OnePercentService as ReportOne;
$report = new ReportOne('KB2');
$test = $report->getTotalKeuntungan('B');
$test2 = $report->getTotalUjrah('B');
dd($test,$test2);
use App\Services\MasterServices;
use App\Support\v2\Calculation;
$test2 = new Calculation();
$test = new MasterServices('KB2');
// $response = $test->kiraUpahTawarruq('KB2231207-0004');
$response = 'tes';
dd($response);