Merge remote-tracking branch 'origin/prod-kopkb' into test/merge-prod-kopkb

This commit is contained in:
nurafrinaalimi16
2026-09-01 11:15:13 +08:00
66 changed files with 6674 additions and 327 deletions
+45 -7
View File
@@ -4,6 +4,7 @@ namespace App\Support\v2;
use App\Audit;
use App\Cawangan;
use App\Customer;
use App\KadarUpah;
use App\Support\v2\Calculation;
use Carbon\Carbon;
@@ -57,6 +58,34 @@ class GadaiV2
}
}
private function getKadarUpahAnggota($nokp, $total_nilai_marhun = 0, $groupid = 2): ?float
{
if (!$nokp) {
return null; // tiada nokp = tak boleh tentukan kadar
}
$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['tag_anggota']) && $customer['tag_anggota'] == 1) {
return 0.00; // ahli — kadar 0.00 memang sah
}
$kadar = KadarUpah::where('min', '<=', $total_nilai_marhun)
->where('max', '>=', $total_nilai_marhun)
->where('group_id', $groupid)
->value('kadarujrah');
return is_null($kadar) ? null : (float) $kadar; // tak jumpa row = null (block)
}
public function createMarhun($norujukan,HttpRequest $request){
$current = Carbon::now();
$current = new Carbon();
@@ -82,15 +111,24 @@ class GadaiV2
$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();
$kadar_raw = $this->getKadarUpahAnggota($request->nokp, $total_nilai_marhun, $cawangan['group_id']);
if (is_null($kadar_raw)) {
Log::error('[BLOCKED] Kadar upah tidak dijumpai', [
'nokp' => $request->nokp,
'total_nilai_marhun' => $total_nilai_marhun,
'group_id' => $cawangan['group_id'],
]);
throw new \Exception("Kadar upah tidak dijumpai, transaksi dibatalkan!");
}
// $kadar_raw = 0.00 (ahli) akan lepas ke sini dan diteruskan
// 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);
$keuntungan = $onepercentservices->kiraanKeuntunganSebenar($request->pinjaman,$total_nilai_marhun,$kadar_raw,$margin_pinjam);
// $upah1 = $request->pinjaman * ($kadar_raw['kadarupdah']/100);
// $upah6 = $upah1 * 6;
// $upah12 = $upah1 * 12;
@@ -105,7 +143,7 @@ class GadaiV2
$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'])
->where('norujukan','=',$norujukan)
@@ -113,7 +151,7 @@ class GadaiV2
'nilaimarhun' => $total_nilai_marhun,
'berat'=> $total_berat,
'pinjaman' => $request->pinjaman,
'kadarupah' => $kadar_raw['kadarujrah'],
'kadarupah' => $kadar_raw,
'marhun' => $request->marhun,
'percentpinj' => $margin_pinjam,
'teller' => $request->teller,
@@ -134,7 +172,7 @@ class GadaiV2
'upahdibayar' => 0.00,
'tempohbayar' => 0.00,
'lelong_tawarruq' => 1,
'kadarujrah' => $kadar_raw['kadarujrah'],
'kadarujrah' => $kadar_raw,
'ujrah' => $ujrah,
'onepercent' => $onepercent,
'margin_semasa' => $margin_pinjam,