From 5f78f6938a0e10c8f0bbb6da573522452a406c57 Mon Sep 17 00:00:00 2001 From: KhatamNugraha Date: Tue, 19 Mar 2024 16:31:56 +0700 Subject: [PATCH] fixing query builder --- Entities/Account.php | 53 ++++++++++--------- Http/Controllers/KonfirmasiBankController.php | 15 +++--- 2 files changed, 37 insertions(+), 31 deletions(-) diff --git a/Entities/Account.php b/Entities/Account.php index 34d8648..a16ea0b 100644 --- a/Entities/Account.php +++ b/Entities/Account.php @@ -47,16 +47,15 @@ class Account extends Model if($arrAccount == null){ $data = DB::connection("db2")->table("STG_DB.ACCOUNT AS AC") - ->selectRaw('AC.CUSTOMER_NO , AC.ACCOUNT_NUMBER ,AC.INACTIV_MARKER, AC.CATEGORY ,AC.BATCH_DATE,AC.CURRENCY,AC.SHORT_TITLE,AC.OPENING_DATE,CT.SHORT_NAME,CP.COMPANY_NAME,AC.WORKING_BALANCE') + ->selectRaw('AC.CUSTOMER_NO, MAX(INACTIV_MARKER) as INACTIV_MARKER,AC.ACCOUNT_NUMBER,MAX(AC.BATCH_DATE) AS BATCH_DATE,MAX(AC.CURRENCY)AS CURRENCY, AC.SHORT_TITLE,MAX(AC.OPENING_DATE) AS OPENING_DATE, MAX(AC.WORKING_BALANCE) AS WORKING_BALANCE, MAX(AC.CATEGORY) AS CATEGORY,CT.SHORT_NAME,CP.COMPANY_NAME') ->join('STG_DB.CATEGORY AS CT', 'AC.CATEGORY', '=', 'CT.ID') ->join('STG_DB.COMPANY AS CP', 'AC.CO_CODE', '=', 'CP.ID') ->where('CUSTOMER_NO',$cif) ->where('COMPANY_NAME', 'like', "%" .$uppercaseKodeCabang."%") - //->where('INACTIV_MARKER', NULL) + // ->where('INACTIV_MARKER', NULL) ->where('AC.BATCH_DATE',$startDate) ->whereIn(DB::raw("LEFT(CATEGORY, 3)"),['100','600','660','101']) - ->distinct() - // ->groupBy('CUSTOMER_NO','ACCOUNT_NUMBER','SHORT_TITLE','SHORT_NAME','COMPANY_NAME') + ->groupBy('CUSTOMER_NO','ACCOUNT_NUMBER','SHORT_TITLE','SHORT_NAME','COMPANY_NAME') ->limit(100); }else{ $data = DB::connection("db2")->table("STG_DB.ACCOUNT") @@ -74,17 +73,16 @@ class Account extends Model // $uppercaseKodeCabang = Str::upper($kodecabang); $data = DB::connection("db2")->table("STG_DB.ACCOUNT AS AC") - ->selectRaw('AC.CUSTOMER_NO , AC.ACCOUNT_NUMBER ,AC.INACTIV_MARKER, AC.CATEGORY ,AC.BATCH_DATE,AC.CURRENCY,AC.SHORT_TITLE,AC.OPENING_DATE,CT.SHORT_NAME,CP.COMPANY_NAME,AC.WORKING_BALANCE') + ->selectRaw('AC.CUSTOMER_NO, MAX(INACTIV_MARKER) as INACTIV_MARKER,AC.ACCOUNT_NUMBER,MAX(AC.BATCH_DATE) AS BATCH_DATE,MAX(AC.CURRENCY)AS CURRENCY, AC.SHORT_TITLE,MAX(AC.OPENING_DATE) AS OPENING_DATE, MAX(AC.WORKING_BALANCE) AS WORKING_BALANCE, MAX(AC.CATEGORY) AS CATEGORY,CT.SHORT_NAME,CP.COMPANY_NAME') ->join('STG_DB.CATEGORY AS CT', 'AC.CATEGORY', '=', 'CT.ID') ->join('STG_DB.COMPANY AS CP', 'AC.CO_CODE', '=', 'CP.ID') ->where('CUSTOMER_NO',$cif) // ->where('COMPANY_NAME', 'like', "%" .$uppercaseKodeCabang."%") - //->where('INACTIV_MARKER', NULL) + // ->where('INACTIV_MARKER', NULL) ->where('AC.BATCH_DATE',$startDate) ->whereIn('AC.ACCOUNT_NUMBER', $arrAccount) - ->distinct() - //->whereIn(DB::raw("LEFT(CATEGORY, 3)"),['100','600','660','101']) - //->groupBy('CUSTOMER_NO','ACCOUNT_NUMBER','SHORT_TITLE','SHORT_NAME','COMPANY_NAME') + ->whereIn(DB::raw("LEFT(CATEGORY, 3)"),['100','600','660','101']) + ->groupBy('CUSTOMER_NO','ACCOUNT_NUMBER','SHORT_TITLE','SHORT_NAME','COMPANY_NAME') ->limit(100); return $data; } @@ -106,15 +104,20 @@ class Account extends Model } public function getPinjaman($cus_no, $dateCore){ + //dd($cus_no, $accNo, $dateCore); $data = []; - $data = DB::connection("db2")->table("STG_DB.AA_ARRANGEMENT as AA") - ->select('AA.ARRANGEMENT_ID','AA.PRODUCT_LINE','AA.CO_CODE','AA.START_DATE','AA.CURRENCY','AA.PRODUCT','AA.LINKED_APPL_ID','AD.MATURITY_DATE') - ->join('STG_DB.AA_ACCOUNT_DETAILS AS AD', 'AA.ARRANGEMENT_ID', '=', 'AD.ID') - // ->join('STG_DB.AA_ARR_INTEREST AS AI', 'AA.ARRANGEMENT_ID', '=', DB::raw("LEFT(AI.ID, 12)")) - ->where('AA.CUSTOMER',$cus_no) - ->where('AA.BATCH_DATE', $dateCore) - ->where('AA.ARR_STATUS', '<>','CLOSE') + $data = DB::connection("db2")->table("STG_DB.AA_ARRANGEMENT") + ->selectRaw('ARRANGEMENT_ID,PRODUCT_LINE,BATCH_DATE,CURRENCY,START_DATE,LINKED_APPL_ID') + // ->join('STG_DB.ACCOUNT AS AC', 'AA.LINKED_APPL_ID', '=', 'AC.ACCOUNT_NUMBER') + ->where('CUSTOMER',$cus_no) + // ->whereIn(DB::raw("LINKED_APPL_ID"),$arr) + // ->where('ARR_STATUS' , 'CURRENT') + // ->orderBy('TERM','DESC'); + ->where('BATCH_DATE', $dateCore) + ->where('ARR_STATUS','<>', 'CLOSE') + //->where('LINKED_APPL_ID', $accNo) + // ->groupBy('ARRANGEMENT_ID','ACCOUNT_NUMBER','SHORT_TITLE','SHORT_NAME','COMPANY_NAME') ->limit(100); return $data; @@ -137,20 +140,20 @@ class Account extends Model $data = DB::connection("db2")->table("STG_DB.AA_ACCOUNT_DETAILS") ->select('MATURITY_DATE') ->where('ID' ,$arrangementId) - ->where('BATCH_DATE', $startDate) - ->limit(100); - // ->orderBy('TERM','DESC'); + ->where('BATCH_DATE' ,$startDate) + ->limit(1) + ->orderBy('MATURITY_DATE','DESC'); return $data; } - public function getTermAmount($arrangementId, $startDate){ + public function getTermAmount($arrangementId){ $data = []; $data = DB::connection("db2")->table("STG_DB.AA_ARR_TERM_AMOUNT") ->select('TERM') - ->where('BATCH_DATE', $startDate) - ->where(DB::raw("LEFT(ID, 12)"),$arrangementId); - // ->orderBy('TERM','DESC'); + ->where(DB::raw("LEFT(ID, 12)"),$arrangementId) + ->orderBy('TERM','DESC') + ->limit(1); return $data; } @@ -158,11 +161,13 @@ class Account extends Model public function getSingleAccount($acNo, $date){ $data = []; $data = DB::connection("db2")->table("STG_DB.ACCOUNT") - ->select('ACCOUNT_NUMBER','WORKING_BALANCE') + ->select('WORKING_BALANCE') ->where('ACCOUNT_NUMBER',$acNo) ->where('BATCH_DATE',$date) + ->limit(1) ->orderBy('ACCOUNT_NUMBER','DESC'); + return $data; } diff --git a/Http/Controllers/KonfirmasiBankController.php b/Http/Controllers/KonfirmasiBankController.php index a324920..f7006c7 100644 --- a/Http/Controllers/KonfirmasiBankController.php +++ b/Http/Controllers/KonfirmasiBankController.php @@ -363,7 +363,6 @@ // dd($listAccount); $GetCustomer = $Account->getCustomer($request['cusNo'])->first(); $listAccount = $Account->getAccount($request['cusNo'], $arrAccount, $dateCore )->get(); - $Arrangement = $Account->getPinjaman($request['cusNo'], $dateCore)->get(); foreach ($listAccount as $key1 => $account) { $DataAccounts[$key1]['ACCOUNT_NUMBER'] = $account->ACCOUNT_NUMBER; @@ -382,21 +381,23 @@ } + $Arrangement = $Account->getPinjaman($request['cusNo'], $dateCore)->get(); + foreach ($Arrangement as $key2 => $pinjaman) { - // $MaturityDate = $Account->getMaturityDate($pinjaman->ARRANGEMENT_ID, $startDate )->first(); + $maturityDate = $Account->getMaturityDate($pinjaman->ARRANGEMENT_ID, $startDate )->first(); $TermAmount = $Account->getTermAmount($pinjaman->ARRANGEMENT_ID,$startDate)->first(); $FixedRate = $Account->getFixedRate($pinjaman->ARRANGEMENT_ID,$startDate)->first(); $balance = $Account->getSingleAccount($pinjaman->LINKED_APPL_ID,$startDate)->first(); - + // dd($balance); $DataPinjaman[$key2]['ARRANGEMENT_ID'] = $pinjaman->ARRANGEMENT_ID; $DataPinjaman[$key2]['START_DATE'] = $pinjaman->START_DATE; $DataPinjaman[$key2]['CURRENCY'] = $pinjaman->CURRENCY; $DataPinjaman[$key2]['PRODUCT'] = $pinjaman->PRODUCT_LINE; - $DataPinjaman[$key2]['WORKING_BALANCE'] = $balance != null ? number_format( $balance->WORKING_BALANCE, 2, ',', '.') : 'NIHIL'; - $DataPinjaman[$key2]['TERM'] = $TermAmount ? $TermAmount->TERM : '' ; - $DataPinjaman[$key2]['FIXED_RATE'] = $FixedRate ? $FixedRate->FIXED_RATE : ''; - $DataPinjaman[$key2]['MATURITY_DATE'] = $pinjaman->MATURITY_DATE; + $DataPinjaman[$key2]['WORKING_BALANCE'] = number_format($balance->WORKING_BALANCE, 2, ',', '.') ?? ''; + $DataPinjaman[$key2]['TERM'] = $TermAmount->TERM ?? ''; + $DataPinjaman[$key2]['FIXED_RATE'] = $FixedRate->FIXED_RATE ?? ''; + $DataPinjaman[$key2]['MATURITY_DATE'] = $maturityDate->MATURITY_DATE ?? ''; $DataPinjaman[$key2]['ACCOUNT_NUMBER'] = $pinjaman->LINKED_APPL_ID; }