Add feature forecast gadaian
This commit is contained in:
@@ -34,7 +34,7 @@ use App\Models\Customer;
|
||||
use App\Models\LelongTebus;
|
||||
use App\Models\Pengesahan;
|
||||
use App\Models\TransaksiKeuntungan;
|
||||
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
use Carbon\Carbon;
|
||||
|
||||
@@ -1282,11 +1282,216 @@ class ReportController extends Controller
|
||||
|
||||
return $pdf->download('Senarai Ubah Marhun.pdf');
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public function forecastGadaian()
|
||||
{
|
||||
$user = Auth::user();
|
||||
|
||||
|
||||
$lelong_id_latest_updated_lelkarat = LelKarat::orderBy('updated_at', 'desc')->select('lelong_id')->first();
|
||||
$lel_karat_all = LelKarat::where('lelong_id', $lelong_id_latest_updated_lelkarat->lelong_id)->select('lelong_id', 'karat', 'harga2', 'updated_at')->get();
|
||||
$lelong = Lelong::find($lelong_id_latest_updated_lelkarat->lelong_id, ['id', 'cajlelong', 'tarikh_lelong']);
|
||||
|
||||
return view('forecastgadaian.cawangan', compact('user', 'lel_karat_all', 'lelong'));
|
||||
}
|
||||
|
||||
public function searchForecastGadaian(Request $request)
|
||||
{
|
||||
$gadai_all = collect();
|
||||
|
||||
$lel_karat_all = $request->lel_karat;
|
||||
|
||||
if ($request->search_type == "custom-search") {
|
||||
$raw_queries = "(jbg = " . $request->jbg . " or jbg = " . ($request->jbg + 0.5) . ") ";
|
||||
if ($request->pinjaman == 1000.00) {
|
||||
$raw_queries = $raw_queries . "and pinjaman <= " . $request->pinjaman;
|
||||
} else if ($request->pinjaman == 10000.01) {
|
||||
$raw_queries = $raw_queries . "and pinjaman >= " . $request->pinjaman;
|
||||
} else {
|
||||
$raw_queries = $raw_queries . "and pinjaman between " . $request->pinjaman . " and " . ($request->pinjaman + 1000 - 0.01);
|
||||
}
|
||||
} else if ($request->search_type == "nokp-search") {
|
||||
$raw_queries = "nokp = '" . $request->nokp . "'";
|
||||
} else if ($request->search_type == "norujukan-search") {
|
||||
$raw_queries = "norujukan = '" . $request->norujukan . "'";
|
||||
}
|
||||
|
||||
$gadai_all = Gadai::on($request->kodcaw)
|
||||
->with('gadaiMarhun:norujukan,karat,berat,marhun')
|
||||
->whereRaw($raw_queries)
|
||||
->where('sttebus', "")
|
||||
->where('taglel', 0)
|
||||
->orderBy('t_gadai', 'DESC')
|
||||
->select('nokp', 'norujukan', 'percentpinj', 'tempoh', 'pinjaman', 'kadarupah', 'bakipjm', 'tempohbayar', 'berat')
|
||||
->get();
|
||||
|
||||
|
||||
if ($gadai_all->isNotEmpty()) {
|
||||
|
||||
$gadai_all = $gadai_all->map(function ($item) {
|
||||
$item->keuntungan_semasa = number_format(0.00, 2, '.', ',');
|
||||
return $item;
|
||||
});
|
||||
|
||||
$gadai_all_pluck_no_kp = $gadai_all->pluck('nokp')->unique();
|
||||
|
||||
$customers = Customer::whereIn('kpbaru', $gadai_all_pluck_no_kp)
|
||||
->orWhereIn('kplama', $gadai_all_pluck_no_kp)
|
||||
->select(
|
||||
'nama',
|
||||
'kpbaru',
|
||||
'kplama',
|
||||
'telefon',
|
||||
'alamat1'
|
||||
)
|
||||
->get();
|
||||
|
||||
foreach ($customers as $index => $customer) {
|
||||
if ($customer->kpbaru != '') {
|
||||
$customers[$index]['nokp'] = $customer->kpbaru;
|
||||
} elseif ($customer->kplama != '') {
|
||||
$customers[$index]['nokp'] = $customer->kplama;
|
||||
}
|
||||
}
|
||||
|
||||
$customers_key_by_no_kp = $customers->keyBy('nokp');
|
||||
|
||||
foreach ($gadai_all as $index => $gadai) {
|
||||
if ($customers_key_by_no_kp[$gadai->nokp]) {
|
||||
$gadai_all[$index]['customer_detail'] = $customers_key_by_no_kp[$gadai->nokp];
|
||||
}
|
||||
}
|
||||
|
||||
$gadai_all_keyby_pluck_norujukan = $gadai_all->pluck('norujukan');
|
||||
|
||||
$transaksi_keuntungan_all = TransaksiKeuntungan::whereIn('norujukan', $gadai_all_keyby_pluck_norujukan)->select('norujukan', 'keuntungan_rebet', 'bayaran_keuntungan')->get();
|
||||
|
||||
$transaksi_keuntungan_all_groupby_norujukan = $transaksi_keuntungan_all->groupBy('norujukan');
|
||||
|
||||
$gadai_all_keyby_norujukan = $gadai_all->keyBy('norujukan');
|
||||
|
||||
foreach ($transaksi_keuntungan_all_groupby_norujukan as $index => $transaksi_keuntungan) {
|
||||
if ($gadai_all_keyby_norujukan[$index]) {
|
||||
$gadai_true = $gadai_all_keyby_norujukan[$index];
|
||||
|
||||
$total_rebet = $transaksi_keuntungan->sum('keuntungan_rebet');
|
||||
$total_keuntungan_asal = $transaksi_keuntungan->sum('bayaran_keuntungan');
|
||||
$beza_keuntungan = $total_keuntungan_asal - $total_rebet;
|
||||
|
||||
if ($gadai_true->tempohbayar == $gadai_true->tempoh) {
|
||||
$keuntungan_belum_bayar = 0.00;
|
||||
} else if ($gadai_true->tempohbayar >= 12) {
|
||||
$keuntungan_belum_bayar = 0.00;
|
||||
} else {
|
||||
$jbg_belum_bayar = $gadai_true->tempoh - $gadai_true->tempohbayar;
|
||||
$jbg_belum_bayar_2 = 12 - $gadai_true->tempohbayar;
|
||||
if ($gadai_true->tempoh <= '12.00') {
|
||||
$keuntungan_belum_bayar = bcdiv($gadai_true->bakipjm * $gadai_true->kadarupah / 100 * $jbg_belum_bayar, 1, 1) - $beza_keuntungan;
|
||||
} else {
|
||||
$keuntungan_belum_bayar = bcdiv($gadai_true->bakipjm * $gadai_true->kadarupah / 100 * $jbg_belum_bayar_2, 1, 1) - $beza_keuntungan;
|
||||
}
|
||||
}
|
||||
$gadai_true['total_keuntungan_asal'] = $total_keuntungan_asal;
|
||||
$gadai_true['jbg_belum_bayar'] = $jbg_belum_bayar;
|
||||
$gadai_true['beza_keuntungan'] = $beza_keuntungan;
|
||||
$gadai_true['keuntungan_semasa'] = $keuntungan_belum_bayar;
|
||||
}
|
||||
}
|
||||
|
||||
$lel_karat_key_by_karat = collect($lel_karat_all)->keyBy('karat');
|
||||
|
||||
foreach ($gadai_all as $index90 => $gadai) {
|
||||
|
||||
if (!$transaksi_keuntungan_all->contains('norujukan', $gadai->norujukan)) {
|
||||
if ($gadai->tempohbayar == $gadai->tempoh) {
|
||||
$keuntungan_belum_bayar = 0.00;
|
||||
} else if ($gadai->tempohbayar >= 12) {
|
||||
$keuntungan_belum_bayar = 0.00;
|
||||
} else {
|
||||
$jbg_belum_bayar = $gadai->tempoh - $gadai->tempohbayar;
|
||||
$jbg_belum_bayar_2 = 12 - $gadai->tempohbayar;
|
||||
if ($gadai->tempoh <= '12.00') {
|
||||
$keuntungan_belum_bayar = bcdiv($gadai->bakipjm * $gadai->kadarupah / 100 * $jbg_belum_bayar, 1, 1);
|
||||
} else {
|
||||
$keuntungan_belum_bayar = bcdiv($gadai->bakipjm * $gadai->kadarupah / 100 * $jbg_belum_bayar_2, 1, 1);
|
||||
}
|
||||
}
|
||||
$gadai['jbg_belum_bayar'] = $jbg_belum_bayar;
|
||||
$gadai['keuntungan_semasa'] = $keuntungan_belum_bayar;
|
||||
}
|
||||
$jumlah_harga_emas = 0;
|
||||
foreach ($gadai->gadaiMarhun as $index65 => $marhun) {
|
||||
if ($lel_karat_key_by_karat[$marhun->karat]) {
|
||||
$lel_karat_true = $lel_karat_key_by_karat[$marhun->karat];
|
||||
$harga_marhun_lelong = $marhun->berat * $lel_karat_true['harga2'];
|
||||
$gadai->gadaiMarhun[$index65]['harga_marhun_lelong'] = $harga_marhun_lelong;
|
||||
}
|
||||
$jumlah_harga_emas += $marhun->harga_marhun_lelong;
|
||||
}
|
||||
$gadai_all[$index90]['harga_asas'] = round($jumlah_harga_emas);
|
||||
|
||||
$caj_lelong_bid = $gadai->harga_asas * ($request->caj_lelong / 100);
|
||||
|
||||
$gadai_all[$index90]['caj_lelong'] = round($caj_lelong_bid);
|
||||
|
||||
$baki_lelong = $gadai->harga_asas - $gadai->bakipjm - $gadai->keuntungan_semasa - round($caj_lelong_bid);
|
||||
$gadai_all[$index90]['test_ori_harga_asas'] = $gadai->harga_asas;
|
||||
$gadai_all[$index90]['test_ori_bakipjm'] = $gadai->bakipjm;
|
||||
$gadai_all[$index90]['test_ori_keuntungan_semasa'] = $gadai->keuntungan_semasa;
|
||||
$gadai_all[$index90]['test_ori_caj_lelong_bid'] = $caj_lelong_bid;
|
||||
$gadai_all[$index90]['test_ori_baki_lelong'] = $baki_lelong;
|
||||
$gadai_all[$index90]['test_harga_asas'] = floatval($gadai->harga_asas);
|
||||
$gadai_all[$index90]['test_bakipjm'] = floatval($gadai->bakipjm);
|
||||
$gadai_all[$index90]['test_keuntungan_semasa'] = $gadai->keuntungan_semasa;
|
||||
$gadai_all[$index90]['test_caj_lelong_bid'] = round($caj_lelong_bid);
|
||||
$gadai_all[$index90]['test_baki_lelong'] = $baki_lelong;
|
||||
|
||||
$gadai_all[$index90]['baki_lelong'] = $baki_lelong;
|
||||
|
||||
if ($gadai->tempoh <= 9) {
|
||||
$keuntungan_1_bulan = $gadai->bakipjm * ($gadai->kadarupah / 100);
|
||||
$baki_jbg_sebelum_9_bulan = 9 - $gadai->tempohbayar;
|
||||
if ($transaksi_keuntungan_all->contains('norujukan', $gadai->norujukan)) {
|
||||
$keuntungan_9_bulan = $keuntungan_1_bulan * $baki_jbg_sebelum_9_bulan;
|
||||
} else {
|
||||
$keuntungan_9_bulan = $keuntungan_1_bulan * $baki_jbg_sebelum_9_bulan;
|
||||
}
|
||||
$value_to_calculate = $keuntungan_9_bulan;
|
||||
} else {
|
||||
$keuntungan_9_bulan = 0.00;
|
||||
$value_to_calculate = $gadai->keuntungan_semasa;
|
||||
}
|
||||
|
||||
$gadai_all[$index90]['keuntungan_9_bulan'] = bcdiv($keuntungan_9_bulan, 1, 1);
|
||||
|
||||
$harga_sandaran = (floatval($gadai->bakipjm) + floatval($value_to_calculate) + floatval($gadai->caj_lelong)) / $gadai->berat;
|
||||
|
||||
$gadai_all[$index90]['harga_sandaran'] = bcdiv($harga_sandaran, 1, 1);
|
||||
|
||||
if ($request->pilihan_baki_lelong == 'positif') {
|
||||
if ($gadai->baki_lelong < 0) {
|
||||
$gadai_all->forget($index90);
|
||||
}
|
||||
} else if ($request->pilihan_baki_lelong == 'negatif') {
|
||||
if ($gadai->baki_lelong > 0) {
|
||||
$gadai_all->forget($index90);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$array_gadai = [];
|
||||
|
||||
foreach ($gadai_all as $gadai) {
|
||||
array_push($array_gadai, $gadai);
|
||||
}
|
||||
|
||||
if (sizeof($array_gadai) != 0) {
|
||||
return response()->json(["success" => true, "array_gadai" => $array_gadai]);
|
||||
} else {
|
||||
return response()->json(["success" => false, "array_gadai" => $array_gadai]);
|
||||
}
|
||||
} else {
|
||||
return response()->json(["success" => false, "array_gadai" => $gadai_all]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user