Files
konfirmasibank/Entities/Account.php
KhatamNugraha 044c686477 add error page
2024-06-24 12:03:06 +07:00

457 lines
17 KiB
PHP

<?php
namespace Modules\Konfirmasibank\Entities;
use Spatie\Activitylog\LogOptions;
use Spatie\Activitylog\Traits\LogsActivity;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Str;
use Carbon\Carbon;
class Account extends Model
{
use HasFactory;
protected $connection = 'db2';
protected $table = 'STG_DB.ACCOUNT';
protected $primaryKey = '@ID';
protected $fillable = [
"'CUSTOMER_NO',
'MNEMONIC'
'CATEGORY'"
];
public function arrangement()
{
return $this->belongsTo(Arrangement::class, 'LINKED_APPL_ID');
}
public function getSearchAccount($cif, $arrAccount, $kodecabang, $startDate)
{
// dd($startDate);
$uppercaseKodeCabang = Str::upper($kodecabang);
$data = [];
if($arrAccount == null) {
$data = DB::connection("db2")->table("STG_DB.ACCOUNT AS AC")
->selectRaw('AC.CUSTOMER_NO,AC.ACCOUNT_NUMBER,AC.BATCH_DATE,AC.WORKING_BALANCE,CP.COMPANY_NAME,AC.CURRENCY,CT.SHORT_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('ARR_A', null)
->where('AC.BATCH_DATE', $startDate)
->whereIn(DB::raw("LEFT(CATEGORY, 3)"), ['100','600','660','101','324'])
// ->orWhere(DB::raw("LEFT(CATEGORY, 2)"),'32')
->groupBy('CUSTOMER_NO','ACCOUNT_NUMBER','AC.BATCH_DATE','WORKING_BALANCE','COMPANY_NAME','CURRENCY','SHORT_NAME')
->limit(100);
} else {
$data = DB::connection("db2")->table("STG_DB.ACCOUNT")
->select('*')
->where('CUSTOMER_NO', $cif)
->where('COMPANY_NAME', 'like', "%" .$uppercaseKodeCabang."%")
->whereIn('ACCOUNT_NUMBER', $arrAccount)
->where('OPENING_DATE', $startDate);
}
return $data;
}
public function getCekProduct($cust ,$acc, $startDate){
// dd($cust, $arrAccount, $startDate);
$timestamp = strtotime($startDate);
// Format the timestamp into a date format
$Year = date("Y", $timestamp);
$data = [];
$data = DB::connection("db2")->table("STG_DB.AA_ARRANGEMENT")->select('*')
->where('CUSTOMER', $cust)
->where('LINKED_APPL_ID', $acc)
// ->whereYear('BATCH_DATE', $Year)
->where('ARR_STATUS','EXPIRED')
->limit(1);
return $data;
}
public function getAccount($cif, $arrAccount, $startDate)
{
//$uppercaseKodeCabang = Str::upper($kodecabang);
// $dateString = $startDate->format('m/d/Y');
$data = DB::connection("db2")->table("STG_DB.ACCOUNT AS AC")
->selectRaw('AC.CUSTOMER_NO,AC.CATEGORY,AC.ACCOUNT_NUMBER,AC.CURRENCY, AC.SHORT_TITLE,AC.OPENING_DATE,AC.WORKING_BALANCE, AC.CATEGORY,CT.SHORT_NAME,CP.COMPANY_NAME,AC.BATCH_DATE')
->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('LIMIT_REF', null)
->where('AC.BATCH_DATE', $startDate)
->whereIn('AC.ACCOUNT_NUMBER', $arrAccount)
->whereIn(DB::raw("LEFT(CATEGORY, 3)"),['100','101','600'])
// ->groupBy('CUSTOMER_NO', 'ACCOUNT_NUMBER', 'SHORT_TITLE', 'SHORT_NAME', 'COMPANY_NAME', 'CATEGORY', 'LIMIT_REF')
->orderBy('CATEGORY', 'ASC')
->limit(100);
return $data;
}
// public function getAccount($cif, $arrAccount, $startDate)
// {
// //$uppercaseKodeCabang = Str::upper($kodecabang);
// $data = DB::connection("db2")->table("STG_DB.ACCOUNT AS AC")
// ->selectRaw('AC.CUSTOMER_NO,AC.CATEGORY, MAX(INACTIV_MARKER) as INACTIV_MARKER,AC.ACCOUNT_NUMBER,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('LIMIT_REF', null)
// ->where('AC.BATCH_DATE', $startDate)
// ->whereIn('AC.ACCOUNT_NUMBER', $arrAccount)
// ->whereIn(DB::raw("LEFT(CATEGORY, 3)"),['100','600','660','101'])
// ->groupBy('CUSTOMER_NO', 'ACCOUNT_NUMBER', 'SHORT_TITLE', 'SHORT_NAME', 'COMPANY_NAME', 'CATEGORY', 'LIMIT_REF')
// // ->orderBy('BATCH_DATE', 'DESC')
// ->limit(100);
// return $data;
// }
public function getAA($cust, $acc, $dataCore)
{
//$uppercaseKodeCabang = Str::upper($kodecabang);
$dateString = $dataCore->format('m/d/Y');
// dd($dateString);
$timestamp = strtotime($dataCore);
// Format the timestamp into a date format
$Year = date("Y", $timestamp);
$data = DB::connection("db2")->table("STG_DB.AA_ARRANGEMENT AS ARR")
->selectRaw('ARR.ID,ARR.LINKED_APPL_ID,CUSTOMER,ARR.PRODUCT_LINE,AD.MATURITY_DATE,AI.FIXED_RATE,ARR.BATCH_DATE')
->join('STG_DB.AA_ACCOUNT_DETAILS AS AD', 'ARR.ID', '=', 'AD.ID')
->join('STG_DB.AA_ARR_INTEREST AS AI', DB::raw("LEFT(ARR.ID,12)"), '=', 'AD.ID')
->where('ARR.CUSTOMER', $cust)
->whereYear('ARR.BATCH_DATE', $Year)
->where('ARR.LINKED_APPL_ID', $acc)
->groupBy('ARR.ID', 'ARR.LINKED_APPL_ID', 'ARR.CUSTOMER', 'ARR.PRODUCT_LINE','ARR.BATCH_DATE','AD.MATURITY_DATE','AI.FIXED_RATE','ARR.BATCH_DATE')
// ->orderBy('ARR.BATCH_DATE', 'DESC')
->orderBy('ARR.BATCH_DATE', 'DESC')
->limit(1);
return $data;
}
// public function getArr($cust, $acc, $dataCore)
// {
// //$uppercaseKodeCabang = Str::upper($kodecabang);
// //$dateString = $dataCore->format('d/m/Y');
// // dd($dateString);
// $timestamp = strtotime($dataCore);
// // Format the timestamp into a date format
// $date = date("Y", $timestamp);
// $data = DB::connection("db2")->table("MIS.PRODEV_DEPO")
// ->selectRaw('*')
// ->where('NOMOR_CIF', $cust)
// ->whereYear('BATCH_DATE', $date)
// ->where('NOMOR_REKENING', $acc)
// ->where('STATUS_REKENING', 'like', "%" .'CURRENT' ."%")
// // ->groupBy('ARR.ID', 'ARR.LINKED_APPL_ID', 'ARR.CUSTOMER', 'ARR.PRODUCT_LINE','ARR.BATCH_DATE','AD.MATURITY_DATE','AI.FIXED_RATE','ARR.BATCH_DATE')
// ->orderBy('BATCH_DATE', 'DESC')
// ->limit(1);
// return $data;
// }
// public function getDepo($cust, $acc, $dataCore)
// {
// //DD($cust, $acc, $dataCore);
// $timestamp = strtotime($dataCore);
// // Format the timestamp into a date format
// $date = date("m/d/Y", $timestamp);
// // dd( $date);
// $matYear = date("Y", $timestamp);
// $data = DB::connection("db2")->table("MIS.FACT_DPK AS DPK")
// ->selectRaw('DPK.NO_REK,
// DPK.SUKU_BUNGA,
// DPK.JUMLAH_NOMINAL,
// DPK.KODE_SUB_PRODUK,
// PER.DATE AS PERIOD,
// MAT.DATE AS JATUH_TEMPO,
// CUR.KODE_MATA_UANG,
// DPK.SK_STATUS_DEPOSITO')
// ->join('MIS.DIM_PERIOD AS PER', 'DPK.SK_PERIOD', '=', 'PER.SK_PERIOD')
// ->join('MIS.DIM_PERIOD AS MAT', 'DPK.SK_JATUH_TEMPO', '=', 'MAT.SK_PERIOD')
// ->join('MIS.DIM_MATA_UANG AS CUR', 'DPK.SK_MATA_UANG', '=', 'CUR.SK_MATA_UANG')
// // ->where('CUSTOMER_NO', $cif)
// // ->where('LIMIT_REF', null)
// ->where('PER.DATE', $date)
// //->whereYear('MAT.DATE', '>', $matYear)
// ->whereIn('DPK.NO_REK', $acc)
// //->whereIn('DPK.NO_REK', '<>',$arrExp)
// // ->groupBy('CUSTOMER_NO', 'ACCOUNT_NUMBER', 'SHORT_TITLE', 'SHORT_NAME', 'COMPANY_NAME', 'CATEGORY', 'LIMIT_REF')
// // ->orderBy('CATEGORY', 'ASC')
// ->limit(100);
// return $data;
// }
public function getDepo($cust, $acc, $dataCore){
$timestamp = strtotime($dataCore);
$date = date("m/d/Y", $timestamp);
$data = [];
$data = DB::connection("db2")->table("MIS.VW_AA_DEPO")->select('*')
->whereIn('NO_REK', $acc)
->where('PERIOD', $date)
->limit(100);
return $data;
}
public function getCustomer($cus_no)
{
$data = [];
$data = DB::connection("db2")->table("STG_DB.CUSTOMER")->select('CUSTOMER_NO', 'STREET', 'RESIDENCE', 'ADDRESS', 'SHORT_NAME')->where('CUSTOMER_NO', $cus_no);
return $data;
}
public function getAAaccount($cust, $acc)
{
$data = [];
$data = DB::connection("db2")->table("STG_DB.VW_AA_ACCOUNT")->select('ARRANGEMENT_ID', 'MATURITY_DATE', 'PRODUCT', 'TERM', 'RENEWAL_DATE', 'START_DATE', 'FIXED_RATE')
->where('CUSTOMER', $cust)
->where('LINKED_APPL_ID', $acc)
->limit(1);
return $data;
}
// public function getAA($cust, $acc, $dataCore)
// {
// $dateString = $dataCore->format('m/d/Y');
// // dd($dateString);
// $timestamp = strtotime($dataCore);
// // Format the timestamp into a date format
// $Year = date("Y", $timestamp);
// //dd($Year);
// $data = [];
// $data = DB::connection("db2")->table("STG_DB.VW_AA_DETAIL")
// ->select('LINKED_APPL_ID', 'CUSTOMER', 'RENEWAL_DATE', 'START_DATE', 'FIXED_RATE', 'BATCH_DATE', 'PRODUCT_LINE', 'ARR_STATUS')
// ->where('CUSTOMER', $cust)
// ->where('ARR_STATUS', '<>', 'CLOSE')
// //->where('PRODUCT_LINE', 'like', "%" .'DEPOSITS' ."%")
// ->where('LINKED_APPL_ID', $acc)
// //->where('BATCH_DATE', $dateString)
// ->groupBy('LINKED_APPL_ID', 'CUSTOMER', 'START_DATE', 'FIXED_RATE', 'BATCH_DATE', 'PRODUCT_LINE', 'ARR_STATUS','RENEWAL_DATE')
// ->orderBy('BATCH_DATE', 'DESC')
// ->limit(1);
// return $data;
// }
public function getPinjaman($cus_no, $dateCore)
{
$data = [];
$data = DB::connection("db2")->table("STG_DB.VW_AA_ARR")
->select('LINKED_APPL_ID', 'ARRANGEMENT_ID', 'CUSTOMER', 'BATCH_DATE', 'START_DATE', 'PRODUCT_LINE', 'PRODUCT', 'ARR_STATUS', 'CURRENCY', 'TERM', 'MATURITY_DATE', 'RENEWAL_DATE', 'FIXED_RATE')
->where('CUSTOMER', $cus_no)
->where('ARR_STATUS', 'CURRENT')
->where('BATCH_DATE', $dateCore)
->where('ARR_STATUS', '<>', 'CLOSE')
->where('PRODUCT_LINE', 'like', "%" .'LENDING' ."%")
->limit(100);
return $data;
}
public function getFixedRate($arrangementId, $startDate)
{
$timestamp = strtotime($startDate);
$Year = date("Y", $timestamp);
$data = [];
$data = DB::connection("db2")->table("STG_DB.AA_ARR_INTEREST")
->select('FIXED_RATE')
// ->whereYear('BATCH_DATE',$startDate->format('Y'))
->where(DB::raw("LEFT(ID, 12)"), $arrangementId)
->where(DB::raw("RIGHT(ID, 10)"), 'like', "%" .$Year ."%")
->orderBy('ID', 'DESC')
->limit(1);
return $data;
}
public function getMaturityDate($arrangementId, $startDate)
{
$data = [];
$data = DB::connection("db2")->table("STG_DB.AA_ACCOUNT_DETAILS")
->select('MATURITY_DATE', 'RENEWAL_DATE', 'START_DATE')
->where('ID', $arrangementId)
->where('BATCH_DATE', $startDate)
->limit(1)
->orderBy('MATURITY_DATE', 'DESC');
return $data;
}
public function getTermAmount($arrangementId)
{
$data = [];
$data = DB::connection("db2")->table("STG_DB.AA_ARR_TERM_AMOUNT")
->select('*')
->where(DB::raw("LEFT(ID, 12)"), $arrangementId)
->orderBy('ID', 'DESC')
->limit(1);
return $data;
}
public function getSingleAccount($acNo, $date)
{
$data = [];
$data = DB::connection("db2")->table("STG_DB.ACCOUNT")
->select('WORKING_BALANCE', 'LIMIT_REF')
->where('ACCOUNT_NUMBER', $acNo)
->where('BATCH_DATE', $date)
->limit(1)
->orderBy('ACCOUNT_NUMBER', 'DESC');
return $data;
}
public function getLimitCheck($acNo, $date)
{
$data = [];
$data = DB::connection("db2")->table("STG_DB.LIMIT")
->select('ACCOUNT', 'EXPIRY_DATE', 'AVAIL_AMT')
->where('ACCOUNT', 'like', "%" .$acNo."%")
->where('BATCH_DATE', $date)
->limit(1)
->orderBy('ACCOUNT', 'DESC');
return $data;
}
public function getRateRk($acNo, $date)
{
$data = [];
$data = DB::connection("db2")->table("STG_DB.ACCOUNT_DEBIT_INT")
->select('DR_INT_RATE')
->where(DB::raw("LEFT(ID, 10)"), $acNo)
->where('BATCH_DATE', $date)
->limit(1)
->orderBy('INSERT_DATE', 'DESC');
return $data;
}
public function getCategory($category)
{
$data = [];
$data = DB::connection("db2")->table("STG_DB.CATEGORY")
->select('SHORT_NAME')
->where('ID', $category);
return $data;
}
public function getCompany($co_code)
{
$data = [];
$data = DB::connection("db2")->table("STG_DB.COMPANY")
->select('COMPANY_NAME')
->where('ID', $co_code);
return $data;
}
public function getDateSchecule($arrId)
{
$data = [];
$data = DB::connection("db2")->table("STG_DB.AA_SCHEDULED_ACTIVITY")
->select(DB::raw("LEFT(LAST_DATE, 8) AS LAST_DATE, LEFT(NEXT_DATE, 8) AS NEXT_DATE"))
->where('ID', $arrId)
->limit(1);
return $data;
}
// public function getAccountRK($cusNo, $date)
// {
// $data = [];
// $data = DB::connection("db2")->table("STG_DB.ACCOUNT AS AC")
// ->select('AC.ACCOUNT_NUMBER', 'AC.CUSTOMER_NO', 'CT.SHORT_NAME', 'AC.WORKING_BALANCE', 'AC.CURRENCY', 'AC.SHORT_TITLE', 'AC.OPENING_DATE', 'AC.BATCH_DATE', 'AC.CATEGORY', 'LT.EXPIRY_DATE', 'LT.AVAIL_AMT')
// ->join('STG_DB.LIMIT AS LT', 'AC.ACCOUNT_NUMBER', '=', 'LT.ACCOUNT')
// ->join('STG_DB.CATEGORY AS CT', 'AC.CATEGORY', '=', 'CT.ID')
// ->where('AC.CUSTOMER_NO', $cusNo)
// ->where('AC.BATCH_DATE', $date)
// ->where('AC.LIMIT_REF', '<>', 'NULL')
// ->whereIn(DB::raw("LEFT(CATEGORY, 3)"), ['100','600','660','101'])
// ->limit(100);
// return $data;
// }
public function getAccountRK($arrCusNo, $date)
{
$timestamp = strtotime($date);
// Format the timestamp into a date format
$Year = date("Y", $timestamp);
$data = [];
$data = DB::connection("db2")->table("MIS.COLLECTION")
->selectRaw('ACCOUNT_NUMBER,MATURITY_DATE,MAX(BATCH_DATE) AS BATCH_DATE,MAX(OUTSTANDING) AS OUTSTANDING,LOAN_CCY,PRODUCT_LOAN,PRINCIPLE_AMOUNT,CURRENT_INTEREST_RATE,TENOR,FACILITY_TYPE,LIMIT_ID')
->whereYear('TANGGAL_DATA', $Year)
->whereIn(DB::raw("ACCOUNT_NUMBER"), $arrCusNo)
//->where('LOAN_STATUS', 'CURRENT')
->groupBy('ACCOUNT_NUMBER', 'MATURITY_DATE', 'LOAN_CCY', 'PRODUCT_LOAN', 'PRINCIPLE_AMOUNT', 'CURRENT_INTEREST_RATE', 'TENOR','FACILITY_TYPE','LIMIT_ID')
->limit(100);
return $data;
}
public function getAccountAnjak($AccNo, $date)
{
$timestamp = strtotime($date);
// Format the timestamp into a date format
$Year = date("Y", $timestamp);
$data = [];
$data = DB::connection("db2")->table("MIS.COLLECTION")
->selectRaw('LOAN_NUMBER,ACCOUNT_NUMBER,MATURITY_DATE,START_DATE,MAX(TANGGAL_DATA) AS TANGGAL_DATA,MAX(OUTSTANDING) AS OUTSTANDING,LOAN_CCY,PRODUCT_LOAN,PRINCIPLE_AMOUNT,CURRENT_INTEREST_RATE,TENOR,MAX(BRANCH) AS BRANCH,PAYIN_ACCOUNT,FACILITY_TYPE')
->whereYear('TANGGAL_DATA', $Year)
->whereIn(DB::raw("PAYIN_ACCOUNT"), $AccNo)
->where('LOAN_STATUS', 'CURRENT')
->groupBy('LOAN_NUMBER', 'ACCOUNT_NUMBER', 'MATURITY_DATE', 'START_DATE', 'LOAN_CCY', 'PRODUCT_LOAN', 'PRINCIPLE_AMOUNT', 'CURRENT_INTEREST_RATE', 'TENOR', 'PAYIN_ACCOUNT', 'FACILITY_TYPE')
->limit(100);
return $data;
}
public function getLimit($cus_id, $periode)
{
$timestamp = strtotime($periode);
// Format the timestamp into a date format
$Year = date("Y", $timestamp);
$data = [];
$data = DB::connection("db2")->table("STG_DB.LIMIT AS LM")
->select('*')
->join('STG_DB.LIMIT_REFERENCE AS LR', 'LM.LIMIT_PRODUCT', '=', 'LR.ID')
->join('STG_DB.COMPANY AS CP', 'LM.CO_CODE', '=', 'CP.ID')
->join('STG_DB.CATEGORY AS CT', 'LM.LIMIT_PRODUCT', '=', 'CT.ID')
->select('LM.ACCOUNT', 'LM.LIMIT_CURRENCY', 'LM.APPROVAL_DATE', 'LM.EXPIRY_DATE', 'LM.AVAIL_AMT', 'LM.BATCH_DATE', 'LM.EXPIRY_DATE', 'LR.SHORT_NAME', 'LR.LIMIT_PERCENTAGE', 'CP.COMPANY_NAME', 'CT.SHORT_NAME AS ACCOUNT_TYPE')
->where(DB::raw("LEFT(LM.@ID, 10)"), $cus_id)
->whereYear('LM.BATCH_DATE', $Year)
->limit(100);
return $data;
}
}