diff --git a/app/Http/Controllers/AdminPageController.php b/app/Http/Controllers/AdminPageController.php index 076cf73..46668cf 100644 --- a/app/Http/Controllers/AdminPageController.php +++ b/app/Http/Controllers/AdminPageController.php @@ -49,11 +49,8 @@ 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; use DateTime; @@ -62,6 +59,10 @@ use Illuminate\Pagination\Paginator; 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 { @@ -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); } @@ -3800,4 +3832,45 @@ 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 = ['current_page' => $cawangan->currentPage(), 'job_ids' => []]; + foreach($cawangan as $caw){ + try{ + $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("Error processing: " . $caw['kodcaw']); + Log::error($e->getMessage()); + + } + } + $response = $array_all; + + 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/Http/Controllers/LaporanController.php b/app/Http/Controllers/LaporanController.php index 8a625b1..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,112 +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; - } - } - } - return true; - }); - - $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/Reports/BalanceSheetsController.php b/app/Http/Controllers/Reports/BalanceSheetsController.php index 68bbca3..0d99a02 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')->where('zone','<>',1)->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/Http/Controllers/TebusController.php b/app/Http/Controllers/TebusController.php index eab6438..2f0f42e 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; @@ -1818,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; @@ -1835,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{ @@ -1893,6 +1896,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/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/app/Services/Reports/Account/GeneralLedger.php b/app/Services/Reports/Account/GeneralLedger.php new file mode 100644 index 0000000..08371bc --- /dev/null +++ b/app/Services/Reports/Account/GeneralLedger.php @@ -0,0 +1,723 @@ +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']); + } + } + + $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; + } + + 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 */ + $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'); + }) + ->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',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', '>=', $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]; + + 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; + } + + 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 new file mode 100644 index 0000000..d40dec6 --- /dev/null +++ b/app/Services/Reports/AccountService.php @@ -0,0 +1,88 @@ +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())->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(); + $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(); + $akrual_onepercent = $gledger->getTotalKeuntungan(); + $akrual_ujrah = $gledger->getTotalUjrah(); + + $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; + + $cash_credit = $debit; + $cash_debit = $credit; + + $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 = $current_profit['keuntungan_sebenar']; + $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); + } + } + } + + return $array_tally; + } +} \ No newline at end of file diff --git a/app/Services/Reports/ImbangDugaService.php b/app/Services/Reports/ImbangDugaService.php index 9a8db17..32eb089 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; }); @@ -937,7 +929,6 @@ class ImbangDugaService $booltally = false; } - imbangdugabackup::on($cawangan['mysql'])->where('tarikh', $this->tarikh)->update([ 'tunaiditangan' => $tunaiditangan, 'keun_penggadai' => $keuntungan_penggadai, @@ -948,7 +939,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..30dddda 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; + }else{ + return true; } } } - return true; + return false; }); 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']); }); }); diff --git a/routes/web.php b/routes/web.php index 517d73d..30f228e 100644 --- a/routes/web.php +++ b/routes/web.php @@ -850,6 +850,10 @@ $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']); + });