calculation for kadar anggota koperasi

This commit is contained in:
nurafrinaalimi16
2025-11-10 19:11:13 +08:00
parent fed2cfea72
commit a3cb756f6b
4 changed files with 141 additions and 22 deletions
+54 -5
View File
@@ -3,6 +3,9 @@
namespace App\Support\v2;
use App\KadarUpah;
use App\Customer;
use Illuminate\Support\Facades\Log;
use Illuminate\Http\Request;
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){
$this->one_percent = $this->getKadarUpah($nilaimarhun);
$onepercent = $this->kiraanOnePercent($pembiayaan);
$ujrah_sebenar = $this->kiraanUjrahSebenar($nilaimarhun,$kadarujrah,$margin);
@@ -83,13 +85,60 @@ class Calculation
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();
return isset($kadarujrah[0]) ? $kadarujrah[0]['kadarujrah'] : 0;
// 2️⃣ Jika anggota koperasi → kadar tetap
if ($customer && (int)$customer->tag_anggota === 1) {
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){
$kadarupah = KadarUpah::on('mysql7')->where([['min','<=',$nilaimarhun],['max','>=',$nilaimarhun]])->where('group_id',1)->first();