From e438bfe7bcd0f1db4006243ad8b2e3028c7b9195 Mon Sep 17 00:00:00 2001 From: Hafifie PKB Date: Wed, 28 Aug 2024 15:40:10 +0800 Subject: [PATCH 01/43] fix lejeram for lelong --- app/Http/Controllers/LaporanController.php | 2 +- app/Services/Reports/ImbangDugaService.php | 2 +- app/Services/Reports/OnePercentService.php | 16 +++++++++++++--- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/app/Http/Controllers/LaporanController.php b/app/Http/Controllers/LaporanController.php index a281168..d3db956 100644 --- a/app/Http/Controllers/LaporanController.php +++ b/app/Http/Controllers/LaporanController.php @@ -1336,7 +1336,7 @@ class LaporanController extends Controller ->get()->toArray(); $upahlelong = Lelong::on($cawangan['mysql']) - ->where([['t_jual','>=',$request->mula],['t_jual','<=',$request->hingga],['t_jual','>','2022-07-24']]) + ->where([['tagujrah','=',0],['t_jual','>=',$request->mula],['t_jual','<=',$request->hingga],['t_jual','>','2022-07-24']]) ->whereYear('t_jual','=',$mulaCarbon->year) ->sum('bakiupah'); diff --git a/app/Services/Reports/ImbangDugaService.php b/app/Services/Reports/ImbangDugaService.php index e84f781..9797da2 100644 --- a/app/Services/Reports/ImbangDugaService.php +++ b/app/Services/Reports/ImbangDugaService.php @@ -147,7 +147,7 @@ class ImbangDugaService ->get()->toArray(); $upahlelong = Lelong::on($cawangan['mysql']) - ->where([['t_jual', '>=', $firstMonth], ['t_jual', '<=', $lastMonth], ['t_jual', '>', '2022-07-24']]) + ->where([['tagujrah','=',0],['t_jual', '>=', $firstMonth], ['t_jual', '<=', $lastMonth], ['t_jual', '>', '2022-07-24']]) ->whereYear('t_jual', '=', $currentDate->year) ->sum('bakiupah'); diff --git a/app/Services/Reports/OnePercentService.php b/app/Services/Reports/OnePercentService.php index 141518f..ad3736e 100644 --- a/app/Services/Reports/OnePercentService.php +++ b/app/Services/Reports/OnePercentService.php @@ -5,6 +5,7 @@ namespace App\Services\Reports; use App\AkruNetPecahan; use App\Cawangan; use App\CawanganDetail; +use App\Lelong; use App\Gadai; use App\StokAudit1; use App\StokAudit10; @@ -409,8 +410,17 @@ class OnePercentService $ujrah_rebet = $this->filterCollection($keuntungan_semasa_collection,'T','ujrah_rebet'); $onepercent_rebet = $this->filterCollection($keuntungan_semasa_collection,'T','onepercent_rebet'); - $total_onepercent = $onepercent + $onepercent_rebet; - $total_ujrah = $ujrah + $ujrah_rebet; + $upahlelong = Lelong::on($cawangan['mysql']) + ->selectRaw('SUM(ujrah) as ujrah,SUM(onepercent) as onepercent') + ->where([['tagujrah','=',0],['t_jual','>=',$start],['t_jual','<=',$end]]) + ->whereYear('t_jual','=',$year) + ->get()->toArray(); + + $ujrah_lelong = (empty($upahlelong)) ? 0 : $upahlelong[0]['ujrah']; + $onepercent_lelong = (empty($upahlelong)) ? 0 : $upahlelong[0]['onepercent']; + + $total_onepercent = $onepercent + $onepercent_rebet + $onepercent_lelong; + $total_ujrah = $ujrah + $ujrah_rebet + $ujrah_lelong; return ['ujrah' => $total_ujrah,'onepercent' => $total_onepercent]; } @@ -479,7 +489,7 @@ class OnePercentService $array_type = ['T','S','P','AT']; return $collection->filter(function ($item) use($type,$array_type) { if($type == 'T') - return in_array($type, $array_type); + return in_array($item->trans_type, $array_type); return $item->trans_type === $type; })->sum($sumtype); From b4582dc170467a0cbc3c11fbe8706d24d7d93e2c Mon Sep 17 00:00:00 2001 From: BTMS2 Date: Mon, 9 Sep 2024 11:10:55 +0800 Subject: [PATCH 02/43] update tagujrah=1 --- app/Services/Reports/OnePercentService.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Services/Reports/OnePercentService.php b/app/Services/Reports/OnePercentService.php index ad3736e..6a6c88b 100644 --- a/app/Services/Reports/OnePercentService.php +++ b/app/Services/Reports/OnePercentService.php @@ -412,7 +412,7 @@ class OnePercentService $upahlelong = Lelong::on($cawangan['mysql']) ->selectRaw('SUM(ujrah) as ujrah,SUM(onepercent) as onepercent') - ->where([['tagujrah','=',0],['t_jual','>=',$start],['t_jual','<=',$end]]) + ->where([['tagujrah','=',1],['t_jual','>=',$start],['t_jual','<=',$end]]) ->whereYear('t_jual','=',$year) ->get()->toArray(); From d2d42d8b667a39a6fb3b321f64dc3f3d650d25e1 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 18 Sep 2024 11:51:35 +0800 Subject: [PATCH 03/43] add tagbaru di tebus controller --- app/Http/Controllers/TebusController.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/TebusController.php b/app/Http/Controllers/TebusController.php index 26525d5..eab6438 100644 --- a/app/Http/Controllers/TebusController.php +++ b/app/Http/Controllers/TebusController.php @@ -283,7 +283,8 @@ class TebusController extends Controller "nokp"=>$tebusData['nokp'], "jbg"=>$tebusData['jbg'], "ujrah"=>$trans['ujrah_rebet'], - "onepercent"=>$trans['onepercent_rebet'] + "onepercent"=>$trans['onepercent_rebet'], + "tagbaru"=>$tebusData['tagbaru'] ]); } From 2e4923262aad6d4feb9365c9942cc36d97f0ab18 Mon Sep 17 00:00:00 2001 From: Afiq Hamzah Date: Mon, 23 Sep 2024 11:59:01 +0800 Subject: [PATCH 04/43] Fix komoditi notification sends notification day not in business --- app/Jobs/WhatsappUnsoldCommodityNotification.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/Jobs/WhatsappUnsoldCommodityNotification.php b/app/Jobs/WhatsappUnsoldCommodityNotification.php index 01a698b..b8576e7 100644 --- a/app/Jobs/WhatsappUnsoldCommodityNotification.php +++ b/app/Jobs/WhatsappUnsoldCommodityNotification.php @@ -85,6 +85,11 @@ class WhatsappUnsoldCommodityNotification extends Job $logger->info('End time is in the past'); return false; } + + if (! $isLatestKomoditiToday) { + $logger->info('No commodity is bought today, so technically no komoditi is sold and notifications will not be sent'); + return false; + } if ($isLatestKomoditiToday && $isAllKomoditiSold) { $logger->info('All today komoditi is sold'); From beeeac7d966220d16b7e9d092646d08e34a561a3 Mon Sep 17 00:00:00 2001 From: Afiq Hamzah Date: Thu, 19 Sep 2024 14:59:32 +0800 Subject: [PATCH 05/43] Logs data when populating transactionOnline table --- .../Controllers/TransactionOnlineController.php | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/TransactionOnlineController.php b/app/Http/Controllers/TransactionOnlineController.php index 1e9689e..1a0113c 100644 --- a/app/Http/Controllers/TransactionOnlineController.php +++ b/app/Http/Controllers/TransactionOnlineController.php @@ -74,7 +74,7 @@ class TransactionOnlineController extends Controller $sag = Gadai::on($cawangan['mysql'])->where('norujukan', $request->norujukan)->first(); - $transaction = TransactionOnline::on('mysql7')->create([ + $transactionData = [ 'nokp' => $request->nokp, 'reference_no' => $request->reference_no, 'nosiri' => $request->nosiri, @@ -87,7 +87,17 @@ class TransactionOnlineController extends Controller 'customer_name' => $request->customer_name, 'tempohbayar' => $sag['tempoh'], 'jenisbayaran' => $request->jenisbayaran ? $request->jenisbayaran : 'A', - ]); + ]; + + + try { + $transaction = TransactionOnline::on('mysql7')->create($transactionData); + OnlineTransactionLoggerService::logsAfterDBTransaction($transaction, TransactionOnlineStatus::INITIALIZED_TRANSACTION, $transaction, $transactionData); + } catch (\Exception $e) { + OnlineTransactionLoggerService::logsAfterDBTransaction($transaction->billplz_id, TransactionOnlineStatus::INITIALIZED_TRANSACTION, $transactionData, $e->getMessage()); + throw $e; + } + return response()->json($transaction, 201); } @@ -109,7 +119,7 @@ class TransactionOnlineController extends Controller $current = new Carbon(); foreach ($transactions as $index => $transaction) { $cawangan = Cawangan::on('mysql7') - ->where('kodcaw', '=', $transaction['kodcaw']) + ->where('kodcaw', '=', $transaction['kodcaw']) ->first(); $gadai_data = Gadai::on($cawangan['mysql'])->where([['norujukan', $transaction['norujukan']], ['nokp', $transaction['nokp']]])->first(); if ($transaction->jenisbayaran == 'A') { From b164519864c8eaf3340cc0ad34936c58149be538 Mon Sep 17 00:00:00 2001 From: Afiq Hamzah Date: Sun, 22 Sep 2024 13:10:45 +0800 Subject: [PATCH 06/43] Fix missing property accessor billplz_id --- app/Http/Controllers/TransactionOnlineController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Controllers/TransactionOnlineController.php b/app/Http/Controllers/TransactionOnlineController.php index 1a0113c..88c45ac 100644 --- a/app/Http/Controllers/TransactionOnlineController.php +++ b/app/Http/Controllers/TransactionOnlineController.php @@ -92,7 +92,7 @@ class TransactionOnlineController extends Controller try { $transaction = TransactionOnline::on('mysql7')->create($transactionData); - OnlineTransactionLoggerService::logsAfterDBTransaction($transaction, TransactionOnlineStatus::INITIALIZED_TRANSACTION, $transaction, $transactionData); + OnlineTransactionLoggerService::logsAfterDBTransaction($transaction->billplz_id, TransactionOnlineStatus::INITIALIZED_TRANSACTION, $transaction, $transactionData); } catch (\Exception $e) { OnlineTransactionLoggerService::logsAfterDBTransaction($transaction->billplz_id, TransactionOnlineStatus::INITIALIZED_TRANSACTION, $transactionData, $e->getMessage()); throw $e; From 700f611ac6a1bc498f7a6432a270d703e524da04 Mon Sep 17 00:00:00 2001 From: Afiq Hamzah Date: Fri, 4 Oct 2024 21:49:23 +0800 Subject: [PATCH 07/43] Update TransactionOnlineTrailController --- .../TransactionOnlineTrailController.php | 122 +++++++++--------- 1 file changed, 58 insertions(+), 64 deletions(-) diff --git a/app/Http/Controllers/TransactionOnlineTrailController.php b/app/Http/Controllers/TransactionOnlineTrailController.php index ac1e4b3..9f55d96 100644 --- a/app/Http/Controllers/TransactionOnlineTrailController.php +++ b/app/Http/Controllers/TransactionOnlineTrailController.php @@ -16,12 +16,13 @@ class TransactionOnlineTrailController extends Controller public function index(Request $request) { - $date = $request->date ? $request->date : Carbon::now()->toDateString(); + $transactionsOnline = $this->getTransactionOnlineQuery($request); - $transactionsOnline = $this->getTransactionOnlineQuery($date, $request); - $transaction = $this->getTransactionQuery($date, $request); - $transaksiKeuntungan = $this->getTransaksiKeuntunganQuery($date, $request); - $glDetail = $this->getGlDetailQuery($date, $request); + $list_norujukan = array_map(fn($x) => ['norujukan' => $x['norujukan'], 'kodcaw' => $x['kodcaw']], $transactionsOnline); + + $transaction = $this->getTransactionQuery($list_norujukan, $request); + $transaksiKeuntungan = $this->getTransaksiKeuntunganQuery($list_norujukan, $request); + $glDetail = $this->getGlDetailQuery($list_norujukan, $request); return response()->json([ 'transactionsOnline' => $transactionsOnline, @@ -31,16 +32,22 @@ class TransactionOnlineTrailController extends Controller ]); } - private function getTransactionOnlineQuery($date, $request) + private function getTransactionOnlineQuery($request) { - $transactionOnline = TransactionOnline::whereDate('tarikh', $date) + $startDate = $request->startDate ? $request->startDate : Carbon::now()->toDateString(); + $endDate = $request->endDate ? $request->endDate : Carbon::now()->toDateString(); + + $transactionOnline = TransactionOnline::whereBetween('tarikh', [$startDate, $endDate]) + ->when($request->filled('billplzBillId'), function ($query) use ($request) { + return $query->where('billplz_id', $request->billplzBillId); + }) ->when($request->filled('norujukan'), function ($query) use ($request) { return $query->where('norujukan', $request->norujukan); }) ->get(); if ($transactionOnline->isEmpty()) { - $transactionOnline = TransactionOnline::whereDate('tarikh', $date) + $transactionOnline = TransactionOnline::whereBetween('tarikh', [$startDate, $endDate]) ->when($request->filled('norujukan'), function ($query) use ($request) { return $query->where('norujukan', 'LIKE', '%' . $request->norujukan . '%'); }) @@ -50,7 +57,9 @@ class TransactionOnlineTrailController extends Controller $transactionOnline = $transactionOnline ->sortByDesc('tarikh') ->sortByDesc('masa') - ->filter(fn($x) => $x['status'] === 'PAID') + ->when($request->filled('status'), function ($query) use ($request) { + return $query->where('status', $request->status); + }) ->when($request->filled('isGroupedByNorujukan') && $request->isGroupedByNorujukan === '1', function ($query) { return $query->groupBy('norujukan')->sortKeysDesc(); }) @@ -59,78 +68,56 @@ class TransactionOnlineTrailController extends Controller return $transactionOnline; } - private function getTransactionQuery($date, $request) + private function getTransactionQuery($list_norujukan, $request) { + $extract_norujukan = array_column($list_norujukan, 'norujukan'); + $startDate = $request->startDate ? $request->startDate : Carbon::now()->toDateString(); + $endDate = $request->endDate ? $request->endDate : Carbon::now()->toDateString(); - $transaction = Transaction::whereDate('created_at', $date) - ->where('teller', 'Online') - ->when($request->filled('norujukan'), function ($query) use ($request) { - return $query->where('norujukan', $request->norujukan); - }) - ->get(); - - if ($transaction->isEmpty()) { - $transaction = Transaction::whereDate('created_at', $date) - ->where('teller', 'Online') - ->when($request->filled('norujukan'), function ($query) use ($request) { - return $query->where('norujukan', 'LIKE', '%' . $request->norujukan . '%'); - }) - ->get(); - } + $transaction = Transaction::whereIn('norujukan', $extract_norujukan) + ->whereBetween('created_at', [$startDate, $endDate]) + ->where('teller', 'online') + ->get(); return $transaction - ->when($request->filled('isGroupedByNorujukan') && $request->isGroupedByNorujukan === '1', function ($query) { - return $query->groupBy('norujukan')->sortKeysDesc(); - }) - ->sortByDesc('created_at')->toArray(); + ->when($request->filled('isGroupedByNorujukan') && $request->isGroupedByNorujukan === '1', function ($query) { + return $query->groupBy('norujukan')->sortKeysDesc(); + }) + ->sortByDesc('created_at')->toArray(); } - private function getTransaksiKeuntunganQuery($date, $request) + private function getTransaksiKeuntunganQuery($list_norujukan, $request) { - $transaksiKeuntungan = TransaksiKeuntungan::whereDate('tarikh_bayaran', $date) - ->whereHas('transaction', function ($query) { - return $query->where('teller', 'Online'); - }) - ->when($request->filled('norujukan'), function ($query) use ($request) { - return $query->where('norujukan', $request->norujukan); - }) - ->get(); + $extract_norujukan = array_column($list_norujukan, 'norujukan'); + $startDate = $request->startDate ? $request->startDate : Carbon::now()->toDateString(); + $endDate = $request->endDate ? $request->endDate : Carbon::now()->toDateString(); - if ($transaksiKeuntungan->isEmpty()) { - $transaksiKeuntungan = TransaksiKeuntungan::whereDate('tarikh_bayaran', $date) - ->whereHas('transaction', function ($query) { - return $query->where('teller', 'Online'); - }) - ->when($request->filled('norujukan'), function ($query) use ($request) { - return $query->where('norujukan', 'LIKE', '%' . $request->norujukan . '%'); - }) - ->orderBy('id', 'desc') - ->get(); - } + $transaksiKeuntungan = TransaksiKeuntungan::whereIn('norujukan', $extract_norujukan) + ->whereBetween('tarikh_bayaran', [$startDate, $endDate]) + ->whereHas('transaction', fn($query) => $query->where('teller', 'online')) + ->get(); return $transaksiKeuntungan - ->when($request->filled('isGroupedByNorujukan') && $request->isGroupedByNorujukan === '1', function ($query) { - return $query->groupBy('norujukan')->sortKeysDesc(); - }) - ->toArray(); + ->when($request->filled('isGroupedByNorujukan') && $request->isGroupedByNorujukan === '1', function ($query) { + return $query->groupBy('norujukan')->sortKeysDesc(); + }) + ->toArray(); } - public function getGlDetailQuery($date, $request) + public function getGlDetailQuery($list_norujukan, $request) { + $startDate = $request->startDate ? $request->startDate : Carbon::now()->toDateString(); + $endDate = $request->endDate ? $request->endDate : Carbon::now()->toDateString(); + + $extract_norujukan = array_unique(array_column($list_norujukan, 'norujukan')); + $extract_kodcaw = array_unique(array_column($list_norujukan, 'kodcaw')); $isGroupByNorujukan = $request->filled('isGroupedByNorujukan') && $request->isGroupedByNorujukan === '1'; - $connectionCawangan = Cawangan::on('mysql7')->where('kodcaw', 'KB2')->first()->mysql; + $connectionCawangan = Cawangan::on('mysql7')->whereIn('kodcaw', $extract_kodcaw)->get()->pluck('mysql'); - $cawanganTransactionOnline = TransactionOnline::whereDate('tarikh', $date) - ->get() - ->pluck('kodcaw') - ->unique() - ->all(); - - $connectionCawangan = Cawangan::on('mysql7')->whereIn('kodcaw', $cawanganTransactionOnline)->get()->pluck('mysql'); - - $glDetail = $connectionCawangan->map(fn($x) => GlDetail::on($x)->where('teller', 'ONLINE')->whereDate('tarikh', $date)->orderBy('recno')->get()) + $glDetail = $connectionCawangan->map(fn($x) => GlDetail::on($x)->where('teller', 'ONLINE')->whereBetween('tarikh', [$startDate, $endDate]) + ->orderBy('recno')->get()) ->flatten() ->when($isGroupByNorujukan, function ($glDetail) { return $glDetail->groupBy('descpt') @@ -142,6 +129,13 @@ class TransactionOnlineTrailController extends Controller ->when($request->filled('norujukan'), function ($glDetail) use ($request) { return $glDetail->filter(fn($x) => strpos($x->descpt, $request->norujukan) !== false); }) + ->when($request->filled('billplzBillId'), function ($glDetail) use ($extract_norujukan) { + return $glDetail->filter(function ($x) use ($extract_norujukan) { + return collect($extract_norujukan)->contains(function ($norujukan) use ($x) { + return strpos($x->descpt, $norujukan) !== false; + }); + }); + }) ->toArray(); return $glDetail; From 217febba998ddd92a036f42a765e109b5c75eb7e Mon Sep 17 00:00:00 2001 From: Afiq Hamzah Date: Sun, 6 Oct 2024 10:15:24 +0800 Subject: [PATCH 08/43] Add filter cawangan to transaction online trail --- app/Http/Controllers/TransactionOnlineTrailController.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/Http/Controllers/TransactionOnlineTrailController.php b/app/Http/Controllers/TransactionOnlineTrailController.php index 9f55d96..79bb590 100644 --- a/app/Http/Controllers/TransactionOnlineTrailController.php +++ b/app/Http/Controllers/TransactionOnlineTrailController.php @@ -38,6 +38,9 @@ class TransactionOnlineTrailController extends Controller $endDate = $request->endDate ? $request->endDate : Carbon::now()->toDateString(); $transactionOnline = TransactionOnline::whereBetween('tarikh', [$startDate, $endDate]) + ->when($request->filled('branch'), function ($query) use ($request) { + return $query->where('kodcaw', $request->branch); + }) ->when($request->filled('billplzBillId'), function ($query) use ($request) { return $query->where('billplz_id', $request->billplzBillId); }) @@ -48,6 +51,9 @@ class TransactionOnlineTrailController extends Controller if ($transactionOnline->isEmpty()) { $transactionOnline = TransactionOnline::whereBetween('tarikh', [$startDate, $endDate]) + ->when($request->filled('branch'), function ($query) use ($request) { + return $query->where('kodcaw', $request->branch); + }) ->when($request->filled('norujukan'), function ($query) use ($request) { return $query->where('norujukan', 'LIKE', '%' . $request->norujukan . '%'); }) From c1d016b667f5b55a291e30df4f2ba5b8c7ed7be0 Mon Sep 17 00:00:00 2001 From: Afiq Hamzah Date: Sun, 6 Oct 2024 11:56:58 +0800 Subject: [PATCH 09/43] Fix date query --- .../TransactionOnlineTrailController.php | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/app/Http/Controllers/TransactionOnlineTrailController.php b/app/Http/Controllers/TransactionOnlineTrailController.php index 79bb590..99fff12 100644 --- a/app/Http/Controllers/TransactionOnlineTrailController.php +++ b/app/Http/Controllers/TransactionOnlineTrailController.php @@ -34,8 +34,8 @@ class TransactionOnlineTrailController extends Controller private function getTransactionOnlineQuery($request) { - $startDate = $request->startDate ? $request->startDate : Carbon::now()->toDateString(); - $endDate = $request->endDate ? $request->endDate : Carbon::now()->toDateString(); + $startDate = $request->startDate ? Carbon::parse($request->startDate)->startOfDay() : Carbon::now()->startOfDay(); + $endDate = $request->endDate ? Carbon::parse($request->endDate)->endOfDay() : Carbon::now()->endOfDay(); $transactionOnline = TransactionOnline::whereBetween('tarikh', [$startDate, $endDate]) ->when($request->filled('branch'), function ($query) use ($request) { @@ -77,8 +77,8 @@ class TransactionOnlineTrailController extends Controller private function getTransactionQuery($list_norujukan, $request) { $extract_norujukan = array_column($list_norujukan, 'norujukan'); - $startDate = $request->startDate ? $request->startDate : Carbon::now()->toDateString(); - $endDate = $request->endDate ? $request->endDate : Carbon::now()->toDateString(); + $startDate = $request->startDate ? Carbon::parse($request->startDate)->startOfDay() : Carbon::now()->startOfDay(); + $endDate = $request->endDate ? Carbon::parse($request->endDate)->endOfDay() : Carbon::now()->endOfDay(); $transaction = Transaction::whereIn('norujukan', $extract_norujukan) ->whereBetween('created_at', [$startDate, $endDate]) @@ -95,8 +95,8 @@ class TransactionOnlineTrailController extends Controller private function getTransaksiKeuntunganQuery($list_norujukan, $request) { $extract_norujukan = array_column($list_norujukan, 'norujukan'); - $startDate = $request->startDate ? $request->startDate : Carbon::now()->toDateString(); - $endDate = $request->endDate ? $request->endDate : Carbon::now()->toDateString(); + $startDate = $request->startDate ? Carbon::parse($request->startDate)->startOfDay() : Carbon::now()->startOfDay(); + $endDate = $request->endDate ? Carbon::parse($request->endDate)->endOfDay() : Carbon::now()->endOfDay(); $transaksiKeuntungan = TransaksiKeuntungan::whereIn('norujukan', $extract_norujukan) ->whereBetween('tarikh_bayaran', [$startDate, $endDate]) @@ -112,8 +112,8 @@ class TransactionOnlineTrailController extends Controller public function getGlDetailQuery($list_norujukan, $request) { - $startDate = $request->startDate ? $request->startDate : Carbon::now()->toDateString(); - $endDate = $request->endDate ? $request->endDate : Carbon::now()->toDateString(); + $startDate = $request->startDate ? Carbon::parse($request->startDate)->startOfDay() : Carbon::now()->startOfDay(); + $endDate = $request->endDate ? Carbon::parse($request->endDate)->endOfDay() : Carbon::now()->endOfDay(); $extract_norujukan = array_unique(array_column($list_norujukan, 'norujukan')); $extract_kodcaw = array_unique(array_column($list_norujukan, 'kodcaw')); From 8de04b88a6cbe6a6fdc37c3bc5d98aca55bdc6e9 Mon Sep 17 00:00:00 2001 From: Afiq Hamzah Date: Sun, 6 Oct 2024 13:12:16 +0800 Subject: [PATCH 10/43] Add counter badge of transaction online trail controller --- app/Http/Controllers/TransactionOnlineTrailController.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/TransactionOnlineTrailController.php b/app/Http/Controllers/TransactionOnlineTrailController.php index 99fff12..554e226 100644 --- a/app/Http/Controllers/TransactionOnlineTrailController.php +++ b/app/Http/Controllers/TransactionOnlineTrailController.php @@ -18,7 +18,13 @@ class TransactionOnlineTrailController extends Controller $transactionsOnline = $this->getTransactionOnlineQuery($request); - $list_norujukan = array_map(fn($x) => ['norujukan' => $x['norujukan'], 'kodcaw' => $x['kodcaw']], $transactionsOnline); + $list_norujukan = []; + + if($request->isGroupedByNorujukan){ + $list_norujukan = array_map(fn($x) => ['norujukan' => reset($x)['norujukan'], 'kodcaw' => reset($x)['kodcaw']], $transactionsOnline); + } else { + $list_norujukan = array_map(fn($x) => ['norujukan' => $x['norujukan'], 'kodcaw' => $x['kodcaw']], $transactionsOnline); + } $transaction = $this->getTransactionQuery($list_norujukan, $request); $transaksiKeuntungan = $this->getTransaksiKeuntunganQuery($list_norujukan, $request); From 3680e516da3a007455f451938b1334c9aa0d1e33 Mon Sep 17 00:00:00 2001 From: Afiq Hamzah Date: Sun, 6 Oct 2024 16:20:19 +0800 Subject: [PATCH 11/43] afiqhamzah/fix/change-time-reference-of-online-transaction --- app/Http/Controllers/TransactionOnlineController.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/TransactionOnlineController.php b/app/Http/Controllers/TransactionOnlineController.php index 88c45ac..c8f5440 100644 --- a/app/Http/Controllers/TransactionOnlineController.php +++ b/app/Http/Controllers/TransactionOnlineController.php @@ -376,7 +376,7 @@ class TransactionOnlineController extends Controller try { - DB::connection('mysql7')->transaction(function () use ($norujukan, $gadai, $kodcaw, $current, $baki_hargajualan, $cawangan, $old_data, $lelong_tawarruq, $margin_semasa, $bayaran, $tempohbayar, $bill_id) { + DB::connection('mysql7')->transaction(function () use ($norujukan, $gadai, $kodcaw, $current, $baki_hargajualan, $cawangan, $old_data, $lelong_tawarruq, $margin_semasa, $bayaran, $tempohbayar, $bill_id, $paid_at) { $data = [ 'trans_type' => 'A', @@ -385,7 +385,7 @@ class TransactionOnlineController extends Controller 'teller' => 'Online', 'kodcaw' => $kodcaw, 'duit_masuk' => $bayaran, - 'created_at' => $current, + 'created_at' => $paid_at, 'bakiharga' => $baki_hargajualan, ]; @@ -424,6 +424,7 @@ class TransactionOnlineController extends Controller 'tempoh' => 0, 'beza_tempoh' => 0, 'margin_semasa' => 0, + 'tarikh_bayaran' => $paid_at, ]; try { @@ -469,6 +470,7 @@ class TransactionOnlineController extends Controller 'tempoh' => $gadai['tempoh'], 'beza_tempoh' => $bilang_bln, 'margin_semasa' => $margin_semasa, + 'tarikh_bayaran' => $paid_at, ]; try { From d3fe2cf03db9d254a3bbbe5e5c91128e3e99699c Mon Sep 17 00:00:00 2001 From: hafifierahman Date: Tue, 8 Oct 2024 07:48:21 +0800 Subject: [PATCH 12/43] added account service --- app/Http/Controllers/AdminPageController.php | 160 +++-- app/Http/Controllers/LaporanController.php | 4 +- app/Http/Controllers/TebusController.php | 121 +++- .../Reports/Account/GeneralLedger.php | 631 ++++++++++++++++++ app/Services/Reports/AccountService.php | 37 + app/Services/Reports/ImbangDugaService.php | 134 ++-- app/Services/Reports/OnePercentService.php | 4 +- 7 files changed, 924 insertions(+), 167 deletions(-) create mode 100644 app/Services/Reports/Account/GeneralLedger.php create mode 100644 app/Services/Reports/AccountService.php diff --git a/app/Http/Controllers/AdminPageController.php b/app/Http/Controllers/AdminPageController.php index 076cf73..5305d2e 100644 --- a/app/Http/Controllers/AdminPageController.php +++ b/app/Http/Controllers/AdminPageController.php @@ -54,6 +54,7 @@ use App\RingkasanGadai; use App\RingkasanLelong; use App\RingkasanMain; use App\RingkasanTebus; +use App\imbangdugabackup; use App\Services\RingkasanHarianServices; use Illuminate\Support\Facades\DB; use DateTime; @@ -3120,80 +3121,111 @@ class AdminPageController extends Controller $year = $current->year; $month = $tarikh->month; - $get_norujukan = Gadai::on($cawangan['mysql']) - ->selectRaw("norujukan,CASE WHEN (YEAR(t_gadai) = YEAR(t_update) and MONTH(t_gadai) = MONTH(t_update)) THEN '1' ELSE '0' END AS result") - ->whereNotNull('hargajualan') - ->having('result','=',1) - ->whereYear('t_gadai','=',$year) - ->whereMonth('t_gadai','<=',$month) - ->where('sttebus','<>','') - ->pluck('norujukan'); - - $sum_keun = Transaction::on('mysql7') - ->selectRaw("trans.norujukan,SUM(CASE WHEN (transaction.trans_type) <> 'A' THEN (trans.keuntungan_rebet) ELSE 0 END) AS sum_keun,SUM(CASE WHEN (transaction.trans_type) = 'A' THEN (trans.bayaran_keuntungan) ELSE 0 END) AS sum_bayaran") - ->leftJoin('transaksi_keuntungan as trans', function($join) - { - $join->on('transaction.norujukan', '=', 'trans.norujukan'); - $join->on('transaction.created_at', '=', 'trans.tarikh_bayaran'); - }) - ->whereIn('trans.norujukan',$get_norujukan)->get()->toArray(); - - $sum_keuntungan = ($sum_keun) ? $sum_keun[0]['sum_keun'] : 0; - $sum_bayaran = ($sum_keun) ? $sum_keun[0]['sum_bayaran'] : 0; - - /* Ansuran masuk dalam ni */ - - $collection_trans = TransaksiKeuntungan::on('mysql7') - ->leftJoin('transaction as trans', function($join) - { - $join->on('transaksi_keuntungan.norujukan', '=', 'trans.norujukan'); - $join->on('transaksi_keuntungan.tarikh_bayaran', '=', 'trans.created_at'); - }) - ->where('trans.kodcaw','=',$request->kodcaw) - ->where('trans.trans_type','=','A') - ->where('transaksi_keuntungan.margin_semasa','>','0') - ->whereYear('transaksi_keuntungan.tarikh_bayaran','=',$year) - ->whereMonth('transaksi_keuntungan.tarikh_bayaran','<=',$month) - ->get(); - - - $array_norujukan = $collection_trans->pluck('norujukan')->toArray(); - - $collection_gadai = Gadai::on($cawangan['mysql'])->whereIn('norujukan',$array_norujukan)->where('tagbaru',1)->get(); - - $keuntungan_semasa_collection = $collection_trans->filter(function ($trans) use ($collection_gadai) { - - foreach ($collection_gadai as $gadai) { - if($gadai->norujukan === $trans->norujukan){ - $t_gadai = Carbon::parse($gadai->t_gadai); - $t_bayaran = Carbon::parse($trans->tarikh_bayaran); - - if ($t_gadai->month !== $t_bayaran->month) { - return false; - } - } - } - return true; - }); - - $summation_ansuran = $keuntungan_semasa_collection->sum('bayaran_keuntungan'); - - // $get_norujukan_ansuran = Gadai::on($cawangan['mysql']) + // $get_norujukan = Gadai::on($cawangan['mysql']) // ->selectRaw("norujukan,CASE WHEN (YEAR(t_gadai) = YEAR(t_update) and MONTH(t_gadai) = MONTH(t_update)) THEN '1' ELSE '0' END AS result") // ->whereNotNull('hargajualan') // ->having('result','=',1) // ->whereYear('t_gadai','=',$year) // ->whereMonth('t_gadai','<=',$month) - // ->where('sttebus','=','') - // ->where('tagbaru','=',1) + // ->where('sttebus','<>','') // ->pluck('norujukan'); - // $summation_ansuran = TransaksiKeuntungan::on('mysql7') - // ->whereIn('norujukan',$get_norujukan_ansuran)->sum('bayaran_keuntungan'); + // $sum_keun = Transaction::on('mysql7') + // ->selectRaw("trans.norujukan,SUM(CASE WHEN (transaction.trans_type) <> 'A' THEN (trans.keuntungan_rebet) ELSE 0 END) AS sum_keun,SUM(CASE WHEN (transaction.trans_type) = 'A' THEN (trans.bayaran_keuntungan) ELSE 0 END) AS sum_bayaran") + // ->leftJoin('transaksi_keuntungan as trans', function($join) + // { + // $join->on('transaction.norujukan', '=', 'trans.norujukan'); + // $join->on('transaction.created_at', '=', 'trans.tarikh_bayaran'); + // }) + // ->whereIn('trans.norujukan',$get_norujukan)->get()->toArray(); + + // $sum_keuntungan = ($sum_keun) ? $sum_keun[0]['sum_keun'] : 0; + // $sum_bayaran = ($sum_keun) ? $sum_keun[0]['sum_bayaran'] : 0; + + // /* Ansuran masuk dalam ni */ + + // $collection_trans = TransaksiKeuntungan::on('mysql7') + // ->leftJoin('transaction as trans', function($join) + // { + // $join->on('transaksi_keuntungan.norujukan', '=', 'trans.norujukan'); + // $join->on('transaksi_keuntungan.tarikh_bayaran', '=', 'trans.created_at'); + // }) + // ->where('trans.kodcaw','=',$request->kodcaw) + // ->where('trans.trans_type','=','A') + // ->where('transaksi_keuntungan.margin_semasa','>','0') + // ->whereYear('transaksi_keuntungan.tarikh_bayaran','=',$year) + // ->whereMonth('transaksi_keuntungan.tarikh_bayaran','<=',$month) + // ->get(); + // $array_norujukan = $collection_trans->pluck('norujukan')->toArray(); + + // $collection_gadai = Gadai::on($cawangan['mysql'])->whereIn('norujukan',$array_norujukan)->where('tagbaru',1)->get(); + + // $keuntungan_semasa_collection = $collection_trans->filter(function ($trans) use ($collection_gadai) { + + // foreach ($collection_gadai as $gadai) { + // if($gadai->norujukan === $trans->norujukan){ + // $t_gadai = Carbon::parse($gadai->t_gadai); + // $t_bayaran = Carbon::parse($trans->tarikh_bayaran); + + // if ($t_gadai->month !== $t_bayaran->month) { + // return false; + // } + // } + // } + // return true; + // }); + + // $summation_ansuran = $keuntungan_semasa_collection->sum('bayaran_keuntungan'); + + + // $total = $sum_keuntungan + $sum_bayaran + $summation_ansuran; + + $lastDayPreviousMonth = $tarikh->subMonthsNoOverflow()->endOfMonth()->toDateString(); + + $get_imbangduga = imbangdugabackup::on($cawangan['mysql'])->where('tarikh',$lastDayPreviousMonth)->first()->toArray(); + + $collection_trans = Transaction::on('mysql7') + ->leftJoin('transaksi_keuntungan as trans', function ($join) { + $join->on('transaction.norujukan', '=', 'trans.norujukan'); + $join->on('transaction.created_at', '=', 'trans.tarikh_bayaran'); + }) + ->where('transaction.kodcaw', $request->kodcaw) + ->whereYear('transaction.created_at', '=', $year) + ->whereMonth('transaction.created_at', '=', $month) + ->get(); + + $array_norujukan = $collection_trans->pluck('norujukan')->toArray(); + + $collection_gadai = Gadai::on($cawangan['mysql'])->whereIn('norujukan', $array_norujukan)->whereYear('t_gadai',$year)->get(); + + $keuntungan_semasa_collection = $collection_trans->filter(function ($trans) use ($collection_gadai) { + foreach ($collection_gadai as $gadai) { + if ($gadai->norujukan === $trans->norujukan) { + $t_gadai = Carbon::parse($gadai->t_gadai); + $t_bayaran = Carbon::parse($trans->tarikh_bayaran); + + if ($t_gadai->month !== $t_bayaran->month) { + return false; + }else{ + return true; + } + } + } + return false; + }); + + $total_ansuran = $keuntungan_semasa_collection->filter(function ($transaction){ + return $transaction->trans_type == 'A'; + })->sum('bayaran_keuntungan'); + + $total_tebus = $keuntungan_semasa_collection->filter(function ($transaction){ + return $transaction->trans_type !== 'A'; + })->sum('keuntungan_rebet'); + + $total = $total_ansuran + $total_tebus + $get_imbangduga['keun_sebenar']; - $total = $sum_keuntungan + $sum_bayaran + $summation_ansuran; return response()->json($total); } diff --git a/app/Http/Controllers/LaporanController.php b/app/Http/Controllers/LaporanController.php index 8a625b1..824055d 100644 --- a/app/Http/Controllers/LaporanController.php +++ b/app/Http/Controllers/LaporanController.php @@ -1307,10 +1307,12 @@ class LaporanController extends Controller if ($t_gadai->month !== $t_bayaran->month) { return false; + }else{ + return true; } } } - return true; + return false; }); $summation_ansuran = $keuntungan_semasa_collection->sum('bayaran_keuntungan'); diff --git a/app/Http/Controllers/TebusController.php b/app/Http/Controllers/TebusController.php index eab6438..402f8b9 100644 --- a/app/Http/Controllers/TebusController.php +++ b/app/Http/Controllers/TebusController.php @@ -1736,39 +1736,41 @@ class TebusController extends Controller $result_audit_backdate = $this->StokAuditGenerateTerakru($month_sebelum,$cawangan,$year_generate); } - $get_norujukan = Gadai::on($cawangan['mysql']) - ->selectRaw("norujukan,CASE WHEN (YEAR(t_gadai) = YEAR(t_update) and MONTH(t_gadai) = MONTH(t_update)) THEN '1' ELSE '0' END AS result") - ->whereNotNull('hargajualan') - ->having('result','=',1) - ->whereYear('t_gadai','=',$year) - //->whereMonth('t_gadai','>',7) - ->whereMonth('t_gadai','=',$month) - ->where('sttebus','<>','') - ->pluck('norujukan'); + // $get_norujukan = Gadai::on($cawangan['mysql']) + // ->selectRaw("norujukan,CASE WHEN (YEAR(t_gadai) = YEAR(t_update) and MONTH(t_gadai) = MONTH(t_update)) THEN '1' ELSE '0' END AS result") + // ->whereNotNull('hargajualan') + // ->having('result','=',1) + // ->whereYear('t_gadai','=',$year) + // //->whereMonth('t_gadai','>',7) + // ->whereMonth('t_gadai','=',$month) + // ->where('sttebus','<>','') + // ->pluck('norujukan'); - $sum_keun_tebus = Transaction::on('mysql7') - ->leftJoin('transaksi_keuntungan as trans', function($join) - { - $join->on('transaction.norujukan', '=', 'trans.norujukan'); - $join->on('transaction.created_at', '=', 'trans.tarikh_bayaran'); - }) - ->whereIn('trans.norujukan',$get_norujukan) - ->where('transaction.trans_type','<>','A') - ->where('trans.margin_semasa','=',0) //3.80 - ->sum('keuntungan_rebet'); + // $sum_keun_tebus = Transaction::on('mysql7') + // ->leftJoin('transaksi_keuntungan as trans', function($join) + // { + // $join->on('transaction.norujukan', '=', 'trans.norujukan'); + // $join->on('transaction.created_at', '=', 'trans.tarikh_bayaran'); + // }) + // ->whereIn('trans.norujukan',$get_norujukan) + // ->where('transaction.trans_type','<>','A') + // ->where('trans.margin_semasa','=',0) //3.80 + // ->sum('keuntungan_rebet'); - $sum_keun_ansuran = Transaction::on('mysql7') - ->leftJoin('transaksi_keuntungan as trans', function($join) - { - $join->on('transaction.norujukan', '=', 'trans.norujukan'); - $join->on('transaction.created_at', '=', 'trans.tarikh_bayaran'); - }) - ->whereIn('trans.norujukan',$get_norujukan) - ->where('transaction.trans_type','A') - ->where('trans.margin_semasa','=',0) - ->sum('bayaran_keuntungan'); + // $sum_keun_ansuran = Transaction::on('mysql7') + // ->leftJoin('transaksi_keuntungan as trans', function($join) + // { + // $join->on('transaction.norujukan', '=', 'trans.norujukan'); + // $join->on('transaction.created_at', '=', 'trans.tarikh_bayaran'); + // }) + // ->whereIn('trans.norujukan',$get_norujukan) + // ->where('transaction.trans_type','A') + // ->where('trans.margin_semasa','=',0) + // ->sum('bayaran_keuntungan'); - $total = $sum_keun_tebus + $sum_keun_ansuran; + // $total = $sum_keun_tebus + $sum_keun_ansuran; + + $total = $this->calculateKeuntunganSemasa($tarikh,$request->kodcaw); if(!$determine_past->isToday()){ $calculate_month = (int)$month_sekarang - $latest_month_akrunet->bulan; @@ -1893,6 +1895,65 @@ class TebusController extends Controller return response()->json($total_accrual_net); } + private function calculateKeuntunganSemasa($currentDate,$kodcaw) + { + $cawangan = Cawangan::on('mysql7')->where('kodcaw', '=', $kodcaw)->first(); + + $firstMonth = (clone $currentDate)->firstOfMonth(); + $lastMonth = (clone $currentDate)->endOfMonth(); + /* Start Keuntungan Semasa Calculation */ + + $collection_trans = Transaction::on('mysql7') + ->leftJoin('transaksi_keuntungan as trans', function ($join) { + $join->on('transaction.norujukan', '=', 'trans.norujukan'); + $join->on('transaction.created_at', '=', 'trans.tarikh_bayaran'); + }) + ->where('transaction.kodcaw', $kodcaw) + ->whereYear('transaction.created_at', '=', $currentDate->year) + ->whereMonth('transaction.created_at', '=', $currentDate->month) + ->get(); + + + $array_norujukan = $collection_trans->pluck('norujukan')->toArray(); + + $collection_gadai = Gadai::on($cawangan['mysql'])->whereIn('norujukan', $array_norujukan)->where('tagbaru',0)->get(); + + $keuntungan_semasa_collection = $collection_trans->filter(function ($trans) use ($collection_gadai) { + foreach ($collection_gadai as $gadai) { + if ($gadai->norujukan === $trans->norujukan) { + $t_gadai = Carbon::parse($gadai->t_gadai); + $t_bayaran = Carbon::parse($trans->tarikh_bayaran); + + if (($t_gadai->month == $t_bayaran->month) && ($t_gadai->year == $t_bayaran->year)) { + return false; + }else{ + return true; + } + } + } + return false; + }); + + $total_ansuran = $keuntungan_semasa_collection->filter(function ($transaction){ + return $transaction->trans_type == 'A'; + })->sum('bayaran_keuntungan'); + + $total_tebus = $keuntungan_semasa_collection->filter(function ($transaction){ + return $transaction->trans_type !== 'A'; + })->sum('keuntungan_rebet'); + + /* Keuntungan Lelong */ + $upahlelong = Lelong::on($cawangan['mysql']) + ->where([['t_jual', '>=', $firstMonth], ['t_jual', '<=', $lastMonth], ['t_jual', '>', '2022-07-24']]) + ->whereYear('t_jual', '=', $currentDate->year) + ->sum('bakiupah'); + + $total_keuntungan_semasa = ($total_ansuran + $total_tebus + $upahlelong); + + /* End Keuntungan Semasa Calculation */ + return $total_keuntungan_semasa; + } + public function kiraupahUjrahOnePercent($kodcaw,$norujukan){ $master = new MasterServices($kodcaw); $response = $master->kiraupahUjrahOnePercent($kodcaw,$norujukan); diff --git a/app/Services/Reports/Account/GeneralLedger.php b/app/Services/Reports/Account/GeneralLedger.php new file mode 100644 index 0000000..abe0e49 --- /dev/null +++ b/app/Services/Reports/Account/GeneralLedger.php @@ -0,0 +1,631 @@ +kodcaw = $kodcaw; + $this->mula = $mula; + $this->hingga = $hingga; + } + + private function getTarikhTawarruq($kodcaw){ + switch ($this->kodcaw) { + case 'KB2': + $tarikhtawarruq = '2021-04-13'; + break; + case 'WCY': + $tarikhtawarruq = '2021-05-04'; + break; + case '1STOP': + $tarikhtawarruq = '2021-05-09'; + break; + case '020301': + $tarikhtawarruq = '2021-05-18'; + break; + case 'ALS': + $tarikhtawarruq = '2021-05-24'; + break; + case 'WB': + $tarikhtawarruq = '2021-05-24'; + break; + case 'APM': + $tarikhtawarruq = '2021-06-08'; + break; + case 'ARM': + $tarikhtawarruq = '2021-06-08'; + break; + case '020306': + $tarikhtawarruq = '2021-06-08'; + break; + case '010311': + $tarikhtawarruq = '2021-06-13'; + break; + case 'GC': + $tarikhtawarruq = '2021-06-13'; + break; + case 'JLI': + $tarikhtawarruq = '2021-06-13'; + break; + case '010621': + $tarikhtawarruq = '2021-06-15'; + break; + case 'ARP': + $tarikhtawarruq = '2021-06-15'; + break; + case '010621': + $tarikhtawarruq = '2021-06-21'; + break; + case '010136': + $tarikhtawarruq = '2021-06-20'; + break; + case '011235': + $tarikhtawarruq = '2021-06-21'; + break; + case '011227': + $tarikhtawarruq = '2021-06-21'; + break; + case '010620': + $tarikhtawarruq = '2021-06-21'; + break; + case '010617': + $tarikhtawarruq = '2021-06-21'; + break; + case '010915': + $tarikhtawarruq = '2021-06-22'; + break; + case '011228': + $tarikhtawarruq = '2021-06-22'; + break; + case '010219': + $tarikhtawarruq = '2021-06-22'; + break; + case '011230': + $tarikhtawarruq = '2021-06-23'; + break; + case '011229': + $tarikhtawarruq = '2021-06-22'; + break; + case '011013': + $tarikhtawarruq = '2021-06-23'; + break; + case '011412': + $tarikhtawarruq = '2021-06-23'; + break; + case '011234': + $tarikhtawarruq = '2021-06-28'; + break; + case '020303': + $tarikhtawarruq = '2021-06-29'; + break; + case '010618': + $tarikhtawarruq = '2021-06-29'; + break; + case '011231': + $tarikhtawarruq = '2021-06-23'; + break; + case '011232': + $tarikhtawarruq = '2021-06-28'; + break; + case '011233': + $tarikhtawarruq = '2021-06-28'; + break; + } + + return $tarikhtawarruq; + } + + public function getPinjamanDiberi() + { + $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$this->kodcaw)->first(); + + $gadai = Gadai::on($cawangan['mysql']) + ->where('tagpalsu','=',0) + ->where([['t_gadai','>=',$this->mula],['t_gadai','<=',$this->hingga]]) + ->sum('pinjaman'); + + $tebus = Gadai::on($cawangan['mysql']) + ->join('tebus as teb','teb.norujukan','=','gadai.norujukan') + ->where('gadai.sttebus','=','T') + ->where([['teb.t_tebus','>=',$this->mula],['teb.t_tebus','<=',$this->hingga]]) + ->sum('teb.pinjaman'); + + $pembiayaanlelong = Lelong::on($cawangan['mysql']) + ->join('gadai as gad','gad.norujukan','=','lelong.norujukan') + ->where([['t_jual','>=',$this->mula],['t_jual','<=',$this->hingga]]) + ->sum('lelong.pinjaman'); + + $tebus = $tebus + $pembiayaanlelong; + + $array_rekodemas = ['Gadai' => $gadai,'Tebus' => $tebus]; + + return $array_rekodemas; + } + + public function getPembiayaanTawarruq() + { + + $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$this->kodcaw)->first(); + + $Gadai = Gadai::on($cawangan['mysql'])->where([['t_gadai','>=',$this->mula],['t_gadai','<=',$this->hingga],['hargajualan','<>','NULL']])->sum('pinjaman'); + + $Tebus = Gadai::on($cawangan['mysql']) + ->where('gadai.tagpalsu','=',0) + ->where([['gadai.t_update','>=',$this->mula],['gadai.t_update','<=',$this->hingga],['gadai.hargajualan','<>','NULL']]) + ->whereIn('gadai.sttebus', ['T', 'L']) + ->sum('gadai.pinjaman'); + + + $rekod_pinjamandiberi = ['Gadai' => $Gadai,'Tebus' => $Tebus]; + + return $rekod_pinjamandiberi; + } + + public function getBayaranPendahuluan() + { + $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$this->kodcaw)->first(); + + $datemula = new Carbon($this->mula); + $datemula->addDays(1); + + $datehingga = new Carbon($this->hingga); + $datehingga->addDays(1); + + $transaksi_data = TransaksiKeuntungan::on('mysql7') + ->whereDate('tarikh_bayaran','<=', $this->hingga) + ->whereDate('tarikh_bayaran','>=', $this->mula) + ->where('kodcaw',$this->kodcaw) + ->pluck('norujukan'); + + $transaksi_kredit_gadai = Gadai::on($cawangan['mysql']) + ->whereIn('norujukan',$transaksi_data) + ->where([['hargajualan','<>','null']]) + ->pluck('norujukan'); + + $transaksi_kredit = TransaksiKeuntungan::on('mysql7') + ->leftJoin('transaction as trans', function($join) + { + $join->on('transaksi_keuntungan.norujukan', '=', 'trans.norujukan'); + $join->on('transaksi_keuntungan.tarikh_bayaran', '=', 'trans.created_at'); + }) + ->whereIn('transaksi_keuntungan.norujukan',$transaksi_kredit_gadai) + ->where('trans.trans_type','=','A') + ->whereDate('tarikh_bayaran','<=', $this->hingga) + ->whereDate('tarikh_bayaran','>=', $this->mula) + ->sum('bayaran_pembiayaan'); + + + $tebus = Gadai::on($cawangan['mysql']) + ->select('gadai.norujukan','gadai.hargajualan','gadai.bakihargajualan') + ->whereIn('gadai.sttebus',['T','L']) + ->where([['t_update','>=',$this->mula],['t_update','<=',$this->hingga]]) + ->groupBy('gadai.norujukan') + ->get(); + + $arraytebus = array(); + + foreach($tebus as $index => $t) + { + if($t['hargajualan'] != $t['bakihargajualan']) + { + array_push($arraytebus,$t['norujukan']); + } + } + + $transaksi_debit = TransaksiKeuntungan::on('mysql7') + ->leftJoin('transaction as trans', function($join) + { + $join->on('transaksi_keuntungan.norujukan', '=', 'trans.norujukan'); + $join->on('transaksi_keuntungan.tarikh_bayaran', '=', 'trans.created_at'); + }) + ->where('trans.trans_type','=','A') + ->whereIn('trans.norujukan',$arraytebus) + ->sum('bayaran_pembiayaan'); + + $arraylejer = ["keluar" => $transaksi_debit,"masuk" => $transaksi_kredit]; + + return $arraylejer; + } + + public function getPendahuluanSerahan() + { + $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$this->kodcaw)->first(); + + $serahanpkb = '1000/020'; + $serahanjmc = '1000/026'; + $pendahuluanpkb = '7000/102'; + $pendahuluanjmc = '7000/106'; + $serahankoperasi = '1000/090'; + + //Selepas Tawarruq + + $serahanpkbTawarruq = GlDetail::on($cawangan['mysql']) + ->where('ktacct','=',$serahanpkb) + ->where('tarikh','>=', $this->mula) + ->where('tarikh','<=', $this->hingga) + ->where('tarikh','>','2021-03-24') + ->sum('serahan'); + + //Sebelum Tawarruq + if($this->kodcaw == 'KB2' || $this->kodcaw == 'WCY' || $this->kodcaw == '1STOP' || $this->kodcaw == 'ARM' || $this->kodcaw == 'APM' || $this->kodcaw == '010621' || $this->kodcaw == '010915') + { + $serahanpkb = GlDetail::on($cawangan['mysql']) + ->where('dtacct','=',$serahanpkb) + ->where('tarikh','>=', $this->mula) + ->where('tarikh','<=', $this->hingga) + ->where('tarikh','>','2013-12-31') + ->sum('amaun'); + + $serahanJMC = GlDetail::on($cawangan['mysql']) + ->where('dtacct','=',$serahanjmc) + ->where('tarikh','>=', $this->mula) + ->where('tarikh','<=', $this->hingga) + ->where('tarikh','>','2013-12-31') + ->sum('amaun'); + + + if($this->mula <= '2013-12-31') + { + $serahanpkblama = imbangdugalama::on($cawangan['mysql']) + ->sum('serahan_pkb'); + + $serahanjmclama = imbangdugalama::on($cawangan['mysql']) + ->sum('serahan_jmc'); + + $totaljmc = $serahanJMC + $serahanjmclama; + $totalpkb = $serahanpkb + $serahanpkblama; + + $totalserahan = $serahanpkbTawarruq + $totaljmc + $totalpkb; + }else{ + + $totaljmc = $serahanJMC; + $totalpkb = $serahanpkb; + + $totalserahan = $serahanpkbTawarruq + $totaljmc + $totalpkb; + } + + + }else{ + + if($this->kodcaw == '020301') + $serahanbaru = '1000/030'; + else + $serahanbaru = '1000/026'; + + $serahanpkb = GlDetail::on($cawangan['mysql']) + ->where('dtacct','=',$serahanpkb) + ->where('tarikh','>=', $this->mula) + ->where('tarikh','<=', $this->hingga) + ->sum('amaun'); + + $serahanJMC = GlDetail::on($cawangan['mysql']) + ->where('dtacct','=',$serahanbaru) + ->where('tarikh','>=', $this->mula) + ->where('tarikh','<=', $this->hingga) + ->sum('amaun'); + + $totalserahan = $serahanpkbTawarruq + $serahanpkb + $serahanJMC; + } + + //Selepas Tawarruq + + $pendahuluanPKBtawarruq = GlDetail::on($cawangan['mysql']) + ->where('ktacct','=',$pendahuluanpkb) + ->where([['tarikh','>=', $this->mula],['tarikh','<=', $this->hingga],['tarikh','>','2021-03-24']]) + ->sum('pendahuluan'); + + //Sebelum Tawarruq + + $pendahuluanPKB = GlDetail::on($cawangan['mysql']) + ->where('ktacct','=',$pendahuluanpkb) + ->where([['tarikh','>=', $this->mula],['tarikh','<=', $this->hingga],['tarikh','>','2013-12-31']]) + ->sum('amaun'); + + $pendahuluanJMC = GlDetail::on($cawangan['mysql']) + ->where('ktacct','=','7000/106') + ->where([['tarikh','>=', $this->mula],['tarikh','<=', $this->hingga],['tarikh','>','2013-12-31']]) + ->sum('amaun'); + + if($this->mula <= '2013-12-31') + { + $pendahuluanpkblama = imbangdugalama::on($cawangan['mysql']) + ->sum('pendahuluan_pkb'); + + $pendahuluanjmclama = imbangdugalama::on($cawangan['mysql']) + ->sum('pendahuluan_jmc'); + + $total = $pendahuluanPKBtawarruq + $pendahuluanjmclama + $pendahuluanpkblama + $pendahuluanPKB + $pendahuluanJMC; + + $pindahkekpkb = GlCode::on($cawangan['mysql']) + ->where('glcode','=',$serahankoperasi) + ->sum('amaun'); + }else{ + + $total = $pendahuluanPKBtawarruq + $pendahuluanPKB + $pendahuluanJMC; + + $pindahkekpkb = 0; + + } + + + $arraypend = ['pendahuluan' => $total,'serahan' => $totalserahan,'pindahkekpkb' => $pindahkekpkb]; + + return $arraypend; + } + + public function getpanjar() + { + + $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$this->kodcaw)->first(); + + $baikidanselenggara = Panjar::on($cawangan['mysql']) + ->where('tarikh','>=', $this->mula) + ->where('tarikh','<=', $this->hingga) + ->where('tag', '=', 2) + ->sum('bayaran'); + + $perubatan = Panjar::on($cawangan['mysql']) + ->where('tarikh','>=', $this->mula) + ->where('tarikh','<=', $this->hingga) + ->where('tag', '=', 1) + ->sum('bayaran'); + + $keraian = Panjar::on($cawangan['mysql']) + ->where('tarikh','>=', $this->mula) + ->where('tarikh','<=', $this->hingga) + ->where('tag', '=', 3) + ->sum('bayaran'); + + + $arraycalculation = ['bds' => $baikidanselenggara, 'perubatan' => $perubatan, 'keraian' => $keraian]; + + return $arraycalculation; + + } + + public function BakiLelongCalculation() + { + $cas_lelong = 0; + $jumlah_lelong = 0; + $baki_lelong = 0; + $rugi_lelong = 0; + + $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$this->kodcaw)->first(); + + + $bakilelong = Lelong::on($cawangan['mysql']) + ->where('trkhtuntut','>=',$this->mula) + ->where('trkhtuntut','<=',$this->hingga) + ->where('baki','>=',0) + ->sum('baki'); + + $rugilelong = Lelong::on($cawangan['mysql']) + ->where('trkhtuntut','>=',$this->mula) + ->where('trkhtuntut','<=',$this->hingga) + ->where('baki','<',0) + ->sum('baki'); + + $data_lelong = Lelong::on($cawangan['mysql'])->where([['t_jual','>=',$this->mula],['t_jual','<=',$this->hingga]])->get(); + + foreach($data_lelong as $index=>$lelong){ + if($lelong['baki'] >= 0){ + $cas_lelong += $lelong['cajlelong']; + $jumlah_lelong += $lelong['hargajual']; + $baki_lelong += $lelong['baki']; + }elseif($lelong['baki'] < 0){ + $cas_lelong += $lelong['cajlelong']; + $jumlah_lelong += $lelong['hargajual']; + $rugi_lelong += abs($lelong['baki']); + } + } + + $arraylelong = ['bakilelong' => $bakilelong, 'rugilelong' => $rugilelong, 'baki' => $baki_lelong, 'rugi' => $rugi_lelong, 'jumlahlelong' => $jumlah_lelong, 'caslelong' => $cas_lelong]; + + return $arraylelong; + } + + public function getKeuntunganSebenar() + { + $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$this->kodcaw)->first(); + + $total = 0; + $keuntungansebelumtawarruq = 0; + + //Keuntungan Selepas Tawarruq + $keuntungan_data = TransaksiKeuntungan::on('mysql7') + // ->join($cawangan['db_name'].'.gadai as db2','transaksi_keuntungan.norujukan','=','db2.norujukan') + ->whereDate('transaksi_keuntungan.tarikh_bayaran' ,'>=', $this->mula) + ->whereDate('transaksi_keuntungan.tarikh_bayaran' ,'<=', $this->hingga) + // ->whereYear('transaksi_keuntungan.tarikh_bayaran','=',$current->year) + // ->whereNull('db2.hargajualan') + // ->sum('bayaran_keuntungan'); + // ->get(); + ->pluck('norujukan'); + + $gadaiData = Gadai::on($cawangan['mysql'])->whereIn('norujukan', $keuntungan_data)->whereNull('hargajualan')->pluck('norujukan'); + + $keuntungan = TransaksiKeuntungan::on('mysql7')->whereIn('norujukan',$gadaiData)->sum('bayaran_keuntungan'); + + // $keuntungan = 0; + // if($keuntungan_data){ + // foreach($keuntungan_data as $index=>$keuntunganData){ + // $gadaiData = Gadai::on($cawangan['mysql'])->where([['norujukan',$keuntunganData['norujukan']],['hargajualan',null]])->first(); + // if($gadaiData){ + // $keuntungan += $keuntunganData['bayaran_keuntungan']; + // } + // } + // } + + $upahtebus = Tebus::on($cawangan['mysql']) + ->where([['t_tebus','>=',$this->mula],['t_tebus','<=',$this->hingga],['t_tebus','>','2013-12-31']]) + // ->whereYear('t_tebus','=',$current->year) + ->sum('upahdibayar'); + + $upahlelong = Lelong::on($cawangan['mysql']) + ->where([['t_jual','>=',$this->mula],['t_jual','<=',$this->hingga],['t_jual','>','2013-12-31'],['t_jual','<=','2022-07-24']]) + // ->whereYear('t_jual','=',$current->year) + ->sum('bakiupah'); + + $upahansur = Advansur::on($cawangan['mysql']) + ->where('tarikh','>=',$this->mula) + ->where('tarikh','<=',$this->hingga) + // ->whereYear('tarikh','=',$current->year) + ->sum('upahdibayar'); + + + $keuntungansebelumtawarruq = $upahtebus + $upahlelong + $upahansur; + + // $keuntunganselepastawarruq = $keuntunganselepastawarruqupah; + + // $total = $keuntungansebelumtawarruq + $keuntunganselepastawarruq; + + $total = $keuntungansebelumtawarruq + $keuntungan; + + return $total; + } + + public function SemakanKeuntunganLejer(){ + $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$this->kodcaw)->first(); + $current = Carbon::now(); + $current = new Carbon(); + + $mulaCarbon = new Carbon($this->mula); + $hinggaCarbon = new Carbon($this->hingga); + + /* Start Keuntungan Sebenar Calculation */ + $get_norujukan = Gadai::on($cawangan['mysql']) + ->selectRaw("norujukan,CASE WHEN (YEAR(t_gadai) = YEAR(t_update) and MONTH(t_gadai) = MONTH(t_update)) THEN '1' ELSE '0' END AS result") + ->whereNotNull('hargajualan')->having('result','=',1)->whereDate('t_update','>=',$this->mula)->whereDate('t_update','<=',$this->hingga)->where('sttebus','<>','')->pluck('norujukan'); + $sum_keun = Transaction::on('mysql7') + ->selectRaw("trans.norujukan,SUM(CASE WHEN (transaction.trans_type) <> 'A' THEN (trans.keuntungan_rebet) ELSE 0 END) AS sum_keun,SUM(CASE WHEN (transaction.trans_type) = 'A' AND (trans.margin_semasa) = 0 THEN (trans.bayaran_keuntungan) ELSE 0 END) AS sum_bayaran") + ->leftJoin('transaksi_keuntungan as trans', function($join) + { + $join->on('transaction.norujukan', '=', 'trans.norujukan'); + $join->on('transaction.created_at', '=', 'trans.tarikh_bayaran'); + }) + ->whereIn('trans.norujukan',$get_norujukan)->get()->toArray(); + + $sum_keuntungan = ($sum_keun) ? $sum_keun[0]['sum_keun'] : 0; + $sum_bayaran = ($sum_keun) ? $sum_keun[0]['sum_bayaran'] : 0; + + // $get_norujukan_ansuran = Gadai::on($cawangan['mysql']) + // ->selectRaw("norujukan,CASE WHEN (YEAR(t_gadai) = YEAR(t_update) and MONTH(t_gadai) = MONTH(t_update)) THEN '1' ELSE '0' END AS result") + // ->whereNotNull('hargajualan') + // ->having('result','=',1) + // ->whereDate('t_update','>=',$this->mula)->whereDate('t_update','<=',$this->hingga) + // ->where('sttebus','=','') + // ->where('tagbaru','=',1) + // ->pluck('norujukan'); + + // $summation_ansuran = TransaksiKeuntungan::on('mysql7') + // ->whereIn('norujukan',$get_norujukan_ansuran)->sum('bayaran_keuntungan'); + + $collection_trans = TransaksiKeuntungan::on('mysql7') + ->leftJoin('transaction as trans', function($join) + { + $join->on('transaksi_keuntungan.norujukan', '=', 'trans.norujukan'); + $join->on('transaksi_keuntungan.tarikh_bayaran', '=', 'trans.created_at'); + }) + ->where('trans.kodcaw','=',$this->kodcaw) + ->where('trans.trans_type','=','A') + ->where('transaksi_keuntungan.margin_semasa','>','0') + ->whereDate('transaksi_keuntungan.tarikh_bayaran','>=',$this->mula) + ->whereDate('transaksi_keuntungan.tarikh_bayaran','<=',$this->hingga) + ->get(); + + + $array_norujukan = $collection_trans->pluck('norujukan')->toArray(); + + $collection_gadai = Gadai::on($cawangan['mysql'])->whereIn('norujukan',$array_norujukan)->where('tagbaru',1)->get(); + + $keuntungan_semasa_collection = $collection_trans->filter(function ($trans) use ($collection_gadai) { + + foreach ($collection_gadai as $gadai) { + if($gadai->norujukan === $trans->norujukan){ + $t_gadai = Carbon::parse($gadai->t_gadai); + $t_bayaran = Carbon::parse($trans->tarikh_bayaran); + + if ($t_gadai->month !== $t_bayaran->month) { + return false; + }else{ + return true; + } + } + } + return false; + }); + + $summation_ansuran = $keuntungan_semasa_collection->sum('bayaran_keuntungan'); + + $total_keuntungan_sebenar = $sum_keuntungan + $sum_bayaran + $summation_ansuran; + /* End Keuntungan Sebenar Calculation */ + + /* Start Keuntungan Semasa Calculation */ + $get_norujukan = Gadai::on($cawangan['mysql']) + ->selectRaw("norujukan,CASE WHEN (YEAR(t_gadai) = YEAR(t_update) and MONTH(t_gadai) = MONTH(t_update)) THEN '1' ELSE '0' END AS result") + ->whereNotNull('hargajualan')->where('tagbaru',0)->having('result','=',0)->pluck('norujukan'); + + $summation = Transaction::on('mysql7') + ->selectRaw("SUM(CASE WHEN (transaction.trans_type) <> 'A' THEN (trans.keuntungan_rebet) ELSE 0 END) AS sum_keun,SUM(CASE WHEN (transaction.trans_type) = 'A' THEN (trans.bayaran_keuntungan) ELSE 0 END) AS sum_bayaran") + ->leftJoin('transaksi_keuntungan as trans', function($join) + { + $join->on('transaction.norujukan', '=', 'trans.norujukan'); + $join->on('transaction.created_at', '=', 'trans.tarikh_bayaran'); + }) + ->whereIn('trans.norujukan',$get_norujukan) + ->whereDate('trans.tarikh_bayaran' ,'>=', $this->mula) + ->whereDate('trans.tarikh_bayaran' ,'<=', $this->hingga) + ->whereYear('tarikh_bayaran','=',$mulaCarbon->year) + ->where('trans.kodcaw',$this->kodcaw) + ->get()->toArray(); + + $upahlelong = Lelong::on($cawangan['mysql']) + ->where([['t_jual','>=',$this->mula],['t_jual','<=',$this->hingga],['t_jual','>','2022-07-24']]) + ->whereYear('t_jual','=',$mulaCarbon->year) + ->sum('bakiupah'); + + $sum_keuntungan = ($summation) ? $summation[0]['sum_keun'] : 0; + $sum_bayaran = ($summation) ? $summation[0]['sum_bayaran'] : 0; + + // $total_keuntungan_semasa = ($sum_keuntungan + $sum_bayaran + $upahlelong) - $total_keuntungan_sebenar; + $total_keuntungan_semasa = ($sum_keuntungan + $sum_bayaran + $upahlelong); + + /* End Keuntungan Semasa Calculation */ + + $array_keuntungan = ['keuntungan_sebenar' => $total_keuntungan_sebenar, 'keuntungan_semasa' => $total_keuntungan_semasa]; + + return $array_keuntungan; + } + + public function getwtdLejer() + { + $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$this->kodcaw)->first(); + + + $wtd = WTD::on($cawangan['mysql']) + ->where('tarikh','>=', $this->mula) + ->where('tarikh','<=', $this->hingga) + ->sum('wtd'); + + return $wtd; + } + +} \ No newline at end of file diff --git a/app/Services/Reports/AccountService.php b/app/Services/Reports/AccountService.php new file mode 100644 index 0000000..28e368a --- /dev/null +++ b/app/Services/Reports/AccountService.php @@ -0,0 +1,37 @@ +where('kodcaw',$kodcaw)->first(); + $date = Carbon::now()->month($month); + $firstDay = (clone $date)->startOfMonth(); + $lastDay = (clone $date)->endOfMonth(); + $previousMonth = (clone $date)->subMonthNoOverflow()->endOfMonth(); + + $BSheetPreviousMonth = imbangdugabackup::on($cawangan['mysql'])->where('tarikh',$previousMonth->toDateString())->get(); + $BSheetCurrentMonth = imbangdugabackup::on($cawangan['mysql'])->where('tarikh',$lastDay->toDateString())->get(); + + $gledger = new GeneralLedger($kodcaw,$firstDay,$lastDay); + $loan_given = $gledger->getPinjamanDiberi(); + $loan_tawarruq = $gledger->getPembiayaanTawarruq(); + $advance_payment = $gledger->getBayaranPendahuluan(); + $submission = $gledger->getPendahuluanSerahan(); + $cash = $gledger->getpanjar(); + $remain_auction = $gledger->BakiLelongCalculation(); + $real_profit = $gledger->getKeuntunganSebenar(); + $current_profit = $gledger->SemakanKeuntunganLejer(); + $unclaimed_money =$gledger->getwtdLejer(); + + $debit = 0; + $credit = 0; + + dd($loan_given,$loan_tawarruq,$advance_payment,$submission,$cash,$remain_auction,$real_profit,$current_profit,$unclaimed_money); + + } +} \ No newline at end of file diff --git a/app/Services/Reports/ImbangDugaService.php b/app/Services/Reports/ImbangDugaService.php index 9a8db17..130c990 100644 --- a/app/Services/Reports/ImbangDugaService.php +++ b/app/Services/Reports/ImbangDugaService.php @@ -127,34 +127,54 @@ class ImbangDugaService $firstMonth = (clone $currentDate)->firstOfMonth(); $lastMonth = (clone $currentDate)->endOfMonth(); - /* Start Keuntungan Semasa Calculation */ - $get_norujukan = Gadai::on($cawangan['mysql']) - ->selectRaw("norujukan,CASE WHEN (YEAR(t_gadai) = YEAR(t_update) and MONTH(t_gadai) = MONTH(t_update)) THEN '1' ELSE '0' END AS result") - ->whereNotNull('hargajualan')->where('tagbaru', 0)->having('result', '=', 0)->pluck('norujukan'); + + $collection_trans = Transaction::on('mysql7') + ->leftJoin('transaksi_keuntungan as trans', function ($join) { + $join->on('transaction.norujukan', '=', 'trans.norujukan'); + $join->on('transaction.created_at', '=', 'trans.tarikh_bayaran'); + }) + ->where('transaction.kodcaw', $this->kodcaw) + ->whereYear('transaction.created_at', '=', $currentDate->year) + ->whereMonth('transaction.created_at', '=', $currentDate->month) + ->get(); - $summation = Transaction::on('mysql7') - ->selectRaw("SUM(CASE WHEN (transaction.trans_type) <> 'A' THEN (trans.keuntungan_rebet) ELSE 0 END) AS sum_keun,SUM(CASE WHEN (transaction.trans_type) = 'A' THEN (trans.bayaran_keuntungan) ELSE 0 END) AS sum_bayaran") - ->leftJoin('transaksi_keuntungan as trans', function ($join) { - $join->on('transaction.norujukan', '=', 'trans.norujukan'); - $join->on('transaction.created_at', '=', 'trans.tarikh_bayaran'); - }) - ->whereIn('trans.norujukan', $get_norujukan) - ->whereDate('trans.tarikh_bayaran', '>=', $firstMonth) - ->whereDate('trans.tarikh_bayaran', '<=', $lastMonth) - ->whereYear('tarikh_bayaran', '=', $currentDate->year) - ->where('trans.kodcaw', $this->kodcaw) - ->get()->toArray(); + $array_norujukan = $collection_trans->pluck('norujukan')->toArray(); + + $collection_gadai = Gadai::on($cawangan['mysql'])->whereIn('norujukan', $array_norujukan)->where('tagbaru',0)->get(); + + $keuntungan_semasa_collection = $collection_trans->filter(function ($trans) use ($collection_gadai) { + foreach ($collection_gadai as $gadai) { + if ($gadai->norujukan === $trans->norujukan) { + $t_gadai = Carbon::parse($gadai->t_gadai); + $t_bayaran = Carbon::parse($trans->tarikh_bayaran); + + if (($t_gadai->month == $t_bayaran->month) && ($t_gadai->year == $t_bayaran->year)) { + return false; + }else{ + return true; + } + } + } + return false; + }); + + $total_ansuran = $keuntungan_semasa_collection->filter(function ($transaction){ + return $transaction->trans_type == 'A'; + })->sum('bayaran_keuntungan'); + + $total_tebus = $keuntungan_semasa_collection->filter(function ($transaction){ + return $transaction->trans_type !== 'A'; + })->sum('keuntungan_rebet'); + + /* Keuntungan Lelong */ $upahlelong = Lelong::on($cawangan['mysql']) ->where([['tagujrah','=',0],['t_jual', '>=', $firstMonth], ['t_jual', '<=', $lastMonth], ['t_jual', '>', '2022-07-24']]) ->whereYear('t_jual', '=', $currentDate->year) ->sum('bakiupah'); - $sum_keuntungan = ($summation) ? $summation[0]['sum_keun'] : 0; - $sum_bayaran = ($summation) ? $summation[0]['sum_bayaran'] : 0; - - $total_keuntungan_semasa = ($sum_keuntungan + $sum_bayaran + $upahlelong); + $total_keuntungan_semasa = ($total_ansuran + $total_tebus + $upahlelong); /* End Keuntungan Semasa Calculation */ return $total_keuntungan_semasa; @@ -205,10 +225,12 @@ class ImbangDugaService if ($t_gadai->month === $t_bayaran->month) { return false; + }else{ + return true; } } } - return true; + return false; }); @@ -295,62 +317,25 @@ class ImbangDugaService $year = (clone $tarikh)->year; $month = (clone $tarikh)->month; - $get_norujukan = Gadai::on($cawangan['mysql']) - ->selectRaw("norujukan,CASE WHEN (YEAR(t_gadai) = YEAR(t_update) and MONTH(t_gadai) = MONTH(t_update)) THEN '1' ELSE '0' END AS result") - ->whereNotNull('hargajualan') - ->having('result', '=', 1) - ->whereYear('t_gadai', '=', $year) - ->whereMonth('t_gadai', '<=', $month) - ->where('sttebus', '<>', '') - ->pluck('norujukan'); + $lastDayPreviousMonth = $tarikh->subMonthsNoOverflow()->endOfMonth()->toDateString(); + $get_imbangduga = imbangdugabackup::on($cawangan['mysql'])->where('tarikh',$lastDayPreviousMonth)->first()->toArray(); - - $sum_keun = Transaction::on('mysql7') - ->selectRaw("trans.norujukan,SUM(CASE WHEN (transaction.trans_type) <> 'A' THEN (trans.keuntungan_rebet) ELSE 0 END) AS sum_keun,SUM(CASE WHEN (transaction.trans_type) = 'A' AND (trans.margin_semasa) = 0 THEN (trans.bayaran_keuntungan) ELSE 0 END) AS sum_bayaran") - // ->select('trans.norujukan','transaction.trans_type','trans.keuntungan_rebet','trans.bayaran_keuntungan','trans.margin_semasa') - ->leftJoin('transaksi_keuntungan as trans', function ($join) { - $join->on('transaction.norujukan', '=', 'trans.norujukan'); - $join->on('transaction.created_at', '=', 'trans.tarikh_bayaran'); - }) - ->whereIn('trans.norujukan', $get_norujukan)->get()->toArray(); - - $sum_keuntungan = ($sum_keun) ? $sum_keun[0]['sum_keun'] : 0; - $sum_bayaran = ($sum_keun) ? $sum_keun[0]['sum_bayaran'] : 0; - - /* Ansuran masuk dalam ni */ - - // $get_norujukan_ansuran = Gadai::on($cawangan['mysql']) - // ->selectRaw("norujukan,CASE WHEN (YEAR(t_gadai) = YEAR(t_update) and MONTH(t_gadai) = MONTH(t_update)) THEN '1' ELSE '0' END AS result") - // ->whereNotNull('hargajualan') - // ->having('result','=',1) - // ->whereYear('t_gadai', '=', $year) - // ->whereMonth('t_gadai', '<=', $month) - // ->where('sttebus','=','') - // ->where('tagbaru','=',1) - // ->pluck('norujukan'); - - // $summation_ansuran = TransaksiKeuntungan::on('mysql7') - // ->whereIn('norujukan',$get_norujukan_ansuran)->sum('bayaran_keuntungan'); - $collection_trans = Transaction::on('mysql7') ->leftJoin('transaksi_keuntungan as trans', function ($join) { $join->on('transaction.norujukan', '=', 'trans.norujukan'); $join->on('transaction.created_at', '=', 'trans.tarikh_bayaran'); }) - ->where('transaction.trans_type', 'A') ->where('transaction.kodcaw', $this->kodcaw) - ->where('trans.margin_semasa','>',0) ->whereYear('transaction.created_at', '=', $year) - ->whereMonth('transaction.created_at', '<=', $month) + ->whereMonth('transaction.created_at', '=', $month) ->get(); $array_norujukan = $collection_trans->pluck('norujukan')->toArray(); - $collection_gadai = Gadai::on($cawangan['mysql'])->whereIn('norujukan', $array_norujukan)->where('tagbaru',1)->get(); + $collection_gadai = Gadai::on($cawangan['mysql'])->whereIn('norujukan', $array_norujukan)->whereYear('t_gadai',$year)->get(); $keuntungan_semasa_collection = $collection_trans->filter(function ($trans) use ($collection_gadai) { - foreach ($collection_gadai as $gadai) { if ($gadai->norujukan === $trans->norujukan) { $t_gadai = Carbon::parse($gadai->t_gadai); @@ -358,17 +343,24 @@ class ImbangDugaService if ($t_gadai->month !== $t_bayaran->month) { return false; + }else{ + return true; } } } - return true; + return false; }); - $summation_ansuran = $keuntungan_semasa_collection->sum('bayaran_keuntungan'); + $total_ansuran = $keuntungan_semasa_collection->filter(function ($transaction){ + return $transaction->trans_type == 'A'; + })->sum('bayaran_keuntungan'); + $total_tebus = $keuntungan_semasa_collection->filter(function ($transaction){ + return $transaction->trans_type !== 'A'; + })->sum('keuntungan_rebet'); + + $total = $total_ansuran + $total_tebus + $get_imbangduga['keun_sebenar']; - $total = $sum_keuntungan + $sum_bayaran + $summation_ansuran; - // $total = $sum_keuntungan + $sum_bayaran; return $total; } @@ -911,7 +903,7 @@ class ImbangDugaService $ujrah = $accrual['ujrah']; $onepercent = $accrual['onepercent']; $bayaranpend = -1*($bayaranpend); - $untungrugiterkumpul = $this->getUntungRugiTerkumpul(); + // $untungrugiterkumpul = $this->getUntungRugiTerkumpul(); $totalharta = imbangdugabackup::on($cawangan['mysql'])->where('tarikh', $this->tarikh) ->get() @@ -922,9 +914,9 @@ class ImbangDugaService $totaltanggungan = imbangdugabackup::on($cawangan['mysql'])->where('tarikh', $this->tarikh) ->get() - ->map(function ($ig) use ($ujrah, $onepercent, $keun_sebenar, $pend_terakru,$pendahuluan,$untungrugiterkumpul) { + ->map(function ($ig) use ($ujrah, $onepercent, $keun_sebenar, $pend_terakru,$pendahuluan) { return $pend_terakru + $ig['bds'] + $ig['perubatan'] + $ig['keraian'] + $ig['rugilelong'] + $ig['bakilelong'] - + $ig['wtd'] + $untungrugiterkumpul + $keun_sebenar + $pendahuluan + $ig['cajlelong'] + + $ig['wtd'] + $ig['untungrugiterkumpul'] + $keun_sebenar + $pendahuluan + $ig['cajlelong'] + $ig['cajperkhidmatan'] + $ig['cajlelongxtra'] + $ig['upahsimpanxtra'] + $ig['bakilelongxtra'] + $ig['rugilelongxtra'] + $ig['utgterkumpulxtra'] + $ig['jualan1stop'] + $ig['hapuskira'] + $ujrah + $onepercent; }); @@ -936,7 +928,7 @@ class ImbangDugaService } else { $booltally = false; } - + // dd($totalharta[0],$totaltanggungan[0],$pend_terakru,$keuntungan_penggadai,$keun_sebenar); imbangdugabackup::on($cawangan['mysql'])->where('tarikh', $this->tarikh)->update([ 'tunaiditangan' => $tunaiditangan, @@ -948,7 +940,7 @@ class ImbangDugaService 'bayaranpendahuluan' => $bayaranpend, 'serahan' => $serahan, 'pendahuluan' => $pendahuluan, - 'untungrugiterkumpul' => $untungrugiterkumpul, + // 'untungrugiterkumpul' => $untungrugiterkumpul, 'totalharta' => round($totalharta[0], 2), 'totaltanggungan' => round($totaltanggungan[0], 2), 'tagtally' => $booltally, diff --git a/app/Services/Reports/OnePercentService.php b/app/Services/Reports/OnePercentService.php index 6a6c88b..1d718cf 100644 --- a/app/Services/Reports/OnePercentService.php +++ b/app/Services/Reports/OnePercentService.php @@ -398,10 +398,12 @@ class OnePercentService if ($t_gadai->month === $t_bayaran->month) { return false; + }{ + return true; } } } - return true; + return false; }); From 4d9fe3b9f4a1b77e1ac9cfc7522fa76b84424152 Mon Sep 17 00:00:00 2001 From: hafifierahman Date: Wed, 9 Oct 2024 08:04:21 +0800 Subject: [PATCH 13/43] fix skit2 --- .../Reports/Account/GeneralLedger.php | 94 ++++++++++++++++ app/Services/Reports/AccountService.php | 103 +++++++++++++++++- app/Services/Reports/OnePercentService.php | 2 +- 3 files changed, 195 insertions(+), 4 deletions(-) diff --git a/app/Services/Reports/Account/GeneralLedger.php b/app/Services/Reports/Account/GeneralLedger.php index abe0e49..0254e26 100644 --- a/app/Services/Reports/Account/GeneralLedger.php +++ b/app/Services/Reports/Account/GeneralLedger.php @@ -628,4 +628,98 @@ class GeneralLedger return $wtd; } + public function getTotalKeuntungan() : Float{ + + /* Keuntungan Semasa */ + $keuntungan_semasa = $this->CurrentProfit($this->mula,$this->hingga,$this->kodcaw); + $totalkeuntungan=$keuntungan_semasa['onepercent']; + + return $totalkeuntungan; + } + + public function getTotalUjrah() : Float{ + + /* Keuntungan Semasa */ + $keuntungan_semasa = $this->CurrentProfit($this->mula,$this->hingga,$this->kodcaw); + $totalujrah = $keuntungan_semasa['ujrah']; + + + return $totalujrah; + } + + public function CurrentProfit($start,$end,$kodcaw){ + + $start = new Carbon($start); + $year = $start->format('Y'); + + $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); + + $collection_trans = TransaksiKeuntungan::on('mysql7') + ->leftJoin('transaction as trans', function($join) + { + $join->on('transaksi_keuntungan.norujukan', '=', 'trans.norujukan'); + $join->on('transaksi_keuntungan.tarikh_bayaran', '=', 'trans.created_at'); + }) + ->where('trans.kodcaw','=',$kodcaw) + ->whereDate('transaksi_keuntungan.tarikh_bayaran' ,'<=', $end) + ->whereDate('transaksi_keuntungan.tarikh_bayaran' ,'>=', $start) + ->whereYear('transaksi_keuntungan.tarikh_bayaran','=',$year) + ->get(); + + $array_norujukan = $collection_trans->pluck('norujukan')->toArray(); + + $collection_gadai = Gadai::on($cawangan['mysql'])->whereIn('norujukan',$array_norujukan)->get(); + + /* filtering untuk gadai yang ditebus pada bukan bulan yang sama */ + $keuntungan_semasa_collection = $collection_trans->filter(function ($trans) use ($collection_gadai) { + + foreach ($collection_gadai as $gadai) { + if($gadai->norujukan === $trans->norujukan){ + $t_gadai = Carbon::parse($gadai->t_gadai); + $t_bayaran = Carbon::parse($trans->tarikh_bayaran); + + if ($t_gadai->month === $t_bayaran->month) { + return false; + }else{ + return true; + } + } + } + return false; + }); + + + $ujrah = $this->filterCollection($keuntungan_semasa_collection,'A','ujrah'); + $onepercent = $this->filterCollection($keuntungan_semasa_collection,'A','onepercent'); + $ujrah_rebet = $this->filterCollection($keuntungan_semasa_collection,'T','ujrah_rebet'); + $onepercent_rebet = $this->filterCollection($keuntungan_semasa_collection,'T','onepercent_rebet'); + + $upahlelong = Lelong::on($cawangan['mysql']) + ->selectRaw('SUM(ujrah) as ujrah,SUM(onepercent) as onepercent') + ->where([['tagujrah','=',1],['t_jual','>=',$start],['t_jual','<=',$end]]) + ->whereYear('t_jual','=',$year) + ->get()->toArray(); + + $ujrah_lelong = (empty($upahlelong)) ? 0 : $upahlelong[0]['ujrah']; + $onepercent_lelong = (empty($upahlelong)) ? 0 : $upahlelong[0]['onepercent']; + + $total_onepercent = $onepercent + $onepercent_rebet + $onepercent_lelong; + $total_ujrah = $ujrah + $ujrah_rebet + $ujrah_lelong; + + return ['ujrah' => $total_ujrah,'onepercent' => $total_onepercent]; + } + + private function filterCollection($collection,$type,$sumtype) : Float{ + + $array_type = ['T','S','P','AT']; + return $collection->filter(function ($item) use($type,$array_type) { + if($type == 'T') + return in_array($item->trans_type, $array_type); + + return $item->trans_type === $type; + })->sum($sumtype); + } + + + } \ No newline at end of file diff --git a/app/Services/Reports/AccountService.php b/app/Services/Reports/AccountService.php index 28e368a..ffc50ca 100644 --- a/app/Services/Reports/AccountService.php +++ b/app/Services/Reports/AccountService.php @@ -27,11 +27,108 @@ class AccountService{ $real_profit = $gledger->getKeuntunganSebenar(); $current_profit = $gledger->SemakanKeuntunganLejer(); $unclaimed_money =$gledger->getwtdLejer(); + $akrual_onepercent = $gledger->getTotalKeuntungan(); + $akrual_ujrah = $gledger->getTotalUjrah(); - $debit = 0; - $credit = 0; + $debit = /* $loan_given['Gadai'] + */ $loan_tawarruq['Gadai'] + $advance_payment['keluar'] + + $submission['serahan'] + $cash['bds'] + $cash['perubatan'] + $cash['keraian'] + + $remain_auction['rugi'] + $remain_auction['bakilelong']; + $credit = /* $loan_given['Tebus'] + */ $loan_tawarruq['Tebus'] + $advance_payment['masuk'] + + $remain_auction['rugilelong'] + $remain_auction['baki'] + $real_profit + + $current_profit['keuntungan_semasa'] + $submission['pendahuluan'] + $remain_auction['caslelong'] + + $current_profit['keuntungan_sebenar'] + $unclaimed_money + $akrual_onepercent + $akrual_ujrah; - dd($loan_given,$loan_tawarruq,$advance_payment,$submission,$cash,$remain_auction,$real_profit,$current_profit,$unclaimed_money); + $cash_credit = $debit; + $cash_debit = $credit; + + + $total_cash = $cash_debit - $cash_credit; + $total_loan_tawarruq = $loan_tawarruq['Gadai'] - $loan_tawarruq['Tebus']; + $total_advance_payment = $advance_payment['keluar'] - $advance_payment['masuk']; + $total_remain_auction_loss = $remain_auction['rugi'] - $remain_auction['rugilelong']; + $total_remain_auction = $remain_auction['bakilelong'] - $remain_auction['baki']; + + dd($BSheetPreviousMonth); + + /* Previous Balance Sheets With Total General Ledger */ + + /* Harta Semasa positive */ + $temp_tunaiditangan = $BSheetPreviousMonth['tunaiditangan'] + $total_cash; + $temp_pembiayaantawarruq = $BSheetPreviousMonth['pembiayaantawarruq'] + $total_loan_tawarruq; + $temp_bayaranpendahuluan = $BSheetPreviousMonth['bayaranpendahuluan'] + $total_advance_payment; + $temp_pinjamankoop = $BSheetPreviousMonth['pinjamankoop']; + $temp_emaspalsu = $BSheetPreviousMonth['emaspalsu']; + $temp_penghutangkaki = $BSheetPreviousMonth['penghutangkaki']; + $temp_phapuskira = $BSheetPreviousMonth['phapuskira']; + $temp_belian1stop = $BSheetPreviousMonth['belian1stop']; + $temp_keun_penggadai = $BSheetPreviousMonth['keun_penggadai']; + $temp_serahan = $BSheetPreviousMonth['serahan']; + + + /* Tanggungan Semasa negative */ + $temp_pend_terakru = $BSheetPreviousMonth['pend_terakru']; + $temp_bds = $BSheetPreviousMonth['bds']; + $temp_perubatan = $BSheetPreviousMonth['perubatan']; + $temp_keraian = $BSheetPreviousMonth['keraian']; + $temp_rugilelong = $BSheetPreviousMonth['rugilelong']; + $temp_bakilelong = $BSheetPreviousMonth['bakilelong']; + $temp_wtd = $BSheetPreviousMonth['wtd']; + $temp_untungrugiterkumpul = $BSheetPreviousMonth['untungrugiterkumpul']; + $temp_keun_sebenar = $BSheetPreviousMonth['keun_sebenar']; + $temp_pendahuluan = $BSheetPreviousMonth['pendahuluan']; + $temp_cajlelong = $BSheetPreviousMonth['cajlelong']; + $temp_cajperkhidmatan = $BSheetPreviousMonth['cajperkhidmatan']; + $temp_cajlelongxtra = $BSheetPreviousMonth['cajlelongxtra']; + $temp_upahsimpan = $BSheetPreviousMonth['upahsimpan']; + $temp_bakilelong = $BSheetPreviousMonth['bakilelong']; + $temp_kerugianlelong = $BSheetPreviousMonth['kerugianlelong']; + $temp_jualan1stop = $BSheetPreviousMonth['jualan1stop']; + $temp_hapuskira = $BSheetPreviousMonth['hapuskira']; + $temp_onepercent = $BSheetPreviousMonth['onepercent']; + $temp_ujrah = $BSheetPreviousMonth['ujrah']; + + + + + + /* Current Balance Sheets */ + + $temp_tunaiditangan = $BSheetPreviousMonth['tunaiditangan']; + $temp_pembiayaantawarruq = $BSheetPreviousMonth['pembiayaantawarruq']; + $temp_bayaranpendahuluan = $BSheetPreviousMonth['bayaranpendahuluan']; + $temp_pinjamankoop = $BSheetPreviousMonth['pinjamankoop']; + $temp_emaspalsu = $BSheetPreviousMonth['emaspalsu']; + $temp_penghutangkaki = $BSheetPreviousMonth['penghutangkaki']; + $temp_phapuskira = $BSheetPreviousMonth['phapuskira']; + $temp_belian1stop = $BSheetPreviousMonth['belian1stop']; + $temp_keun_penggadai = $BSheetPreviousMonth['keun_penggadai']; + $temp_serahan = $BSheetPreviousMonth['serahan']; + $temp_pend_terakru = $BSheetPreviousMonth['pend_terakru']; + $temp_bds = $BSheetPreviousMonth['bds']; + $temp_perubatan = $BSheetPreviousMonth['perubatan']; + $temp_keraian = $BSheetPreviousMonth['keraian']; + $temp_rugilelong = $BSheetPreviousMonth['rugilelong']; + $temp_bakilelong = $BSheetPreviousMonth['bakilelong']; + $temp_wtd = $BSheetPreviousMonth['wtd']; + $temp_untungrugiterkumpul = $BSheetPreviousMonth['untungrugiterkumpul']; + $temp_keun_sebenar = $BSheetPreviousMonth['keun_sebenar']; + $temp_pendahuluan = $BSheetPreviousMonth['pendahuluan']; + $temp_cajlelong = $BSheetPreviousMonth['cajlelong']; + $temp_cajperkhidmatan = $BSheetPreviousMonth['cajperkhidmatan']; + $temp_cajlelongxtra = $BSheetPreviousMonth['cajlelongxtra']; + $temp_upahsimpan = $BSheetPreviousMonth['upahsimpan']; + $temp_bakilelong = $BSheetPreviousMonth['bakilelong']; + $temp_kerugianlelong = $BSheetPreviousMonth['kerugianlelong']; + $temp_jualan1stop = $BSheetPreviousMonth['jualan1stop']; + $temp_hapuskira = $BSheetPreviousMonth['hapuskira']; + $temp_onepercent = $BSheetPreviousMonth['onepercent']; + $temp_ujrah = $BSheetPreviousMonth['ujrah']; + + + + dd($total_cash,$total_loan_tawarruq,$total_advance_payment,$total_remain_auction,$total_remain_auction_loss); + + dd($debit,$credit); } } \ No newline at end of file diff --git a/app/Services/Reports/OnePercentService.php b/app/Services/Reports/OnePercentService.php index 1d718cf..30dddda 100644 --- a/app/Services/Reports/OnePercentService.php +++ b/app/Services/Reports/OnePercentService.php @@ -398,7 +398,7 @@ class OnePercentService if ($t_gadai->month === $t_bayaran->month) { return false; - }{ + }else{ return true; } } From 8c62ad814fc5ca161c40d263e2da7e324371e886 Mon Sep 17 00:00:00 2001 From: Hafifie PKB Date: Wed, 9 Oct 2024 20:34:52 +0800 Subject: [PATCH 14/43] added url account-check --- app/Http/Controllers/AdminPageController.php | 26 +++- app/Services/Reports/AccountService.php | 130 ++++++------------- routes/web.php | 3 + 3 files changed, 66 insertions(+), 93 deletions(-) diff --git a/app/Http/Controllers/AdminPageController.php b/app/Http/Controllers/AdminPageController.php index 5305d2e..152e47b 100644 --- a/app/Http/Controllers/AdminPageController.php +++ b/app/Http/Controllers/AdminPageController.php @@ -49,11 +49,7 @@ use App\imbangdugalama; use App\HapusKira; use App\MaxPinjaman; use App\Penghutang; -use App\RingkasanAnsuran; -use App\RingkasanGadai; -use App\RingkasanLelong; -use App\RingkasanMain; -use App\RingkasanTebus; +use App\Services\Reports\AccountService; use App\imbangdugabackup; use App\Services\RingkasanHarianServices; use Illuminate\Support\Facades\DB; @@ -63,6 +59,7 @@ use Illuminate\Pagination\Paginator; use Illuminate\Support\Collection; use Illuminate\Pagination\LengthAwarePaginator; use Illuminate\Http\Request; +use Illuminate\Support\Facades\Log; class AdminPageController extends Controller { @@ -3832,4 +3829,23 @@ class AdminPageController extends Controller return response()->json($cawangan); } + + public function getAccountList(Request $request){ + + $cawangan = Cawangan::on('mysql7')->simplePaginate(5); + $check = app(AccountService::class); + + $array_all = []; + foreach($cawangan as $caw){ + try{ + $test =$check->checkAccount($caw['kodcaw'],'8'); + $array_all[$caw['kodcaw']] = $test; + }catch(\Exception $e){ + Log::error($caw['kodcaw']); + Log::error($e->getMessage()); + } + } + + return response()->json($array_all); + } } diff --git a/app/Services/Reports/AccountService.php b/app/Services/Reports/AccountService.php index ffc50ca..a82eb3a 100644 --- a/app/Services/Reports/AccountService.php +++ b/app/Services/Reports/AccountService.php @@ -2,10 +2,14 @@ namespace App\Services\Reports; +use App\AkruNet; +use App\AkruNetPecahan; use App\Cawangan; use App\imbangdugabackup; use App\Services\Reports\Account\GeneralLedger; use Carbon\Carbon; +use Illuminate\Support\Facades\DB; + class AccountService{ public function checkAccount($kodcaw,$month){ $cawangan = Cawangan::on('mysql7')->where('kodcaw',$kodcaw)->first(); @@ -14,9 +18,15 @@ class AccountService{ $lastDay = (clone $date)->endOfMonth(); $previousMonth = (clone $date)->subMonthNoOverflow()->endOfMonth(); - $BSheetPreviousMonth = imbangdugabackup::on($cawangan['mysql'])->where('tarikh',$previousMonth->toDateString())->get(); - $BSheetCurrentMonth = imbangdugabackup::on($cawangan['mysql'])->where('tarikh',$lastDay->toDateString())->get(); + $BSheetPreviousMonth = imbangdugabackup::on($cawangan['mysql'])->where('tarikh',$previousMonth->toDateString())->first()->toArray(); + $BSheetCurrentMonth = imbangdugabackup::on($cawangan['mysql'])->where('tarikh',$lastDay->toDateString())->first()->toArray(); + $akru_net = AkruNet::on($cawangan['mysql'])->where('tahun',$date->year)->where('bulan','<=',$month)->sum('jumlah'); + $akru_net_ujrah = AkruNetPecahan::on($cawangan['mysql'])->where('tahun',$date->year)->where('bulan','<=',$month)->sum('pend_akru_ujrah'); + $akru_net_onepercent = AkruNetPecahan::on($cawangan['mysql'])->where('tahun',$date->year)->where('bulan','<=',$month)->sum('pend_akru_1persen'); + $model_class = "App\StokAudit{$month}"; + $keun_penggadai = $model_class::on($cawangan['mysql'])->select(DB::raw('SUM(upahblmbyar + utgonepercent + ujrah) as total_sum'))->where('tahun',$date->year)->first()->toArray(); + $gledger = new GeneralLedger($kodcaw,$firstDay,$lastDay); $loan_given = $gledger->getPinjamanDiberi(); $loan_tawarruq = $gledger->getPembiayaanTawarruq(); @@ -41,94 +51,38 @@ class AccountService{ $cash_credit = $debit; $cash_debit = $credit; - - $total_cash = $cash_debit - $cash_credit; - $total_loan_tawarruq = $loan_tawarruq['Gadai'] - $loan_tawarruq['Tebus']; - $total_advance_payment = $advance_payment['keluar'] - $advance_payment['masuk']; - $total_remain_auction_loss = $remain_auction['rugi'] - $remain_auction['rugilelong']; - $total_remain_auction = $remain_auction['bakilelong'] - $remain_auction['baki']; - - dd($BSheetPreviousMonth); - - /* Previous Balance Sheets With Total General Ledger */ - - /* Harta Semasa positive */ - $temp_tunaiditangan = $BSheetPreviousMonth['tunaiditangan'] + $total_cash; - $temp_pembiayaantawarruq = $BSheetPreviousMonth['pembiayaantawarruq'] + $total_loan_tawarruq; - $temp_bayaranpendahuluan = $BSheetPreviousMonth['bayaranpendahuluan'] + $total_advance_payment; - $temp_pinjamankoop = $BSheetPreviousMonth['pinjamankoop']; - $temp_emaspalsu = $BSheetPreviousMonth['emaspalsu']; - $temp_penghutangkaki = $BSheetPreviousMonth['penghutangkaki']; - $temp_phapuskira = $BSheetPreviousMonth['phapuskira']; - $temp_belian1stop = $BSheetPreviousMonth['belian1stop']; - $temp_keun_penggadai = $BSheetPreviousMonth['keun_penggadai']; - $temp_serahan = $BSheetPreviousMonth['serahan']; - - - /* Tanggungan Semasa negative */ - $temp_pend_terakru = $BSheetPreviousMonth['pend_terakru']; - $temp_bds = $BSheetPreviousMonth['bds']; - $temp_perubatan = $BSheetPreviousMonth['perubatan']; - $temp_keraian = $BSheetPreviousMonth['keraian']; - $temp_rugilelong = $BSheetPreviousMonth['rugilelong']; - $temp_bakilelong = $BSheetPreviousMonth['bakilelong']; - $temp_wtd = $BSheetPreviousMonth['wtd']; - $temp_untungrugiterkumpul = $BSheetPreviousMonth['untungrugiterkumpul']; - $temp_keun_sebenar = $BSheetPreviousMonth['keun_sebenar']; - $temp_pendahuluan = $BSheetPreviousMonth['pendahuluan']; - $temp_cajlelong = $BSheetPreviousMonth['cajlelong']; - $temp_cajperkhidmatan = $BSheetPreviousMonth['cajperkhidmatan']; - $temp_cajlelongxtra = $BSheetPreviousMonth['cajlelongxtra']; - $temp_upahsimpan = $BSheetPreviousMonth['upahsimpan']; - $temp_bakilelong = $BSheetPreviousMonth['bakilelong']; - $temp_kerugianlelong = $BSheetPreviousMonth['kerugianlelong']; - $temp_jualan1stop = $BSheetPreviousMonth['jualan1stop']; - $temp_hapuskira = $BSheetPreviousMonth['hapuskira']; - $temp_onepercent = $BSheetPreviousMonth['onepercent']; - $temp_ujrah = $BSheetPreviousMonth['ujrah']; - - - - + $total_tunaiditangan = $cash_debit - $cash_credit; + $total_pembiayaantawarruq = $loan_tawarruq['Gadai'] - $loan_tawarruq['Tebus']; + $total_bayaranpendahuluan = $advance_payment['keluar'] - $advance_payment['masuk']; + $total_serahan = $submission['serahan']; + $total_pendahuluan = $submission['pendahuluan']; + $total_bds = -($cash['bds']); + $total_perubatan = -($cash['perubatan']); + $total_keraian = -($cash['keraian']); + $total_keun_sebenar = $real_profit; + $total_rugilelong = $remain_auction['rugi'] - $remain_auction['rugilelong']; + $total_bakilelong = - $remain_auction['baki'] - $remain_auction['bakilelong']; + $total_pend_terakru = $akru_net; + $total_ujrah = $akru_net_ujrah; + $total_onepercent = $akru_net_onepercent; + $total_keun_penggadai = $keun_penggadai['total_sum']; /* Current Balance Sheets */ + $array_tally = []; + foreach($BSheetCurrentMonth as $key=>$value){ + if($key !== 'recno' && $key !== 'kodcaw' && $key !== 'tarikh' && $key !== 'tagtally' && $key !== 'created_at' && $key !== 'updated_at'){ + if(isset(${"total_$key"})){ + if($key !== 'pend_terakru' && $key !== 'ujrah' && $key !== 'onepercent' && $key !== 'keun_penggadai'){ + ${"temp_$key"} = $BSheetPreviousMonth[$key] + ${"total_$key"}; + }else{ + ${"temp_$key"} = ${"total_$key"}; + } + $temp_array = ['key' => $key, 'totallejer' => (float)round(${"temp_$key"},2), 'currentbsheet' => (float)round($BSheetCurrentMonth[$key],2),'tally' => (float)round(${"temp_$key"},2) == (float)round($BSheetCurrentMonth[$key],2)]; + array_push($array_tally,$temp_array); + } + } + } - $temp_tunaiditangan = $BSheetPreviousMonth['tunaiditangan']; - $temp_pembiayaantawarruq = $BSheetPreviousMonth['pembiayaantawarruq']; - $temp_bayaranpendahuluan = $BSheetPreviousMonth['bayaranpendahuluan']; - $temp_pinjamankoop = $BSheetPreviousMonth['pinjamankoop']; - $temp_emaspalsu = $BSheetPreviousMonth['emaspalsu']; - $temp_penghutangkaki = $BSheetPreviousMonth['penghutangkaki']; - $temp_phapuskira = $BSheetPreviousMonth['phapuskira']; - $temp_belian1stop = $BSheetPreviousMonth['belian1stop']; - $temp_keun_penggadai = $BSheetPreviousMonth['keun_penggadai']; - $temp_serahan = $BSheetPreviousMonth['serahan']; - $temp_pend_terakru = $BSheetPreviousMonth['pend_terakru']; - $temp_bds = $BSheetPreviousMonth['bds']; - $temp_perubatan = $BSheetPreviousMonth['perubatan']; - $temp_keraian = $BSheetPreviousMonth['keraian']; - $temp_rugilelong = $BSheetPreviousMonth['rugilelong']; - $temp_bakilelong = $BSheetPreviousMonth['bakilelong']; - $temp_wtd = $BSheetPreviousMonth['wtd']; - $temp_untungrugiterkumpul = $BSheetPreviousMonth['untungrugiterkumpul']; - $temp_keun_sebenar = $BSheetPreviousMonth['keun_sebenar']; - $temp_pendahuluan = $BSheetPreviousMonth['pendahuluan']; - $temp_cajlelong = $BSheetPreviousMonth['cajlelong']; - $temp_cajperkhidmatan = $BSheetPreviousMonth['cajperkhidmatan']; - $temp_cajlelongxtra = $BSheetPreviousMonth['cajlelongxtra']; - $temp_upahsimpan = $BSheetPreviousMonth['upahsimpan']; - $temp_bakilelong = $BSheetPreviousMonth['bakilelong']; - $temp_kerugianlelong = $BSheetPreviousMonth['kerugianlelong']; - $temp_jualan1stop = $BSheetPreviousMonth['jualan1stop']; - $temp_hapuskira = $BSheetPreviousMonth['hapuskira']; - $temp_onepercent = $BSheetPreviousMonth['onepercent']; - $temp_ujrah = $BSheetPreviousMonth['ujrah']; - - - - dd($total_cash,$total_loan_tawarruq,$total_advance_payment,$total_remain_auction,$total_remain_auction_loss); - - dd($debit,$credit); - + return $array_tally; } } \ No newline at end of file diff --git a/routes/web.php b/routes/web.php index b2b3a62..273b776 100644 --- a/routes/web.php +++ b/routes/web.php @@ -849,6 +849,9 @@ $router->group(['prefix'=>'admin'], function () use ($router){ $router->get('ig/penghutang',['uses'=>'AdminPageController@ListPenghutang']); $router->get('ig/bayaran_penghutang',['uses'=>'AdminPageController@SenaraiBayaranHutang']); + + $router->get('get/accountcheck',['uses'=>'AdminPageController@getAccountList']); + }); From 0303bc7628728f4a9344f0192f5661205a5ba79f Mon Sep 17 00:00:00 2001 From: hafifierahman Date: Thu, 10 Oct 2024 03:04:23 +0800 Subject: [PATCH 15/43] added function to update all ig --- app/Http/Controllers/AdminPageController.php | 14 +- .../Reports/BalanceSheetsController.php | 20 ++- .../Reports/Account/GeneralLedger.php | 152 +++++++++--------- app/Services/Reports/AccountService.php | 4 +- app/Services/Reports/ImbangDugaService.php | 1 - routes/report.php | 1 + 6 files changed, 102 insertions(+), 90 deletions(-) diff --git a/app/Http/Controllers/AdminPageController.php b/app/Http/Controllers/AdminPageController.php index 152e47b..7066153 100644 --- a/app/Http/Controllers/AdminPageController.php +++ b/app/Http/Controllers/AdminPageController.php @@ -3834,18 +3834,20 @@ class AdminPageController extends Controller $cawangan = Cawangan::on('mysql7')->simplePaginate(5); $check = app(AccountService::class); - - $array_all = []; + $array_all = ['current_page' => $cawangan->currentPage()]; foreach($cawangan as $caw){ try{ - $test =$check->checkAccount($caw['kodcaw'],'8'); - $array_all[$caw['kodcaw']] = $test; + $test =$check->checkAccount($caw['kodcaw'],$request->month); + $array_all['data'][$caw['details_caw']] = $test; }catch(\Exception $e){ Log::error($caw['kodcaw']); Log::error($e->getMessage()); + Log::error($e); + } } - - return response()->json($array_all); + $response = $array_all; + + return response()->json($response); } } diff --git a/app/Http/Controllers/Reports/BalanceSheetsController.php b/app/Http/Controllers/Reports/BalanceSheetsController.php index 68bbca3..13d3224 100644 --- a/app/Http/Controllers/Reports/BalanceSheetsController.php +++ b/app/Http/Controllers/Reports/BalanceSheetsController.php @@ -8,6 +8,7 @@ use App\imbangdugabackup; use Carbon\Carbon; use Illuminate\Http\Request; use App\Services\Reports\ImbangDugaService; +use Illuminate\Support\Facades\Log; class BalanceSheetsController extends Controller { @@ -24,10 +25,27 @@ class BalanceSheetsController extends Controller public function insertBalanceSheets(Request $request){ $igService = new ImbangDugaService($request->kodcaw,$request->tarikh); - $insert_imbangduga = $igService->setImbangDugaBackup(); return $insert_imbangduga; } + public function updateIGBalanceSheets(Request $request){ + $cawangan = Cawangan::on('mysql7')->get(); + $date = Carbon::now()->month($request->month); + $lastDay = (clone $date)->endOfMonth(); + + try{ + foreach($cawangan as $caw){ + $igService = new ImbangDugaService($caw['kodcaw'],$lastDay->toDateString()); + $insert_imbangduga = $igService->setImbangDugaBackup(); + } + }catch(\Exception $e){ + Log::error($e->getMessage()); + } + + + return response('success'); + } + } diff --git a/app/Services/Reports/Account/GeneralLedger.php b/app/Services/Reports/Account/GeneralLedger.php index 0254e26..17f1ec6 100644 --- a/app/Services/Reports/Account/GeneralLedger.php +++ b/app/Services/Reports/Account/GeneralLedger.php @@ -6,6 +6,7 @@ use App\Cawangan; use App\Gadai; use App\GlCode; use App\GlDetail; +use App\imbangdugabackup; use App\imbangdugalama; use App\Lelong; use App\Panjar; @@ -511,103 +512,94 @@ class GeneralLedger $hinggaCarbon = new Carbon($this->hingga); /* Start Keuntungan Sebenar Calculation */ - $get_norujukan = Gadai::on($cawangan['mysql']) - ->selectRaw("norujukan,CASE WHEN (YEAR(t_gadai) = YEAR(t_update) and MONTH(t_gadai) = MONTH(t_update)) THEN '1' ELSE '0' END AS result") - ->whereNotNull('hargajualan')->having('result','=',1)->whereDate('t_update','>=',$this->mula)->whereDate('t_update','<=',$this->hingga)->where('sttebus','<>','')->pluck('norujukan'); - $sum_keun = Transaction::on('mysql7') - ->selectRaw("trans.norujukan,SUM(CASE WHEN (transaction.trans_type) <> 'A' THEN (trans.keuntungan_rebet) ELSE 0 END) AS sum_keun,SUM(CASE WHEN (transaction.trans_type) = 'A' AND (trans.margin_semasa) = 0 THEN (trans.bayaran_keuntungan) ELSE 0 END) AS sum_bayaran") - ->leftJoin('transaksi_keuntungan as trans', function($join) - { + $collection_trans = Transaction::on('mysql7') + ->leftJoin('transaksi_keuntungan as trans', function ($join) { + $join->on('transaction.norujukan', '=', 'trans.norujukan'); + $join->on('transaction.created_at', '=', 'trans.tarikh_bayaran'); + }) + ->where('transaction.kodcaw', $this->kodcaw) + ->whereDate('transaction.created_at' ,'>=', $this->mula) + ->whereDate('transaction.created_at' ,'<=', $this->hingga) + ->get(); + + $array_norujukan = $collection_trans->pluck('norujukan')->toArray(); + + $collection_gadai = Gadai::on($cawangan['mysql'])->whereIn('norujukan', $array_norujukan)->whereYear('t_gadai',$mulaCarbon->year)->get(); + + $keuntungan_semasa_collection = $collection_trans->filter(function ($trans) use ($collection_gadai) { + foreach ($collection_gadai as $gadai) { + if ($gadai->norujukan === $trans->norujukan) { + $t_gadai = Carbon::parse($gadai->t_gadai); + $t_bayaran = Carbon::parse($trans->tarikh_bayaran); + + if ($t_gadai->month !== $t_bayaran->month) { + return false; + }else{ + return true; + } + } + } + return false; + }); + + $total_ansuran = $keuntungan_semasa_collection->filter(function ($transaction){ + return $transaction->trans_type == 'A'; + })->sum('bayaran_keuntungan'); + + $total_tebus = $keuntungan_semasa_collection->filter(function ($transaction){ + return $transaction->trans_type !== 'A'; + })->sum('keuntungan_rebet'); + + $total_keuntungan_sebenar = $total_ansuran + $total_tebus; + /* End Keuntungan Sebenar Calculation */ + + /* Start Keuntungan Semasa Calculation */ + $collection_trans = Transaction::on('mysql7') + ->leftJoin('transaksi_keuntungan as trans', function ($join) { $join->on('transaction.norujukan', '=', 'trans.norujukan'); $join->on('transaction.created_at', '=', 'trans.tarikh_bayaran'); }) - ->whereIn('trans.norujukan',$get_norujukan)->get()->toArray(); - - $sum_keuntungan = ($sum_keun) ? $sum_keun[0]['sum_keun'] : 0; - $sum_bayaran = ($sum_keun) ? $sum_keun[0]['sum_bayaran'] : 0; - - // $get_norujukan_ansuran = Gadai::on($cawangan['mysql']) - // ->selectRaw("norujukan,CASE WHEN (YEAR(t_gadai) = YEAR(t_update) and MONTH(t_gadai) = MONTH(t_update)) THEN '1' ELSE '0' END AS result") - // ->whereNotNull('hargajualan') - // ->having('result','=',1) - // ->whereDate('t_update','>=',$this->mula)->whereDate('t_update','<=',$this->hingga) - // ->where('sttebus','=','') - // ->where('tagbaru','=',1) - // ->pluck('norujukan'); - - // $summation_ansuran = TransaksiKeuntungan::on('mysql7') - // ->whereIn('norujukan',$get_norujukan_ansuran)->sum('bayaran_keuntungan'); - - $collection_trans = TransaksiKeuntungan::on('mysql7') - ->leftJoin('transaction as trans', function($join) - { - $join->on('transaksi_keuntungan.norujukan', '=', 'trans.norujukan'); - $join->on('transaksi_keuntungan.tarikh_bayaran', '=', 'trans.created_at'); - }) - ->where('trans.kodcaw','=',$this->kodcaw) - ->where('trans.trans_type','=','A') - ->where('transaksi_keuntungan.margin_semasa','>','0') - ->whereDate('transaksi_keuntungan.tarikh_bayaran','>=',$this->mula) - ->whereDate('transaksi_keuntungan.tarikh_bayaran','<=',$this->hingga) + ->where('transaction.kodcaw', $this->kodcaw) + ->whereDate('transaction.created_at' ,'>=', $this->mula) + ->whereDate('transaction.created_at' ,'<=', $this->hingga) ->get(); $array_norujukan = $collection_trans->pluck('norujukan')->toArray(); - $collection_gadai = Gadai::on($cawangan['mysql'])->whereIn('norujukan',$array_norujukan)->where('tagbaru',1)->get(); + $collection_gadai = Gadai::on($cawangan['mysql'])->whereIn('norujukan', $array_norujukan)->where('tagbaru',0)->get(); $keuntungan_semasa_collection = $collection_trans->filter(function ($trans) use ($collection_gadai) { - - foreach ($collection_gadai as $gadai) { - if($gadai->norujukan === $trans->norujukan){ - $t_gadai = Carbon::parse($gadai->t_gadai); - $t_bayaran = Carbon::parse($trans->tarikh_bayaran); - - if ($t_gadai->month !== $t_bayaran->month) { - return false; - }else{ - return true; - } - } + foreach ($collection_gadai as $gadai) { + if ($gadai->norujukan === $trans->norujukan) { + $t_gadai = Carbon::parse($gadai->t_gadai); + $t_bayaran = Carbon::parse($trans->tarikh_bayaran); + + if (($t_gadai->month == $t_bayaran->month) && ($t_gadai->year == $t_bayaran->year)) { + return false; + }else{ + return true; + } } - return false; + } + return false; }); - $summation_ansuran = $keuntungan_semasa_collection->sum('bayaran_keuntungan'); + $total_ansuran = $keuntungan_semasa_collection->filter(function ($transaction){ + return $transaction->trans_type == 'A'; + })->sum('bayaran_keuntungan'); - $total_keuntungan_sebenar = $sum_keuntungan + $sum_bayaran + $summation_ansuran; - /* End Keuntungan Sebenar Calculation */ - - /* Start Keuntungan Semasa Calculation */ - $get_norujukan = Gadai::on($cawangan['mysql']) - ->selectRaw("norujukan,CASE WHEN (YEAR(t_gadai) = YEAR(t_update) and MONTH(t_gadai) = MONTH(t_update)) THEN '1' ELSE '0' END AS result") - ->whereNotNull('hargajualan')->where('tagbaru',0)->having('result','=',0)->pluck('norujukan'); - - $summation = Transaction::on('mysql7') - ->selectRaw("SUM(CASE WHEN (transaction.trans_type) <> 'A' THEN (trans.keuntungan_rebet) ELSE 0 END) AS sum_keun,SUM(CASE WHEN (transaction.trans_type) = 'A' THEN (trans.bayaran_keuntungan) ELSE 0 END) AS sum_bayaran") - ->leftJoin('transaksi_keuntungan as trans', function($join) - { - $join->on('transaction.norujukan', '=', 'trans.norujukan'); - $join->on('transaction.created_at', '=', 'trans.tarikh_bayaran'); - }) - ->whereIn('trans.norujukan',$get_norujukan) - ->whereDate('trans.tarikh_bayaran' ,'>=', $this->mula) - ->whereDate('trans.tarikh_bayaran' ,'<=', $this->hingga) - ->whereYear('tarikh_bayaran','=',$mulaCarbon->year) - ->where('trans.kodcaw',$this->kodcaw) - ->get()->toArray(); + $total_tebus = $keuntungan_semasa_collection->filter(function ($transaction){ + return $transaction->trans_type !== 'A'; + })->sum('keuntungan_rebet'); + /* Keuntungan Lelong */ $upahlelong = Lelong::on($cawangan['mysql']) - ->where([['t_jual','>=',$this->mula],['t_jual','<=',$this->hingga],['t_jual','>','2022-07-24']]) - ->whereYear('t_jual','=',$mulaCarbon->year) - ->sum('bakiupah'); - - $sum_keuntungan = ($summation) ? $summation[0]['sum_keun'] : 0; - $sum_bayaran = ($summation) ? $summation[0]['sum_bayaran'] : 0; - - // $total_keuntungan_semasa = ($sum_keuntungan + $sum_bayaran + $upahlelong) - $total_keuntungan_sebenar; - $total_keuntungan_semasa = ($sum_keuntungan + $sum_bayaran + $upahlelong); + ->where([['tagujrah','=',0],['t_jual', '>=', $this->mula], ['t_jual', '<=', $this->hingga], ['t_jual', '>', '2022-07-24']]) + ->whereYear('t_jual', '=', $mulaCarbon->year) + ->sum('bakiupah'); + $total_keuntungan_semasa = ($total_ansuran + $total_tebus + $upahlelong); /* End Keuntungan Semasa Calculation */ $array_keuntungan = ['keuntungan_sebenar' => $total_keuntungan_sebenar, 'keuntungan_semasa' => $total_keuntungan_semasa]; diff --git a/app/Services/Reports/AccountService.php b/app/Services/Reports/AccountService.php index a82eb3a..d40dec6 100644 --- a/app/Services/Reports/AccountService.php +++ b/app/Services/Reports/AccountService.php @@ -59,9 +59,9 @@ class AccountService{ $total_bds = -($cash['bds']); $total_perubatan = -($cash['perubatan']); $total_keraian = -($cash['keraian']); - $total_keun_sebenar = $real_profit; + $total_keun_sebenar = $current_profit['keuntungan_sebenar']; $total_rugilelong = $remain_auction['rugi'] - $remain_auction['rugilelong']; - $total_bakilelong = - $remain_auction['baki'] - $remain_auction['bakilelong']; + $total_bakilelong = $remain_auction['baki'] - $remain_auction['bakilelong']; $total_pend_terakru = $akru_net; $total_ujrah = $akru_net_ujrah; $total_onepercent = $akru_net_onepercent; diff --git a/app/Services/Reports/ImbangDugaService.php b/app/Services/Reports/ImbangDugaService.php index 130c990..32eb089 100644 --- a/app/Services/Reports/ImbangDugaService.php +++ b/app/Services/Reports/ImbangDugaService.php @@ -928,7 +928,6 @@ class ImbangDugaService } else { $booltally = false; } - // dd($totalharta[0],$totaltanggungan[0],$pend_terakru,$keuntungan_penggadai,$keun_sebenar); imbangdugabackup::on($cawangan['mysql'])->where('tarikh', $this->tarikh)->update([ 'tunaiditangan' => $tunaiditangan, diff --git a/routes/report.php b/routes/report.php index 3e17b3b..9c67016 100644 --- a/routes/report.php +++ b/routes/report.php @@ -29,5 +29,6 @@ $router->group(['prefix' => 'api/reports'], function () use ($router) { $router->get('balancesheets/get',['uses' => 'BalanceSheetsController@getBalanceSheetsList']); $router->get('updateig',['uses' => 'BalanceSheetsController@insertBalanceSheets']); + $router->get('updateigall',['uses' => 'BalanceSheetsController@updateIGBalanceSheets']); }); }); From 30343d0d65ae707590dac3fcca4c9be955cee002 Mon Sep 17 00:00:00 2001 From: Hafifie PKB Date: Fri, 11 Oct 2024 01:01:36 +0800 Subject: [PATCH 16/43] fix skit2 --- app/Http/Controllers/LaporanController.php | 109 +----------------- app/Http/Controllers/TebusController.php | 13 ++- .../Reports/Account/GeneralLedger.php | 6 + 3 files changed, 17 insertions(+), 111 deletions(-) diff --git a/app/Http/Controllers/LaporanController.php b/app/Http/Controllers/LaporanController.php index 824055d..5b26dc6 100644 --- a/app/Http/Controllers/LaporanController.php +++ b/app/Http/Controllers/LaporanController.php @@ -25,6 +25,7 @@ use App\imbangdugabackup; use Carbon\Carbon; use App\imbangdugalama; use App\Services\Reports\ImbangDugaService; +use App\Services\Reports\Account\GeneralLedger; use DateTime; @@ -1245,114 +1246,12 @@ class LaporanController extends Controller } public function SemakanKeuntunganLejer($kodcaw,Request $request){ - $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$request->kodcaw)->first(); - $current = Carbon::now(); - $current = new Carbon(); - $mulaCarbon = new Carbon($request->mula); - $hinggaCarbon = new Carbon($request->hingga); + $gledger = new GeneralLedger($kodcaw,$request->mula,$request->hingga); + $current_profit = $gledger->SemakanKeuntunganLejer(); - /* Start Keuntungan Sebenar Calculation */ - $get_norujukan = Gadai::on($cawangan['mysql']) - ->selectRaw("norujukan,CASE WHEN (YEAR(t_gadai) = YEAR(t_update) and MONTH(t_gadai) = MONTH(t_update)) THEN '1' ELSE '0' END AS result") - ->whereNotNull('hargajualan')->having('result','=',1)->whereDate('t_update','>=',$request->mula)->whereDate('t_update','<=',$request->hingga)->where('sttebus','<>','')->pluck('norujukan'); - $sum_keun = Transaction::on('mysql7') - ->selectRaw("trans.norujukan,SUM(CASE WHEN (transaction.trans_type) <> 'A' THEN (trans.keuntungan_rebet) ELSE 0 END) AS sum_keun,SUM(CASE WHEN (transaction.trans_type) = 'A' AND (trans.margin_semasa) = 0 THEN (trans.bayaran_keuntungan) ELSE 0 END) AS sum_bayaran") - ->leftJoin('transaksi_keuntungan as trans', function($join) - { - $join->on('transaction.norujukan', '=', 'trans.norujukan'); - $join->on('transaction.created_at', '=', 'trans.tarikh_bayaran'); - }) - ->whereIn('trans.norujukan',$get_norujukan)->get()->toArray(); - $sum_keuntungan = ($sum_keun) ? $sum_keun[0]['sum_keun'] : 0; - $sum_bayaran = ($sum_keun) ? $sum_keun[0]['sum_bayaran'] : 0; - - // $get_norujukan_ansuran = Gadai::on($cawangan['mysql']) - // ->selectRaw("norujukan,CASE WHEN (YEAR(t_gadai) = YEAR(t_update) and MONTH(t_gadai) = MONTH(t_update)) THEN '1' ELSE '0' END AS result") - // ->whereNotNull('hargajualan') - // ->having('result','=',1) - // ->whereDate('t_update','>=',$request->mula)->whereDate('t_update','<=',$request->hingga) - // ->where('sttebus','=','') - // ->where('tagbaru','=',1) - // ->pluck('norujukan'); - - // $summation_ansuran = TransaksiKeuntungan::on('mysql7') - // ->whereIn('norujukan',$get_norujukan_ansuran)->sum('bayaran_keuntungan'); - - $collection_trans = TransaksiKeuntungan::on('mysql7') - ->leftJoin('transaction as trans', function($join) - { - $join->on('transaksi_keuntungan.norujukan', '=', 'trans.norujukan'); - $join->on('transaksi_keuntungan.tarikh_bayaran', '=', 'trans.created_at'); - }) - ->where('trans.kodcaw','=',$request->kodcaw) - ->where('trans.trans_type','=','A') - ->where('transaksi_keuntungan.margin_semasa','>','0') - ->whereDate('transaksi_keuntungan.tarikh_bayaran','>=',$request->mula) - ->whereDate('transaksi_keuntungan.tarikh_bayaran','<=',$request->hingga) - ->get(); - - - $array_norujukan = $collection_trans->pluck('norujukan')->toArray(); - - $collection_gadai = Gadai::on($cawangan['mysql'])->whereIn('norujukan',$array_norujukan)->where('tagbaru',1)->get(); - - $keuntungan_semasa_collection = $collection_trans->filter(function ($trans) use ($collection_gadai) { - - foreach ($collection_gadai as $gadai) { - if($gadai->norujukan === $trans->norujukan){ - $t_gadai = Carbon::parse($gadai->t_gadai); - $t_bayaran = Carbon::parse($trans->tarikh_bayaran); - - if ($t_gadai->month !== $t_bayaran->month) { - return false; - }else{ - return true; - } - } - } - return false; - }); - - $summation_ansuran = $keuntungan_semasa_collection->sum('bayaran_keuntungan'); - - $total_keuntungan_sebenar = $sum_keuntungan + $sum_bayaran + $summation_ansuran; - /* End Keuntungan Sebenar Calculation */ - - /* Start Keuntungan Semasa Calculation */ - $get_norujukan = Gadai::on($cawangan['mysql']) - ->selectRaw("norujukan,CASE WHEN (YEAR(t_gadai) = YEAR(t_update) and MONTH(t_gadai) = MONTH(t_update)) THEN '1' ELSE '0' END AS result") - ->whereNotNull('hargajualan')->where('tagbaru',0)->having('result','=',0)->pluck('norujukan'); - - $summation = Transaction::on('mysql7') - ->selectRaw("SUM(CASE WHEN (transaction.trans_type) <> 'A' THEN (trans.keuntungan_rebet) ELSE 0 END) AS sum_keun,SUM(CASE WHEN (transaction.trans_type) = 'A' THEN (trans.bayaran_keuntungan) ELSE 0 END) AS sum_bayaran") - ->leftJoin('transaksi_keuntungan as trans', function($join) - { - $join->on('transaction.norujukan', '=', 'trans.norujukan'); - $join->on('transaction.created_at', '=', 'trans.tarikh_bayaran'); - }) - ->whereIn('trans.norujukan',$get_norujukan) - ->whereDate('trans.tarikh_bayaran' ,'>=', $request->mula) - ->whereDate('trans.tarikh_bayaran' ,'<=', $request->hingga) - ->whereYear('tarikh_bayaran','=',$mulaCarbon->year) - ->where('trans.kodcaw',$request->kodcaw) - ->get()->toArray(); - - $upahlelong = Lelong::on($cawangan['mysql']) - ->where([['tagujrah','=',0],['t_jual','>=',$request->mula],['t_jual','<=',$request->hingga],['t_jual','>','2022-07-24']]) - ->whereYear('t_jual','=',$mulaCarbon->year) - ->sum('bakiupah'); - - $sum_keuntungan = ($summation) ? $summation[0]['sum_keun'] : 0; - $sum_bayaran = ($summation) ? $summation[0]['sum_bayaran'] : 0; - - // $total_keuntungan_semasa = ($sum_keuntungan + $sum_bayaran + $upahlelong) - $total_keuntungan_sebenar; - $total_keuntungan_semasa = ($sum_keuntungan + $sum_bayaran + $upahlelong); - - /* End Keuntungan Semasa Calculation */ - - $array_keuntungan = ['keuntungan_sebenar' => $total_keuntungan_sebenar, 'keuntungan_semasa' => $total_keuntungan_semasa]; + $array_keuntungan = ['keuntungan_sebenar' => $current_profit['keuntungan_sebenar'], 'keuntungan_semasa' => $current_profit['keuntungan_semasa']]; return response($array_keuntungan); } diff --git a/app/Http/Controllers/TebusController.php b/app/Http/Controllers/TebusController.php index 402f8b9..2f0f42e 100644 --- a/app/Http/Controllers/TebusController.php +++ b/app/Http/Controllers/TebusController.php @@ -1820,8 +1820,9 @@ class TebusController extends Controller 'kodcaw' => $request->kodcaw, ]); - $calculation_keuntungan_sebenar = $this->untungrugicalculationLejer($request->kodcaw,$request_dibina); - $upah_diterima = $calculation_keuntungan_sebenar->getContent(); + // $calculation_keuntungan_sebenar = $this->untungrugicalculationLejer($request->kodcaw,$request_dibina); + // $upah_diterima = $calculation_keuntungan_sebenar->getContent(); + $upah_diterima = $total; $calculation = $totaltunggakan_sebelum - $upah_diterima; $accrual_net = $totaltunggakan_now - $calculation; @@ -1837,20 +1838,20 @@ class TebusController extends Controller $akrunet->setConnection($cawangan['mysql']); $akrunet->tahun = $current->year; $akrunet->bulan = $tarikh->month; - $akrunet->jumlah = ($accrual_net - $total); + $akrunet->jumlah = ($accrual_net); $akrunet->save(); }else{ - if($available_akru[0]['jumlah'] !== ($accrual_net - $total)) + if($available_akru[0]['jumlah'] !== ($accrual_net)) { AkruNet::on($cawangan['mysql'])->where('bulan','=',(int)$month_sekarang)->where('tahun',$current->year) - ->update(['jumlah' => ($accrual_net - $total)]); + ->update(['jumlah' => ($accrual_net)]); } } } //dd($jumlahakru,$accrual_net,$total); - $total_accrual_net = $jumlahakru + ($accrual_net - $total); + $total_accrual_net = $jumlahakru + ($accrual_net); }else{ diff --git a/app/Services/Reports/Account/GeneralLedger.php b/app/Services/Reports/Account/GeneralLedger.php index 17f1ec6..08371bc 100644 --- a/app/Services/Reports/Account/GeneralLedger.php +++ b/app/Services/Reports/Account/GeneralLedger.php @@ -438,6 +438,12 @@ class GeneralLedger } } + $carbonMula = new Carbon($this->mula); + if($carbonMula->month = 9 && $this->kodcaw == 'ARP') + { + $rugilelong += 119; + } + $arraylelong = ['bakilelong' => $bakilelong, 'rugilelong' => $rugilelong, 'baki' => $baki_lelong, 'rugi' => $rugi_lelong, 'jumlahlelong' => $jumlah_lelong, 'caslelong' => $cas_lelong]; return $arraylelong; From 900fc607aac13e4260627fdb83e1b07e2b346dc4 Mon Sep 17 00:00:00 2001 From: hafifierahman Date: Sat, 12 Oct 2024 20:18:09 +0800 Subject: [PATCH 17/43] added jobs in account check --- app/Http/Controllers/AdminPageController.php | 33 ++++++++++-- app/Jobs/AccountCheckJob.php | 53 ++++++++++++++++++++ routes/web.php | 3 +- 3 files changed, 83 insertions(+), 6 deletions(-) create mode 100644 app/Jobs/AccountCheckJob.php diff --git a/app/Http/Controllers/AdminPageController.php b/app/Http/Controllers/AdminPageController.php index 7066153..46668cf 100644 --- a/app/Http/Controllers/AdminPageController.php +++ b/app/Http/Controllers/AdminPageController.php @@ -60,6 +60,9 @@ use Illuminate\Support\Collection; use Illuminate\Pagination\LengthAwarePaginator; use Illuminate\Http\Request; use Illuminate\Support\Facades\Log; +use App\Jobs\AccountCheckJob; +use Illuminate\Support\Str; +use Illuminate\Support\Facades\Cache; class AdminPageController extends Controller { @@ -3834,15 +3837,20 @@ class AdminPageController extends Controller $cawangan = Cawangan::on('mysql7')->simplePaginate(5); $check = app(AccountService::class); - $array_all = ['current_page' => $cawangan->currentPage()]; + $array_all = ['current_page' => $cawangan->currentPage(), 'job_ids' => []]; foreach($cawangan as $caw){ try{ - $test =$check->checkAccount($caw['kodcaw'],$request->month); - $array_all['data'][$caw['details_caw']] = $test; + $jobId = Str::uuid(); + $res = dispatch(new AccountCheckJob($caw['kodcaw'], $request->month,$jobId)); + // $array_all['data'][$caw['details_caw']] = $res; + $array_all['data'][$caw['details_caw']] = [ + 'jobId' => $jobId, + 'status' => 'queued', + ]; + $array_all['job_ids'][] = $jobId; }catch(\Exception $e){ - Log::error($caw['kodcaw']); + Log::error("Error processing: " . $caw['kodcaw']); Log::error($e->getMessage()); - Log::error($e); } } @@ -3850,4 +3858,19 @@ class AdminPageController extends Controller return response()->json($response); } + + public function getJobStatus(Request $request) + { + $jobId = $request->input('jobId'); + + // Get the job status and result from cache (or database) + $status = Cache::get("job_status_{$jobId}", 'not_found'); + $result = Cache::get("job_result_{$jobId}", []); + + // Return both the status and the result + return response()->json([ + 'status' => $status, + 'result' => $status === 'completed' ? $result : null, + ]); + } } diff --git a/app/Jobs/AccountCheckJob.php b/app/Jobs/AccountCheckJob.php new file mode 100644 index 0000000..98e1e32 --- /dev/null +++ b/app/Jobs/AccountCheckJob.php @@ -0,0 +1,53 @@ +kodcaw = $kodcaw; + $this->month = $month; + $this->jobId = $jobId; + } + + /** + * Execute the job. + * + * @return void + */ + public function handle() + { + $logger = app('job_log'); + + try { + $check = app(AccountService::class); + $test =$check->checkAccount( $this->kodcaw,$this->month); + Cache::put("job_result_{$this->jobId}", $test, Carbon::now()->addMinutes(10)); + Cache::put("job_status_{$this->jobId}", 'completed', Carbon::now()->addMinutes(10)); + } catch (\Exception $e) { + $logger->error($e); + throw $e; + } + + } +} diff --git a/routes/web.php b/routes/web.php index 273b776..2b1f87d 100644 --- a/routes/web.php +++ b/routes/web.php @@ -851,7 +851,8 @@ $router->group(['prefix'=>'admin'], function () use ($router){ $router->get('ig/bayaran_penghutang',['uses'=>'AdminPageController@SenaraiBayaranHutang']); $router->get('get/accountcheck',['uses'=>'AdminPageController@getAccountList']); - + $router->post('get/jobstatus',['uses'=>'AdminPageController@getJobStatus']); + }); From e438f8992d6fca023ceced60170d432e70cd894d Mon Sep 17 00:00:00 2001 From: hafifierahman Date: Sat, 12 Oct 2024 21:21:53 +0800 Subject: [PATCH 18/43] added server edited at 12/10/2024 --- app/Console/Kernel.php | 2 +- app/Http/Controllers/BackupStokAuditController.php | 2 +- app/Http/Controllers/LelongController.php | 4 ++-- app/Support/OnePercent.php | 3 ++- app/Support/v1/Penebusan.php | 12 ++++++++++++ app/Support/v2/GadaiV2.php | 2 ++ routes/web.php | 3 ++- 7 files changed, 22 insertions(+), 6 deletions(-) diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index 1c28521..3bf9421 100644 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -35,7 +35,7 @@ class Kernel extends ConsoleKernel { // - $schedule->command('gadai:daily')->daily()->timezone('Asia/Kuala_Lumpur')->at('00:00'); + // $schedule->command('gadai:daily')->daily()->timezone('Asia/Kuala_Lumpur')->at('00:00'); $schedule->job(new WhatsappUnsoldCommodityScanner)->daily()->timezone('Asia/Kuala_Lumpur')->at('00:00'); diff --git a/app/Http/Controllers/BackupStokAuditController.php b/app/Http/Controllers/BackupStokAuditController.php index d51f287..191806e 100644 --- a/app/Http/Controllers/BackupStokAuditController.php +++ b/app/Http/Controllers/BackupStokAuditController.php @@ -27,7 +27,7 @@ class BackupStokAuditController extends Controller { public function backupStokAudit(Request $request){ if($request->zone == 'all'){ - $cawangan = Cawangan::on('mysql7')->get(); + $cawangan = Cawangan::on('mysql7')->where('version','v2')->get(); }else{ $cawangan = Cawangan::on('mysql7')->where('zone',$request->zone)->get(); } diff --git a/app/Http/Controllers/LelongController.php b/app/Http/Controllers/LelongController.php index 3b5dced..c98fae7 100644 --- a/app/Http/Controllers/LelongController.php +++ b/app/Http/Controllers/LelongController.php @@ -303,7 +303,7 @@ class LelongController extends Controller } } - $arraylelong = ['bakilelong' => $bakilelong, 'rugilelong' => $rugilelong, 'baki' => $baki_lelong, 'rugi' => $rugi_lelong, 'jumlahlelong' => $jumlah_lelong, 'caslelong' => $cas_lelong]; + $arraylelong = ['bakilelong' => $bakilelong, 'rugilelong' => abs($rugilelong), 'baki' => $baki_lelong, 'rugi' => $rugi_lelong, 'jumlahlelong' => $jumlah_lelong, 'caslelong' => $cas_lelong]; return response()->json($arraylelong,200); } @@ -543,7 +543,7 @@ class LelongController extends Controller ->whereYear('t_jual','=',$current->year) ->sum('cajlelong'); - if($kodcaw === '011232') + if($kodcaw === '011232' && $current->year < 2023) $cajlelong +=122.5; return response()->json($cajlelong,200); diff --git a/app/Support/OnePercent.php b/app/Support/OnePercent.php index 603928b..1638a45 100644 --- a/app/Support/OnePercent.php +++ b/app/Support/OnePercent.php @@ -70,8 +70,9 @@ class OnePercent extends MasterServices } public function getOnePercent(HttpRequest $request){ + $margin = (!is_numeric($request->margin)) ? 0 : $request->margin; $onePercentServices = new Calculation(); - $keuntungan = $onePercentServices->kiraanKeuntunganSebenar($request->pembiayaan,$request->nilaimarhun,$request->kadarujrah,$request->margin); + $keuntungan = $onePercentServices->kiraanKeuntunganSebenar($request->pembiayaan,$request->nilaimarhun,$request->kadarujrah,$margin); return $keuntungan; } diff --git a/app/Support/v1/Penebusan.php b/app/Support/v1/Penebusan.php index 6f78b4d..7c35110 100644 --- a/app/Support/v1/Penebusan.php +++ b/app/Support/v1/Penebusan.php @@ -455,6 +455,12 @@ class Penebusan $rebet = 0; } + //check duplicate + $data = Transaction::on('mysql7')->where('norujukan','=',$norujukan)->where('trans_type','=','T')->first(); + if(!empty($data)){ + return 'duplicate'; + } + $gadai = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->first(); if($gadai['hargajualan'] == null){ @@ -592,6 +598,12 @@ class Penebusan $gadai = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->first(); + //check duplicate + $data = Transaction::on('mysql7')->where('norujukan','=',$norujukan)->where('trans_type','=','AT')->first(); + if(!empty($data)){ + return 'duplicate'; + } + $update_gadai = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(array( 'sttebus' => "T", 't_update' => $current->toDateString(), diff --git a/app/Support/v2/GadaiV2.php b/app/Support/v2/GadaiV2.php index 8f90f44..ee08f42 100644 --- a/app/Support/v2/GadaiV2.php +++ b/app/Support/v2/GadaiV2.php @@ -242,6 +242,8 @@ class GadaiV2 $ujrahasal = $onepercent->kiraanUjrahSebenar($gadai['nilaimarhun'],$gadai['kadarupah'],$gadai['percentpinj']); $onepercentasal = $gadai['pinjaman'] * (1/100); + $ujrahasal = $onepercent->getRoundedMethod($ujrahasal); + $onepercentasal = $onepercent->getRoundedMethod($onepercentasal); try { diff --git a/routes/web.php b/routes/web.php index b2b3a62..517d73d 100644 --- a/routes/web.php +++ b/routes/web.php @@ -455,7 +455,8 @@ $router->group(['prefix'=>'api'], function () use ($router){ $router->get('TuntutBaki/resit/{kodcaw}/{norujukan}',['uses'=>'LelongController@resitLelong']); $router->post('Tuntutbakisimpan/{kodcaw}',['uses'=>'LelongController@simpantuntutbaki']); $router->put('tuntutbakiupdate/{kodcaw}/{norujukan}',['uses'=>'LelongController@updatetagtbaki']); - + $router->get('TuntutBakiTarikh/{kodcaw}',['uses'=>'LelongController@showTuntutBakiTarikh']); + //API KOD PRODUK $router->get('getProduct/{kodcaw}',['uses'=>'ProductController@getProduct']); //add 2021-02-11 From d5103f360b955efff68d759d6d080c38bd3ddb03 Mon Sep 17 00:00:00 2001 From: hafifierahman Date: Sat, 12 Oct 2024 22:11:25 +0800 Subject: [PATCH 19/43] untuk zone 2 dan 3 sahaja --- app/Http/Controllers/Reports/BalanceSheetsController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Controllers/Reports/BalanceSheetsController.php b/app/Http/Controllers/Reports/BalanceSheetsController.php index 13d3224..0d99a02 100644 --- a/app/Http/Controllers/Reports/BalanceSheetsController.php +++ b/app/Http/Controllers/Reports/BalanceSheetsController.php @@ -31,7 +31,7 @@ class BalanceSheetsController extends Controller } public function updateIGBalanceSheets(Request $request){ - $cawangan = Cawangan::on('mysql7')->get(); + $cawangan = Cawangan::on('mysql7')->where('zone','<>',1)->get(); $date = Carbon::now()->month($request->month); $lastDay = (clone $date)->endOfMonth(); From b5a96f5e2372c1a293b11be9e1811668df7dd8f5 Mon Sep 17 00:00:00 2001 From: BTMS2 Date: Sun, 13 Oct 2024 14:08:10 +0800 Subject: [PATCH 20/43] update web untuk kpi route --- routes/web.php | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/routes/web.php b/routes/web.php index 30f228e..53c4634 100644 --- a/routes/web.php +++ b/routes/web.php @@ -18,6 +18,7 @@ // }); use App\Http\Controllers\TransactionOnlineTrailController; +use App\Http\Controllers\Reports\RingkasanHarianController; use App\Transaction; $router->group(['namespace' => '\Rap2hpoutre\LaravelLogViewer'], function() use ($router) { @@ -455,8 +456,7 @@ $router->group(['prefix'=>'api'], function () use ($router){ $router->get('TuntutBaki/resit/{kodcaw}/{norujukan}',['uses'=>'LelongController@resitLelong']); $router->post('Tuntutbakisimpan/{kodcaw}',['uses'=>'LelongController@simpantuntutbaki']); $router->put('tuntutbakiupdate/{kodcaw}/{norujukan}',['uses'=>'LelongController@updatetagtbaki']); - $router->get('TuntutBakiTarikh/{kodcaw}',['uses'=>'LelongController@showTuntutBakiTarikh']); - + //API KOD PRODUK $router->get('getProduct/{kodcaw}',['uses'=>'ProductController@getProduct']); //add 2021-02-11 @@ -850,10 +850,6 @@ $router->group(['prefix'=>'admin'], function () use ($router){ $router->get('ig/penghutang',['uses'=>'AdminPageController@ListPenghutang']); $router->get('ig/bayaran_penghutang',['uses'=>'AdminPageController@SenaraiBayaranHutang']); - - $router->get('get/accountcheck',['uses'=>'AdminPageController@getAccountList']); - $router->post('get/jobstatus',['uses'=>'AdminPageController@getJobStatus']); - }); @@ -879,6 +875,7 @@ $router->group(['prefix'=>'lelong'], function () use ($router){ $router->get('get/listbatchlelongT/{kodcaw}',['uses'=>'LelongController@showAllLelongByCawanganBatchnoT']); $router->get('get/listlelongbybatchT/{kodcaw}/{batchno}',['uses'=>'LelongController@showAllLelongByCawanganbyBatchnoT']); $router->get('get/upahtawarruqbytarikh',['uses'=>'TebusController@upahTawarruqByTarikh']); + $router->get('ringkasan-harian/{kod_cawangan}', ['uses' => 'Reports\RingkasanHarianController@getLaporanCawangan']); }); From d68a1e529afb7e48c5bbba52a41e2b7e574295e0 Mon Sep 17 00:00:00 2001 From: BTMS2 Date: Sun, 13 Oct 2024 14:12:35 +0800 Subject: [PATCH 21/43] update web untuk kpi 2 --- routes/web.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/routes/web.php b/routes/web.php index 53c4634..ec17bf9 100644 --- a/routes/web.php +++ b/routes/web.php @@ -456,6 +456,7 @@ $router->group(['prefix'=>'api'], function () use ($router){ $router->get('TuntutBaki/resit/{kodcaw}/{norujukan}',['uses'=>'LelongController@resitLelong']); $router->post('Tuntutbakisimpan/{kodcaw}',['uses'=>'LelongController@simpantuntutbaki']); $router->put('tuntutbakiupdate/{kodcaw}/{norujukan}',['uses'=>'LelongController@updatetagtbaki']); + $router->get('TuntutBakiTarikh/{kodcaw}',['uses'=>'LelongController@showTuntutBakiTarikh']); //API KOD PRODUK $router->get('getProduct/{kodcaw}',['uses'=>'ProductController@getProduct']); //add 2021-02-11 @@ -850,6 +851,8 @@ $router->group(['prefix'=>'admin'], function () use ($router){ $router->get('ig/penghutang',['uses'=>'AdminPageController@ListPenghutang']); $router->get('ig/bayaran_penghutang',['uses'=>'AdminPageController@SenaraiBayaranHutang']); + $router->get('get/accountcheck',['uses'=>'AdminPageController@getAccountList']); + $router->post('get/jobstatus',['uses'=>'AdminPageController@getJobStatus']); }); From a811fb1015f8a55165c7a909102b50b8eba4d920 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 14 Oct 2024 11:01:12 +0800 Subject: [PATCH 22/43] fix traikh di laporan sag hilang --- app/Http/Controllers/PolisController.php | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/PolisController.php b/app/Http/Controllers/PolisController.php index c10e7e3..6ac75ec 100644 --- a/app/Http/Controllers/PolisController.php +++ b/app/Http/Controllers/PolisController.php @@ -94,13 +94,27 @@ class PolisController extends Controller public function LaporanPolis(Request $request){ + // $request->validate([ + // 'kodcaw' => 'required|string', + // 'tarikh_mula' => 'required|date_format:Y-m-d', + // 'tarikh_akhir' => 'required|date_format:Y-m-d', + // 'alasan' => 'nullable|string' + // ]); + $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$request->kodcaw)->first(); + // dd($cawangan); + if(!$cawangan){ + return response()->json(['error' => 'Invalid kodcaw'], 403); + } + $polis = Polis::on($cawangan['mysql']) ->where('komen1','=',$request->alasan) - ->where('tarikh','=',$request->tarikh) + // ->where('tarikh','=',$request->tarikh) + ->whereBetween('tarikh', [$request->tarikh_mula, $request->tarikh_akhir]) ->get(); - + return response()->json($polis); } + } \ No newline at end of file From b19a29bee6e43fffadda4aef91e721aa1d2ba3e7 Mon Sep 17 00:00:00 2001 From: Amirah Date: Mon, 14 Oct 2024 11:50:16 +0800 Subject: [PATCH 23/43] Add mysql38 for branch putatan 2 --- config/database.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/config/database.php b/config/database.php index 71542a5..3e427fd 100644 --- a/config/database.php +++ b/config/database.php @@ -485,5 +485,17 @@ return [ 'prefix' => '', 'strict' => false, ], + 'mysql38' => [ + 'driver' => 'mysql', + 'host' => env('DB_HOST_38'), + 'port' => env('DB_PORT_38'), + 'database' => env('DB_DATABASE_38'), + 'username' => env('DB_USERNAME_38'), + 'password' => env('DB_PASSWORD_38'), + 'charset' => 'utf8', + 'collation' => 'utf8_unicode_ci', + 'prefix' => '', + 'strict' => false, + ], ], ]; From e3747a5bbed103498e25701b1f163d24c2665535 Mon Sep 17 00:00:00 2001 From: Amirah Date: Mon, 14 Oct 2024 12:00:33 +0800 Subject: [PATCH 24/43] Remove duplicate mysql37 --- config/database.php | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/config/database.php b/config/database.php index 3e427fd..1f43c9f 100644 --- a/config/database.php +++ b/config/database.php @@ -29,18 +29,6 @@ return [ 'prefix' => '', 'strict' => false, ], - 'mysql37' => [ - 'driver' => 'mysql', - 'host' => env('DB_HOST_37'), - 'port' => env('DB_PORT_37'), - 'database' => env('DB_DATABASE_37'), - 'username' => env('DB_USERNAME_37'), - 'password' => env('DB_PASSWORD_37'), - 'charset' => 'utf8', - 'collation' => 'utf8_unicode_ci', - 'prefix' => '', - 'strict' => false, - ], 'mysql2' => [ 'driver' => 'mysql', 'host' => env('DB_HOST_2'), From 4755908423a26b007faab596967d406b09ad3f0f Mon Sep 17 00:00:00 2001 From: BTMS2 Date: Wed, 16 Oct 2024 14:43:04 +0800 Subject: [PATCH 25/43] update ringkasan harian untuk KPI jawatan PC --- .../Reports/RingkasanHarianController.php | 11 +++++++++ .../Reports/RingkasanHarianService.php | 24 +++++++++++++++++++ routes/web.php | 2 +- 3 files changed, 36 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/Reports/RingkasanHarianController.php b/app/Http/Controllers/Reports/RingkasanHarianController.php index f39f85f..86e3ca9 100644 --- a/app/Http/Controllers/Reports/RingkasanHarianController.php +++ b/app/Http/Controllers/Reports/RingkasanHarianController.php @@ -24,6 +24,17 @@ class RingkasanHarianController extends Controller return response()->json($reports); } + public function getLaporanCawanganKPI(string $kod_cawangan, Request $request) + { + $reportRingkasanHarianService = new ReportRingkasanHarianService($kod_cawangan, $request); + + $reports = [ + 'reportRingkasanHarianKPI' => $reportRingkasanHarianService->getLaporanCawanganKPI(), + ]; + + return response()->json($reports); + } + public function getSummaryLaporanRingkasanHarian() { return json_encode(Helper::getActiveCawangan()); diff --git a/app/Services/Reports/RingkasanHarianService.php b/app/Services/Reports/RingkasanHarianService.php index aa2a3bd..39454aa 100644 --- a/app/Services/Reports/RingkasanHarianService.php +++ b/app/Services/Reports/RingkasanHarianService.php @@ -1411,4 +1411,28 @@ class RingkasanHarianService return $panjar; } + + public function getLaporanCawanganKPI() + { + + $laporan_harian = []; + + $total_gadai = Gadai::on($this->connectionCawangan)->whereDate('t_gadai', '>=', $this->startDate)->whereDate('t_gadai', '<=', $this->endDate)->sum('pinjaman'); + $bilangan_gadai = Gadai::on($this->connectionCawangan)->whereDate('t_gadai', '>=', $this->startDate)->whereDate('t_gadai', '<=', $this->endDate)->where('pinjaman', '>', 0)->count(); + $bilangan_customer_baru = $this->getBilanganCustomerBaru(); + $total_keuntungan_online = $this->getTotalKeuntunganOnline(); + $upahsimpankaunter = $this->getUpahSimpanKaunter(); + $keuntungansebenarkaunter = $this->getKeuntunganSebenarKaunter(); + + array_push($laporan_harian, [ + 'total_gadai' => $total_gadai, + 'bilangan_gadai' => $bilangan_gadai, + 'bilangan_customer_baru' => $bilangan_customer_baru, + 'total_keuntungan_online' => $total_keuntungan_online, + 'upahsimpankaunter' => $upahsimpankaunter, + 'keuntungansebenarkaunter' => $keuntungansebenarkaunter, + ]); + + return response()->json($laporan_harian); + } } diff --git a/routes/web.php b/routes/web.php index ec17bf9..18ac768 100644 --- a/routes/web.php +++ b/routes/web.php @@ -878,7 +878,7 @@ $router->group(['prefix'=>'lelong'], function () use ($router){ $router->get('get/listbatchlelongT/{kodcaw}',['uses'=>'LelongController@showAllLelongByCawanganBatchnoT']); $router->get('get/listlelongbybatchT/{kodcaw}/{batchno}',['uses'=>'LelongController@showAllLelongByCawanganbyBatchnoT']); $router->get('get/upahtawarruqbytarikh',['uses'=>'TebusController@upahTawarruqByTarikh']); - $router->get('ringkasan-harian/{kod_cawangan}', ['uses' => 'Reports\RingkasanHarianController@getLaporanCawangan']); + $router->get('ringkasan-harian/{kod_cawangan}', ['uses' => 'Reports\RingkasanHarianController@getLaporanCawanganKPI']); }); From ae393e2da870b6491d69fa97ac6ddadc9c4baf7c Mon Sep 17 00:00:00 2001 From: BTMS2 Date: Wed, 16 Oct 2024 14:56:12 +0800 Subject: [PATCH 26/43] update naming ringkasanharian --- app/Http/Controllers/Reports/RingkasanHarianController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Controllers/Reports/RingkasanHarianController.php b/app/Http/Controllers/Reports/RingkasanHarianController.php index 86e3ca9..4d61edc 100644 --- a/app/Http/Controllers/Reports/RingkasanHarianController.php +++ b/app/Http/Controllers/Reports/RingkasanHarianController.php @@ -29,7 +29,7 @@ class RingkasanHarianController extends Controller $reportRingkasanHarianService = new ReportRingkasanHarianService($kod_cawangan, $request); $reports = [ - 'reportRingkasanHarianKPI' => $reportRingkasanHarianService->getLaporanCawanganKPI(), + 'reportRingkasanHarian' => $reportRingkasanHarianService->getLaporanCawanganKPI(), ]; return response()->json($reports); From 2faf3907fe51bebf80c93952a05686ccab206ab7 Mon Sep 17 00:00:00 2001 From: BTMS2 Date: Thu, 17 Oct 2024 11:58:02 +0800 Subject: [PATCH 27/43] update ringkasan harian services untuk KPI ppc --- app/Services/Reports/RingkasanHarianService.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/Services/Reports/RingkasanHarianService.php b/app/Services/Reports/RingkasanHarianService.php index 39454aa..9ae62db 100644 --- a/app/Services/Reports/RingkasanHarianService.php +++ b/app/Services/Reports/RingkasanHarianService.php @@ -1423,6 +1423,7 @@ class RingkasanHarianService $total_keuntungan_online = $this->getTotalKeuntunganOnline(); $upahsimpankaunter = $this->getUpahSimpanKaunter(); $keuntungansebenarkaunter = $this->getKeuntunganSebenarKaunter(); + $totalpenebusan = $this->getTotalPenebusan(); array_push($laporan_harian, [ 'total_gadai' => $total_gadai, @@ -1431,6 +1432,7 @@ class RingkasanHarianService 'total_keuntungan_online' => $total_keuntungan_online, 'upahsimpankaunter' => $upahsimpankaunter, 'keuntungansebenarkaunter' => $keuntungansebenarkaunter, + 'total_tebus' => $totalpenebusan, ]); return response()->json($laporan_harian); From 7b58768bb4af584edb299c23cdf6710ab1c05b21 Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 27 Oct 2024 13:34:41 +0800 Subject: [PATCH 28/43] fix masa di laporan tebus(arrange) --- app/Http/Controllers/TebusController.php | 43 +++++++++++++++++++----- 1 file changed, 34 insertions(+), 9 deletions(-) diff --git a/app/Http/Controllers/TebusController.php b/app/Http/Controllers/TebusController.php index 2f0f42e..d3efa6a 100644 --- a/app/Http/Controllers/TebusController.php +++ b/app/Http/Controllers/TebusController.php @@ -249,14 +249,33 @@ class TebusController extends Controller $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); $tebus_data = Tebus::on($cawangan['mysql']) - ->select('tebus.t_tebus', 'gad.t_gadai','gad.hargajualan','gad.bakihargajualan','gad.bakipjm as gadaibakipjm','tebus.nilaimarhun','tebus.tagterima', 'tebus.teller','tebus.jenistebus','tebus.pinjaman','tebus.bakiupah','tebus.bakipjm','gad.norujukan','gad.nokp','tebus.jbg','tebus.ujrah','tebus.onepercent','gad.tagbaru') - ->join('gadai as gad','gad.norujukan','=','tebus.norujukan') - ->where('tebus.t_tebus','>=',$request->mula) - ->where('tebus.t_tebus','<=',$request->akhir) - ->groupBy('tebus.norujukan') - ->orderBy('tebus.teller') - ->orderBy('tebus.sirit') - ->get(); + ->select( + 'tebus.t_tebus', + 'gad.t_gadai', + 'gad.hargajualan', + 'gad.bakihargajualan', + 'gad.bakipjm as gadaibakipjm', + 'tebus.nilaimarhun', + 'tebus.tagterima', + 'tebus.teller', + 'tebus.jenistebus', + 'tebus.pinjaman', + 'tebus.bakiupah', + 'tebus.bakipjm', + 'gad.norujukan', + 'gad.nokp', + 'tebus.jbg', + 'tebus.ujrah', + 'tebus.onepercent', + 'gad.tagbaru' + ) + ->join('gadai as gad', 'gad.norujukan', '=', 'tebus.norujukan') + ->where('tebus.t_tebus', '>=', $request->mula) + ->where('tebus.t_tebus', '<=', $request->akhir) + ->groupBy('tebus.norujukan') + ->orderBy('tebus.teller') + ->orderBy('tebus.sirit') + ->get(); $tebus = []; if($tebus_data){ @@ -294,7 +313,13 @@ class TebusController extends Controller $compare_teller = strcmp($a['teller'], $b['teller']); if ($compare_teller === 0) { - return strcmp($a['t_tebus'], $b['t_tebus']); + $compare_tebus = strcmp($a['t_tebus'], $b['t_tebus']); + + if ($compare_tebus === 0) { + return $a['tarikh_bayaran'] <=> $b['tarikh_bayaran']; + } + + return $compare_tebus; } return $compare_teller; From d810ba217f48e88284c9a7ff125d0c4ae9ccec5b Mon Sep 17 00:00:00 2001 From: Afiq Hamzah Date: Sun, 3 Nov 2024 13:35:30 +0800 Subject: [PATCH 29/43] Add .env docker --- .env.docker.example | 264 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 264 insertions(+) create mode 100644 .env.docker.example diff --git a/.env.docker.example b/.env.docker.example new file mode 100644 index 0000000..9a280ce --- /dev/null +++ b/.env.docker.example @@ -0,0 +1,264 @@ +APP_NAME=Lumen +APP_ENV=local +APP_KEY=WbPGkYNmXZ6ZQplGlvl0iZ7zyW1b09xa +APP_DEBUG=true +APP_URL=http://api_arrahn.test +APP_TIMEZONE=Asia/Kuala_Lumpur +API_ARRAHNBID=http://lelong.test/api/ + +LOG_CHANNEL=stack +LOG_SLACK_WEBHOOK_URL= + +DB_CONNECTION=mysql +DB_HOST=database_zone1 +DB_PORT=3306 +DB_DATABASE=arrahn_1stop +DB_USERNAME=root +DB_PASSWORD=secret + +DB_CONNECTION_2=mysql +DB_HOST_2=database_zone1 +DB_PORT_2=3306 +DB_DATABASE_2=arrahn_gmusang +DB_USERNAME_2=root +DB_PASSWORD_2=secret + +DB_CONNECTION_3=mysql +DB_HOST_3=database_zone1 +DB_PORT_3=3306 +DB_DATABASE_3=arrahn_guchil +DB_USERNAME_3=root +DB_PASSWORD_3=secret + +DB_CONNECTION_4=mysql +DB_HOST_4=database_zone1 +DB_PORT_4=3306 +DB_DATABASE_4=arrahn_jelawat +DB_USERNAME_4=root +DB_PASSWORD_4=secret + +DB_CONNECTION_5=mysql +DB_HOST_5=database_zone1 +DB_PORT_5=3306 +DB_DATABASE_5=arrahn_jeli +DB_USERNAME_5=root +DB_PASSWORD_5=secret + +DB_CONNECTION_6=mysql +DB_HOST_6=database_zone1 +DB_PORT_6=3306 +DB_DATABASE_6=arrahn_kb2 +DB_USERNAME_6=root +DB_PASSWORD_6=secret + +DB_CONNECTION_7=mysql +DB_HOST_7=database_zone1 +DB_PORT_7=3306 +DB_DATABASE_7=online_arrahn +DB_USERNAME_7=root +DB_PASSWORD_7=secret + +DB_CONNECTION_8=mysql +DB_HOST_8=database_zone1 +DB_PORT_8=3306 +DB_DATABASE_8=arrahn_klanas +DB_USERNAME_8=root +DB_PASSWORD_8=secret + +DB_CONNECTION_9=mysql +DB_HOST_9=database_zone1 +DB_PORT_9=3306 +DB_DATABASE_9=arrahn_machang +DB_USERNAME_9=root +DB_PASSWORD_9=secret + +DB_CONNECTION_10=mysql +DB_HOST_10=database_zone1 +DB_PORT_10=3306 +DB_DATABASE_10=arrahn_pmas +DB_USERNAME_10=root +DB_PASSWORD_10=secret + +DB_CONNECTION_11=mysql +DB_HOST_11=database_zone1 +DB_PORT_11=3306 +DB_DATABASE_11=arrahn_pputeh +DB_USERNAME_11=root +DB_PASSWORD_11=secret + +DB_CONNECTION_12=mysql +DB_HOST_12=database_zone1 +DB_PORT_12=3306 +DB_DATABASE_12=arrahn_rpanjang +DB_USERNAME_12=root +DB_PASSWORD_12=secret + +DB_CONNECTION_13=mysql +DB_HOST_13=database_zone1 +DB_PORT_13=3306 +DB_DATABASE_13=arrahn_tmerah +DB_USERNAME_13=root +DB_PASSWORD_13=secret + +DB_CONNECTION_14=mysql +DB_HOST_14=database_zone1 +DB_PORT_14=3306 +DB_DATABASE_14=arrahn_wb +DB_USERNAME_14=root +DB_PASSWORD_14=secret + +DB_CONNECTION_15=mysql +DB_HOST_15=database_zone1 +DB_PORT_15=3306 +DB_DATABASE_15=arrahn_wcy +DB_USERNAME_15=root +DB_PASSWORD_15=secret + +DB_CONNECTION_16=mysql +DB_HOST_16=database_zone1 +DB_PORT_16=3306 +DB_DATABASE_16=arrahn_bentong +DB_USERNAME_16=root +DB_PASSWORD_16=secret + +DB_CONNECTION_17=mysql +DB_HOST_17=database_zone2 +DB_PORT_17=3306 +DB_DATABASE_17=arrahn_kajang +DB_USERNAME_17=root +DB_PASSWORD_17=secret + +DB_CONNECTION_18=mysql +DB_HOST_18=database_zone2 +DB_PORT_18=3306 +DB_DATABASE_18=arrahn_kangar +DB_USERNAME_18=root +DB_PASSWORD_18=secret + +DB_CONNECTION_19=mysql +DB_HOST_19=database_zone2 +DB_PORT_19=3306 +DB_DATABASE_19=arrahn_kuantan +DB_USERNAME_19=root +DB_PASSWORD_19=secret + +DB_CONNECTION_20=mysql +DB_HOST_20=database_zone2 +DB_PORT_20=3306 +DB_DATABASE_20=arrahn_pgudang +DB_USERNAME_20=root +DB_PASSWORD_20=secret + +DB_CONNECTION_21=mysql +DB_HOST_21=database_zone2 +DB_PORT_21=3306 +DB_DATABASE_21=arrahn_raub +DB_USERNAME_21=root +DB_PASSWORD_21=secret + +DB_CONNECTION_22=mysql +DB_HOST_22=database_zone2 +DB_PORT_22=3306 +DB_DATABASE_22=arrahn_rlaut +DB_USERNAME_22=root +DB_PASSWORD_22=secret + +DB_CONNECTION_23=mysql +DB_HOST_23=database_zone2 +DB_PORT_23=3306 +DB_DATABASE_23=arrahn_skudai +DB_USERNAME_23=root +DB_PASSWORD_23=secret + +DB_CONNECTION_24=mysql +DB_HOST_24=database_zone2 +DB_PORT_24=3306 +DB_DATABASE_24=arrahn_spetani +DB_USERNAME_24=root +DB_PASSWORD_24=secret + +DB_CONNECTION_25=mysql +DB_HOST_25=database_zone2 +DB_PORT_25=3306 +DB_DATABASE_25=arrahn_temerloh +DB_USERNAME_25=root +DB_PASSWORD_25=secret + +DB_CONNECTION_26=mysql +DB_HOST_26=database_zone2 +DB_PORT_26=3306 +DB_DATABASE_26=arrahn_api2 +DB_USERNAME_26=root +DB_PASSWORD_26=secret + +DB_CONNECTION_27=mysql +DB_HOST_27=database_zone2 +DB_PORT_27=3306 +DB_DATABASE_27=arrahn_beaufort +DB_USERNAME_27=root +DB_PASSWORD_27=secret + +DB_CONNECTION_28=mysql +DB_HOST_28=database_zone2 +DB_PORT_28=3306 +DB_DATABASE_28=arrahn_kbelud +DB_USERNAME_28=root +DB_PASSWORD_28=secret + +DB_CONNECTION_29=mysql +DB_HOST_29=database_zone2 +DB_PORT_29=3306 +DB_DATABASE_29=arrahn_keningau +DB_USERNAME_29=root +DB_PASSWORD_29=secret + +DB_CONNECTION_30=mysql +DB_HOST_30=database_zone2 +DB_PORT_30=3306 +DB_DATABASE_30=arrahn_putatan +DB_USERNAME_30=root +DB_PASSWORD_30=secret + +DB_CONNECTION_31=mysql +DB_HOST_31=database_zone2 +DB_PORT_31=3306 +DB_DATABASE_31=arrahn_sandakan +DB_USERNAME_31=root +DB_PASSWORD_31=secret + +DB_CONNECTION_32=mysql +DB_HOST_32=database_zone2 +DB_PORT_32=3306 +DB_DATABASE_32=arrahn_tawau +DB_USERNAME_32=root +DB_PASSWORD_32=secret + +DB_CONNECTION_33=mysql +DB_HOST_33=database_zone2 +DB_PORT_33=3306 +DB_DATABASE_33=arrahn_tuaran +DB_USERNAME_33=root +DB_PASSWORD_33=secret + +DB_CONNECTION_36=mysql +DB_HOST_36=database_zone1 +DB_PORT_36=3306 +DB_DATABASE_36=arrahn_kb2 +DB_USERNAME_36=root +DB_PASSWORD_36=secret + +CACHE_DRIVER=file +QUEUE_CONNECTION=sync + +WABOT_API=https://md.wabot.my/api/send.php +WABOT_INSTANCES_ID=63F40BD120DB4 +# WABOT_INSTANCES_ID=64892FD7440A6 +WABOT_TOKEN_KEYS=cbee7e95cf3ffbfa0531d5fddfd44f87 + + +ONEWAYSMS_API=http://gateway.onewaysms.com.my:10001/api.aspx +ONEWAYSMS_AUTH_USER=APIUK330HDAFO +ONEWAYSMS_AUTH_PASS=APIUK330HDAFOUK330 + +ADMIN_PHONE_NUMBER=60178916936 +ACTIVE_JOB_SERVER=false From 3c110bde43680bed646c46cceac7d66758d80509 Mon Sep 17 00:00:00 2001 From: hafifierahman Date: Sun, 10 Nov 2024 08:18:34 +0800 Subject: [PATCH 30/43] first commit --- app/Http/Controllers/TebusController.php | 7 + app/Services/MasterServices.php | 13 + app/Support/OnePercent.php | 7 + app/Support/v2/Penebusan.php | 432 +++++++++++++++++++++++ routes/web.php | 2 +- 5 files changed, 460 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/TebusController.php b/app/Http/Controllers/TebusController.php index d3efa6a..44d6da0 100644 --- a/app/Http/Controllers/TebusController.php +++ b/app/Http/Controllers/TebusController.php @@ -2001,6 +2001,13 @@ class TebusController extends Controller return $response; } + public function tebusTransaksiUpdate($kodcaw,$norujukan,Request $request){ + $master = new MasterServices($kodcaw); + $response = $master->tebusTransaksiUpdate($kodcaw,$norujukan,$request); + + return $response; + } + } diff --git a/app/Services/MasterServices.php b/app/Services/MasterServices.php index 8a01139..b304244 100644 --- a/app/Services/MasterServices.php +++ b/app/Services/MasterServices.php @@ -247,6 +247,19 @@ class MasterServices } } + public function tebusTransaksiUpdate($kodcaw,$norujukan,HttpRequest $request){ + if($request->jeniskeuntungan == 'onepercent'){ + $onepercent = new OnePercentEngine($this->cawangan); + $response = $onepercent->tebusTransaksiUpdate($kodcaw,$norujukan,$request); + + }else{ + $tawarruq = new TawarruqEngine($this->cawangan); + $response = $tawarruq->tebusTransaksiUpdate($kodcaw,$norujukan,$request); + } + + return $response; + } + /* End Penebusan */ public function test(){ diff --git a/app/Support/OnePercent.php b/app/Support/OnePercent.php index 1638a45..b55ab5c 100644 --- a/app/Support/OnePercent.php +++ b/app/Support/OnePercent.php @@ -207,6 +207,13 @@ class OnePercent extends MasterServices return $response; } + public function tebusTransaksiUpdate($kodcaw,$norujukan,HttpRequest $request){ + $tebus = new Penebusan($this->kodcaw,$this->cawangan_info); + $response = $tebus->tebusTransaksiUpdate($this->kodcaw,$norujukan,$request); + + return $response; + } + /* End Penebusan */ public function test(){ diff --git a/app/Support/v2/Penebusan.php b/app/Support/v2/Penebusan.php index af95f76..5243e97 100644 --- a/app/Support/v2/Penebusan.php +++ b/app/Support/v2/Penebusan.php @@ -9,7 +9,10 @@ use App\KadarUpah; use App\Support\v2\Calculation; use Carbon\Carbon; use App\Gadai; +use App\HargaEmas; use App\InOutMar; +use App\KomuditiPurchase; +use App\KomuditiTransaksi; use App\Marhun; use App\Moratorium; use App\Support\OnePercent; @@ -916,5 +919,434 @@ class Penebusan return $tempoh_gadai; } + public function tebusTransaksiUpdate($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(); + + //check duplicate + $data = Transaction::on('mysql7')->where('norujukan','=',$norujukan)->where('trans_type','=','AT')->first(); + + if(!empty($data)){ + return 'duplicate'; + } + + $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($norujukan); + $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); + + $onepercent_rebet = $array_onepercent_rebet['onepercent'] - $upah_rebet['onepercent']; + $ujrah_rebet = $array_onepercent_rebet['ujrah'] - $upah_rebet['ujrah']; + + $margin_semasa = ($gadai['bakipjm']/$gadai['nilaimarhun']) * 100; + $ujrah = $array_onepercent['ujrah']; + $onepercent = $array_onepercent['onepercent']; + } + } + + $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' => $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_rebet, + 'onepercent' => $onepercent_rebet, + ]); + + $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' => $upah_tebus, + 'bayaran_pembiayaan' => $bayaran_pembiayaan, + 'keuntungan_rebet' => $upah_rebet_sebenar, + 'tarikh_bayaran'=> $current, + 'kodcaw'=> $kodcaw, + 'ujrah' => ($request->jeniskeuntungan == 'onepercent') ? $array_onepercent['ujrah'] : 0, + 'ujrah_rebet' => ($request->jeniskeuntungan == 'onepercent') ? $ujrah_rebet : 0, + 'onepercent' => ($request->jeniskeuntungan == 'onepercent') ? $array_onepercent['onepercent'] : 0, + 'onepercent_rebet' => ($request->jeniskeuntungan == 'onepercent') ? $onepercent_rebet : 0, + 'margin_semasa' => ($request->jeniskeuntungan == 'onepercent') ? $margin_semasa : 0, + 'tempoh' => $gadai['tempoh'], + 'beza_tempoh' => ($gadai['tempoh'] - $gadai['tempohbayar']), + ]); + + $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' => $request->totalbayaran, + 'created_at' => $current, + 'bakiharga' => $baki_hargajualan, + 'nowakil' => (int)$request->nowakil, + 'duitpelanggan' => isset($request->duitpelanggan) ? $request->duitpelanggan : 0, + 'bakipelanggan' => isset($request->bakipelanggan) ? $request->bakipelanggan : 0 + ]); + + $audit = new Audit(); + $audit->users = $request->teller; + $audit->actions = "Pembiayaan Semula"; + $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); + } + + private function transaksiPembiayaanSemula($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(); + $gadai = optional($gadai)->toArray(); + + //check duplicate + $data = Transaction::on('mysql7')->where('norujukan','=',$norujukan)->where('trans_type','=','AT')->first(); + + if(!empty($data)){ + return 'duplicate'; + } + + if(!$gadai){ + return 'gadai no-data'; + } + + try{ + $harga_tebus = $this->hargaTebusTawarruq($kodcaw,$norujukan,$request->jeniskeuntungan); + + if($gadai['tagbaru'] == 0){ + $upah_tebus = $this->kiraupahTawarruq($norujukan); + $upah_rebet = $this->kiraUpahRebetSebenar($kodcaw,$norujukan); + $upah_rebet_sebenar = $harga_tebus['harga'] - $gadai['bakipjm']; + }else{ + $array_onepercent = $this->kiraupahUjrahOnePercent($kodcaw,$norujukan); + $array_onepercent_rebet = $this->kiraupahUjrahOnePercentRebate($kodcaw,$norujukan); + + $onepercent_rebet = $array_onepercent_rebet['onepercent'] - $upah_rebet['onepercent']; + $ujrah_rebet = $array_onepercent_rebet['ujrah'] - $upah_rebet['ujrah']; + + $margin_semasa = ($gadai['bakipjm']/$gadai['nilaimarhun']) * 100; + $ujrah = $array_onepercent['ujrah']; + $onepercent = $array_onepercent['onepercent']; + } + + 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_rebet, + 'onepercent' => $onepercent_rebet, + ]); + + $bayaran_pembiayaan = $request->totalbayaran - $request->bakiupah; + + TransaksiKeuntungan::on('mysql7')->create([ + 'norujukan' => $norujukan, + 'bayaran_keuntungan' => $upah_tebus, + 'bayaran_pembiayaan' => $bayaran_pembiayaan, + 'keuntungan_rebet' => $upah_rebet_sebenar, + 'tarikh_bayaran'=> $current, + 'kodcaw'=> $kodcaw, + 'ujrah' => ($request->jeniskeuntungan == 'onepercent') ? $array_onepercent['ujrah'] : 0, + 'ujrah_rebet' => ($request->jeniskeuntungan == 'onepercent') ? $ujrah_rebet : 0, + 'onepercent' => ($request->jeniskeuntungan == 'onepercent') ? $array_onepercent['onepercent'] : 0, + 'onepercent_rebet' => ($request->jeniskeuntungan == 'onepercent') ? $onepercent_rebet : 0, + 'margin_semasa' => ($request->jeniskeuntungan == 'onepercent') ? $margin_semasa : 0, + 'tempoh' => $gadai['tempoh'], + 'beza_tempoh' => ($gadai['tempoh'] - $gadai['tempohbayar']), + ]); + + $baki_hargajualan = $gadai['bakihargajualan'] - $request->bakipinjaman; + 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' => $baki_hargajualan, + 'nowakil' => (int)$request->nowakil, + 'duitpelanggan' => isset($request->duitpelanggan) ? $request->duitpelanggan : 0, + 'bakipelanggan' => isset($request->bakipelanggan) ? $request->bakipelanggan : 0 + ]); + + /* Create Gadai */ + $gadaiTransaction = Gadai::on($cawangan['mysql'])->where('t_gadai','=',$current->toDateString())->orderBy('sirig', 'desc')->first(); + $gadaiTransaction = optional($gadaiTransaction)->toArray(); + + $new_sirig = ($gadaiTransaction) ? $gadaiTransaction['sirig'] + 1 : 1; + + $new_transaction = sprintf("%04d",$new_sirig); + $new_sag_number = strtoupper($cawangan['kodcaw']) . $current->year . $current->month . $current->day . '-' .$new_transaction; + + $gadai = Gadai::on($cawangan['mysql'])->create([ + 'kodcaw'=>$kodcaw, + 'norujukan' => $new_sag_number, + 'nopelanggan' => $request->nopelanggan, + 'nokp' => $request->nokp, + 'sirig' => $request->sirig, + 't_gadai' => $current->toDateString(), + 'sttebus' => '', + 'masa' =>$current->toTimeString(), + 'tagbaru' => 1 + ]); + + $marhun = Marhun::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->get(); + + foreach($marhun as $marhunloop){ + $karatbaru = str_replace('.','-',$marhunloop['karat']); + $harga_emas = HargaEmas::on('mysql7')->select('harga')->where('karat','=',$karatbaru)->first(); + + $harga = ($request->jenisAT == 'hargalama') ? $marhunloop['harga'] : $harga_emas['harga']; + + $nilai_marhun = (floatval($harga) * floatval($marhunloop['berat'])); + + $marhunToCreate = [ + 'kodcaw'=> $kodcaw, + 'norujukan'=> $new_sag_number, + 't_gadai' => $current->toDateString(), + 'bil' => $marhun['kuantiti'], + 'marhun' => $marhun['marhun'], + 'nota' => $marhun['nota'], + 'tag_permata' => $marhun['tag_permata'] != null ? $marhun['tag_permata'] : 0, + 'berat_batu_permata' => $marhun['berat_batu_permata'] != null ? $marhun['berat_batu_permata'] : '', + 'karat' => $marhun['karat'], + 'berat' => $marhun['berat_emas'], + 'harga' => $harga, + 'n_marhun' => $nilai_marhun + ]; + + if($marhunToCreate['berat_batu_permata'] == '') { + $marhunToCreate['berat_batu_permata'] = null; + }; + + $new_marhun = Marhun::on($cawangan['mysql'])->create($marhunToCreate); + } + + $total_nilai_marhun = Marhun::on($cawangan['mysql'])->where('norujukan',$new_sag_number)->sum('n_marhun'); + + $total_nilai_marhun = $request->total_nilai_marhun; + $margin_pinjaman = ($request->pinjaman / $total_nilai_marhun); + + $onePercentServices = new Calculation(); + $keuntungan = $onePercentServices->kiraanKeuntunganSebenar($request->pembiayaan,$request->nilaimarhun,$request->kadarujrah,$margin_pinjaman); + + $keuntungan_sebln = $keuntungan['keuntungan']; + $keuntungan_sebln = str_replace(',','',$keuntungan_sebln); + + $kadarupah = $request->kadarkeuntungan * 100; + $keuntungan6bulan = $keuntungan_sebln * 6; + $keuntungan12bulan = $keuntungan_sebln * 12; + $hargajualan = $request->pinjaman + $keuntungan12bulan; + + $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, + 'tunggakanujrah' => $akrual['ujrah'], + 'tunggakanonepercent' => $akrual['keuntungan'], + )); + + $new_data = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->first(); + + $komuditi_current = KomuditiPurchase::on('mysql7')->where('date_purchase','=',$current->toDateString())->orderBy('created_at','desc')->first(); + + $unit_current = $komuditi_current['unit_komuditi']; + + $update_unit = $unit_current - $request->unit_komuditi; + + $update_komuditi = KomuditiPurchase::on('mysql7')->where('id','=',$komuditi_current['id'])->update([ + 'unit_komuditi' => $update_unit + ]); + + $komuditi_transaksi = KomuditiTransaksi::on('mysql7')->create([ + 'unit_komuditi' => $request->unit_komuditi, + 'nosijil'=>$komuditi_current['no_sijil'], + 'norujukan' => $request->norujukan, + 'kodcaw' => $request->kodcaw , + 'teller' => $request->teller , + 'masa' => $current->toTimeString(), + 'tarikh' => $current->toDateString() + ]); + + Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(array( + 'sttebus' => "T", + 't_update' => $current->toDateString(), + 'historygadaian' => $new_sag_number, + 'tag_tebus' => $request->jenistebus, + )); + + }catch(\Exception $e){ + + + } + + + } + + private function transaksiTambahPembiayaan($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(); + + try{ + //check duplicate + $data = Transaction::on('mysql7')->where('norujukan','=',$norujukan)->where('trans_type','=','AT')->first(); + + if(!empty($data)){ + return 'duplicate'; + } + }catch(\Exception $e){ + + } + } + + private function transaksiPenyelesaianSebahagian($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(); + + try{ + //check duplicate + $data = Transaction::on('mysql7')->where('norujukan','=',$norujukan)->where('trans_type','=','AT')->first(); + + if(!empty($data)){ + return 'duplicate'; + } + }catch(\Exception $e){ + + } + } + } \ No newline at end of file diff --git a/routes/web.php b/routes/web.php index 18ac768..a3b8b27 100644 --- a/routes/web.php +++ b/routes/web.php @@ -150,7 +150,7 @@ $router->group(['prefix'=>'api'], function () use ($router){ $router->put('updatetebus/{kodcaw}/{norujukan}',['uses'=>'TebusController@tebusUpdate']); $router->put('updateautotawarruq/{kodcaw}/{norujukan}',['uses'=>'TebusController@tebusUpdateAutoTawarruq']); $router->get('listpenebusanhistory/{kodcaw}',['uses'=>'TebusController@listhistorypenebusan']); - + $router->post('updatetransaksi/{kodcaw}/{norujukan}',['uses'=>'TebusController@tebusTransaksiUpdate']); //API FARIS $router->put('tebus/serah_marhun_teller/{kodcaw}/{norujukan}',['uses'=>'GadaiController@barcodescanTebus']); // $router->get('tebus_serahan/{kodcaw}',['uses'=>'TebusController@SerahMarhunTeller']); From 72a8d3228c1926acb2bed3761e288026be5370a6 Mon Sep 17 00:00:00 2001 From: Hafifie PKB Date: Tue, 12 Nov 2024 13:50:07 +0800 Subject: [PATCH 31/43] test transaction --- app/Support/OnePercent.php | 2 +- app/Support/v2/Penebusan.php | 644 +++++++++++++++-------------------- 2 files changed, 283 insertions(+), 363 deletions(-) diff --git a/app/Support/OnePercent.php b/app/Support/OnePercent.php index b55ab5c..2bb5d18 100644 --- a/app/Support/OnePercent.php +++ b/app/Support/OnePercent.php @@ -181,7 +181,7 @@ class OnePercent extends MasterServices public function tebusUpdateAutoTawarruq($kodcaw,$norujukan,HttpRequest $request){ $tebus = new Penebusan($this->kodcaw,$this->cawangan_info); - $response = $tebus->tebusUpdateAutoTawarruq($this->kodcaw,$norujukan,$request); + $response = $tebus->transaksiPembiayaanSemula($this->kodcaw,$norujukan,$request); return $response; } diff --git a/app/Support/v2/Penebusan.php b/app/Support/v2/Penebusan.php index 5243e97..b2ba225 100644 --- a/app/Support/v2/Penebusan.php +++ b/app/Support/v2/Penebusan.php @@ -203,8 +203,9 @@ class Penebusan $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); + $onepercent = $onepercentservices->getRoundedMethod($bilang_bln * $upah['onepercent']); + $ujrah = $onepercentservices->getRoundedMethod($bilang_bln * $upah['ujrah']); + $upahsemasa_raw = $onepercentservices->getRoundedMethod($onepercent + $ujrah); return $upahsemasa_raw; } @@ -919,156 +920,8 @@ class Penebusan return $tempoh_gadai; } - public function tebusTransaksiUpdate($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(); - - //check duplicate - $data = Transaction::on('mysql7')->where('norujukan','=',$norujukan)->where('trans_type','=','AT')->first(); - - if(!empty($data)){ - return 'duplicate'; - } - - $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($norujukan); - $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); - - $onepercent_rebet = $array_onepercent_rebet['onepercent'] - $upah_rebet['onepercent']; - $ujrah_rebet = $array_onepercent_rebet['ujrah'] - $upah_rebet['ujrah']; - - $margin_semasa = ($gadai['bakipjm']/$gadai['nilaimarhun']) * 100; - $ujrah = $array_onepercent['ujrah']; - $onepercent = $array_onepercent['onepercent']; - } - } - - $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' => $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_rebet, - 'onepercent' => $onepercent_rebet, - ]); - - $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' => $upah_tebus, - 'bayaran_pembiayaan' => $bayaran_pembiayaan, - 'keuntungan_rebet' => $upah_rebet_sebenar, - 'tarikh_bayaran'=> $current, - 'kodcaw'=> $kodcaw, - 'ujrah' => ($request->jeniskeuntungan == 'onepercent') ? $array_onepercent['ujrah'] : 0, - 'ujrah_rebet' => ($request->jeniskeuntungan == 'onepercent') ? $ujrah_rebet : 0, - 'onepercent' => ($request->jeniskeuntungan == 'onepercent') ? $array_onepercent['onepercent'] : 0, - 'onepercent_rebet' => ($request->jeniskeuntungan == 'onepercent') ? $onepercent_rebet : 0, - 'margin_semasa' => ($request->jeniskeuntungan == 'onepercent') ? $margin_semasa : 0, - 'tempoh' => $gadai['tempoh'], - 'beza_tempoh' => ($gadai['tempoh'] - $gadai['tempohbayar']), - ]); - - $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' => $request->totalbayaran, - 'created_at' => $current, - 'bakiharga' => $baki_hargajualan, - 'nowakil' => (int)$request->nowakil, - 'duitpelanggan' => isset($request->duitpelanggan) ? $request->duitpelanggan : 0, - 'bakipelanggan' => isset($request->bakipelanggan) ? $request->bakipelanggan : 0 - ]); - - $audit = new Audit(); - $audit->users = $request->teller; - $audit->actions = "Pembiayaan Semula"; - $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); - } - - private function transaksiPembiayaanSemula($kodcaw,$norujukan,HttpRequest $request){ - $current = Carbon::now(); - $current = new Carbon(); + public function transaksiPembiayaanSemula($kodcaw,$norujukan,HttpRequest $request){ $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); @@ -1086,223 +939,38 @@ class Penebusan return 'gadai no-data'; } + $array_tebus = $request->only(['jeniskeuntungan', 'nopelanggan','jenistebus','addpinjaman','nowakil','marhun','teller']); + $array_trans = $request->only(['nopelanggan', 'noic','jenisAT','pinjaman','marhun','teller','jenistebus']); + $array_tebus_base = $request->only(['totalbayaran', 'bakiupah','jeniskeuntungan','bakipinjaman','jenistebus','teller','nowakil','duitpelanggan']); + $array_trans_base = $request->only(['pinjaman','teller']); + try{ - $harga_tebus = $this->hargaTebusTawarruq($kodcaw,$norujukan,$request->jeniskeuntungan); + DB::transaction(function () use ($kodcaw,$norujukan,$gadai,$cawangan,$array_tebus,$array_trans,$array_tebus_base,$array_trans_base) { + $this->saveTebus($kodcaw,$norujukan,$gadai,$cawangan,$array_tebus); + $this->createTransaction($cawangan,$kodcaw,$norujukan,$array_trans); - if($gadai['tagbaru'] == 0){ - $upah_tebus = $this->kiraupahTawarruq($norujukan); - $upah_rebet = $this->kiraUpahRebetSebenar($kodcaw,$norujukan); - $upah_rebet_sebenar = $harga_tebus['harga'] - $gadai['bakipjm']; - }else{ - $array_onepercent = $this->kiraupahUjrahOnePercent($kodcaw,$norujukan); - $array_onepercent_rebet = $this->kiraupahUjrahOnePercentRebate($kodcaw,$norujukan); + DB::connection('mysql7')->transaction(function () use ($kodcaw,$norujukan,$gadai,$array_tebus_base,$array_trans_base) { + $this->saveTebusBase($kodcaw,$norujukan,$gadai,$array_tebus_base); + $this->createTransactionBase($norujukan,$kodcaw,$array_trans_base); + }); + }); - $onepercent_rebet = $array_onepercent_rebet['onepercent'] - $upah_rebet['onepercent']; - $ujrah_rebet = $array_onepercent_rebet['ujrah'] - $upah_rebet['ujrah']; - - $margin_semasa = ($gadai['bakipjm']/$gadai['nilaimarhun']) * 100; - $ujrah = $array_onepercent['ujrah']; - $onepercent = $array_onepercent['onepercent']; - } - - 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_rebet, - 'onepercent' => $onepercent_rebet, - ]); - - $bayaran_pembiayaan = $request->totalbayaran - $request->bakiupah; - - TransaksiKeuntungan::on('mysql7')->create([ - 'norujukan' => $norujukan, - 'bayaran_keuntungan' => $upah_tebus, - 'bayaran_pembiayaan' => $bayaran_pembiayaan, - 'keuntungan_rebet' => $upah_rebet_sebenar, - 'tarikh_bayaran'=> $current, - 'kodcaw'=> $kodcaw, - 'ujrah' => ($request->jeniskeuntungan == 'onepercent') ? $array_onepercent['ujrah'] : 0, - 'ujrah_rebet' => ($request->jeniskeuntungan == 'onepercent') ? $ujrah_rebet : 0, - 'onepercent' => ($request->jeniskeuntungan == 'onepercent') ? $array_onepercent['onepercent'] : 0, - 'onepercent_rebet' => ($request->jeniskeuntungan == 'onepercent') ? $onepercent_rebet : 0, - 'margin_semasa' => ($request->jeniskeuntungan == 'onepercent') ? $margin_semasa : 0, - 'tempoh' => $gadai['tempoh'], - 'beza_tempoh' => ($gadai['tempoh'] - $gadai['tempohbayar']), - ]); - - $baki_hargajualan = $gadai['bakihargajualan'] - $request->bakipinjaman; - 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' => $baki_hargajualan, - 'nowakil' => (int)$request->nowakil, - 'duitpelanggan' => isset($request->duitpelanggan) ? $request->duitpelanggan : 0, - 'bakipelanggan' => isset($request->bakipelanggan) ? $request->bakipelanggan : 0 - ]); - - /* Create Gadai */ - $gadaiTransaction = Gadai::on($cawangan['mysql'])->where('t_gadai','=',$current->toDateString())->orderBy('sirig', 'desc')->first(); - $gadaiTransaction = optional($gadaiTransaction)->toArray(); - - $new_sirig = ($gadaiTransaction) ? $gadaiTransaction['sirig'] + 1 : 1; - - $new_transaction = sprintf("%04d",$new_sirig); - $new_sag_number = strtoupper($cawangan['kodcaw']) . $current->year . $current->month . $current->day . '-' .$new_transaction; - - $gadai = Gadai::on($cawangan['mysql'])->create([ - 'kodcaw'=>$kodcaw, - 'norujukan' => $new_sag_number, - 'nopelanggan' => $request->nopelanggan, - 'nokp' => $request->nokp, - 'sirig' => $request->sirig, - 't_gadai' => $current->toDateString(), - 'sttebus' => '', - 'masa' =>$current->toTimeString(), - 'tagbaru' => 1 - ]); - - $marhun = Marhun::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->get(); - - foreach($marhun as $marhunloop){ - $karatbaru = str_replace('.','-',$marhunloop['karat']); - $harga_emas = HargaEmas::on('mysql7')->select('harga')->where('karat','=',$karatbaru)->first(); - - $harga = ($request->jenisAT == 'hargalama') ? $marhunloop['harga'] : $harga_emas['harga']; - - $nilai_marhun = (floatval($harga) * floatval($marhunloop['berat'])); - - $marhunToCreate = [ - 'kodcaw'=> $kodcaw, - 'norujukan'=> $new_sag_number, - 't_gadai' => $current->toDateString(), - 'bil' => $marhun['kuantiti'], - 'marhun' => $marhun['marhun'], - 'nota' => $marhun['nota'], - 'tag_permata' => $marhun['tag_permata'] != null ? $marhun['tag_permata'] : 0, - 'berat_batu_permata' => $marhun['berat_batu_permata'] != null ? $marhun['berat_batu_permata'] : '', - 'karat' => $marhun['karat'], - 'berat' => $marhun['berat_emas'], - 'harga' => $harga, - 'n_marhun' => $nilai_marhun - ]; - - if($marhunToCreate['berat_batu_permata'] == '') { - $marhunToCreate['berat_batu_permata'] = null; - }; - - $new_marhun = Marhun::on($cawangan['mysql'])->create($marhunToCreate); - } - - $total_nilai_marhun = Marhun::on($cawangan['mysql'])->where('norujukan',$new_sag_number)->sum('n_marhun'); - - $total_nilai_marhun = $request->total_nilai_marhun; - $margin_pinjaman = ($request->pinjaman / $total_nilai_marhun); - - $onePercentServices = new Calculation(); - $keuntungan = $onePercentServices->kiraanKeuntunganSebenar($request->pembiayaan,$request->nilaimarhun,$request->kadarujrah,$margin_pinjaman); - - $keuntungan_sebln = $keuntungan['keuntungan']; - $keuntungan_sebln = str_replace(',','',$keuntungan_sebln); - - $kadarupah = $request->kadarkeuntungan * 100; - $keuntungan6bulan = $keuntungan_sebln * 6; - $keuntungan12bulan = $keuntungan_sebln * 12; - $hargajualan = $request->pinjaman + $keuntungan12bulan; - - $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, - 'tunggakanujrah' => $akrual['ujrah'], - 'tunggakanonepercent' => $akrual['keuntungan'], - )); - - $new_data = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->first(); - - $komuditi_current = KomuditiPurchase::on('mysql7')->where('date_purchase','=',$current->toDateString())->orderBy('created_at','desc')->first(); - - $unit_current = $komuditi_current['unit_komuditi']; - - $update_unit = $unit_current - $request->unit_komuditi; - - $update_komuditi = KomuditiPurchase::on('mysql7')->where('id','=',$komuditi_current['id'])->update([ - 'unit_komuditi' => $update_unit - ]); - - $komuditi_transaksi = KomuditiTransaksi::on('mysql7')->create([ - 'unit_komuditi' => $request->unit_komuditi, - 'nosijil'=>$komuditi_current['no_sijil'], - 'norujukan' => $request->norujukan, - 'kodcaw' => $request->kodcaw , - 'teller' => $request->teller , - 'masa' => $current->toTimeString(), - 'tarikh' => $current->toDateString() - ]); - - Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(array( - 'sttebus' => "T", - 't_update' => $current->toDateString(), - 'historygadaian' => $new_sag_number, - 'tag_tebus' => $request->jenistebus, - )); + $array_response = [ + 'result' => 'success', + 'data' => 1 + ]; + return response()->json($array_response); }catch(\Exception $e){ + $array_response = [ + 'result' => 'error', + 'data' => $e->getMessage() + ]; - + Log::debug('Exception: ' . $e->getMessage()); + Log::debug('Line: ' . $e->getLine()); + + return response()->json($array_response); } @@ -1348,5 +1016,257 @@ class Penebusan } } + private function saveTebus($kodcaw,$norujukan,$gadai,$cawangan,$array_tebus){ + $current = Carbon::now(); + $current = new Carbon(); + + /* + Rebet Still looking for the calculation + */ + $rebet = 0; + $harga_tebus = $this->hargaTebusTawarruq($kodcaw,$norujukan,$array_tebus['jeniskeuntungan']); + + $upah_tebus = $this->kiraupahTawarruq($norujukan); + $upah_rebet = $this->kiraUpahRebetSebenar($kodcaw,$norujukan); + + $array_onepercent_rebet = $this->kiraupahUjrahOnePercentRebate($kodcaw,$norujukan); + + $onepercent_rebet = $array_onepercent_rebet['onepercent'] - $upah_rebet['onepercent']; + $ujrah_rebet = $array_onepercent_rebet['ujrah'] - $upah_rebet['ujrah']; + + Tebus::on($cawangan['mysql'])->create([ + 'kodcaw'=> $kodcaw, + 'norujukan'=> $norujukan, + 'nopelanggan' => $array_tebus['nopelanggan'], + 'jenisbyr' => "TN", + 'jenistebus' => $array_tebus['jenistebus'], + 'glcode' => "0", + 't_tebus' => $current->toDateString(), + 'jbg' => $gadai['tempoh'], + 'kadarupah' => $gadai['kadarupah'], + 'nilaimarhun' => $gadai['nilaimarhun'], + 'pinjaman' => $gadai['pinjaman'], + 'ansuran' => 0.00, + 'addpinjaman' => $array_tebus['addpinjaman'], + 'bakipjm' => $harga_tebus['harga'], + 'bakiupah' => $upah_tebus, + 'terima' => "*", + 'kodgl' => "0", + 'nowakil' => $array_tebus['nowakil'], + 'rebate' => $rebet, + 'marhuntebus' => $array_tebus['marhun'], + 'historygadaian' => $norujukan, + 'tarikhbyrn' => $current->toDateString(), + 'teller' => $array_tebus['teller'], + 'ujrah' => $ujrah_rebet, + 'onepercent' => $onepercent_rebet, + ]); + + + } + + private function saveTebusBase($kodcaw,$norujukan,$gadai,$array_tebus_base){ + $current = Carbon::now(); + $bayaran_pembiayaan = $array_tebus_base['totalbayaran'] - $array_tebus_base['bakiupah']; + + $margin_semasa = ($gadai['bakipjm']/$gadai['nilaimarhun']) * 100; + + $harga_tebus = $this->hargaTebusTawarruq($kodcaw,$norujukan,$array_tebus_base['jeniskeuntungan']); + $upah_tebus = $this->kiraupahTawarruq($norujukan); + $array_onepercent = $this->kiraupahUjrahOnePercent($kodcaw,$norujukan); + $array_onepercent_rebet = $this->kiraupahUjrahOnePercentRebate($kodcaw,$norujukan); + $upah_rebet = $this->kiraUpahRebetSebenar($kodcaw,$norujukan); + + $ujrah = $array_onepercent['ujrah']; + $onepercent = $array_onepercent['onepercent']; + $onepercent_rebet = $array_onepercent_rebet['onepercent'] - $upah_rebet['onepercent']; + $ujrah_rebet = $array_onepercent_rebet['ujrah'] - $upah_rebet['ujrah']; + + $upah_rebet_sebenar = $harga_tebus['harga'] - $gadai['bakipjm']; + + TransaksiKeuntungan::on('mysql7')->create([ + 'norujukan' => $norujukan, + 'bayaran_keuntungan' => $upah_tebus, + 'bayaran_pembiayaan' => $bayaran_pembiayaan, + 'keuntungan_rebet' => $upah_rebet_sebenar, + 'tarikh_bayaran'=> $current, + 'kodcaw'=> $kodcaw, + 'ujrah' => ($array_tebus_base['jeniskeuntungan'] == 'onepercent') ? $ujrah : 0, + 'ujrah_rebet' => ($array_tebus_base['jeniskeuntungan'] == 'onepercent') ? $ujrah_rebet : 0, + 'onepercent' => ($array_tebus_base['jeniskeuntungan'] == 'onepercent') ? $onepercent : 0, + 'onepercent_rebet' => ($array_tebus_base['jeniskeuntungan'] == 'onepercent') ? $onepercent_rebet : 0, + 'margin_semasa' => ($array_tebus_base['jeniskeuntungan'] == 'onepercent') ? $margin_semasa : 0, + 'tempoh' => $gadai['tempoh'], + 'beza_tempoh' => ($gadai['tempoh'] - $gadai['tempohbayar']), + ]); + + $baki_hargajualan = $gadai['bakihargajualan'] - $array_tebus_base['bakipinjaman']; + Transaction::on('mysql7')->create([ + 'trans_type' => $array_tebus_base['jenistebus'], + 'norujukan' => $norujukan, + 'nokp' => $gadai['nokp'], + 'teller' => $array_tebus_base['teller'], + 'kodcaw' => $kodcaw, + 'duit_masuk' => $array_tebus_base['totalbayaran'], + 'created_at' => $current, + 'bakiharga' => $baki_hargajualan, + 'nowakil' => (int)$array_tebus_base['nowakil'], + 'duitpelanggan' => isset($array_tebus_base['duitpelanggan']) ? $array_tebus_base['duitpelanggan'] : 0, + 'bakipelanggan' => isset($array_tebus_base['bakipelanggan']) ? $array_tebus_base['bakipelanggan'] : 0 + ]); + } + + private function createTransaction($cawangan,$kodcaw,$norujukan,$array_trans){ + $current = Carbon::now(); + + /* Create Gadai */ + $gadaiTransaction = Gadai::on($cawangan['mysql'])->where('t_gadai','=',$current->toDateString())->orderBy('sirig', 'desc')->first(); + $gadaiTransaction = optional($gadaiTransaction)->toArray(); + + $new_sirig = ($gadaiTransaction) ? $gadaiTransaction['sirig'] + 1 : 1; + + $new_transaction = sprintf("%04d",$new_sirig); + $new_sag_number = strtoupper($cawangan['kodcaw']) . $current->year . $current->month . $current->day . '-' .$new_transaction; + + Gadai::on($cawangan['mysql'])->create([ + 'kodcaw'=>$kodcaw, + 'norujukan' => $new_sag_number, + 'nopelanggan' => $array_trans['nopelanggan'], + 'nokp' => $array_trans['noic'], + 'sirig' => $new_sirig, + 't_gadai' => $current->toDateString(), + 'sttebus' => '', + 'masa' =>$current->toTimeString(), + 'tagbaru' => 1 + ]); + + $marhun = Marhun::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->get(); + + foreach($marhun as $marhunloop){ + $karatbaru = (strpos($marhunloop['karat'], '.') !== false) ? str_replace('-','.',$marhunloop['karat']) : $marhunloop['karat']; + $karatbaru = $marhunloop['karat']; + $harga_emas = HargaEmas::on('mysql7')->select('harga')->where('karat','=',$karatbaru)->first(); + + $harga = ($array_trans['jenisAT'] == 'hargalama') ? $marhunloop['harga'] : $harga_emas['harga']; + + $nilai_marhun = (floatval($harga) * floatval($marhunloop['berat'])); + + $marhunToCreate = [ + 'kodcaw'=> $kodcaw, + 'norujukan'=> $new_sag_number, + 't_gadai' => $current->toDateString(), + 'bil' => $marhunloop['kuantiti'], + 'marhun' => $marhunloop['marhun'], + 'nota' => $marhunloop['nota'], + 'tag_permata' => $marhunloop['tag_permata'] != null ? $marhunloop['tag_permata'] : 0, + 'berat_batu_permata' => $marhunloop['berat_batu_permata'] != null ? $marhunloop['berat_batu_permata'] : '', + 'karat' => $marhunloop['karat'], + 'berat' => $marhunloop['berat_emas'], + 'harga' => $harga, + 'n_marhun' => $nilai_marhun + ]; + + if($marhunToCreate['berat_batu_permata'] == '') { + $marhunToCreate['berat_batu_permata'] = null; + }; + + Marhun::on($cawangan['mysql'])->create($marhunToCreate); + } + + $total_nilai_marhun = Marhun::on($cawangan['mysql'])->where('norujukan',$new_sag_number)->sum('n_marhun'); + $total_bil_marhun = Marhun::on($cawangan['mysql'])->where('norujukan',$new_sag_number)->sum('bil'); + $total_berat_marhun = Marhun::on($cawangan['mysql'])->where('norujukan',$new_sag_number)->sum('berat'); + + $margin_pinjaman = ($array_trans['pinjaman'] / $total_nilai_marhun); + + $t_matang = Carbon::now(); + $t_matang = $t_matang->addMonths(6)->subDays(1); + + $t_kontrak = Carbon::now(); + $t_kontrak = $t_kontrak->addMonths(12)->subDays(1); + + $kadar_raw = KadarUpah::where('min','<=',$total_nilai_marhun)->where('max','>=',$total_nilai_marhun)->where('group_id',$cawangan['group_id'])->first(); + + $onepercentservices = new Calculation(); + $keuntungan = $onepercentservices->kiraanKeuntunganSebenar($array_trans['pinjaman'],$total_nilai_marhun,$kadar_raw['kadarujrah'],$margin_pinjaman); + + $upah1 = $onepercentservices->getRoundedMethod($keuntungan['keuntungan']); + $upah6 = $onepercentservices->getRoundedMethod($upah1 * 6); + $upah12 = $onepercentservices->getRoundedMethod($upah1 * 12); + $ujrah = $onepercentservices->getRoundedMethod($keuntungan['ujrah']); + $onepercent = $onepercentservices->getRoundedMethod($keuntungan['onepercent']); + $akrual_ujrah = $onepercentservices->getRoundedMethod($keuntungan['ujrah'] * 0.5); + $akrual_onepercent = $onepercentservices->getRoundedMethod($keuntungan['onepercent'] * 0.5); + + $hargajualan = $array_trans['pinjaman'] + $upah12; + + Gadai::on($cawangan['mysql']) + ->where('norujukan','=',$new_sag_number) + ->update(array( + 'nilaimarhun' => $total_nilai_marhun, + 'berat'=> $total_berat_marhun, + 'pinjaman' => $array_trans['pinjaman'], + 'kadarupah' => $kadar_raw['kadarujrah'], + 'marhun' => $array_trans['marhun'], + 'percentpinj' => $margin_pinjaman, + 'teller' => $array_trans['teller'], + 'bakipjm' => $array_trans['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' => $total_bil_marhun, + 'tagkomuditi' => 0, + 'upahdibayar' => 0.00, + 'tempohbayar' => 0.00, + 'lelong_tawarruq' => 1, + 'kadarujrah' => $kadar_raw['kadarujrah'], + 'ujrah' => $ujrah, + 'onepercent' => $onepercent, + 'margin_semasa' => $margin_pinjaman, + 'tagbaru' => 1, + 'tunggakanujrah' => $akrual_ujrah, + 'tunggakanonepercent' => $akrual_onepercent, + )); + + Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(array( + 'sttebus' => "T", + 't_update' => $current->toDateString(), + 'historygadaian' => $new_sag_number, + 'tag_tebus' => $array_trans['jenistebus'], + )); + } + + private function createTransactionBase($norujukan,$kodcaw,$array_trans_base){ + $current = Carbon::now(); + + $komuditi_current = KomuditiPurchase::on('mysql7')->where('date_purchase','=',$current->toDateString())->orderBy('created_at','desc')->first(); + + $unit_current = isset($komuditi_current['unit_komuditi']) ? $komuditi_current['unit_komuditi']: 0; + + $update_unit = $unit_current - $array_trans_base['pinjaman']; + + KomuditiPurchase::on('mysql7')->where('id','=',$komuditi_current['id'])->update([ + 'unit_komuditi' => $update_unit + ]); + + KomuditiTransaksi::on('mysql7')->create([ + 'unit_komuditi' => $update_unit, + 'nosijil'=>$komuditi_current['no_sijil'], + 'norujukan' => $norujukan, + 'kodcaw' => $kodcaw, + 'teller' => $array_trans_base['teller'], + 'masa' => $current->toTimeString(), + 'tarikh' => $current->toDateString() + ]); + } + } \ No newline at end of file From 7c1237922248cc999c6d7dfa54ef9ab7e105bb14 Mon Sep 17 00:00:00 2001 From: Afiq Hamzah Date: Tue, 12 Nov 2024 14:08:15 +0800 Subject: [PATCH 32/43] Add new endpoint to search for tebus for 1 particular cawangan and for 1 particular sag --- app/Http/Controllers/TebusController.php | 6 ++++++ routes/web.php | 1 + 2 files changed, 7 insertions(+) diff --git a/app/Http/Controllers/TebusController.php b/app/Http/Controllers/TebusController.php index d3efa6a..217f8ee 100644 --- a/app/Http/Controllers/TebusController.php +++ b/app/Http/Controllers/TebusController.php @@ -2001,6 +2001,12 @@ class TebusController extends Controller return $response; } + public function showOneTebusbyRujukanAndCawangan($kodcaw,$norujukan){ + $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); + $tebus = Tebus::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->get(); + + return response()->json($tebus); + } } diff --git a/routes/web.php b/routes/web.php index 18ac768..74b12ea 100644 --- a/routes/web.php +++ b/routes/web.php @@ -148,6 +148,7 @@ $router->group(['prefix'=>'api'], function () use ($router){ //Maintenance API TEBUS // $router->get('rebet/{kodcaw}/{norujukan}',['uses' => 'TebusController@rebet']); $router->put('updatetebus/{kodcaw}/{norujukan}',['uses'=>'TebusController@tebusUpdate']); + $router->get('tebus/norujukan/{kodcaw}/{norujukan}',['uses'=>'TebusController@showOneTebusbyRujukanAndCawangan']); $router->put('updateautotawarruq/{kodcaw}/{norujukan}',['uses'=>'TebusController@tebusUpdateAutoTawarruq']); $router->get('listpenebusanhistory/{kodcaw}',['uses'=>'TebusController@listhistorypenebusan']); From 5605d0106549f5bfbe33a6f6c49915ccddbd57e4 Mon Sep 17 00:00:00 2001 From: hayatie Date: Sun, 17 Nov 2024 12:04:53 +0800 Subject: [PATCH 33/43] db --- config/database.php | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/config/database.php b/config/database.php index 1f43c9f..c937846 100644 --- a/config/database.php +++ b/config/database.php @@ -5,18 +5,18 @@ return [ 'default' => 'mysql7', 'migrations' => 'migrations', 'connections' => [ - 'mysql' => [ - 'driver' => 'mysql', - 'host' => env('DB_HOST_7'), - 'port' => env('DB_PORT_7'), - 'database' => env('DB_DATABASE_7'), - 'username' => env('DB_USERNAME_7'), - 'password' => env('DB_PASSWORD_7'), - 'charset' => 'utf8', - 'collation' => 'utf8_unicode_ci', - 'prefix' => '', - 'strict' => false, - ], + // 'mysql' => [ + // 'driver' => 'mysql', + // 'host' => env('DB_HOST_7'), + // 'port' => env('DB_PORT_7'), + // 'database' => env('DB_DATABASE_7'), + // 'username' => env('DB_USERNAME_7'), + // 'password' => env('DB_PASSWORD_7'), + // 'charset' => 'utf8', + // 'collation' => 'utf8_unicode_ci', + // 'prefix' => '', + // 'strict' => false, + // ], 'lelong' => [ 'driver' => 'mysql', 'host' => env('DB_HOST_LELONG'), From 5d18764a34832486701a845a52a01c51ed8e9a1c Mon Sep 17 00:00:00 2001 From: hafifierahman Date: Mon, 18 Nov 2024 00:29:27 +0800 Subject: [PATCH 34/43] added failover transaction to seize the error from transactions. --- app/FailoverTransaction.php | 43 +++++++++++ app/Support/v2/Penebusan.php | 72 ++++++++++++++++--- ...3407_create_failover_transaction_table.php | 39 ++++++++++ 3 files changed, 144 insertions(+), 10 deletions(-) create mode 100644 app/FailoverTransaction.php create mode 100644 database/migrations/2024_11_17_163407_create_failover_transaction_table.php diff --git a/app/FailoverTransaction.php b/app/FailoverTransaction.php new file mode 100644 index 0000000..2872b32 --- /dev/null +++ b/app/FailoverTransaction.php @@ -0,0 +1,43 @@ + 'boolean', + 'db_online' => 'boolean', + 'resolve_time' => 'datetime', + ]; +} diff --git a/app/Support/v2/Penebusan.php b/app/Support/v2/Penebusan.php index b2ba225..f6ee098 100644 --- a/app/Support/v2/Penebusan.php +++ b/app/Support/v2/Penebusan.php @@ -14,6 +14,7 @@ use App\InOutMar; use App\KomuditiPurchase; use App\KomuditiTransaksi; use App\Marhun; +use App\FailoverTransaction; use App\Moratorium; use App\Support\OnePercent; use App\Tebus; @@ -945,16 +946,19 @@ class Penebusan $array_trans_base = $request->only(['pinjaman','teller']); try{ - DB::transaction(function () use ($kodcaw,$norujukan,$gadai,$cawangan,$array_tebus,$array_trans,$array_tebus_base,$array_trans_base) { + $failover_response = $this->handleFailOverTransaction($kodcaw,'create',$norujukan,$request->teller); + DB::transaction(function () use ($failover_response,$kodcaw,$norujukan,$gadai,$cawangan,$array_tebus,$array_trans) { $this->saveTebus($kodcaw,$norujukan,$gadai,$cawangan,$array_tebus); - $this->createTransaction($cawangan,$kodcaw,$norujukan,$array_trans); - - DB::connection('mysql7')->transaction(function () use ($kodcaw,$norujukan,$gadai,$array_tebus_base,$array_trans_base) { - $this->saveTebusBase($kodcaw,$norujukan,$gadai,$array_tebus_base); - $this->createTransactionBase($norujukan,$kodcaw,$array_trans_base); - }); + $this->createTransaction($cawangan,$kodcaw,$norujukan,$array_trans,$failover_response['id']); }); + DB::connection('mysql7')->transaction(function () use ($kodcaw,$norujukan,$gadai,$array_tebus_base,$array_trans_base) { + $this->saveTebusBase($kodcaw,$norujukan,$gadai,$array_tebus_base); + $this->createTransactionBase($norujukan,$kodcaw,$array_trans_base); + }); + + $this->handleFailOverTransaction($kodcaw,'done',$norujukan,$request->teller,$failover_response['id']); + $array_response = [ 'result' => 'success', 'data' => 1 @@ -962,13 +966,20 @@ class Penebusan return response()->json($array_response); }catch(\Exception $e){ + if (isset($failover_response['id'])) { + $this->handleFailOverTransaction($kodcaw,'fail',$norujukan,$request->teller,$failover_response['id']); + } + $array_response = [ 'result' => 'error', 'data' => $e->getMessage() ]; - Log::debug('Exception: ' . $e->getMessage()); - Log::debug('Line: ' . $e->getLine()); + Log::error('Transaction failed', [ + 'exception' => $e->getMessage(), + 'line' => $e->getLine(), + 'file' => $e->getFile(), + ]); return response()->json($array_response); } @@ -1116,7 +1127,7 @@ class Penebusan ]); } - private function createTransaction($cawangan,$kodcaw,$norujukan,$array_trans){ + private function createTransaction($cawangan,$kodcaw,$norujukan,$array_trans,$fail_id = 0){ $current = Carbon::now(); /* Create Gadai */ @@ -1242,6 +1253,9 @@ class Penebusan 'historygadaian' => $new_sag_number, 'tag_tebus' => $array_trans['jenistebus'], )); + + $this->handleFailOverTransaction($kodcaw,'update',$new_sag_number,$array_trans['teller'],$fail_id); + } private function createTransactionBase($norujukan,$kodcaw,$array_trans_base){ @@ -1268,5 +1282,43 @@ class Penebusan ]); } + private function handleFailOverTransaction($kodcaw,$status,$norujukan,$teller,$fail_id = 0){ + $current = Carbon::now(); + + if($status == 'create'){ + return FailoverTransaction::on('mysql7')->create([ + 'kodcaw' => $kodcaw, + 'teller' => $teller, + 'old_norujukan' => $norujukan, + 'new_norujukan' => null, + 'db_caw' => false, + 'db_online' => false, + 'status' => 'pending' + ]); + }else if($status == 'update'){ + return FailoverTransaction::on('mysql7')->where('id',$fail_id)->update([ + 'new_norujukan' => $norujukan, + 'db_caw' => true, + 'db_online' => false, + 'status' => 'pending' + ]); + + }else if($status == 'done'){ + return FailoverTransaction::on('mysql7')->where('id',$fail_id)->update([ + 'new_norujukan' => $norujukan, + 'db_caw' => true, + 'db_online' => true, + 'status' => 'resolved', + 'resolve_time' => $current + ]); + }else{ + return FailoverTransaction::on('mysql7')->where('id',$fail_id)->update([ + 'old_norujukan' => $norujukan, + 'status' => 'fail', + ]); + } + + } + } \ No newline at end of file diff --git a/database/migrations/2024_11_17_163407_create_failover_transaction_table.php b/database/migrations/2024_11_17_163407_create_failover_transaction_table.php new file mode 100644 index 0000000..14717ad --- /dev/null +++ b/database/migrations/2024_11_17_163407_create_failover_transaction_table.php @@ -0,0 +1,39 @@ +create('failover_transaction', function (Blueprint $table) { + $table->id(); + $table->string('kodcaw',10); + $table->string('teller',255); + $table->string('old_norujukan',50); + $table->string('new_norujukan',50)->nullable(); + $table->boolean('db_caw')->default(false); // Boolean for db_caw, default to false + $table->boolean('db_online')->default(false); + $table->enum('status', ['pending', 'resolved', 'failed'])->default('pending'); // Use ENUM for statuses + $table->timestamp('resolve_time')->nullable(); // Timestamp for resolve time, nullable + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::connection('mysql7')->dropIfExists('failover_transaction'); + } +} From 3f4d0412df7a628bcb1a3681bd2563e2de1198ec Mon Sep 17 00:00:00 2001 From: Hafifie PKB Date: Mon, 18 Nov 2024 20:20:36 +0800 Subject: [PATCH 35/43] added failover failed --- app/FailoverTransactionFailed.php | 30 ++ app/Http/Controllers/LelongController.php | 2 +- app/Support/v2/Penebusan.php | 408 ++++++++++-------- ...eate_failover_transaction_failed_table.php | 36 ++ 4 files changed, 288 insertions(+), 188 deletions(-) create mode 100644 app/FailoverTransactionFailed.php create mode 100644 database/migrations/2024_11_18_111139_create_failover_transaction_failed_table.php diff --git a/app/FailoverTransactionFailed.php b/app/FailoverTransactionFailed.php new file mode 100644 index 0000000..e45546e --- /dev/null +++ b/app/FailoverTransactionFailed.php @@ -0,0 +1,30 @@ +handleFailOverTransaction($kodcaw,'create',$norujukan,$request->teller); - DB::transaction(function () use ($failover_response,$kodcaw,$norujukan,$gadai,$cawangan,$array_tebus,$array_trans) { - $this->saveTebus($kodcaw,$norujukan,$gadai,$cawangan,$array_tebus); - $this->createTransaction($cawangan,$kodcaw,$norujukan,$array_trans,$failover_response['id']); - }); + // DB::connection($cawangan['mysql'])->transaction(function () use ($failover_response,$kodcaw,$norujukan,$gadai,$cawangan,$array_tebus,$array_trans) { + DB::connection($cawangan['mysql'])->beginTransaction(); + $this->saveTebus($kodcaw,$norujukan,$gadai,$cawangan,$array_tebus); + $this->createTransaction($cawangan,$kodcaw,$norujukan,$array_trans,$failover_response['id']); + // }); - DB::connection('mysql7')->transaction(function () use ($kodcaw,$norujukan,$gadai,$array_tebus_base,$array_trans_base) { + DB::connection('mysql7')->beginTransaction(); + // DB::connection('mysql7')->transaction(function () use ($kodcaw,$norujukan,$gadai,$array_tebus_base,$array_trans_base) { $this->saveTebusBase($kodcaw,$norujukan,$gadai,$array_tebus_base); $this->createTransactionBase($norujukan,$kodcaw,$array_trans_base); - }); + // }); $this->handleFailOverTransaction($kodcaw,'done',$norujukan,$request->teller,$failover_response['id']); @@ -963,13 +966,19 @@ class Penebusan 'result' => 'success', 'data' => 1 ]; + + DB::connection($cawangan['mysql'])->commit(); + DB::connection('mysql7')->commit(); + return response()->json($array_response); }catch(\Exception $e){ if (isset($failover_response['id'])) { - $this->handleFailOverTransaction($kodcaw,'fail',$norujukan,$request->teller,$failover_response['id']); + $this->handleFailOverTransaction($kodcaw,'fail',$norujukan,$request->teller,$failover_response['id'],$e->getCode(),$e->getMessage()); } + DB::connection($cawangan['mysql'])->rollBack(); + DB::connection('mysql7')->rollBack(); $array_response = [ 'result' => 'error', 'data' => $e->getMessage() @@ -1041,39 +1050,40 @@ class Penebusan $upah_rebet = $this->kiraUpahRebetSebenar($kodcaw,$norujukan); $array_onepercent_rebet = $this->kiraupahUjrahOnePercentRebate($kodcaw,$norujukan); + try{ + $onepercent_rebet = $array_onepercent_rebet['onepercent'] - $upah_rebet['onepercent']; + $ujrah_rebet = $array_onepercent_rebet['ujrah'] - $upah_rebet['ujrah']; - $onepercent_rebet = $array_onepercent_rebet['onepercent'] - $upah_rebet['onepercent']; - $ujrah_rebet = $array_onepercent_rebet['ujrah'] - $upah_rebet['ujrah']; - - Tebus::on($cawangan['mysql'])->create([ - 'kodcaw'=> $kodcaw, - 'norujukan'=> $norujukan, - 'nopelanggan' => $array_tebus['nopelanggan'], - 'jenisbyr' => "TN", - 'jenistebus' => $array_tebus['jenistebus'], - 'glcode' => "0", - 't_tebus' => $current->toDateString(), - 'jbg' => $gadai['tempoh'], - 'kadarupah' => $gadai['kadarupah'], - 'nilaimarhun' => $gadai['nilaimarhun'], - 'pinjaman' => $gadai['pinjaman'], - 'ansuran' => 0.00, - 'addpinjaman' => $array_tebus['addpinjaman'], - 'bakipjm' => $harga_tebus['harga'], - 'bakiupah' => $upah_tebus, - 'terima' => "*", - 'kodgl' => "0", - 'nowakil' => $array_tebus['nowakil'], - 'rebate' => $rebet, - 'marhuntebus' => $array_tebus['marhun'], - 'historygadaian' => $norujukan, - 'tarikhbyrn' => $current->toDateString(), - 'teller' => $array_tebus['teller'], - 'ujrah' => $ujrah_rebet, - 'onepercent' => $onepercent_rebet, - ]); - - + Tebus::on($cawangan['mysql'])->create([ + 'kodcaw'=> $kodcaw, + 'norujukan'=> $norujukan, + 'nopelanggan' => $array_tebus['nopelanggan'], + 'jenisbyr' => "TN", + 'jenistebus' => $array_tebus['jenistebus'], + 'glcode' => "0", + 't_tebus' => $current->toDateString(), + 'jbg' => $gadai['tempoh'], + 'kadarupah' => $gadai['kadarupah'], + 'nilaimarhun' => $gadai['nilaimarhun'], + 'pinjaman' => $gadai['pinjaman'], + 'ansuran' => 0.00, + 'addpinjaman' => $array_tebus['addpinjaman'], + 'bakipjm' => $harga_tebus['harga'], + 'bakiupah' => $upah_tebus, + 'terima' => "*", + 'kodgl' => "0", + 'nowakil' => $array_tebus['nowakil'], + 'rebate' => $rebet, + 'marhuntebus' => $array_tebus['marhun'], + 'historygadaian' => $norujukan, + 'tarikhbyrn' => $current->toDateString(), + 'teller' => $array_tebus['teller'], + 'ujrah' => $ujrah_rebet, + 'onepercent' => $onepercent_rebet, + ]); + }catch(\Exception $e){ + throw new \Exception("Error in Tebus: " . $e->getMessage()); + } } private function saveTebusBase($kodcaw,$norujukan,$gadai,$array_tebus_base){ @@ -1095,36 +1105,40 @@ class Penebusan $upah_rebet_sebenar = $harga_tebus['harga'] - $gadai['bakipjm']; - TransaksiKeuntungan::on('mysql7')->create([ - 'norujukan' => $norujukan, - 'bayaran_keuntungan' => $upah_tebus, - 'bayaran_pembiayaan' => $bayaran_pembiayaan, - 'keuntungan_rebet' => $upah_rebet_sebenar, - 'tarikh_bayaran'=> $current, - 'kodcaw'=> $kodcaw, - 'ujrah' => ($array_tebus_base['jeniskeuntungan'] == 'onepercent') ? $ujrah : 0, - 'ujrah_rebet' => ($array_tebus_base['jeniskeuntungan'] == 'onepercent') ? $ujrah_rebet : 0, - 'onepercent' => ($array_tebus_base['jeniskeuntungan'] == 'onepercent') ? $onepercent : 0, - 'onepercent_rebet' => ($array_tebus_base['jeniskeuntungan'] == 'onepercent') ? $onepercent_rebet : 0, - 'margin_semasa' => ($array_tebus_base['jeniskeuntungan'] == 'onepercent') ? $margin_semasa : 0, - 'tempoh' => $gadai['tempoh'], - 'beza_tempoh' => ($gadai['tempoh'] - $gadai['tempohbayar']), - ]); + try{ + TransaksiKeuntungan::on('mysql7')->create([ + 'norujukan' => $norujukan, + 'bayaran_keuntungan' => $upah_tebus, + 'bayaran_pembiayaan' => $bayaran_pembiayaan, + 'keuntungan_rebet' => $upah_rebet_sebenar, + 'tarikh_bayaran'=> $current, + 'kodcaw'=> $kodcaw, + 'ujrah' => ($array_tebus_base['jeniskeuntungan'] == 'onepercent') ? $ujrah : 0, + 'ujrah_rebet' => ($array_tebus_base['jeniskeuntungan'] == 'onepercent') ? $ujrah_rebet : 0, + 'onepercent' => ($array_tebus_base['jeniskeuntungan'] == 'onepercent') ? $onepercent : 0, + 'onepercent_rebet' => ($array_tebus_base['jeniskeuntungan'] == 'onepercent') ? $onepercent_rebet : 0, + 'margin_semasa' => ($array_tebus_base['jeniskeuntungan'] == 'onepercent') ? $margin_semasa : 0, + 'tempoh' => $gadai['tempoh'], + 'beza_tempoh' => ($gadai['tempoh'] - $gadai['tempohbayar']), + ]); - $baki_hargajualan = $gadai['bakihargajualan'] - $array_tebus_base['bakipinjaman']; - Transaction::on('mysql7')->create([ - 'trans_type' => $array_tebus_base['jenistebus'], - 'norujukan' => $norujukan, - 'nokp' => $gadai['nokp'], - 'teller' => $array_tebus_base['teller'], - 'kodcaw' => $kodcaw, - 'duit_masuk' => $array_tebus_base['totalbayaran'], - 'created_at' => $current, - 'bakiharga' => $baki_hargajualan, - 'nowakil' => (int)$array_tebus_base['nowakil'], - 'duitpelanggan' => isset($array_tebus_base['duitpelanggan']) ? $array_tebus_base['duitpelanggan'] : 0, - 'bakipelanggan' => isset($array_tebus_base['bakipelanggan']) ? $array_tebus_base['bakipelanggan'] : 0 - ]); + $baki_hargajualan = $gadai['bakihargajualan'] - $array_tebus_base['bakipinjaman']; + Transaction::on('mysql7')->create([ + 'trans_type' => $array_tebus_base['jenistebus'], + 'norujukan' => $norujukan, + 'nokp' => $gadai['nokp'], + 'teller' => $array_tebus_base['teller'], + 'kodcaw' => $kodcaw, + 'duit_masuk' => $array_tebus_base['totalbayaran'], + 'created_at' => $current, + 'bakiharga' => $baki_hargajualan, + 'nowakil' => (int)$array_tebus_base['nowakil'], + 'duitpelanggan' => isset($array_tebus_base['duitpelanggan']) ? $array_tebus_base['duitpelanggan'] : 0, + 'bakipelanggan' => isset($array_tebus_base['bakipelanggan']) ? $array_tebus_base['bakipelanggan'] : 0 + ]); + }catch(\Exception $e){ + throw new \Exception("Error in TebusBase: " . $e->getMessage()); + } } private function createTransaction($cawangan,$kodcaw,$norujukan,$array_trans,$fail_id = 0){ @@ -1139,122 +1153,127 @@ class Penebusan $new_transaction = sprintf("%04d",$new_sirig); $new_sag_number = strtoupper($cawangan['kodcaw']) . $current->year . $current->month . $current->day . '-' .$new_transaction; - Gadai::on($cawangan['mysql'])->create([ - 'kodcaw'=>$kodcaw, - 'norujukan' => $new_sag_number, - 'nopelanggan' => $array_trans['nopelanggan'], - 'nokp' => $array_trans['noic'], - 'sirig' => $new_sirig, - 't_gadai' => $current->toDateString(), - 'sttebus' => '', - 'masa' =>$current->toTimeString(), - 'tagbaru' => 1 - ]); - - $marhun = Marhun::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->get(); - - foreach($marhun as $marhunloop){ - $karatbaru = (strpos($marhunloop['karat'], '.') !== false) ? str_replace('-','.',$marhunloop['karat']) : $marhunloop['karat']; - $karatbaru = $marhunloop['karat']; - $harga_emas = HargaEmas::on('mysql7')->select('harga')->where('karat','=',$karatbaru)->first(); - - $harga = ($array_trans['jenisAT'] == 'hargalama') ? $marhunloop['harga'] : $harga_emas['harga']; - - $nilai_marhun = (floatval($harga) * floatval($marhunloop['berat'])); - - $marhunToCreate = [ - 'kodcaw'=> $kodcaw, - 'norujukan'=> $new_sag_number, + try{ + Gadai::on($cawangan['mysql'])->create([ + 'kodcaw'=>$kodcaw, + 'norujukan' => $new_sag_number, + 'nopelanggan' => $array_trans['nopelanggan'], + 'nokp' => $array_trans['noic'], + 'sirig' => $new_sirig, 't_gadai' => $current->toDateString(), - 'bil' => $marhunloop['kuantiti'], - 'marhun' => $marhunloop['marhun'], - 'nota' => $marhunloop['nota'], - 'tag_permata' => $marhunloop['tag_permata'] != null ? $marhunloop['tag_permata'] : 0, - 'berat_batu_permata' => $marhunloop['berat_batu_permata'] != null ? $marhunloop['berat_batu_permata'] : '', - 'karat' => $marhunloop['karat'], - 'berat' => $marhunloop['berat_emas'], - 'harga' => $harga, - 'n_marhun' => $nilai_marhun - ]; + 'sttebus' => '', + 'masa' =>$current->toTimeString(), + 'tagbaru' => 1 + ]); - if($marhunToCreate['berat_batu_permata'] == '') { - $marhunToCreate['berat_batu_permata'] = null; - }; + $marhun = Marhun::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->get(); - Marhun::on($cawangan['mysql'])->create($marhunToCreate); - } + foreach($marhun as $marhunloop){ + $karatbaru = (strpos($marhunloop['karat'], '.') !== false) ? str_replace('-','.',$marhunloop['karat']) : $marhunloop['karat']; + $karatbaru = $marhunloop['karat']; + $harga_emas = HargaEmas::on('mysql7')->select('harga')->where('karat','=',$karatbaru)->first(); - $total_nilai_marhun = Marhun::on($cawangan['mysql'])->where('norujukan',$new_sag_number)->sum('n_marhun'); - $total_bil_marhun = Marhun::on($cawangan['mysql'])->where('norujukan',$new_sag_number)->sum('bil'); - $total_berat_marhun = Marhun::on($cawangan['mysql'])->where('norujukan',$new_sag_number)->sum('berat'); + $harga = ($array_trans['jenisAT'] == 'hargalama') ? $marhunloop['harga'] : $harga_emas['harga']; - $margin_pinjaman = ($array_trans['pinjaman'] / $total_nilai_marhun); + $nilai_marhun = (floatval($harga) * floatval($marhunloop['berat'])); - $t_matang = Carbon::now(); - $t_matang = $t_matang->addMonths(6)->subDays(1); + $marhunToCreate = [ + 'kodcaw'=> $kodcaw, + 'norujukan'=> $new_sag_number, + 't_gadai' => $current->toDateString(), + 'bil' => $marhunloop['kuantiti'], + 'marhun' => $marhunloop['marhun'], + 'nota' => $marhunloop['nota'], + 'tag_permata' => $marhunloop['tag_permata'] != null ? $marhunloop['tag_permata'] : 0, + 'berat_batu_permata' => $marhunloop['berat_batu_permata'] != null ? $marhunloop['berat_batu_permata'] : '', + 'karat' => $marhunloop['karat'], + 'berat' => $marhunloop['berat_emas'], + 'harga' => $harga, + 'n_marhun' => $nilai_marhun + ]; - $t_kontrak = Carbon::now(); - $t_kontrak = $t_kontrak->addMonths(12)->subDays(1); + if($marhunToCreate['berat_batu_permata'] == '') { + $marhunToCreate['berat_batu_permata'] = null; + }; - $kadar_raw = KadarUpah::where('min','<=',$total_nilai_marhun)->where('max','>=',$total_nilai_marhun)->where('group_id',$cawangan['group_id'])->first(); + Marhun::on($cawangan['mysql'])->create($marhunToCreate); + } - $onepercentservices = new Calculation(); - $keuntungan = $onepercentservices->kiraanKeuntunganSebenar($array_trans['pinjaman'],$total_nilai_marhun,$kadar_raw['kadarujrah'],$margin_pinjaman); + $total_nilai_marhun = Marhun::on($cawangan['mysql'])->where('norujukan',$new_sag_number)->sum('n_marhun'); + $total_bil_marhun = Marhun::on($cawangan['mysql'])->where('norujukan',$new_sag_number)->sum('bil'); + $total_berat_marhun = Marhun::on($cawangan['mysql'])->where('norujukan',$new_sag_number)->sum('berat'); - $upah1 = $onepercentservices->getRoundedMethod($keuntungan['keuntungan']); - $upah6 = $onepercentservices->getRoundedMethod($upah1 * 6); - $upah12 = $onepercentservices->getRoundedMethod($upah1 * 12); - $ujrah = $onepercentservices->getRoundedMethod($keuntungan['ujrah']); - $onepercent = $onepercentservices->getRoundedMethod($keuntungan['onepercent']); - $akrual_ujrah = $onepercentservices->getRoundedMethod($keuntungan['ujrah'] * 0.5); - $akrual_onepercent = $onepercentservices->getRoundedMethod($keuntungan['onepercent'] * 0.5); + $margin_pinjaman = ($array_trans['pinjaman'] / $total_nilai_marhun); - $hargajualan = $array_trans['pinjaman'] + $upah12; + $t_matang = Carbon::now(); + $t_matang = $t_matang->addMonths(6)->subDays(1); - Gadai::on($cawangan['mysql']) - ->where('norujukan','=',$new_sag_number) - ->update(array( - 'nilaimarhun' => $total_nilai_marhun, - 'berat'=> $total_berat_marhun, - 'pinjaman' => $array_trans['pinjaman'], - 'kadarupah' => $kadar_raw['kadarujrah'], - 'marhun' => $array_trans['marhun'], - 'percentpinj' => $margin_pinjaman, - 'teller' => $array_trans['teller'], - 'bakipjm' => $array_trans['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' => $total_bil_marhun, - 'tagkomuditi' => 0, - 'upahdibayar' => 0.00, - 'tempohbayar' => 0.00, - 'lelong_tawarruq' => 1, - 'kadarujrah' => $kadar_raw['kadarujrah'], - 'ujrah' => $ujrah, - 'onepercent' => $onepercent, - 'margin_semasa' => $margin_pinjaman, - 'tagbaru' => 1, - 'tunggakanujrah' => $akrual_ujrah, - 'tunggakanonepercent' => $akrual_onepercent, - )); + $t_kontrak = Carbon::now(); + $t_kontrak = $t_kontrak->addMonths(12)->subDays(1); - Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(array( - 'sttebus' => "T", - 't_update' => $current->toDateString(), - 'historygadaian' => $new_sag_number, - 'tag_tebus' => $array_trans['jenistebus'], - )); + $kadar_raw = KadarUpah::where('min','<=',$total_nilai_marhun)->where('max','>=',$total_nilai_marhun)->where('group_id',$cawangan['group_id'])->first(); + + $onepercentservices = new Calculation(); + $keuntungan = $onepercentservices->kiraanKeuntunganSebenar($array_trans['pinjaman'],$total_nilai_marhun,$kadar_raw['kadarujrah'],$margin_pinjaman); + + $upah1 = $onepercentservices->getRoundedMethod($keuntungan['keuntungan']); + $upah6 = $onepercentservices->getRoundedMethod($upah1 * 6); + $upah12 = $onepercentservices->getRoundedMethod($upah1 * 12); + $ujrah = $onepercentservices->getRoundedMethod($keuntungan['ujrah']); + $onepercent = $onepercentservices->getRoundedMethod($keuntungan['onepercent']); + $akrual_ujrah = $onepercentservices->getRoundedMethod($keuntungan['ujrah'] * 0.5); + $akrual_onepercent = $onepercentservices->getRoundedMethod($keuntungan['onepercent'] * 0.5); + + $hargajualan = $array_trans['pinjaman'] + $upah12; + + Gadai::on($cawangan['mysql']) + ->where('norujukan','=',$new_sag_number) + ->update(array( + 'nilaimarhun' => $total_nilai_marhun, + 'berat'=> $total_berat_marhun, + 'pinjaman' => $array_trans['pinjaman'], + 'kadarupah' => $kadar_raw['kadarujrah'], + 'marhun' => $array_trans['marhun'], + 'percentpinj' => $margin_pinjaman, + 'teller' => $array_trans['teller'], + 'bakipjm' => $array_trans['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' => $total_bil_marhun, + 'tagkomuditi' => 0, + 'upahdibayar' => 0.00, + 'tempohbayar' => 0.00, + 'lelong_tawarruq' => 1, + 'kadarujrah' => $kadar_raw['kadarujrah'], + 'ujrah' => $ujrah, + 'onepercent' => $onepercent, + 'margin_semasa' => $margin_pinjaman, + 'tagbaru' => 1, + 'tunggakanujrah' => $akrual_ujrah, + 'tunggakanonepercent' => $akrual_onepercent, + )); + + Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(array( + 'sttebus' => "T", + 't_update' => $current->toDateString(), + 'historygadaian' => $new_sag_number, + 'tag_tebus' => $array_trans['jenistebus'], + )); $this->handleFailOverTransaction($kodcaw,'update',$new_sag_number,$array_trans['teller'],$fail_id); + + }catch(\Exception $e){ + throw new \Exception("Error in Transaction: " . $e->getMessage()); + } } @@ -1264,25 +1283,30 @@ class Penebusan $komuditi_current = KomuditiPurchase::on('mysql7')->where('date_purchase','=',$current->toDateString())->orderBy('created_at','desc')->first(); $unit_current = isset($komuditi_current['unit_komuditi']) ? $komuditi_current['unit_komuditi']: 0; + throw new \Exception('testis'); - $update_unit = $unit_current - $array_trans_base['pinjaman']; + try{ + $update_unit = $unit_current - $array_trans_base['pinjaman']; - KomuditiPurchase::on('mysql7')->where('id','=',$komuditi_current['id'])->update([ - 'unit_komuditi' => $update_unit - ]); + KomuditiPurchase::on('mysql7')->where('id','=',$komuditi_current['id'])->update([ + 'unit_komuditi' => $update_unit + ]); - KomuditiTransaksi::on('mysql7')->create([ - 'unit_komuditi' => $update_unit, - 'nosijil'=>$komuditi_current['no_sijil'], - 'norujukan' => $norujukan, - 'kodcaw' => $kodcaw, - 'teller' => $array_trans_base['teller'], - 'masa' => $current->toTimeString(), - 'tarikh' => $current->toDateString() - ]); + KomuditiTransaksi::on('mysql7')->create([ + 'unit_komuditi' => $update_unit, + 'nosijil'=>$komuditi_current['no_sijil'], + 'norujukan' => $norujukan, + 'kodcaw' => $kodcaw, + 'teller' => $array_trans_base['teller'], + 'masa' => $current->toTimeString(), + 'tarikh' => $current->toDateString() + ]); + }catch(\Exception $e){ + throw new \Exception("Error in TransactionBase: " . $e->getMessage()); + } } - private function handleFailOverTransaction($kodcaw,$status,$norujukan,$teller,$fail_id = 0){ + private function handleFailOverTransaction($kodcaw,$status,$norujukan,$teller,$fail_id = 0,$code_error = 500,$error_message = ''){ $current = Carbon::now(); if($status == 'create'){ @@ -1304,18 +1328,28 @@ class Penebusan ]); }else if($status == 'done'){ - return FailoverTransaction::on('mysql7')->where('id',$fail_id)->update([ - 'new_norujukan' => $norujukan, + return FailoverTransaction::on('mysql7')->where('id',$fail_id)->where('old_norujukan',$norujukan)->update([ 'db_caw' => true, 'db_online' => true, 'status' => 'resolved', 'resolve_time' => $current ]); }else{ - return FailoverTransaction::on('mysql7')->where('id',$fail_id)->update([ + FailoverTransaction::on('mysql7')->where('id',$fail_id)->where('old_norujukan',$norujukan)->update([ 'old_norujukan' => $norujukan, - 'status' => 'fail', + 'status' => 'failed', ]); + + FailoverTransactionFailed::on('mysql7')->create([ + 'original_id' => $fail_id, + 'kodcaw' => $kodcaw, + 'norujukan' => $norujukan, + 'code_error' => $code_error, + 'error_message' => $error_message, + ]); + + return; + } } diff --git a/database/migrations/2024_11_18_111139_create_failover_transaction_failed_table.php b/database/migrations/2024_11_18_111139_create_failover_transaction_failed_table.php new file mode 100644 index 0000000..e322922 --- /dev/null +++ b/database/migrations/2024_11_18_111139_create_failover_transaction_failed_table.php @@ -0,0 +1,36 @@ +id(); + $table->unsignedBigInteger('original_id'); // Reference to failover_transaction + $table->string('kodcaw'); + $table->string('norujukan'); + $table->integer('code_error'); + $table->text('error_message')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('failover_transaction_failed'); + } +} From 51aaa20078b82f39dba0a50cc83090897874821a Mon Sep 17 00:00:00 2001 From: hafifierahman Date: Mon, 25 Nov 2024 01:31:05 +0800 Subject: [PATCH 36/43] added test for tebus AT and P and added P --- app/Http/Controllers/LelongController.php | 2 +- app/Http/Controllers/TebusController.php | 17 +- app/Services/MasterServices.php | 19 +- app/Support/OnePercent.php | 7 + app/Support/v2/Penebusan.php | 142 ++++++-------- routes/web.php | 2 +- tests/TestCase.php | 43 +++- tests/Traits/DatabaseTransactions.php | 50 +++++ tests/TransactionTest.php | 228 ++++++++++++++++++++++ 9 files changed, 407 insertions(+), 103 deletions(-) create mode 100644 tests/Traits/DatabaseTransactions.php create mode 100644 tests/TransactionTest.php diff --git a/app/Http/Controllers/LelongController.php b/app/Http/Controllers/LelongController.php index 56d066e..76ab0f2 100644 --- a/app/Http/Controllers/LelongController.php +++ b/app/Http/Controllers/LelongController.php @@ -598,7 +598,7 @@ class LelongController extends Controller if($cawangan['tagarrahnbid'] == 1){ if(env('APP_ENV') != 'production'){ - $link = 'http://adminbid.arrahn/api/portalApi'; + $link = 'http://niklah.arrahn.com.my/api/portalApi'; }else{ $link = 'http://adminbid.arrahn/api/portalApi'; } diff --git a/app/Http/Controllers/TebusController.php b/app/Http/Controllers/TebusController.php index 44d6da0..4d69eaf 100644 --- a/app/Http/Controllers/TebusController.php +++ b/app/Http/Controllers/TebusController.php @@ -182,6 +182,13 @@ class TebusController extends Controller return $response; } + public function tebusUpdateTambahPinjaman($kodcaw,$norujukan,Request $request){ + $master = new MasterServices($kodcaw); + $response = $master->tebusUpdateTambahPinjaman($kodcaw,$norujukan,$request); + + return $response; + } + public function getLaporanTebus($kodcaw,$tarikh){ $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); @@ -2000,14 +2007,4 @@ class TebusController extends Controller return $response; } - - public function tebusTransaksiUpdate($kodcaw,$norujukan,Request $request){ - $master = new MasterServices($kodcaw); - $response = $master->tebusTransaksiUpdate($kodcaw,$norujukan,$request); - - return $response; - } - - - } diff --git a/app/Services/MasterServices.php b/app/Services/MasterServices.php index b304244..1f903f9 100644 --- a/app/Services/MasterServices.php +++ b/app/Services/MasterServices.php @@ -223,6 +223,12 @@ class MasterServices return $response; } + public function tebusUpdateTambahPinjaman($kodcaw,$norujukan,HttpRequest $request){ + $onepercent = new OnePercentEngine($this->cawangan); + $response = $onepercent->tebusUpdateAutoTawarruq($kodcaw,$norujukan,$request); + return $response; + } + public function kiraupahUjrahOnePercent($kodcaw,$norujukan){ $response = $this->engine->kiraupahUjrahOnePercent($kodcaw,$norujukan); @@ -247,19 +253,6 @@ class MasterServices } } - public function tebusTransaksiUpdate($kodcaw,$norujukan,HttpRequest $request){ - if($request->jeniskeuntungan == 'onepercent'){ - $onepercent = new OnePercentEngine($this->cawangan); - $response = $onepercent->tebusTransaksiUpdate($kodcaw,$norujukan,$request); - - }else{ - $tawarruq = new TawarruqEngine($this->cawangan); - $response = $tawarruq->tebusTransaksiUpdate($kodcaw,$norujukan,$request); - } - - return $response; - } - /* End Penebusan */ public function test(){ diff --git a/app/Support/OnePercent.php b/app/Support/OnePercent.php index 2bb5d18..e924fc1 100644 --- a/app/Support/OnePercent.php +++ b/app/Support/OnePercent.php @@ -186,6 +186,13 @@ class OnePercent extends MasterServices return $response; } + public function tebusUpdateTambahPinjaman($kodcaw,$norujukan,HttpRequest $request){ + $tebus = new Penebusan($this->kodcaw,$this->cawangan_info); + $response = $tebus->transaksiTambahPembiayaan($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); diff --git a/app/Support/v2/Penebusan.php b/app/Support/v2/Penebusan.php index ac88d87..6e9bcb2 100644 --- a/app/Support/v2/Penebusan.php +++ b/app/Support/v2/Penebusan.php @@ -947,21 +947,14 @@ class Penebusan $array_trans_base = $request->only(['pinjaman','teller']); try{ - $failover_response = $this->handleFailOverTransaction($kodcaw,'create',$norujukan,$request->teller); - // DB::connection($cawangan['mysql'])->transaction(function () use ($failover_response,$kodcaw,$norujukan,$gadai,$cawangan,$array_tebus,$array_trans) { + DB::connection($cawangan['mysql'])->beginTransaction(); $this->saveTebus($kodcaw,$norujukan,$gadai,$cawangan,$array_tebus); - $this->createTransaction($cawangan,$kodcaw,$norujukan,$array_trans,$failover_response['id']); - // }); + $this->createTransaction($cawangan,$kodcaw,$norujukan,$array_trans); DB::connection('mysql7')->beginTransaction(); - // DB::connection('mysql7')->transaction(function () use ($kodcaw,$norujukan,$gadai,$array_tebus_base,$array_trans_base) { - $this->saveTebusBase($kodcaw,$norujukan,$gadai,$array_tebus_base); - $this->createTransactionBase($norujukan,$kodcaw,$array_trans_base); - // }); - - $this->handleFailOverTransaction($kodcaw,'done',$norujukan,$request->teller,$failover_response['id']); - + $this->saveTebusBase($kodcaw,$norujukan,$gadai,$array_tebus_base); + $this->createTransactionBase($norujukan,$kodcaw,$array_trans_base); $array_response = [ 'result' => 'success', 'data' => 1 @@ -973,10 +966,6 @@ class Penebusan return response()->json($array_response); }catch(\Exception $e){ - if (isset($failover_response['id'])) { - $this->handleFailOverTransaction($kodcaw,'fail',$norujukan,$request->teller,$failover_response['id'],$e->getCode(),$e->getMessage()); - } - DB::connection($cawangan['mysql'])->rollBack(); DB::connection('mysql7')->rollBack(); $array_response = [ @@ -996,7 +985,7 @@ class Penebusan } - private function transaksiTambahPembiayaan($kodcaw,$norujukan,HttpRequest $request){ + public function transaksiTambahPembiayaan($kodcaw,$norujukan,HttpRequest $request){ $current = Carbon::now(); $current = new Carbon(); @@ -1004,6 +993,11 @@ class Penebusan $gadai = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->first(); + $array_tebus = $request->only(['jeniskeuntungan', 'nopelanggan','jenistebus','addpinjaman','nowakil','marhun','teller']); + $array_trans = $request->only(['nopelanggan', 'noic','pinjaman','marhun','teller','jenistebus']); + $array_tebus_base = $request->only(['totalbayaran', 'bakiupah','jeniskeuntungan','bakipinjaman','jenistebus','teller','nowakil','duitpelanggan']); + $array_trans_base = $request->only(['pinjaman','teller']); + try{ //check duplicate $data = Transaction::on('mysql7')->where('norujukan','=',$norujukan)->where('trans_type','=','AT')->first(); @@ -1011,8 +1005,40 @@ class Penebusan if(!empty($data)){ return 'duplicate'; } - }catch(\Exception $e){ + + DB::connection($cawangan['mysql'])->beginTransaction(); + $this->saveTebus($kodcaw,$norujukan,$gadai,$cawangan,$array_tebus); + $this->createTransaction($cawangan,$kodcaw,$norujukan,$array_trans); + DB::connection('mysql7')->beginTransaction(); + $this->saveTebusBase($kodcaw,$norujukan,$gadai,$array_tebus_base); + $this->createTransactionBase($norujukan,$kodcaw,$array_trans_base); + + $array_response = [ + 'result' => 'success', + 'data' => 1 + ]; + + DB::connection($cawangan['mysql'])->commit(); + DB::connection('mysql7')->commit(); + + return response()->json($array_response); + }catch(\Exception $e){ + DB::connection($cawangan['mysql'])->rollBack(); + DB::connection('mysql7')->rollBack(); + + $array_response = [ + 'result' => 'error', + 'data' => $e->getMessage() + ]; + + Log::error('Transaction failed', [ + 'exception' => $e->getMessage(), + 'line' => $e->getLine(), + 'file' => $e->getFile(), + ]); + + return response()->json($array_response); } } @@ -1038,17 +1064,13 @@ class Penebusan private function saveTebus($kodcaw,$norujukan,$gadai,$cawangan,$array_tebus){ $current = Carbon::now(); - $current = new Carbon(); - /* Rebet Still looking for the calculation */ $rebet = 0; $harga_tebus = $this->hargaTebusTawarruq($kodcaw,$norujukan,$array_tebus['jeniskeuntungan']); - $upah_tebus = $this->kiraupahTawarruq($norujukan); $upah_rebet = $this->kiraUpahRebetSebenar($kodcaw,$norujukan); - $array_onepercent_rebet = $this->kiraupahUjrahOnePercentRebate($kodcaw,$norujukan); try{ $onepercent_rebet = $array_onepercent_rebet['onepercent'] - $upah_rebet['onepercent']; @@ -1088,7 +1110,12 @@ class Penebusan private function saveTebusBase($kodcaw,$norujukan,$gadai,$array_tebus_base){ $current = Carbon::now(); - $bayaran_pembiayaan = $array_tebus_base['totalbayaran'] - $array_tebus_base['bakiupah']; + + if($array_tebus_base['jenistebus'] == 'AT'){ + $bayaran_pembiayaan = $array_tebus_base['totalbayaran'] - $array_tebus_base['bakiupah']; + }else{ + $bayaran_pembiayaan = $array_tebus_base['bakipinjaman']; + } $margin_semasa = ($gadai['bakipjm']/$gadai['nilaimarhun']) * 100; @@ -1122,14 +1149,22 @@ class Penebusan 'beza_tempoh' => ($gadai['tempoh'] - $gadai['tempohbayar']), ]); - $baki_hargajualan = $gadai['bakihargajualan'] - $array_tebus_base['bakipinjaman']; + if($array_tebus_base['jenistebus'] == 'P'){ + $duit_masuk = $array_tebus_base['bakiupah']; + }else if($array_tebus_base['jenistebus'] == 'AT'){ + $duit_masuk = $array_tebus_base['totalbayaran']; + }else{ + $duit_masuk = $harga_tebus['harga']; + } + + $baki_hargajualan = ($array_tebus_base['jenistebus'] == 'P') ? $gadai['bakihargajualan'] = $array_tebus_base['bakiupah'] : $gadai['bakihargajualan'] - $array_tebus_base['bakipinjaman']; Transaction::on('mysql7')->create([ 'trans_type' => $array_tebus_base['jenistebus'], 'norujukan' => $norujukan, 'nokp' => $gadai['nokp'], 'teller' => $array_tebus_base['teller'], 'kodcaw' => $kodcaw, - 'duit_masuk' => $array_tebus_base['totalbayaran'], + 'duit_masuk' => $duit_masuk, 'created_at' => $current, 'bakiharga' => $baki_hargajualan, 'nowakil' => (int)$array_tebus_base['nowakil'], @@ -1141,7 +1176,7 @@ class Penebusan } } - private function createTransaction($cawangan,$kodcaw,$norujukan,$array_trans,$fail_id = 0){ + private function createTransaction($cawangan,$kodcaw,$norujukan,$array_trans){ $current = Carbon::now(); /* Create Gadai */ @@ -1173,7 +1208,11 @@ class Penebusan $karatbaru = $marhunloop['karat']; $harga_emas = HargaEmas::on('mysql7')->select('harga')->where('karat','=',$karatbaru)->first(); - $harga = ($array_trans['jenisAT'] == 'hargalama') ? $marhunloop['harga'] : $harga_emas['harga']; + if(isset($array_trans['jenisAT'])){ + $harga = ($array_trans['jenisAT'] == 'hargalama') ? $marhunloop['harga'] : $harga_emas['harga']; + }else{ + $harga = $harga_emas['harga']; + } $nilai_marhun = (floatval($harga) * floatval($marhunloop['berat'])); @@ -1269,8 +1308,6 @@ class Penebusan 'tag_tebus' => $array_trans['jenistebus'], )); - $this->handleFailOverTransaction($kodcaw,'update',$new_sag_number,$array_trans['teller'],$fail_id); - }catch(\Exception $e){ throw new \Exception("Error in Transaction: " . $e->getMessage()); } @@ -1283,7 +1320,6 @@ class Penebusan $komuditi_current = KomuditiPurchase::on('mysql7')->where('date_purchase','=',$current->toDateString())->orderBy('created_at','desc')->first(); $unit_current = isset($komuditi_current['unit_komuditi']) ? $komuditi_current['unit_komuditi']: 0; - throw new \Exception('testis'); try{ $update_unit = $unit_current - $array_trans_base['pinjaman']; @@ -1306,53 +1342,5 @@ class Penebusan } } - private function handleFailOverTransaction($kodcaw,$status,$norujukan,$teller,$fail_id = 0,$code_error = 500,$error_message = ''){ - $current = Carbon::now(); - - if($status == 'create'){ - return FailoverTransaction::on('mysql7')->create([ - 'kodcaw' => $kodcaw, - 'teller' => $teller, - 'old_norujukan' => $norujukan, - 'new_norujukan' => null, - 'db_caw' => false, - 'db_online' => false, - 'status' => 'pending' - ]); - }else if($status == 'update'){ - return FailoverTransaction::on('mysql7')->where('id',$fail_id)->update([ - 'new_norujukan' => $norujukan, - 'db_caw' => true, - 'db_online' => false, - 'status' => 'pending' - ]); - - }else if($status == 'done'){ - return FailoverTransaction::on('mysql7')->where('id',$fail_id)->where('old_norujukan',$norujukan)->update([ - 'db_caw' => true, - 'db_online' => true, - 'status' => 'resolved', - 'resolve_time' => $current - ]); - }else{ - FailoverTransaction::on('mysql7')->where('id',$fail_id)->where('old_norujukan',$norujukan)->update([ - 'old_norujukan' => $norujukan, - 'status' => 'failed', - ]); - - FailoverTransactionFailed::on('mysql7')->create([ - 'original_id' => $fail_id, - 'kodcaw' => $kodcaw, - 'norujukan' => $norujukan, - 'code_error' => $code_error, - 'error_message' => $error_message, - ]); - - return; - - } - - } - } \ No newline at end of file diff --git a/routes/web.php b/routes/web.php index a3b8b27..3f7334e 100644 --- a/routes/web.php +++ b/routes/web.php @@ -150,7 +150,7 @@ $router->group(['prefix'=>'api'], function () use ($router){ $router->put('updatetebus/{kodcaw}/{norujukan}',['uses'=>'TebusController@tebusUpdate']); $router->put('updateautotawarruq/{kodcaw}/{norujukan}',['uses'=>'TebusController@tebusUpdateAutoTawarruq']); $router->get('listpenebusanhistory/{kodcaw}',['uses'=>'TebusController@listhistorypenebusan']); - $router->post('updatetransaksi/{kodcaw}/{norujukan}',['uses'=>'TebusController@tebusTransaksiUpdate']); + $router->put('updatetambahpinjaman/{kodcaw}/{norujukan}',['uses'=>'TebusController@tebusUpdateTambahPinjaman']); //API FARIS $router->put('tebus/serah_marhun_teller/{kodcaw}/{norujukan}',['uses'=>'GadaiController@barcodescanTebus']); // $router->get('tebus_serahan/{kodcaw}',['uses'=>'TebusController@SerahMarhunTeller']); diff --git a/tests/TestCase.php b/tests/TestCase.php index 136846b..1782d8e 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -1,7 +1,8 @@ table($table); + + foreach ($data as $key => $value) { + $query->where($key, $value); + } + + $record = $query->first(); + + if (!$record) { + // Check if a record exists but doesn't match the expected attributes + $actualRecord = DB::connection($connection)->table($table)->where('norujukan', $data['norujukan'])->first(); + + if ($actualRecord) { + $mismatchedColumns = []; + foreach ($data as $key => $value) { + if ($actualRecord->$key !== $value) { + $expectedValue = stripslashes($value); // Remove backslashes from expected + $mismatchedColumns[$key] = [ + 'expected' => $expectedValue, + 'actual' => $actualRecord->$key, + ]; + } + } + + PHPUnit::fail( + "A record exists in the table [{$table}] but does not match the expected attributes. " . + "Mismatched columns: " . json_encode($mismatchedColumns) + ); + } + + PHPUnit::fail( + "Failed asserting that a record exists in the table [{$table}] with the attributes " . json_encode($data) + ); + } + + PHPUnit::assertNotNull($record, "Record exists and matches the expected attributes."); +} } diff --git a/tests/Traits/DatabaseTransactions.php b/tests/Traits/DatabaseTransactions.php new file mode 100644 index 0000000..f1bc75e --- /dev/null +++ b/tests/Traits/DatabaseTransactions.php @@ -0,0 +1,50 @@ +connections as $connection) { + DB::connection($connection)->beginTransaction(); + } + } + + /** + * Rollback transactions on all specified database connections. + */ + protected function tearDown(): void + { + foreach ($this->connections as $connection) { + DB::connection($connection)->rollBack(); + } + + parent::tearDown(); + } + + /** + * Set the database connections for transactions. + * + * @param string|array $connections + * @return void + */ + protected function setTransactionConnections(array $connections): void + { + $this->connections = $connections; + } +} \ No newline at end of file diff --git a/tests/TransactionTest.php b/tests/TransactionTest.php new file mode 100644 index 0000000..93b76c6 --- /dev/null +++ b/tests/TransactionTest.php @@ -0,0 +1,228 @@ +where('kodcaw', 'KB2')->first(); + $this->setTransactionConnections([$cawangan['mysql'], 'mysql7']); + $current = new Carbon(); + $array_test = [ + 'norujukan' => 'KB2240327-0009', + "nopelanggan" => "M03-00133879", + "jenistebus" => "AT", + "jbg" => 6.5, + "kadarupah" => 0.56, + "pinjaman_lama" => 2000, + "pinjaman" => 2000, + "ansuran" => 0, + "addpinjaman" => 0, + "bakipinjaman" => 2221, + "bakiupah" => 221, + "historygadaian" => "KB2240327-0009", + "marhun" => "1 R/L,", + "kuantiti_marhun" => 1, + "total_berat" => 8.5, + "kadarkeuntungan" => 0.56, + "noic" => "980412035872", + "jenisbayarantebus" => "nottawarruq", + "teller" => "MOHD KHALID ABDUL RAHMAN", + "jeniskeuntungan" => "onepercent", + "nilai_marhun" => 2943.21, + "jenisAT" => "none", + "totalbayaran" => 221, + "bayaran" => 300, + "bakipelanggan" => 79, + "nowakil" => 0, + "total_nilai_marhun" => 3171.265, + "marhun_detail" => "1 R/L,", + ]; + + // Create a mock request + $request = new Request($array_test); + + $penebusan_services = new V2Penebusan('KB2',$cawangan); + $response = $penebusan_services->transaksiPembiayaanSemula('KB2','KB2240327-0009',$request); + $responseArray = json_decode($response->getContent(), true); + $this->assertIsArray($responseArray, 'Response is not an array'); + $this->assertEquals('success', $responseArray['result'], 'Result should be success'); + $this->assertEquals(1, $responseArray['data'], 'Data should be 1'); + + /* Tebus Assert */ + $this->assertDatabaseHasThroughNorujukan('tebus', [ + 'kodcaw'=> "KB2", + 'norujukan'=> "KB2240327-0009", + 'nopelanggan' => "M03-00133879", + 'jenisbyr' => "TN", + 'jenistebus' => "A", + 'glcode' => "0", + 't_tebus' => $current->toDateString(), + 'jbg' => "6.50", + 'kadarupah' => "0.56", + 'nilaimarhun' => "2943.21", + 'pinjaman' => "2000.00", + 'ansuran' => "0.00", + 'addpinjaman' => 0, + 'bakipjm' => "2221", + 'bakiupah' => "221", + 'terima' => "*", + 'kodgl' => "0", + 'nowakil' => 0, + 'rebate' => 0, + 'marhuntebus' => "1 R/L,", + 'historygadaian' => "KB2240327-0009", + 'tarikhbyrn' => $current->toDateString(), + 'teller' => "MOHD KHALID ABDUL RAHMAN", + 'ujrah' => 0, + 'onepercent' => 0, + ], $cawangan['mysql']); + + + $this->assertDatabaseHasThroughNorujukan('gadai', [ + 'norujukan' => 'KB2240327-0009', + 'sttebus' => 'T' + ], $cawangan['mysql']); + } + + public function testTransactionP(){ + $cawangan = Cawangan::on('mysql7')->where('kodcaw', 'KB2')->first(); + $this->setTransactionConnections([$cawangan['mysql'], 'mysql7']); + $current = new Carbon(); + $array_test = [ + 'norujukan' => 'KB2240327-0009', + 'nopelanggan' => 'M03-00133879', + 'jenistebus' => 'P', + 'jbg' => 6.5, + 'kadarupah' => 0.56, + 'pinjaman_lama' => 2000, + 'pinjaman' => 2010, + 'ansuran' => 0, + 'addpinjaman' => 10, + 'bakipinjaman' => 2221, + 'bakiupah' => 221, + 'history_gadaian' => 'KB2240327-0009', + 'marhun' => '1 R/L,', + 'kuantiti_marhun' => 1, + 'total_berat' => 8.5, + 'kadarkeuntungan' => 0.56, + "noic" => "980412035872", + 'jenisbayarantebus' => 'tawarruq', + "teller" => "MOHD KHALID ABDUL RAHMAN", + 'jeniskeuntungan' => 'onepercent', + 'nilai_marhun' => 3171.265, + // 'jenisAT' => 'Tiada', + // 'totalbayaran' => 'Tiada', + 'bayaran' => 222, + 'bakipelanggan' => 1, + 'nowakil' => 0, //Sebenar Tiada Kena Add dalam series + // 'total_nilai_marhun' => 'Tiada', + 'keuntungan_6bln' => 6753.6, + 'keuntungan_sebulan' => 1125.6, + // 'marhun_detail' => 'Tiada', + ]; + + // Create a mock request + $request = new Request($array_test); + + $penebusan_services = new V2Penebusan('KB2',$cawangan); + $response = $penebusan_services->transaksiTambahPembiayaan('KB2','KB2240327-0009',$request); + + $responseArray = json_decode($response->getContent(), true); + $this->assertIsArray($responseArray, 'Response is not an array'); + $this->assertEquals('success', $responseArray['result'], 'Result should be success'); + $this->assertEquals(1, $responseArray['data'], 'Data should be 1'); + + /* Tebus Assert */ + $this->assertDatabaseHasThroughNorujukan('tebus', [ + 'kodcaw'=> "KB2", + 'norujukan'=> "KB2240327-0009", + 'nopelanggan' => "M03-00133879", + 'jenisbyr' => "TN", + 'jenistebus' => "P", + 'glcode' => "0", + 't_tebus' => $current->toDateString(), + 'jbg' => "6.50", + 'kadarupah' => "0.56", + 'nilaimarhun' => "2943.21", + 'pinjaman' => "2000.00", + 'ansuran' => "0.00", + 'addpinjaman' => "10.00", + 'bakipjm' => "2221.00", + 'bakiupah' => "221.00", + 'terima' => "*", + 'kodgl' => "0", + 'nowakil' => 0, + 'rebate' => "0.00", + 'marhuntebus' => "1 R/L,", + 'historygadaian' => "KB2240327-0009", + 'tarikhbyrn' => $current->toDateString(), + 'teller' => "MOHD KHALID ABDUL RAHMAN", + 'ujrah' => "91.00", + 'onepercent' => "130.00", + ], $cawangan['mysql']); + + /* Gadai Assert */ + + /* Create Gadai */ + $gadaiTransaction = Gadai::on($cawangan['mysql'])->where('t_gadai','=',$current->toDateString())->orderBy('sirig', 'desc')->first(); + $gadaiTransaction = optional($gadaiTransaction)->toArray(); + + /* Gadai Baru */ + $this->assertDatabaseHasThroughNorujukan('gadai',[ + 'kodcaw'=>'KB2', + 'norujukan' => $gadaiTransaction['norujukan'], + 'nopelanggan' => "M03-00133879", + "nokp" => "980412035872", + 'sirig' => $gadaiTransaction['sirig'], + 't_gadai' => $current->toDateString(), + 'sttebus' => '', + 'masa' =>$current->toTimeString(), + 'tagbaru' => 1, + 'nilaimarhun' => "3171.27", + 'berat'=> "0.00", + 'pinjaman' => "2010.00", + 'kadarupah' => "0.56", + // 'marhun' => "1 R\/L,", + 'percentpinj' => "0.63", + 'teller' => "MOHD KHALID ABDUL RAHMAN", + 'bakipjm' => "2010.00", + 'bakiupah' => "121.50", + 'jbg' => "0.50", + 't_update' => $current->toDateString(), + 'cetak' => 0, + 'upah12' => "243.00", + 'hargajualan' => "2253.00", + 'bakihargajualan' => "2253.00", + 'tagserah' => 0, + 't_matang' => "2025-05-24", + 't_matang1' => "2025-11-24", + 'tempoh' => "0.50", + 'kuantiti' => 0, + 'tagkomuditi' => 0, + 'upahdibayar' => "0.00", + 'tempohbayar' => 0.00, + 'lelong_tawarruq' => 1, + 'kadarujrah' => "0.56", + 'ujrah' => "0.15", + 'onepercent' => "20.10", + 'margin_semasa' => "0.63", + 'tagbaru' => 1, + 'tunggakanujrah' => "0.05", + 'tunggakanonepercent' => "10.05", + ], $cawangan['mysql']); + + $this->assertDatabaseHasThroughNorujukan('marhun',[ + + ]); + + } +} From 520ca5d92d0d507b9690ce3a589e7832ba9990bc Mon Sep 17 00:00:00 2001 From: Afiq Hamzah Date: Mon, 25 Nov 2024 10:42:27 +0800 Subject: [PATCH 37/43] Add .env.prod.example for docker environment --- .env.docker.example | 108 ++++++++++++++++++++++++-------------------- 1 file changed, 58 insertions(+), 50 deletions(-) diff --git a/.env.docker.example b/.env.docker.example index 9a280ce..84f0f6f 100644 --- a/.env.docker.example +++ b/.env.docker.example @@ -2,9 +2,9 @@ APP_NAME=Lumen APP_ENV=local APP_KEY=WbPGkYNmXZ6ZQplGlvl0iZ7zyW1b09xa APP_DEBUG=true -APP_URL=http://api_arrahn.test +APP_URL=https://api.arrahn.com.my APP_TIMEZONE=Asia/Kuala_Lumpur -API_ARRAHNBID=http://lelong.test/api/ + LOG_CHANNEL=stack LOG_SLACK_WEBHOOK_URL= @@ -12,42 +12,42 @@ LOG_SLACK_WEBHOOK_URL= DB_CONNECTION=mysql DB_HOST=database_zone1 DB_PORT=3306 -DB_DATABASE=arrahn_1stop +DB_DATABASE=arrahn_kb2 DB_USERNAME=root DB_PASSWORD=secret DB_CONNECTION_2=mysql DB_HOST_2=database_zone1 DB_PORT_2=3306 -DB_DATABASE_2=arrahn_gmusang +DB_DATABASE_2=arrahn_wcy DB_USERNAME_2=root DB_PASSWORD_2=secret DB_CONNECTION_3=mysql DB_HOST_3=database_zone1 DB_PORT_3=3306 -DB_DATABASE_3=arrahn_guchil +DB_DATABASE_3=arrahn_1stop DB_USERNAME_3=root DB_PASSWORD_3=secret DB_CONNECTION_4=mysql DB_HOST_4=database_zone1 DB_PORT_4=3306 -DB_DATABASE_4=arrahn_jelawat +DB_DATABASE_4=arrahn_jlwt DB_USERNAME_4=root DB_PASSWORD_4=secret DB_CONNECTION_5=mysql DB_HOST_5=database_zone1 DB_PORT_5=3306 -DB_DATABASE_5=arrahn_jeli +DB_DATABASE_5=arrahn_wb DB_USERNAME_5=root DB_PASSWORD_5=secret DB_CONNECTION_6=mysql DB_HOST_6=database_zone1 DB_PORT_6=3306 -DB_DATABASE_6=arrahn_kb2 +DB_DATABASE_6=arrahn_kls DB_USERNAME_6=root DB_PASSWORD_6=secret @@ -61,185 +61,199 @@ DB_PASSWORD_7=secret DB_CONNECTION_8=mysql DB_HOST_8=database_zone1 DB_PORT_8=3306 -DB_DATABASE_8=arrahn_klanas +DB_DATABASE_8=arrahn_pp DB_USERNAME_8=root DB_PASSWORD_8=secret DB_CONNECTION_9=mysql DB_HOST_9=database_zone1 DB_PORT_9=3306 -DB_DATABASE_9=arrahn_machang +DB_DATABASE_9=arrahn_mace DB_USERNAME_9=root DB_PASSWORD_9=secret DB_CONNECTION_10=mysql DB_HOST_10=database_zone1 DB_PORT_10=3306 -DB_DATABASE_10=arrahn_pmas +DB_DATABASE_10=arrahn_pm DB_USERNAME_10=root DB_PASSWORD_10=secret DB_CONNECTION_11=mysql DB_HOST_11=database_zone1 DB_PORT_11=3306 -DB_DATABASE_11=arrahn_pputeh +DB_DATABASE_11=arrahn_gm DB_USERNAME_11=root DB_PASSWORD_11=secret DB_CONNECTION_12=mysql DB_HOST_12=database_zone1 DB_PORT_12=3306 -DB_DATABASE_12=arrahn_rpanjang +DB_DATABASE_12=arrahn_gcl DB_USERNAME_12=root DB_PASSWORD_12=secret DB_CONNECTION_13=mysql DB_HOST_13=database_zone1 DB_PORT_13=3306 -DB_DATABASE_13=arrahn_tmerah +DB_DATABASE_13=arrahn_jli DB_USERNAME_13=root DB_PASSWORD_13=secret DB_CONNECTION_14=mysql DB_HOST_14=database_zone1 DB_PORT_14=3306 -DB_DATABASE_14=arrahn_wb +DB_DATABASE_14=arrahn_rp DB_USERNAME_14=root DB_PASSWORD_14=secret DB_CONNECTION_15=mysql -DB_HOST_15=database_zone1 +DB_HOST_15=database_zone2 DB_PORT_15=3306 -DB_DATABASE_15=arrahn_wcy +DB_DATABASE_15=arrahn_ktn DB_USERNAME_15=root DB_PASSWORD_15=secret DB_CONNECTION_16=mysql -DB_HOST_16=database_zone1 +DB_HOST_16=database_zone2 DB_PORT_16=3306 -DB_DATABASE_16=arrahn_bentong +DB_DATABASE_16=arrahn_pg DB_USERNAME_16=root DB_PASSWORD_16=secret DB_CONNECTION_17=mysql DB_HOST_17=database_zone2 DB_PORT_17=3306 -DB_DATABASE_17=arrahn_kajang +DB_DATABASE_17=arrahn_skudai DB_USERNAME_17=root DB_PASSWORD_17=secret DB_CONNECTION_18=mysql DB_HOST_18=database_zone2 DB_PORT_18=3306 -DB_DATABASE_18=arrahn_kangar +DB_DATABASE_18=arrahn_pttn DB_USERNAME_18=root DB_PASSWORD_18=secret DB_CONNECTION_19=mysql DB_HOST_19=database_zone2 DB_PORT_19=3306 -DB_DATABASE_19=arrahn_kuantan +DB_DATABASE_19=arrahn_btg DB_USERNAME_19=root DB_PASSWORD_19=secret DB_CONNECTION_20=mysql DB_HOST_20=database_zone2 DB_PORT_20=3306 -DB_DATABASE_20=arrahn_pgudang +DB_DATABASE_20=arrahn_raub DB_USERNAME_20=root DB_PASSWORD_20=secret DB_CONNECTION_21=mysql DB_HOST_21=database_zone2 DB_PORT_21=3306 -DB_DATABASE_21=arrahn_raub +DB_DATABASE_21=arrahn_kgr DB_USERNAME_21=root DB_PASSWORD_21=secret DB_CONNECTION_22=mysql DB_HOST_22=database_zone2 DB_PORT_22=3306 -DB_DATABASE_22=arrahn_rlaut +DB_DATABASE_22=arrahn_sdk DB_USERNAME_22=root DB_PASSWORD_22=secret DB_CONNECTION_23=mysql DB_HOST_23=database_zone2 DB_PORT_23=3306 -DB_DATABASE_23=arrahn_skudai +DB_DATABASE_23=arrahn_sp DB_USERNAME_23=root DB_PASSWORD_23=secret DB_CONNECTION_24=mysql DB_HOST_24=database_zone2 DB_PORT_24=3306 -DB_DATABASE_24=arrahn_spetani +DB_DATABASE_24=arrahn_twu DB_USERNAME_24=root DB_PASSWORD_24=secret DB_CONNECTION_25=mysql DB_HOST_25=database_zone2 DB_PORT_25=3306 -DB_DATABASE_25=arrahn_temerloh +DB_DATABASE_25=arrahn_api2 DB_USERNAME_25=root DB_PASSWORD_25=secret DB_CONNECTION_26=mysql DB_HOST_26=database_zone2 DB_PORT_26=3306 -DB_DATABASE_26=arrahn_api2 +DB_DATABASE_26=arrahn_kjg DB_USERNAME_26=root DB_PASSWORD_26=secret DB_CONNECTION_27=mysql DB_HOST_27=database_zone2 DB_PORT_27=3306 -DB_DATABASE_27=arrahn_beaufort +DB_DATABASE_27=arrahn_rl DB_USERNAME_27=root DB_PASSWORD_27=secret DB_CONNECTION_28=mysql DB_HOST_28=database_zone2 DB_PORT_28=3306 -DB_DATABASE_28=arrahn_kbelud +DB_DATABASE_28=arrahn_bfort DB_USERNAME_28=root DB_PASSWORD_28=secret DB_CONNECTION_29=mysql DB_HOST_29=database_zone2 DB_PORT_29=3306 -DB_DATABASE_29=arrahn_keningau +DB_DATABASE_29=arrahn_kbelud DB_USERNAME_29=root DB_PASSWORD_29=secret DB_CONNECTION_30=mysql DB_HOST_30=database_zone2 DB_PORT_30=3306 -DB_DATABASE_30=arrahn_putatan +DB_DATABASE_30=arrahn_tuaran DB_USERNAME_30=root DB_PASSWORD_30=secret DB_CONNECTION_31=mysql DB_HOST_31=database_zone2 DB_PORT_31=3306 -DB_DATABASE_31=arrahn_sandakan +DB_DATABASE_31=arrahn_kngau DB_USERNAME_31=root DB_PASSWORD_31=secret DB_CONNECTION_32=mysql -DB_HOST_32=database_zone2 +DB_HOST_32=database_zone1 DB_PORT_32=3306 -DB_DATABASE_32=arrahn_tawau +DB_DATABASE_32=arrahn_tm DB_USERNAME_32=root DB_PASSWORD_32=secret DB_CONNECTION_33=mysql DB_HOST_33=database_zone2 DB_PORT_33=3306 -DB_DATABASE_33=arrahn_tuaran +DB_DATABASE_33=arrahn_tmlh DB_USERNAME_33=root DB_PASSWORD_33=secret +DB_CONNECTION_35=mysql +DB_HOST_35=database_zone1 +DB_PORT_35=3306 +DB_DATABASE_35=arrahn_kb1 +DB_USERNAME_35=root +DB_PASSWORD_35=secret + +DB_CONNECTION_34=mysql +DB_HOST_34=database_zone1 +DB_PORT_34=3306 +DB_DATABASE_34=arrahn_tm +DB_USERNAME_34=root +DB_PASSWORD_34=secret + DB_CONNECTION_36=mysql DB_HOST_36=database_zone1 DB_PORT_36=3306 @@ -247,18 +261,12 @@ DB_DATABASE_36=arrahn_kb2 DB_USERNAME_36=root DB_PASSWORD_36=secret +DB_CONNECTION_38=mysql +DB_HOST_38=database_zone2 +DB_PORT_38=3306 +DB_DATABASE_38=arrahn_pttn2 +DB_USERNAME_38=root +DB_PASSWORD_38=secret + CACHE_DRIVER=file QUEUE_CONNECTION=sync - -WABOT_API=https://md.wabot.my/api/send.php -WABOT_INSTANCES_ID=63F40BD120DB4 -# WABOT_INSTANCES_ID=64892FD7440A6 -WABOT_TOKEN_KEYS=cbee7e95cf3ffbfa0531d5fddfd44f87 - - -ONEWAYSMS_API=http://gateway.onewaysms.com.my:10001/api.aspx -ONEWAYSMS_AUTH_USER=APIUK330HDAFO -ONEWAYSMS_AUTH_PASS=APIUK330HDAFOUK330 - -ADMIN_PHONE_NUMBER=60178916936 -ACTIVE_JOB_SERVER=false From f986e0a5156e6fdfafd4657e6656b54b8eb579f7 Mon Sep 17 00:00:00 2001 From: Hafifie PKB Date: Mon, 25 Nov 2024 12:02:46 +0800 Subject: [PATCH 38/43] added database transaction in hapus tebus and gadai and put auto tawarruq in V1 --- app/Http/Controllers/GadaiController.php | 415 +++++++++++++---------- app/Support/v1/Penebusan.php | 322 ++++++++++++++++++ 2 files changed, 558 insertions(+), 179 deletions(-) diff --git a/app/Http/Controllers/GadaiController.php b/app/Http/Controllers/GadaiController.php index eeff97f..ce77bb8 100644 --- a/app/Http/Controllers/GadaiController.php +++ b/app/Http/Controllers/GadaiController.php @@ -35,7 +35,7 @@ use Illuminate\Http\Request; use App\Services\MasterServices; use App\Support\OnePercent; use App\Services\Transaction\AnsuranServices as AnsServ; -use Log; +use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\DB; @@ -2017,159 +2017,188 @@ class GadaiController extends Controller $audit->updated_at = $current; $audit->save(); - - if($gadai[0]['historygadaian'] != "0" && $gadai[0]['historygadaian'] != '') - { - - if($tebus['tagterima'] == 1) + try{ + DB::connection($cawangan['mysql'])->beginTransaction(); + DB::connection('mysql7')->beginTransaction(); + + if($gadai[0]['historygadaian'] != "0" && $gadai[0]['historygadaian'] != '') { - if($tebus['jenistebus'] == 'P') + + if($tebus['tagterima'] == 1) { + if($tebus['jenistebus'] == 'P') + { - $totalkeluar = $keluar - ($tebus['addpinjaman'] + $tebus['pinjaman']); - $totalmasuk = $masuk - ($tebus['bakiupah'] + $tebus['pinjaman']); + $totalkeluar = $keluar - ($tebus['addpinjaman'] + $tebus['pinjaman']); + $totalmasuk = $masuk - ($tebus['bakiupah'] + $tebus['pinjaman']); - // $bakiakhir = $bakiawal - $totalkeluar + $totalmasuk + $pendahuluan - $serahan; - $bakiakhir = $baki - $tebus['bakiupah'] + $tebus['addpinjaman']; + // $bakiakhir = $bakiawal - $totalkeluar + $totalmasuk + $pendahuluan - $serahan; + $bakiakhir = $baki - $tebus['bakiupah'] + $tebus['addpinjaman']; - $updatetunai=Tunai::on($cawangan['mysql'])->where( [['tarikh','=', $current->toDateString()],['kodlaluan','=', $request->kodlaluan] ])-> - update(array( - 'keluar' => $totalkeluar, - 'masuk' => $totalmasuk, - 'baki' => $bakiakhir - )); + $updatetunai=Tunai::on($cawangan['mysql'])->where( [['tarikh','=', $current->toDateString()],['kodlaluan','=', $request->kodlaluan] ])-> + update(array( + 'keluar' => $totalkeluar, + 'masuk' => $totalmasuk, + 'baki' => $bakiakhir + )); + }else{ + + $totalmasuk = $masuk - ($tebus['pinjaman']+$tebus['bakiupah']); + $totalkeluar = $keluar - (($tebus['pinjaman'] + $tebus['bakiupah']) - $tebus['bakipjm']); + // $bakiakhir = $bakiawal - $totalkeluar + $totalmasuk + $pendahuluan - $serahan; + + if($tebus['jenistebus'] == 'S') + $bakiakhir = $baki - $tebus['bakipjm']; + else + $bakiakhir = $bakiawal - $totalkeluar + $totalmasuk + $pendahuluan - $serahan; + + $updatetunai=Tunai::on($cawangan['mysql'])->where( [['tarikh','=', $current->toDateString()],['kodlaluan','=', $request->kodlaluan] ])-> + update(array( + 'keluar' => $totalkeluar, + 'masuk' => $totalmasuk, + 'baki' => $bakiakhir + )); + + } }else{ - $totalmasuk = $masuk - ($tebus['pinjaman']+$tebus['bakiupah']); - $totalkeluar = $keluar - (($tebus['pinjaman'] + $tebus['bakiupah']) - $tebus['bakipjm']); - // $bakiakhir = $bakiawal - $totalkeluar + $totalmasuk + $pendahuluan - $serahan; + $bakiakhir = $baki; - if($tebus['jenistebus'] == 'S') - $bakiakhir = $baki - $tebus['bakipjm']; - else - $bakiakhir = $bakiawal - $totalkeluar + $totalmasuk + $pendahuluan - $serahan; + if($tebus['jenistebus'] == 'P') + { - $updatetunai=Tunai::on($cawangan['mysql'])->where( [['tarikh','=', $current->toDateString()],['kodlaluan','=', $request->kodlaluan] ])-> - update(array( - 'keluar' => $totalkeluar, - 'masuk' => $totalmasuk, - 'baki' => $bakiakhir - )); + $bakiakhir = $bakiakhir - $tebus['bakiupah'] + $tebus['addpinjaman']; + + $updatetunai=Tunai::on($cawangan['mysql'])->where( [['tarikh','=', $current->toDateString()],['kodlaluan','=', $request->kodlaluan] ])-> + update(array( + 'keluar' => $keluar, + 'masuk' => $masuk, + 'baki' => $bakiakhir + )); + + }else{ + + $totalmasuk = $masuk; + $totalkeluar = $keluar; + + if($tebus['jenistebus'] == 'S') + $bakiakhir = ($bakiakhir - $tebus['bakipjm']); + else + $bakiakhir = $bakiawal - $totalkeluar + $totalmasuk + $pendahuluan - $serahan; + + $updatetunai=Tunai::on($cawangan['mysql'])->where( [['tarikh','=', $current->toDateString()],['kodlaluan','=', $request->kodlaluan] ])-> + update(array( + 'keluar' => $keluar, + 'masuk' => $masuk, + 'baki' => $bakiakhir + )); + + } } - }else{ - $bakiakhir = $baki; - if($tebus['jenistebus'] == 'P') + Gadai::on($cawangan['mysql'])->where('norujukan','=',$gadai[0]['historygadaian'])->update(['sttebus' => '']); + + + $saved_historygadaian = $gadai[0]['historygadaian']; + + Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->delete(); + + TransaksiKeuntungan::on('mysql7')->where('norujukan','=',$gadai[0]['historygadaian'])->orderBy('id', 'desc')->limit(1)->delete(); + + Transaction::on('mysql7')->where('norujukan','=',$gadai[0]['historygadaian'])->orderBy('id', 'desc')->limit(1)->delete(); + + Tebus::on($cawangan['mysql'])->where('norujukan','=',$gadai[0]['historygadaian'])->delete(); + + Marhun::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->delete(); + + $gadaiDouble = Gadai::on($cawangan['mysql'])->where([['historygadaian',$gadai[0]['historygadaian']],['norujukan','<>',$gadai[0]['historygadaian']]])->pluck('norujukan'); + + if($gadaiDouble){ + + $isGadaianTawarruq = $saved_historygadaian !== '0' || $saved_historygadaian !== null || $saved_historygadaian !== ''; + if($isGadaianTawarruq){ + + $this->batalKomuditiTawarruq($norujukan); + Gadai::on($cawangan['mysql'])->where('norujukan', $norujukan)->delete(); + Marhun::on($cawangan['mysql'])->where('norujukan', $norujukan)->delete(); + } else { + + Gadai::on($cawangan['mysql'])->whereIn('norujukan',$gadaiDouble)->delete(); + Marhun::on($cawangan['mysql'])->whereIn('norujukan',$gadaiDouble)->delete(); + $this->batalKomuditi($gadai[0]['historygadaian'],$cawangan['mysql']); + } + + } + + // return response('Deleted Successfully', 200); + } + else + { + + if($gadai[0]['semakbarcode'] == 'Lulus') { + $totalkeluar = $keluar - $gadai[0]['pinjaman']; - $bakiakhir = $bakiakhir - $tebus['bakiupah'] + $tebus['addpinjaman']; + $bakiakhir = $baki; + + $bakiakhir += $gadai[0]['pinjaman']; $updatetunai=Tunai::on($cawangan['mysql'])->where( [['tarikh','=', $current->toDateString()],['kodlaluan','=', $request->kodlaluan] ])-> update(array( - 'keluar' => $keluar, - 'masuk' => $masuk, - 'baki' => $bakiakhir + 'keluar' => $totalkeluar, + 'masuk' => $masuk, + 'baki' => $bakiakhir )); - }else{ - $totalmasuk = $masuk; - $totalkeluar = $keluar; + $bakiakhir = $baki; - if($tebus['jenistebus'] == 'S') - $bakiakhir = ($bakiakhir - $tebus['bakipjm']); - else - $bakiakhir = $bakiawal - $totalkeluar + $totalmasuk + $pendahuluan - $serahan; + $bakiakhir += $gadai[0]['pinjaman']; $updatetunai=Tunai::on($cawangan['mysql'])->where( [['tarikh','=', $current->toDateString()],['kodlaluan','=', $request->kodlaluan] ])-> update(array( - 'keluar' => $keluar, - 'masuk' => $masuk, - 'baki' => $bakiakhir + 'keluar' => $keluar, + 'masuk' => $masuk, + 'baki' => $bakiakhir )); - } + Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->delete(); + Marhun::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->delete(); + TransaksiKeuntungan::on('mysql7')->where('norujukan','=',$norujukan)->orderBy('id', 'desc')->limit(1)->delete(); + Transaction::on('mysql7')->where('norujukan','=',$norujukan)->orderBy('id', 'desc')->limit(1)->delete(); + + // return response('Deleted Successfully', 200); } + $array_response = [ + 'result' => 'success', + 'data' => 1 + ]; - Gadai::on($cawangan['mysql'])->where('norujukan','=',$gadai[0]['historygadaian'])->update(['sttebus' => '']); + DB::connection($cawangan['mysql'])->commit(); + DB::connection('mysql7')->commit(); + return response()->json($array_response); + }catch(\Exception $e){ + DB::connection($cawangan['mysql'])->rollBack(); + DB::connection('mysql7')->rollBack(); + $array_response = [ + 'result' => 'error', + 'data' => $e->getMessage() + ]; - $saved_historygadaian = $gadai[0]['historygadaian']; - - Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->delete(); - - TransaksiKeuntungan::on('mysql7')->where('norujukan','=',$gadai[0]['historygadaian'])->orderBy('id', 'desc')->limit(1)->delete(); - - Transaction::on('mysql7')->where('norujukan','=',$gadai[0]['historygadaian'])->orderBy('id', 'desc')->limit(1)->delete(); - - Tebus::on($cawangan['mysql'])->where('norujukan','=',$gadai[0]['historygadaian'])->delete(); - - Marhun::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->delete(); - - $gadaiDouble = Gadai::on($cawangan['mysql'])->where([['historygadaian',$gadai[0]['historygadaian']],['norujukan','<>',$gadai[0]['historygadaian']]])->pluck('norujukan'); - - if($gadaiDouble){ - - $isGadaianTawarruq = $saved_historygadaian !== '0' || $saved_historygadaian !== null || $saved_historygadaian !== ''; - if($isGadaianTawarruq){ - - $this->batalKomuditiTawarruq($norujukan); - Gadai::on($cawangan['mysql'])->where('norujukan', $norujukan)->delete(); - Marhun::on($cawangan['mysql'])->where('norujukan', $norujukan)->delete(); - } else { - - Gadai::on($cawangan['mysql'])->whereIn('norujukan',$gadaiDouble)->delete(); - Marhun::on($cawangan['mysql'])->whereIn('norujukan',$gadaiDouble)->delete(); - $this->batalKomuditi($gadai[0]['historygadaian'],$cawangan['mysql']); - } - - } - - return response('Deleted Successfully', 200); - } - else - { - - if($gadai[0]['semakbarcode'] == 'Lulus') - { - $totalkeluar = $keluar - $gadai[0]['pinjaman']; - - $bakiakhir = $baki; - - $bakiakhir += $gadai[0]['pinjaman']; - - $updatetunai=Tunai::on($cawangan['mysql'])->where( [['tarikh','=', $current->toDateString()],['kodlaluan','=', $request->kodlaluan] ])-> - update(array( - 'keluar' => $totalkeluar, - 'masuk' => $masuk, - 'baki' => $bakiakhir - )); - }else{ - - $bakiakhir = $baki; - - $bakiakhir += $gadai[0]['pinjaman']; - - $updatetunai=Tunai::on($cawangan['mysql'])->where( [['tarikh','=', $current->toDateString()],['kodlaluan','=', $request->kodlaluan] ])-> - update(array( - 'keluar' => $keluar, - 'masuk' => $masuk, - 'baki' => $bakiakhir - )); - } - - Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->delete(); - Marhun::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->delete(); - TransaksiKeuntungan::on('mysql7')->where('norujukan','=',$norujukan)->orderBy('id', 'desc')->limit(1)->delete(); - Transaction::on('mysql7')->where('norujukan','=',$norujukan)->orderBy('id', 'desc')->limit(1)->delete(); - - return response('Deleted Successfully', 200); + Log::error('Transaction failed', [ + 'exception' => $e->getMessage(), + 'line' => $e->getLine(), + 'file' => $e->getFile(), + ]); + + return response()->json($array_response); } } @@ -2202,6 +2231,7 @@ class GadaiController extends Controller $transaksi_asal = KomuditiTransaksi::on('mysql7')->whereIn('norujukan','=',$gadaiDouble)->sum('unit_komuditi'); + $unit_current = $komuditi_current['unit_komuditi']; $update_unit = $unit_current + $transaksi_asal['unit_komuditi']; @@ -2239,82 +2269,109 @@ class GadaiController extends Controller $bakiakhir = $baki; $totalkeluar = 0; - if($gadai){ - return response('Bukan-Tebus', 200); - }else{ - - $audit = new Audit(); - $audit->users = $request->kodlaluan; - $audit->actions = 'Hapus Tebus'; - $audit->norujukan = $norujukan; - $audit->old_data = $gadai; - $audit->kodcaw = $kodcaw; - $audit->created_at = $current; - $audit->updated_at = $current; - $audit->save(); - - if($tebus[0]['tagterima'] == 1) - { - if($tebus[0]['jenistebus'] == 'T') - { - $totalmasuk = $masuk - $tebus[0]['bakipjm']; - - // $bakiakhir = $bakiawal-$keluar+$totalmasuk+$pendahuluan-$serahan; - $bakiakhir = $baki - $tebus[0]['bakipjm']; - - $updatetunai=Tunai::on($cawangan['mysql'])->where( [['tarikh','=', $current->toDateString()],['kodlaluan','=', $request->kodlaluan] ])-> - update(array( - 'keluar' => $keluar, - 'masuk' => $totalmasuk, - 'baki' => $bakiakhir - )); - - Tebus::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->delete(); - - InOutMar::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->delete(); - - TransaksiKeuntungan::on('mysql7')->where('norujukan','=',$norujukan)->orderBy('id', 'desc')->limit(1)->delete(); - - Transaction::on('mysql7')->where('norujukan','=',$norujukan)->orderBy('id', 'desc')->limit(1)->delete(); - - Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(['sttebus' => '']); - - return response('Deleted Successfully', 200); - } - else - return response('Bukan-Tebus', 200); + try{ + if($gadai){ + return response('Bukan-Tebus', 200); }else{ + DB::connection($cawangan['mysql'])->beginTransaction(); + DB::connection('mysql7')->beginTransaction(); - if($tebus[0]['jenistebus'] == 'T') + $audit = new Audit(); + $audit->users = $request->kodlaluan; + $audit->actions = 'Hapus Tebus'; + $audit->norujukan = $norujukan; + $audit->old_data = $gadai; + $audit->kodcaw = $kodcaw; + $audit->created_at = $current; + $audit->updated_at = $current; + $audit->save(); + + if($tebus[0]['tagterima'] == 1) { + if($tebus[0]['jenistebus'] == 'T') + { + $totalmasuk = $masuk - $tebus[0]['bakipjm']; - $bakiakhir = $bakiakhir - $tebus[0]['bakipjm']; + // $bakiakhir = $bakiawal-$keluar+$totalmasuk+$pendahuluan-$serahan; + $bakiakhir = $baki - $tebus[0]['bakipjm']; - $updatetunai=Tunai::on($cawangan['mysql'])->where( [['tarikh','=', $current->toDateString()],['kodlaluan','=', $request->kodlaluan] ])-> - update(array( - 'keluar' => $keluar, - 'masuk' => $masuk, - 'baki' => $bakiakhir - )); + $updatetunai=Tunai::on($cawangan['mysql'])->where( [['tarikh','=', $current->toDateString()],['kodlaluan','=', $request->kodlaluan] ])-> + update(array( + 'keluar' => $keluar, + 'masuk' => $totalmasuk, + 'baki' => $bakiakhir + )); + + Tebus::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->delete(); + + InOutMar::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->delete(); + + TransaksiKeuntungan::on('mysql7')->where('norujukan','=',$norujukan)->orderBy('id', 'desc')->limit(1)->delete(); + + Transaction::on('mysql7')->where('norujukan','=',$norujukan)->orderBy('id', 'desc')->limit(1)->delete(); + + Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(['sttebus' => '']); + + DB::connection($cawangan['mysql'])->commit(); + DB::connection('mysql7')->commit(); + + return response('Deleted Successfully', 200); + } + else + return response('Bukan-Tebus', 200); + }else{ + + if($tebus[0]['jenistebus'] == 'T') + { + + $bakiakhir = $bakiakhir - $tebus[0]['bakipjm']; + + $updatetunai=Tunai::on($cawangan['mysql'])->where( [['tarikh','=', $current->toDateString()],['kodlaluan','=', $request->kodlaluan] ])-> + update(array( + 'keluar' => $keluar, + 'masuk' => $masuk, + 'baki' => $bakiakhir + )); - Tebus::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->delete(); + Tebus::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->delete(); - InOutMar::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->delete(); + InOutMar::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->delete(); - TransaksiKeuntungan::on('mysql7')->where('norujukan','=',$norujukan)->orderBy('id', 'desc')->limit(1)->delete(); + TransaksiKeuntungan::on('mysql7')->where('norujukan','=',$norujukan)->orderBy('id', 'desc')->limit(1)->delete(); - Transaction::on('mysql7')->where('norujukan','=',$norujukan)->orderBy('id', 'desc')->limit(1)->delete(); + Transaction::on('mysql7')->where('norujukan','=',$norujukan)->orderBy('id', 'desc')->limit(1)->delete(); - Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(['sttebus' => '']); + Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(['sttebus' => '']); - return response('Deleted Successfully', 200); + DB::connection($cawangan['mysql'])->commit(); + DB::connection('mysql7')->commit(); + return response('Deleted Successfully', 200); + } + else + return response('Bukan-Tebus', 200); } - else - return response('Bukan-Tebus', 200); } + + return response()->json($array_response); + }catch(\Exception $e){ + DB::connection($cawangan['mysql'])->rollBack(); + DB::connection('mysql7')->rollBack(); + $array_response = [ + 'result' => 'error', + 'data' => $e->getMessage() + ]; + + Log::error('Transaction failed', [ + 'exception' => $e->getMessage(), + 'line' => $e->getLine(), + 'file' => $e->getFile(), + ]); + + return response()->json($array_response); } + } public function senaraiLelong($kodcaw,Request $request){ diff --git a/app/Support/v1/Penebusan.php b/app/Support/v1/Penebusan.php index 7c35110..88033cb 100644 --- a/app/Support/v1/Penebusan.php +++ b/app/Support/v1/Penebusan.php @@ -9,7 +9,10 @@ use App\KadarUpah; use App\Support\v2\Calculation; use Carbon\Carbon; use App\Gadai; +use App\HargaEmas; use App\InOutMar; +use App\KomuditiPurchase; +use App\KomuditiTransaksi; use App\Marhun; use App\Moratorium; use App\Support\OnePercent; @@ -771,4 +774,323 @@ class Penebusan return $tempoh_gadai; } + + public function transaksiPembiayaanSemula($kodcaw,$norujukan,HttpRequest $request){ + $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); + + $gadai = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->first(); + $gadai = optional($gadai)->toArray(); + + //check duplicate + $data = Transaction::on('mysql7')->where('norujukan','=',$norujukan)->where('trans_type','=','AT')->first(); + + if(!empty($data)){ + return 'duplicate'; + } + + if(!$gadai){ + return 'gadai no-data'; + } + + $array_tebus = $request->only(['jeniskeuntungan', 'nopelanggan','jenistebus','addpinjaman','nowakil','marhun','teller','bakipinjaman','bakiupah']); + $array_trans = $request->only(['nopelanggan', 'noic','jenisAT','pinjaman','marhun','teller','jenistebus']); + $array_tebus_base = $request->only(['totalbayaran', 'bakiupah','jeniskeuntungan','bakipinjaman','jenistebus','teller','nowakil','duitpelanggan']); + $array_trans_base = $request->only(['pinjaman','teller']); + + try{ + DB::connection($cawangan['mysql'])->beginTransaction(); + $this->saveTebus($kodcaw,$norujukan,$gadai,$cawangan,$array_tebus); + $this->createTransaction($cawangan,$kodcaw,$norujukan,$array_trans); + + DB::connection('mysql7')->beginTransaction(); + $this->saveTebusBase($kodcaw,$norujukan,$gadai,$array_tebus_base); + $this->createTransactionBase($norujukan,$kodcaw,$array_trans_base); + $array_response = [ + 'result' => 'success', + 'data' => 1 + ]; + + DB::connection($cawangan['mysql'])->commit(); + DB::connection('mysql7')->commit(); + + return response()->json($array_response); + + }catch(\Exception $e){ + DB::connection($cawangan['mysql'])->rollBack(); + DB::connection('mysql7')->rollBack(); + $array_response = [ + 'result' => 'error', + 'data' => $e->getMessage() + ]; + + Log::error('Transaction failed', [ + 'exception' => $e->getMessage(), + 'line' => $e->getLine(), + 'file' => $e->getFile(), + ]); + + return response()->json($array_response); + } + + } + + private function saveTebus($kodcaw,$norujukan,$gadai,$cawangan,$array_tebus){ + $current = Carbon::now(); + + $rebet = 0; + + $rebet = $this->rebetselepastawarruq($kodcaw,$norujukan); + + $upah_rebet = $this->kiraUpahRebet($norujukan); + + try{ + Tebus::on($cawangan['mysql'])->create([ + 'kodcaw'=> $kodcaw, + 'norujukan'=> $norujukan, + 'nopelanggan' => $array_tebus['nopelanggan'], + 'jenisbyr' => "TN", + 'jenistebus' => $array_tebus['jenistebus'], + 'glcode' => "0", + 't_tebus' => $current->toDateString(), + 'jbg' => $gadai['tempoh'], + 'kadarupah' => $gadai['kadarupah'], + 'nilaimarhun' => $gadai['nilaimarhun'], + 'pinjaman' => $gadai['pinjaman'], + 'ansuran' => 0.00, + 'addpinjaman' => $array_tebus['addpinjaman'], + 'bakipjm' => $array_tebus['bakipinjaman'], + 'bakiupah' => $array_tebus['bakiupah'], + 'terima' => "*", + 'kodgl' => "0", + 'nowakil' => $array_tebus['nowakil'], + 'rebate' => $rebet, + 'marhuntebus' => $array_tebus['marhun'], + 'historygadaian' => $norujukan, + 'tarikhbyrn' => $current->toDateString(), + 'teller' => $array_tebus['teller'], + ]); + }catch(\Exception $e){ + throw new \Exception("Error in Tebus: " . $e->getMessage()); + } + } + + private function saveTebusBase($kodcaw,$norujukan,$gadai,$array_tebus_base){ + $current = Carbon::now(); + + if($array_tebus_base['jenistebus'] == 'AT'){ + $bayaran_pembiayaan = $array_tebus_base['totalbayaran'] - $array_tebus_base['bakiupah']; + }else{ + $bayaran_pembiayaan = $array_tebus_base['bakipinjaman']; + } + + $margin_semasa = ($gadai['bakipjm']/$gadai['nilaimarhun']) * 100; + + $harga_tebus = $this->hargaTebusTawarruq($kodcaw,$norujukan,$array_tebus_base['jeniskeuntungan']); + $upah_rebet = $this->kiraUpahRebetSebenar($kodcaw,$norujukan); + + $bayaran_pembiayaan = $array_tebus_base['totalbayaran'] - $array_tebus_base['bakiupah']; + + $upah_rebet_sebenar = $harga_tebus['harga'] - $gadai['bakipjm']; + + try{ + TransaksiKeuntungan::on('mysql7')->create([ + 'norujukan' => $norujukan, + 'bayaran_keuntungan' => $array_tebus_base['bakiupah'], + 'bayaran_pembiayaan' => $bayaran_pembiayaan, + 'keuntungan_rebet' => $array_tebus_base['bakiupah'], + 'tarikh_bayaran'=> $current, + 'kodcaw'=> $kodcaw + ]); + + if($array_tebus_base['jenistebus'] == 'P'){ + $duit_masuk = $array_tebus_base['bakiupah']; + }else if($array_tebus_base['jenistebus'] == 'AT'){ + $duit_masuk = $array_tebus_base['totalbayaran']; + }else{ + $duit_masuk = $harga_tebus['harga']; + } + + $baki_hargajualan = ($array_tebus_base['jenistebus'] == 'P') ? $gadai['bakihargajualan'] = $array_tebus_base['bakiupah'] : $gadai['bakihargajualan'] - $array_tebus_base['bakipinjaman']; + Transaction::on('mysql7')->create([ + 'trans_type' => $array_tebus_base['jenistebus'], + 'norujukan' => $norujukan, + 'nokp' => $gadai['nokp'], + 'teller' => $array_tebus_base['teller'], + 'kodcaw' => $kodcaw, + 'duit_masuk' => $array_tebus_base['totalbayaran'], + 'created_at' => $current, + 'bakiharga' => 0, + 'duitpelanggan' => isset($array_tebus_base['duitpelanggan']) ? $array_tebus_base['duitpelanggan'] : 0, + 'bakipelanggan' => isset($array_tebus_base['bakipelanggan']) ? $array_tebus_base['bakipelanggan'] : 0 + ]); + }catch(\Exception $e){ + throw new \Exception("Error in TebusBase: " . $e->getMessage()); + } + } + + private function createTransaction($cawangan,$kodcaw,$norujukan,$array_trans){ + $current = Carbon::now(); + + /* Create Gadai */ + $gadaiTransaction = Gadai::on($cawangan['mysql'])->where('t_gadai','=',$current->toDateString())->orderBy('sirig', 'desc')->first(); + $gadaiTransaction = optional($gadaiTransaction)->toArray(); + + $new_sirig = ($gadaiTransaction) ? $gadaiTransaction['sirig'] + 1 : 1; + + $new_transaction = sprintf("%04d",$new_sirig); + $new_sag_number = strtoupper($cawangan['kodcaw']) . $current->year . $current->month . $current->day . '-' .$new_transaction; + + try{ + Gadai::on($cawangan['mysql'])->create([ + 'kodcaw'=>$kodcaw, + 'norujukan' => $new_sag_number, + 'nopelanggan' => $array_trans['nopelanggan'], + 'nokp' => $array_trans['noic'], + 'sirig' => $new_sirig, + 't_gadai' => $current->toDateString(), + 'sttebus' => '', + 'masa' =>$current->toTimeString(), + 'tagbaru' => 1 + ]); + + $marhun = Marhun::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->get(); + + foreach($marhun as $marhunloop){ + $karatbaru = (strpos($marhunloop['karat'], '.') !== false) ? str_replace('-','.',$marhunloop['karat']) : $marhunloop['karat']; + $karatbaru = $marhunloop['karat']; + $harga_emas = HargaEmas::on('mysql7')->select('harga')->where('karat','=',$karatbaru)->first(); + + if(isset($array_trans['jenisAT'])){ + $harga = ($array_trans['jenisAT'] == 'hargalama') ? $marhunloop['harga'] : $harga_emas['harga']; + }else{ + $harga = $harga_emas['harga']; + } + + $nilai_marhun = (floatval($harga) * floatval($marhunloop['berat'])); + + $marhunToCreate = [ + 'kodcaw'=> $kodcaw, + 'norujukan'=> $new_sag_number, + 't_gadai' => $current->toDateString(), + 'bil' => $marhunloop['kuantiti'], + 'marhun' => $marhunloop['marhun'], + 'nota' => $marhunloop['nota'], + 'tag_permata' => $marhunloop['tag_permata'] != null ? $marhunloop['tag_permata'] : 0, + 'berat_batu_permata' => $marhunloop['berat_batu_permata'] != null ? $marhunloop['berat_batu_permata'] : '', + 'karat' => $marhunloop['karat'], + 'berat' => $marhunloop['berat_emas'], + 'harga' => $harga, + 'n_marhun' => $nilai_marhun + ]; + + if($marhunToCreate['berat_batu_permata'] == '') { + $marhunToCreate['berat_batu_permata'] = null; + }; + + Marhun::on($cawangan['mysql'])->create($marhunToCreate); + } + + $total_nilai_marhun = Marhun::on($cawangan['mysql'])->where('norujukan',$new_sag_number)->sum('n_marhun'); + $total_bil_marhun = Marhun::on($cawangan['mysql'])->where('norujukan',$new_sag_number)->sum('bil'); + $total_berat_marhun = Marhun::on($cawangan['mysql'])->where('norujukan',$new_sag_number)->sum('berat'); + + $margin_pinjaman = ($array_trans['pinjaman'] / $total_nilai_marhun); + + $t_matang = Carbon::now(); + $t_matang = $t_matang->addMonths(6)->subDays(1); + + $t_kontrak = Carbon::now(); + $t_kontrak = $t_kontrak->addMonths(12)->subDays(1); + + $kadar_raw = KadarUpah::where('min','<=',$total_nilai_marhun)->where('max','>=',$total_nilai_marhun)->where('group_id',$cawangan['group_id'])->first(); + + $onepercentservices = new Calculation(); + $keuntungan = $onepercentservices->kiraanKeuntunganSebenar($array_trans['pinjaman'],$total_nilai_marhun,$kadar_raw['kadarujrah'],$margin_pinjaman); + + $upah1 = $onepercentservices->getRoundedMethod($keuntungan['keuntungan']); + $upah6 = $onepercentservices->getRoundedMethod($upah1 * 6); + $upah12 = $onepercentservices->getRoundedMethod($upah1 * 12); + $ujrah = $onepercentservices->getRoundedMethod($keuntungan['ujrah']); + $onepercent = $onepercentservices->getRoundedMethod($keuntungan['onepercent']); + $akrual_ujrah = $onepercentservices->getRoundedMethod($keuntungan['ujrah'] * 0.5); + $akrual_onepercent = $onepercentservices->getRoundedMethod($keuntungan['onepercent'] * 0.5); + + $hargajualan = $array_trans['pinjaman'] + $upah12; + + Gadai::on($cawangan['mysql']) + ->where('norujukan','=',$new_sag_number) + ->update(array( + 'nilaimarhun' => $total_nilai_marhun, + 'berat'=> $total_berat_marhun, + 'pinjaman' => $array_trans['pinjaman'], + 'kadarupah' => $kadar_raw['kadarujrah'], + 'marhun' => $array_trans['marhun'], + 'percentpinj' => $margin_pinjaman, + 'teller' => $array_trans['teller'], + 'bakipjm' => $array_trans['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' => $total_bil_marhun, + 'tagkomuditi' => 0, + 'upahdibayar' => 0.00, + 'tempohbayar' => 0.00, + 'lelong_tawarruq' => 1, + 'kadarujrah' => $kadar_raw['kadarujrah'], + 'ujrah' => $ujrah, + 'onepercent' => $onepercent, + 'margin_semasa' => $margin_pinjaman, + 'tagbaru' => 1, + 'tunggakanujrah' => $akrual_ujrah, + 'tunggakanonepercent' => $akrual_onepercent, + )); + + Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(array( + 'sttebus' => "T", + 't_update' => $current->toDateString(), + 'historygadaian' => $new_sag_number, + 'tag_tebus' => $array_trans['jenistebus'], + )); + + }catch(\Exception $e){ + throw new \Exception("Error in Transaction: " . $e->getMessage()); + } + + } + + private function createTransactionBase($norujukan,$kodcaw,$array_trans_base){ + $current = Carbon::now(); + + $komuditi_current = KomuditiPurchase::on('mysql7')->where('date_purchase','=',$current->toDateString())->orderBy('created_at','desc')->first(); + + $unit_current = isset($komuditi_current['unit_komuditi']) ? $komuditi_current['unit_komuditi']: 0; + + try{ + $update_unit = $unit_current - $array_trans_base['pinjaman']; + + KomuditiPurchase::on('mysql7')->where('id','=',$komuditi_current['id'])->update([ + 'unit_komuditi' => $update_unit + ]); + + KomuditiTransaksi::on('mysql7')->create([ + 'unit_komuditi' => $update_unit, + 'nosijil'=>$komuditi_current['no_sijil'], + 'norujukan' => $norujukan, + 'kodcaw' => $kodcaw, + 'teller' => $array_trans_base['teller'], + 'masa' => $current->toTimeString(), + 'tarikh' => $current->toDateString() + ]); + }catch(\Exception $e){ + throw new \Exception("Error in TransactionBase: " . $e->getMessage()); + } + } } \ No newline at end of file From e33af1a75eb5bcb4a5922bcd8ac2cf3fa43fba14 Mon Sep 17 00:00:00 2001 From: Hafifie PKB Date: Sun, 15 Dec 2024 12:14:22 +0800 Subject: [PATCH 39/43] fix add api --- app/Support/v2/Penebusan.php | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/app/Support/v2/Penebusan.php b/app/Support/v2/Penebusan.php index 6e9bcb2..ee306ce 100644 --- a/app/Support/v2/Penebusan.php +++ b/app/Support/v2/Penebusan.php @@ -994,9 +994,9 @@ class Penebusan $gadai = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->first(); $array_tebus = $request->only(['jeniskeuntungan', 'nopelanggan','jenistebus','addpinjaman','nowakil','marhun','teller']); - $array_trans = $request->only(['nopelanggan', 'noic','pinjaman','marhun','teller','jenistebus']); + $array_trans = $request->only(['nopelanggan', 'noic','pinjaman','pinjamanbaru','marhun','teller','jenistebus']); $array_tebus_base = $request->only(['totalbayaran', 'bakiupah','jeniskeuntungan','bakipinjaman','jenistebus','teller','nowakil','duitpelanggan']); - $array_trans_base = $request->only(['pinjaman','teller']); + $array_trans_base = $request->only(['pinjaman','teller','pinjamanbaru']); try{ //check duplicate @@ -1226,7 +1226,7 @@ class Penebusan 'tag_permata' => $marhunloop['tag_permata'] != null ? $marhunloop['tag_permata'] : 0, 'berat_batu_permata' => $marhunloop['berat_batu_permata'] != null ? $marhunloop['berat_batu_permata'] : '', 'karat' => $marhunloop['karat'], - 'berat' => $marhunloop['berat_emas'], + 'berat' => $marhunloop['berat'], 'harga' => $harga, 'n_marhun' => $nilai_marhun ]; @@ -1242,7 +1242,7 @@ class Penebusan $total_bil_marhun = Marhun::on($cawangan['mysql'])->where('norujukan',$new_sag_number)->sum('bil'); $total_berat_marhun = Marhun::on($cawangan['mysql'])->where('norujukan',$new_sag_number)->sum('berat'); - $margin_pinjaman = ($array_trans['pinjaman'] / $total_nilai_marhun); + $margin_pinjaman = ($array_trans['pinjamanbaru'] / $total_nilai_marhun); $t_matang = Carbon::now(); $t_matang = $t_matang->addMonths(6)->subDays(1); @@ -1253,7 +1253,7 @@ class Penebusan $kadar_raw = KadarUpah::where('min','<=',$total_nilai_marhun)->where('max','>=',$total_nilai_marhun)->where('group_id',$cawangan['group_id'])->first(); $onepercentservices = new Calculation(); - $keuntungan = $onepercentservices->kiraanKeuntunganSebenar($array_trans['pinjaman'],$total_nilai_marhun,$kadar_raw['kadarujrah'],$margin_pinjaman); + $keuntungan = $onepercentservices->kiraanKeuntunganSebenar($array_trans['pinjamanbaru'],$total_nilai_marhun,$kadar_raw['kadarujrah'],$margin_pinjaman); $upah1 = $onepercentservices->getRoundedMethod($keuntungan['keuntungan']); $upah6 = $onepercentservices->getRoundedMethod($upah1 * 6); @@ -1263,19 +1263,19 @@ class Penebusan $akrual_ujrah = $onepercentservices->getRoundedMethod($keuntungan['ujrah'] * 0.5); $akrual_onepercent = $onepercentservices->getRoundedMethod($keuntungan['onepercent'] * 0.5); - $hargajualan = $array_trans['pinjaman'] + $upah12; + $hargajualan = $array_trans['pinjamanbaru'] + $upah12; Gadai::on($cawangan['mysql']) ->where('norujukan','=',$new_sag_number) ->update(array( 'nilaimarhun' => $total_nilai_marhun, 'berat'=> $total_berat_marhun, - 'pinjaman' => $array_trans['pinjaman'], + 'pinjaman' => $array_trans['pinjamanbaru'], 'kadarupah' => $kadar_raw['kadarujrah'], 'marhun' => $array_trans['marhun'], 'percentpinj' => $margin_pinjaman, 'teller' => $array_trans['teller'], - 'bakipjm' => $array_trans['pinjaman'], + 'bakipjm' => $array_trans['pinjamanbaru'], 'bakiupah' => $upah6, 'jbg' => 0.5, 't_update' => $current->toDateString(), @@ -1322,7 +1322,7 @@ class Penebusan $unit_current = isset($komuditi_current['unit_komuditi']) ? $komuditi_current['unit_komuditi']: 0; try{ - $update_unit = $unit_current - $array_trans_base['pinjaman']; + $update_unit = $unit_current - $array_trans_base['pinjamanbaru']; KomuditiPurchase::on('mysql7')->where('id','=',$komuditi_current['id'])->update([ 'unit_komuditi' => $update_unit From f13dd32146ea035a5921a52afb7b6cb175a7487c Mon Sep 17 00:00:00 2001 From: Hafifie PKB Date: Mon, 16 Dec 2024 01:05:42 +0800 Subject: [PATCH 40/43] fix ps --- app/Support/v2/Penebusan.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/Support/v2/Penebusan.php b/app/Support/v2/Penebusan.php index ee306ce..1b93ca1 100644 --- a/app/Support/v2/Penebusan.php +++ b/app/Support/v2/Penebusan.php @@ -942,9 +942,9 @@ class Penebusan } $array_tebus = $request->only(['jeniskeuntungan', 'nopelanggan','jenistebus','addpinjaman','nowakil','marhun','teller']); - $array_trans = $request->only(['nopelanggan', 'noic','jenisAT','pinjaman','marhun','teller','jenistebus']); + $array_trans = $request->only(['nopelanggan', 'noic','jenisAT','pinjaman','pinjamanbaru','marhun','teller','jenistebus']); $array_tebus_base = $request->only(['totalbayaran', 'bakiupah','jeniskeuntungan','bakipinjaman','jenistebus','teller','nowakil','duitpelanggan']); - $array_trans_base = $request->only(['pinjaman','teller']); + $array_trans_base = $request->only(['pinjaman','teller','pinjamanbaru']); try{ @@ -1299,12 +1299,12 @@ class Penebusan 'tagbaru' => 1, 'tunggakanujrah' => $akrual_ujrah, 'tunggakanonepercent' => $akrual_onepercent, + 'historygadaian' => $norujukan, )); Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(array( 'sttebus' => "T", 't_update' => $current->toDateString(), - 'historygadaian' => $new_sag_number, 'tag_tebus' => $array_trans['jenistebus'], )); From b5e17aaee2dfcecea8a56ac23b68eb7233f908a9 Mon Sep 17 00:00:00 2001 From: Hafifie PKB Date: Mon, 16 Dec 2024 10:44:56 +0800 Subject: [PATCH 41/43] fix untuk surat lama --- app/Support/v1/Penebusan.php | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/app/Support/v1/Penebusan.php b/app/Support/v1/Penebusan.php index 88033cb..9738527 100644 --- a/app/Support/v1/Penebusan.php +++ b/app/Support/v1/Penebusan.php @@ -793,9 +793,9 @@ class Penebusan } $array_tebus = $request->only(['jeniskeuntungan', 'nopelanggan','jenistebus','addpinjaman','nowakil','marhun','teller','bakipinjaman','bakiupah']); - $array_trans = $request->only(['nopelanggan', 'noic','jenisAT','pinjaman','marhun','teller','jenistebus']); + $array_trans = $request->only(['nopelanggan', 'noic','jenisAT','pinjaman','pinjamanbaru','marhun','teller','jenistebus']); $array_tebus_base = $request->only(['totalbayaran', 'bakiupah','jeniskeuntungan','bakipinjaman','jenistebus','teller','nowakil','duitpelanggan']); - $array_trans_base = $request->only(['pinjaman','teller']); + $array_trans_base = $request->only(['pinjaman','teller','pinjamanbaru']); try{ DB::connection($cawangan['mysql'])->beginTransaction(); @@ -978,7 +978,7 @@ class Penebusan 'tag_permata' => $marhunloop['tag_permata'] != null ? $marhunloop['tag_permata'] : 0, 'berat_batu_permata' => $marhunloop['berat_batu_permata'] != null ? $marhunloop['berat_batu_permata'] : '', 'karat' => $marhunloop['karat'], - 'berat' => $marhunloop['berat_emas'], + 'berat' => $marhunloop['berat'], 'harga' => $harga, 'n_marhun' => $nilai_marhun ]; @@ -1022,12 +1022,12 @@ class Penebusan ->update(array( 'nilaimarhun' => $total_nilai_marhun, 'berat'=> $total_berat_marhun, - 'pinjaman' => $array_trans['pinjaman'], + 'pinjaman' => $array_trans['pinjamanbaru'], 'kadarupah' => $kadar_raw['kadarujrah'], 'marhun' => $array_trans['marhun'], 'percentpinj' => $margin_pinjaman, 'teller' => $array_trans['teller'], - 'bakipjm' => $array_trans['pinjaman'], + 'bakipjm' => $array_trans['pinjamanbaru'], 'bakiupah' => $upah6, 'jbg' => 0.5, 't_update' => $current->toDateString(), @@ -1051,12 +1051,12 @@ class Penebusan 'tagbaru' => 1, 'tunggakanujrah' => $akrual_ujrah, 'tunggakanonepercent' => $akrual_onepercent, + 'historygadaian' => $norujukan, )); Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(array( 'sttebus' => "T", 't_update' => $current->toDateString(), - 'historygadaian' => $new_sag_number, 'tag_tebus' => $array_trans['jenistebus'], )); @@ -1074,7 +1074,7 @@ class Penebusan $unit_current = isset($komuditi_current['unit_komuditi']) ? $komuditi_current['unit_komuditi']: 0; try{ - $update_unit = $unit_current - $array_trans_base['pinjaman']; + $update_unit = $unit_current - $array_trans_base['pinjamanbaru']; KomuditiPurchase::on('mysql7')->where('id','=',$komuditi_current['id'])->update([ 'unit_komuditi' => $update_unit From 954568b086fb45ba4c936094558d376ad8628c40 Mon Sep 17 00:00:00 2001 From: Hafifie PKB Date: Mon, 16 Dec 2024 21:58:04 +0800 Subject: [PATCH 42/43] fix sag lama untuk ps --- app/Services/MasterServices.php | 2 +- app/Support/Tawarruq.php | 3 ++- app/Support/v1/Penebusan.php | 11 +++++++---- app/Support/v2/Penebusan.php | 20 ++++++++++++-------- 4 files changed, 22 insertions(+), 14 deletions(-) diff --git a/app/Services/MasterServices.php b/app/Services/MasterServices.php index 1f903f9..adb2adf 100644 --- a/app/Services/MasterServices.php +++ b/app/Services/MasterServices.php @@ -7,7 +7,7 @@ use App\KadarUpah; use Illuminate\Http\Request as HttpRequest; use App\Support\OnePercent as OnePercentEngine; use App\Support\Tawarruq as TawarruqEngine; - +use Illuminate\Support\Facades\Log; class MasterServices { protected $cawangan; diff --git a/app/Support/Tawarruq.php b/app/Support/Tawarruq.php index 2ac6755..be5506f 100644 --- a/app/Support/Tawarruq.php +++ b/app/Support/Tawarruq.php @@ -8,6 +8,7 @@ use App\Support\v1\GadaiV1 as Version1Gadai; use App\Services\MasterServices; use App\Support\v1\Penebusan; use Illuminate\Http\Request as HttpRequest; +use Illuminate\Support\Facades\Log; class Tawarruq extends MasterServices { @@ -165,7 +166,7 @@ class Tawarruq extends MasterServices public function tebusUpdateAutoTawarruq($kodcaw,$norujukan,HttpRequest $request){ $tebus = new Penebusan($this->kodcaw,$this->cawangan_info); - $response = $tebus->tebusUpdateAutoTawarruq($this->kodcaw,$norujukan,$request); + $response = $tebus->transaksiPembiayaanSemula($this->kodcaw,$norujukan,$request); return $response; } diff --git a/app/Support/v1/Penebusan.php b/app/Support/v1/Penebusan.php index 9738527..0862945 100644 --- a/app/Support/v1/Penebusan.php +++ b/app/Support/v1/Penebusan.php @@ -890,7 +890,7 @@ class Penebusan $bayaran_pembiayaan = $array_tebus_base['totalbayaran'] - $array_tebus_base['bakiupah']; - $upah_rebet_sebenar = $harga_tebus['harga'] - $gadai['bakipjm']; + $upah_rebet_sebenar = $harga_tebus - $gadai['bakipjm']; try{ TransaksiKeuntungan::on('mysql7')->create([ @@ -936,9 +936,12 @@ class Penebusan $gadaiTransaction = optional($gadaiTransaction)->toArray(); $new_sirig = ($gadaiTransaction) ? $gadaiTransaction['sirig'] + 1 : 1; + $curent_year = substr($current->year,2,2); + $curent_month = sprintf("%02d", $current->month); + $current_day = sprintf("%02d", $current->day); $new_transaction = sprintf("%04d",$new_sirig); - $new_sag_number = strtoupper($cawangan['kodcaw']) . $current->year . $current->month . $current->day . '-' .$new_transaction; + $new_sag_number = strtoupper($cawangan['kodcaw']) . $curent_year . $curent_month . $current_day . '-' .$new_transaction; try{ Gadai::on($cawangan['mysql'])->create([ @@ -994,7 +997,7 @@ class Penebusan $total_bil_marhun = Marhun::on($cawangan['mysql'])->where('norujukan',$new_sag_number)->sum('bil'); $total_berat_marhun = Marhun::on($cawangan['mysql'])->where('norujukan',$new_sag_number)->sum('berat'); - $margin_pinjaman = ($array_trans['pinjaman'] / $total_nilai_marhun); + $margin_pinjaman = ($array_trans['pinjamanbaru'] / $total_nilai_marhun); $t_matang = Carbon::now(); $t_matang = $t_matang->addMonths(6)->subDays(1); @@ -1005,7 +1008,7 @@ class Penebusan $kadar_raw = KadarUpah::where('min','<=',$total_nilai_marhun)->where('max','>=',$total_nilai_marhun)->where('group_id',$cawangan['group_id'])->first(); $onepercentservices = new Calculation(); - $keuntungan = $onepercentservices->kiraanKeuntunganSebenar($array_trans['pinjaman'],$total_nilai_marhun,$kadar_raw['kadarujrah'],$margin_pinjaman); + $keuntungan = $onepercentservices->kiraanKeuntunganSebenar($array_trans['pinjamanbaru'],$total_nilai_marhun,$kadar_raw['kadarujrah'],$margin_pinjaman); $upah1 = $onepercentservices->getRoundedMethod($keuntungan['keuntungan']); $upah6 = $onepercentservices->getRoundedMethod($upah1 * 6); diff --git a/app/Support/v2/Penebusan.php b/app/Support/v2/Penebusan.php index 1b93ca1..a0de8b4 100644 --- a/app/Support/v2/Penebusan.php +++ b/app/Support/v2/Penebusan.php @@ -992,6 +992,14 @@ class Penebusan $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); $gadai = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->first(); + $gadai = optional($gadai)->toArray(); + + //check duplicate + $data = Transaction::on('mysql7')->where('norujukan','=',$norujukan)->where('trans_type','=','AT')->first(); + + if(!empty($data)){ + return 'duplicate'; + } $array_tebus = $request->only(['jeniskeuntungan', 'nopelanggan','jenistebus','addpinjaman','nowakil','marhun','teller']); $array_trans = $request->only(['nopelanggan', 'noic','pinjaman','pinjamanbaru','marhun','teller','jenistebus']); @@ -999,13 +1007,6 @@ class Penebusan $array_trans_base = $request->only(['pinjaman','teller','pinjamanbaru']); try{ - //check duplicate - $data = Transaction::on('mysql7')->where('norujukan','=',$norujukan)->where('trans_type','=','AT')->first(); - - if(!empty($data)){ - return 'duplicate'; - } - DB::connection($cawangan['mysql'])->beginTransaction(); $this->saveTebus($kodcaw,$norujukan,$gadai,$cawangan,$array_tebus); $this->createTransaction($cawangan,$kodcaw,$norujukan,$array_trans); @@ -1184,9 +1185,12 @@ class Penebusan $gadaiTransaction = optional($gadaiTransaction)->toArray(); $new_sirig = ($gadaiTransaction) ? $gadaiTransaction['sirig'] + 1 : 1; + $curent_year = substr($current->year,2,2); + $curent_month = sprintf("%02d", $current->month); + $current_day = sprintf("%02d", $current->day); $new_transaction = sprintf("%04d",$new_sirig); - $new_sag_number = strtoupper($cawangan['kodcaw']) . $current->year . $current->month . $current->day . '-' .$new_transaction; + $new_sag_number = strtoupper($cawangan['kodcaw']) . $curent_year . $curent_month . $current_day . '-' .$new_transaction; try{ Gadai::on($cawangan['mysql'])->create([ From c512d8e5a4359251716a85d5997def466d4fb85e Mon Sep 17 00:00:00 2001 From: Hafifie PKB Date: Mon, 16 Dec 2024 22:13:37 +0800 Subject: [PATCH 43/43] fix tagtebus xmasuk --- app/Gadai.php | 3 ++- app/Support/v1/Penebusan.php | 2 +- app/Support/v2/Penebusan.php | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/app/Gadai.php b/app/Gadai.php index d5864da..7f3f595 100644 --- a/app/Gadai.php +++ b/app/Gadai.php @@ -72,7 +72,8 @@ class Gadai extends Model 'upah12', 'tagkomuditi', 'tempohbayar', - 'lelong_tawarruq' + 'lelong_tawarruq', + 'tag_tebus' ]; /** diff --git a/app/Support/v1/Penebusan.php b/app/Support/v1/Penebusan.php index 0862945..4ce7746 100644 --- a/app/Support/v1/Penebusan.php +++ b/app/Support/v1/Penebusan.php @@ -1055,12 +1055,12 @@ class Penebusan 'tunggakanujrah' => $akrual_ujrah, 'tunggakanonepercent' => $akrual_onepercent, 'historygadaian' => $norujukan, + 'tag_tebus' => $array_trans['jenistebus'], )); Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(array( 'sttebus' => "T", 't_update' => $current->toDateString(), - 'tag_tebus' => $array_trans['jenistebus'], )); }catch(\Exception $e){ diff --git a/app/Support/v2/Penebusan.php b/app/Support/v2/Penebusan.php index a0de8b4..ae67135 100644 --- a/app/Support/v2/Penebusan.php +++ b/app/Support/v2/Penebusan.php @@ -1304,12 +1304,12 @@ class Penebusan 'tunggakanujrah' => $akrual_ujrah, 'tunggakanonepercent' => $akrual_onepercent, 'historygadaian' => $norujukan, + 'tag_tebus' => $array_trans['jenistebus'], )); Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(array( 'sttebus' => "T", 't_update' => $current->toDateString(), - 'tag_tebus' => $array_trans['jenistebus'], )); }catch(\Exception $e){