290 lines
11 KiB
PHP
290 lines
11 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';
|
|
|
|
//public $incrementing = false;
|
|
|
|
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($cif ,$arrAccount, $kodecabang, $startDate);
|
|
$uppercaseKodeCabang = Str::upper($kodecabang);
|
|
$data = [];
|
|
|
|
|
|
if($arrAccount == null){
|
|
|
|
$data = DB::connection("db2")->table("STG_DB.ACCOUNT AS AC")
|
|
->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('LIMIT_REF', NULL)
|
|
->where('AC.BATCH_DATE',$startDate)
|
|
->whereIn(DB::raw("LEFT(CATEGORY, 3)"),['100','600','660','101'])
|
|
->groupBy('CUSTOMER_NO','ACCOUNT_NUMBER','SHORT_TITLE','SHORT_NAME','COMPANY_NAME','LIMIT_REF')
|
|
->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 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.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('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('SHORT_NAME', 'ASC')
|
|
->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', $cif)
|
|
->where('CUSTOMER', $cust)
|
|
->where('LINKED_APPL_ID', $acc)
|
|
->limit(1);
|
|
return $data;
|
|
}
|
|
|
|
public function getAA($cust, $acc, $dataCore){
|
|
$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', $cif)
|
|
->where('CUSTOMER', $cust)
|
|
->where('ARR_STATUS','<>', 'CLOSE')
|
|
->where('PRODUCT_LINE', 'like', "%" .'DEPOSITS' ."%")
|
|
// ->whereIn(DB::raw("LINKED_APPL_ID"),$acc)
|
|
->where('LINKED_APPL_ID', $acc)
|
|
->where('BATCH_DATE', $dataCore)
|
|
->groupBy('LINKED_APPL_ID','CUSTOMER','RENEWAL_DATE','START_DATE','FIXED_RATE','BATCH_DATE','PRODUCT_LINE','ARR_STATUS')
|
|
->limit(100);
|
|
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')
|
|
// ->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('PRODUCT_LINE', 'like', "%" .'LENDING' ."%")
|
|
// ->groupBy('ARRANGEMENT_ID','ACCOUNT_NUMBER','SHORT_TITLE','SHORT_NAME','COMPANY_NAME')
|
|
->limit(100);
|
|
|
|
return $data;
|
|
|
|
}
|
|
|
|
|
|
public function getFixedRate($arrangementId, $startDate){
|
|
$data = [];
|
|
$data = DB::connection("db2")->table("STG_DB.AA_ARR_INTEREST")
|
|
->select('FIXED_RATE')
|
|
->where('BATCH_DATE', $startDate)
|
|
->where(DB::raw("LEFT(ID, 12)"),$arrangementId)
|
|
->orderBy('ID','DESC');
|
|
|
|
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('TERM','DESC')
|
|
->limit(100);
|
|
|
|
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('ID', 'like', "%" .$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);
|
|
// ->orderBy('TERM','DESC');
|
|
|
|
return $data;
|
|
}
|
|
|
|
public function getCompany($co_code){
|
|
$data = [];
|
|
$data = DB::connection("db2")->table("STG_DB.COMPANY")
|
|
->select('COMPANY_NAME')
|
|
->where('ID',$co_code);
|
|
// ->orderBy('TERM','DESC');
|
|
|
|
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 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('PAYIN_ACCOUNT',$AccNo)
|
|
->whereIn(DB::raw("PAYIN_ACCOUNT"),$AccNo)
|
|
//->whereIn(DB::raw("ACCOUNT_NUMBER"),$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);
|
|
// dd($periode);
|
|
$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);
|
|
//->where('BATCH_DATE', $periode);
|
|
// ->orderBy('LM.@ID','DESC')->get();
|
|
return $data;
|
|
}
|
|
|
|
|
|
|
|
} |