calculation for kadar anggota koperasi
This commit is contained in:
@@ -3,6 +3,7 @@
|
|||||||
namespace App\Services;
|
namespace App\Services;
|
||||||
|
|
||||||
use App\KadarUpah;
|
use App\KadarUpah;
|
||||||
|
use App\Customer;
|
||||||
|
|
||||||
class OnePercentServices
|
class OnePercentServices
|
||||||
{
|
{
|
||||||
@@ -79,13 +80,43 @@ class OnePercentServices
|
|||||||
return ['keuntungan' => $keuntungan,'onepercent' => $onepercent, 'ujrah' => $ujrah_sebenar];
|
return ['keuntungan' => $keuntungan,'onepercent' => $onepercent, 'ujrah' => $ujrah_sebenar];
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getKadarUjrah(float $nilaimarhun = 0.0, $groupid) : Float{
|
public function getKadarUjrah(float $nilaimarhun = 0.0, $groupid, $nokp = null): float
|
||||||
|
{
|
||||||
|
//Semak status pelanggan dalam table customer
|
||||||
|
if ($nokp) {
|
||||||
|
$customer = Customer::on('mysql7')
|
||||||
|
->select('tag_anggota')
|
||||||
|
->where(function($q) use ($nokp) {
|
||||||
|
$q->where('kpbaru', $nokp)
|
||||||
|
->orWhere('kplama', $nokp);
|
||||||
|
})
|
||||||
|
->first();
|
||||||
|
|
||||||
$kadarujrah = KadarUpah::on('mysql7')->select('kadarujrah')->where([['min','<=',$nilaimarhun],['max','>=',$nilaimarhun]])->where('group_id',1)->get()->toArray();
|
// Jika anggota koperasi → kadar tetap
|
||||||
|
if ($customer && (int)$customer->tag_anggota === 1) {
|
||||||
return isset($kadarujrah[0]) ? $kadarujrah[0]['kadarujrah'] : 0;
|
return 0.16; // kadar ujrah tetap untuk anggota
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Jika bukan anggota → ambil dari jadual kadar_upah
|
||||||
|
$kadar = KadarUpah::on('mysql7')
|
||||||
|
->select('kadarujrah')
|
||||||
|
->where([
|
||||||
|
['min', '<=', $nilaimarhun],
|
||||||
|
['max', '>=', $nilaimarhun],
|
||||||
|
])
|
||||||
|
->where('group_id', $groupid)
|
||||||
|
->first();
|
||||||
|
|
||||||
|
//Jika jumpa kadar dalam jadual
|
||||||
|
if ($kadar && isset($kadar->kadarujrah)) {
|
||||||
|
return (float) $kadar->kadarujrah;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Default fallback
|
||||||
|
return 0.0;
|
||||||
|
}
|
||||||
|
|
||||||
public function getRoundedMethod(float $number = 0.0) : Float{
|
public function getRoundedMethod(float $number = 0.0) : Float{
|
||||||
$number_string = number_format(floor($number * 100)/100,2);
|
$number_string = number_format(floor($number * 100)/100,2);
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,8 @@ use Illuminate\Http\Request as HttpRequest;
|
|||||||
use App\Support\v2\GadaiV2 as Version2Gadai;
|
use App\Support\v2\GadaiV2 as Version2Gadai;
|
||||||
use App\Support\v2\Penebusan;
|
use App\Support\v2\Penebusan;
|
||||||
|
|
||||||
|
use Illuminate\Support\Facades\Log;
|
||||||
|
|
||||||
class OnePercent extends MasterServices
|
class OnePercent extends MasterServices
|
||||||
{
|
{
|
||||||
protected $kodcaw;
|
protected $kodcaw;
|
||||||
@@ -61,18 +63,30 @@ class OnePercent extends MasterServices
|
|||||||
return $response;
|
return $response;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getKadarUjrah(HttpRequest $request){
|
public function getKadarUjrah(HttpRequest $request)
|
||||||
$cawangan = Cawangan::on('mysql7')->where('kodcaw',$request->kodcaw)->first();
|
{
|
||||||
$onePercentServices = new Calculation();
|
Log::info('[DEBUG-CONTROLLER] Data request', [
|
||||||
$kadarujrah = $onePercentServices->getKadarUjrah($request->nilaimarhun,$cawangan['group_id']);
|
'nokp' => $request->nokp,
|
||||||
|
'kodcaw' => $request->kodcaw,
|
||||||
|
'nilaimarhun' => $request->nilaimarhun
|
||||||
|
]);
|
||||||
|
|
||||||
return $kadarujrah;
|
$cawangan = Cawangan::on('mysql7')->where('kodcaw', $request->kodcaw)->first();
|
||||||
}
|
$onePercentServices = new Calculation();
|
||||||
|
|
||||||
|
$kadarujrah = $onePercentServices->getKadarUjrah(
|
||||||
|
$request->nilaimarhun,
|
||||||
|
$cawangan['group_id'],
|
||||||
|
$request->nokp
|
||||||
|
);
|
||||||
|
|
||||||
|
return $kadarujrah;
|
||||||
|
}
|
||||||
|
|
||||||
public function getOnePercent(HttpRequest $request){
|
public function getOnePercent(HttpRequest $request){
|
||||||
$margin = (!is_numeric($request->margin)) ? 0 : $request->margin;
|
$margin = (!is_numeric($request->margin)) ? 0 : $request->margin;
|
||||||
$onePercentServices = new Calculation();
|
$onePercentServices = new Calculation();
|
||||||
$keuntungan = $onePercentServices->kiraanKeuntunganSebenar($request->pembiayaan,$request->nilaimarhun,$request->kadarujrah,$margin);
|
$keuntungan = $onePercentServices->kiraanKeuntunganSebenar($request->pembiayaan,$request->nilaimarhun,$request->kadarujrah,$margin, $request->nokp);
|
||||||
|
|
||||||
return $keuntungan;
|
return $keuntungan;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,9 @@
|
|||||||
namespace App\Support\v2;
|
namespace App\Support\v2;
|
||||||
|
|
||||||
use App\KadarUpah;
|
use App\KadarUpah;
|
||||||
|
use App\Customer;
|
||||||
|
use Illuminate\Support\Facades\Log;
|
||||||
|
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
class Calculation
|
class Calculation
|
||||||
@@ -58,7 +61,6 @@ class Calculation
|
|||||||
public function kiraanKeuntunganRebet(float $pembiayaan = 0.0,float $nilaimarhun = 0.0,float $kadarujrah = 0.0,float $margin = 0.0){
|
public function kiraanKeuntunganRebet(float $pembiayaan = 0.0,float $nilaimarhun = 0.0,float $kadarujrah = 0.0,float $margin = 0.0){
|
||||||
|
|
||||||
$this->one_percent = $this->getKadarUpah($nilaimarhun);
|
$this->one_percent = $this->getKadarUpah($nilaimarhun);
|
||||||
|
|
||||||
$onepercent = $this->kiraanOnePercent($pembiayaan);
|
$onepercent = $this->kiraanOnePercent($pembiayaan);
|
||||||
$ujrah_sebenar = $this->kiraanUjrahSebenar($nilaimarhun,$kadarujrah,$margin);
|
$ujrah_sebenar = $this->kiraanUjrahSebenar($nilaimarhun,$kadarujrah,$margin);
|
||||||
|
|
||||||
@@ -83,13 +85,60 @@ class Calculation
|
|||||||
return ['keuntungan' => $keuntungan,'onepercent' => $onepercent, 'ujrah' => $ujrah_sebenar];
|
return ['keuntungan' => $keuntungan,'onepercent' => $onepercent, 'ujrah' => $ujrah_sebenar];
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getKadarUjrah(float $nilaimarhun = 0.0, $groupid) : Float{
|
public function getKadarUjrah(float $nilaimarhun = 0.0, $groupid, $nokp = null): float
|
||||||
|
{
|
||||||
|
// 1️⃣ Semak status pelanggan dalam table customer
|
||||||
|
if ($nokp) {
|
||||||
|
$customer = Customer::on('mysql7')
|
||||||
|
->select('tag_anggota')
|
||||||
|
->where(function($q) use ($nokp) {
|
||||||
|
$q->where('kpbaru', $nokp)
|
||||||
|
->orWhere('kplama', $nokp);
|
||||||
|
})
|
||||||
|
->first();
|
||||||
|
|
||||||
$kadarujrah = KadarUpah::on('mysql7')->select('kadarujrah')->where([['min','<=',$nilaimarhun],['max','>=',$nilaimarhun]])->where('group_id',$groupid)->get()->toArray();
|
// 2️⃣ Jika anggota koperasi → kadar tetap
|
||||||
|
if ($customer && (int)$customer->tag_anggota === 1) {
|
||||||
return isset($kadarujrah[0]) ? $kadarujrah[0]['kadarujrah'] : 0;
|
Log::info('[DEBUG-UJRAH] Anggota koperasi', [
|
||||||
|
'nokp' => $nokp,
|
||||||
|
'kadarujrah' => 0.16,
|
||||||
|
'groupid' => $groupid,
|
||||||
|
'nilaimarhun' => $nilaimarhun,
|
||||||
|
]);
|
||||||
|
return 0.16;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 3️⃣ Jika bukan anggota → ambil dari jadual kadar_upah
|
||||||
|
$kadar = KadarUpah::on('mysql7')
|
||||||
|
->select('kadarujrah')
|
||||||
|
->where([
|
||||||
|
['min', '<=', $nilaimarhun],
|
||||||
|
['max', '>=', $nilaimarhun],
|
||||||
|
])
|
||||||
|
->where('group_id', $groupid)
|
||||||
|
->first();
|
||||||
|
|
||||||
|
if ($kadar && isset($kadar->kadarujrah)) {
|
||||||
|
Log::info('[DEBUG-UJRAH] Bukan anggota - dari jadual kadar_upah', [
|
||||||
|
'nokp' => $nokp,
|
||||||
|
'kadarujrah' => (float)$kadar->kadarujrah,
|
||||||
|
'groupid' => $groupid,
|
||||||
|
'nilaimarhun' => $nilaimarhun,
|
||||||
|
]);
|
||||||
|
return (float) $kadar->kadarujrah;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 4️⃣ Default fallback
|
||||||
|
Log::info('[DEBUG-UJRAH] Tiada kadar ditemui', [
|
||||||
|
'nokp' => $nokp,
|
||||||
|
'groupid' => $groupid,
|
||||||
|
'nilaimarhun' => $nilaimarhun,
|
||||||
|
]);
|
||||||
|
return 0.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public function getKadarUpah(float $nilaimarhun = 0.0){
|
public function getKadarUpah(float $nilaimarhun = 0.0){
|
||||||
$kadarupah = KadarUpah::on('mysql7')->where([['min','<=',$nilaimarhun],['max','>=',$nilaimarhun]])->where('group_id',1)->first();
|
$kadarupah = KadarUpah::on('mysql7')->where([['min','<=',$nilaimarhun],['max','>=',$nilaimarhun]])->where('group_id',1)->first();
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ namespace App\Support\v2;
|
|||||||
|
|
||||||
use App\Audit;
|
use App\Audit;
|
||||||
use App\Cawangan;
|
use App\Cawangan;
|
||||||
|
use App\Customer;
|
||||||
use App\KadarUpah;
|
use App\KadarUpah;
|
||||||
use App\Support\v2\Calculation;
|
use App\Support\v2\Calculation;
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
@@ -57,6 +58,31 @@ class GadaiV2
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function getKadarUpahAnggota($nokp,$total_nilai_marhun = 0,$groupid = 2) : Float{
|
||||||
|
Log::info('DEBUG NOKP:' . $nokp);
|
||||||
|
if($nokp){
|
||||||
|
$customer = Customer::on('mysql7')
|
||||||
|
->select('tag_anggota')
|
||||||
|
->where(function($q) use ($nokp) {
|
||||||
|
$q->where('kpbaru', $nokp)
|
||||||
|
->orWhere('kplama', $nokp);
|
||||||
|
})
|
||||||
|
->first();
|
||||||
|
$customer = $customer ? $customer->toArray() : [];
|
||||||
|
if(isset($customer) && $customer['tag_anggota'] == 1){
|
||||||
|
return 0.16;
|
||||||
|
}else{
|
||||||
|
return KadarUpah::where('min', '<=', $total_nilai_marhun)
|
||||||
|
->where('max', '>=', $total_nilai_marhun)
|
||||||
|
->where('group_id', $groupid)
|
||||||
|
->value('kadarujrah');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0.0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public function createMarhun($norujukan,HttpRequest $request){
|
public function createMarhun($norujukan,HttpRequest $request){
|
||||||
$current = Carbon::now();
|
$current = Carbon::now();
|
||||||
$current = new Carbon();
|
$current = new Carbon();
|
||||||
@@ -83,14 +109,13 @@ class GadaiV2
|
|||||||
$total_berat = Marhun::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->sum('berat');
|
$total_berat = Marhun::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->sum('berat');
|
||||||
|
|
||||||
//query kadar upah baru
|
//query kadar upah baru
|
||||||
$kadar_raw = KadarUpah::where('min','<=',$total_nilai_marhun)->where('max','>=',$total_nilai_marhun)->where('group_id',$cawangan['group_id'])->first();
|
$kadar_raw = $this->getKadarUpahAnggota($request->nokp,$total_nilai_marhun,$cawangan['group_id']);
|
||||||
|
|
||||||
|
|
||||||
// query kadar upah lama
|
// query kadar upah lama
|
||||||
// $kadar_raw = KadarUpah::where('min','<=',$total_nilai_marhun)->where('max','>=',$total_nilai_marhun)->first();
|
// $kadar_raw = KadarUpah::where('min','<=',$total_nilai_marhun)->where('max','>=',$total_nilai_marhun)->first();
|
||||||
|
|
||||||
$onepercentservices = new Calculation();
|
$onepercentservices = new Calculation();
|
||||||
$keuntungan = $onepercentservices->kiraanKeuntunganSebenar($request->pinjaman,$total_nilai_marhun,$kadar_raw['kadarujrah'],$margin_pinjam);
|
$keuntungan = $onepercentservices->kiraanKeuntunganSebenar($request->pinjaman,$total_nilai_marhun,$kadar_raw,$margin_pinjam);
|
||||||
// $upah1 = $request->pinjaman * ($kadar_raw['kadarupdah']/100);
|
// $upah1 = $request->pinjaman * ($kadar_raw['kadarupdah']/100);
|
||||||
// $upah6 = $upah1 * 6;
|
// $upah6 = $upah1 * 6;
|
||||||
// $upah12 = $upah1 * 12;
|
// $upah12 = $upah1 * 12;
|
||||||
@@ -102,7 +127,7 @@ class GadaiV2
|
|||||||
|
|
||||||
$hargajualan = $request->pinjaman + $upah12;
|
$hargajualan = $request->pinjaman + $upah12;
|
||||||
|
|
||||||
$akrual = $this->kiraupahTawarruqStokAuditUjrahOnePercent(0.5,0,$kadar_raw['kadarujrah'],$request->pinjaman,$total_nilai_marhun,$margin_pinjam);
|
$akrual = $this->kiraupahTawarruqStokAuditUjrahOnePercent(0.5,0,$kadar_raw,$request->pinjaman,$total_nilai_marhun,$margin_pinjam);
|
||||||
|
|
||||||
$gadai = Gadai::on($cawangan['mysql'])
|
$gadai = Gadai::on($cawangan['mysql'])
|
||||||
->where('norujukan','=',$norujukan)
|
->where('norujukan','=',$norujukan)
|
||||||
@@ -110,7 +135,7 @@ class GadaiV2
|
|||||||
'nilaimarhun' => $total_nilai_marhun,
|
'nilaimarhun' => $total_nilai_marhun,
|
||||||
'berat'=> $total_berat,
|
'berat'=> $total_berat,
|
||||||
'pinjaman' => $request->pinjaman,
|
'pinjaman' => $request->pinjaman,
|
||||||
'kadarupah' => $kadar_raw['kadarujrah'],
|
'kadarupah' => $kadar_raw,
|
||||||
'marhun' => $request->marhun,
|
'marhun' => $request->marhun,
|
||||||
'percentpinj' => $margin_pinjam,
|
'percentpinj' => $margin_pinjam,
|
||||||
'teller' => $request->teller,
|
'teller' => $request->teller,
|
||||||
@@ -131,7 +156,7 @@ class GadaiV2
|
|||||||
'upahdibayar' => 0.00,
|
'upahdibayar' => 0.00,
|
||||||
'tempohbayar' => 0.00,
|
'tempohbayar' => 0.00,
|
||||||
'lelong_tawarruq' => 1,
|
'lelong_tawarruq' => 1,
|
||||||
'kadarujrah' => $kadar_raw['kadarujrah'],
|
'kadarujrah' => $kadar_raw,
|
||||||
'ujrah' => $ujrah,
|
'ujrah' => $ujrah,
|
||||||
'onepercent' => $onepercent,
|
'onepercent' => $onepercent,
|
||||||
'margin_semasa' => $margin_pinjam,
|
'margin_semasa' => $margin_pinjam,
|
||||||
|
|||||||
Reference in New Issue
Block a user