990 lines
41 KiB
PHP
990 lines
41 KiB
PHP
<?php
|
|
|
|
namespace Modules\Konfirmasibank\Http\Controllers;
|
|
|
|
use Illuminate\Contracts\Support\Renderable;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Routing\Controller;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use Modules\Konfirmasibank\Entities\Fasilitas;
|
|
use Modules\Konfirmasibank\Entities\Signer;
|
|
use Modules\Konfirmasibank\Entities\Nasabah;
|
|
use Modules\Konfirmasibank\Entities\Dpk;
|
|
use Modules\Konfirmasibank\Entities\Loan;
|
|
use Modules\Konfirmasibank\Entities\Letters;
|
|
use Modules\Konfirmasibank\Entities\Company;
|
|
use Modules\Konfirmasibank\Entities\Account;
|
|
use Modules\Konfirmasibank\Entities\Vwdeposito;
|
|
use Modules\Konfirmasibank\Entities\Category;
|
|
use Modules\Konfirmasibank\Entities\LimitReference;
|
|
use PDF;
|
|
use Dompdf\Options;
|
|
use Carbon\Carbon;
|
|
use PhpOffice\PhpWord\PhpWord;
|
|
use PhpOffice\PhpWord\IOFactory;
|
|
use PhpOffice\PhpWord\Element\Table;
|
|
use PhpOffice\PhpWord\SimpleType\TblWidth;
|
|
use PhpOffice\PhpWord\Element\Section;
|
|
use Response;
|
|
use Exception;
|
|
use Illuminate\Support\Facades\View;
|
|
use Illuminate\Support\Facades\Validator;
|
|
use Illuminate\Support\Facades\Storage;
|
|
use Modules\Konfirmasibank\Http\Requests\Fasilitas\StoreFasilitasRequest;
|
|
use Akaunting\Money\Currency;
|
|
use Akaunting\Money\Money;
|
|
use Illuminate\Validation\Rule;
|
|
use App\Exports\DataExport; // Sesuaikan dengan class export Anda
|
|
|
|
class KonfirmasiBankController extends Controller
|
|
{
|
|
public $user;
|
|
|
|
public function __construct()
|
|
{
|
|
$this->middleware(function ($request, $next) {
|
|
$this->user = Auth::guard('web')->user();
|
|
return $next($request);
|
|
});
|
|
|
|
addVendor('chained-select');
|
|
|
|
}
|
|
public function index(Request $request)
|
|
{
|
|
|
|
if (is_null($this->user) || !$this->user->can('konfirmasibank.create')) {
|
|
abort(403, 'Sorry !! You are Unauthorized to view any master data !');
|
|
}
|
|
|
|
$data = [];
|
|
$no_req_surat = '';
|
|
// Contoh tanggal saat ini
|
|
$today = Carbon::now();
|
|
|
|
// Menambahkan 1 tahun ke tanggal saat ini
|
|
$currentYear = $today->format("d-m-Y");
|
|
//get month in roman
|
|
// Menambahkan 5 tahun ke tanggal saat ini
|
|
$pastYear = $today->subYear(2)->format('d-m-Y');
|
|
|
|
$dateRoman = $this->numberToRoman($today->format('n'));
|
|
$signer = Signer::where('status', 1)->get();
|
|
$company = Company::all();
|
|
$infoSurat = Letters::orderBy('created_at', 'desc')->first();
|
|
|
|
if($infoSurat) {
|
|
$no_req_surat = $infoSurat['no_req_surat'];
|
|
} else {
|
|
$no_req_surat = '001/SUBDIT.OPS/'. $dateRoman.'/'.$currentYear;
|
|
}
|
|
|
|
$data['currentYear'] = $currentYear;
|
|
$data['pastYear'] = $pastYear;
|
|
$data['signer'] = $signer;
|
|
$data['company'] = $company;
|
|
$data['no_req_surat'] = $no_req_surat;
|
|
|
|
return view('konfirmasibank::pages.index', compact('data', 'request'));
|
|
|
|
}
|
|
|
|
public function create()
|
|
{
|
|
return view('konfirmasibank::pages.index', compact('data'));
|
|
|
|
}
|
|
|
|
|
|
public function getData(Request $request)
|
|
{
|
|
|
|
$Account = new Account();
|
|
$data = [];
|
|
$dataAccount = [];
|
|
$dataLoan = [];
|
|
$startDate = Carbon::parse($request->startDate);
|
|
$startDateLoan = Carbon::parse($request->startDate);
|
|
|
|
$Loans =Loan::where('sk_nasabah',$request->cif)
|
|
->whereDate('periode',$startDateLoan )
|
|
//->where('kode_status_lunas', '<>', 'EXPIRED')
|
|
->where('nama_cabang','like', '%'.$request->kodecabang.'%')
|
|
->get();
|
|
|
|
if ($Loans->isEmpty()) {
|
|
$Loans =Loan::where('sk_nasabah',$request->cif)
|
|
->whereDate('periode',$startDateLoan->subDays(1)->format('m/d/Y') )
|
|
// ->where('kode_status_lunas', '<>', 'EXPIRED')
|
|
->where('nama_cabang','like', '%'.$request->kodecabang.'%')
|
|
->get();
|
|
|
|
if ($Loans->isEmpty()) {
|
|
$Loans =Loan::where('sk_nasabah',$request->cif)
|
|
->whereDate('periode',$startDateLoan->subDays(2)->format('m/d/Y') )
|
|
// ->where('kode_status_lunas', '<>', 'EXPIRED')
|
|
//->where('outstanding', '<>', 0)
|
|
->where('nama_cabang','like', '%'.$request->kodecabang.'%')
|
|
->get();
|
|
if ($Loans->isEmpty()) {
|
|
$Loans =Loan::where('sk_nasabah',$request->cif)
|
|
->whereDate('periode',$startDateLoan->subDays(3)->format('m/d/Y') )
|
|
// ->where('kode_status_lunas', '<>', 'EXPIRED')
|
|
//->where('outstanding', '<>', 0)
|
|
->where('nama_cabang','like', '%'.$request->kodecabang.'%')
|
|
->get();
|
|
if ($Loans->isEmpty()) {
|
|
$Loans =Loan::where('sk_nasabah',$request->cif)
|
|
->whereDate('periode',$startDateLoan->subDays(4)->format('m/d/Y') )
|
|
// ->where('kode_status_lunas','CURRENT')
|
|
//->where('outstanding', '<>', 0)
|
|
->where('nama_cabang','like', '%'.$request->kodecabang.'%')
|
|
->get();
|
|
if ($Loans->isEmpty()) {
|
|
$Loans =Loan::where('sk_nasabah',$request->cif)
|
|
->whereDate('periode',$startDateLoan->subDays(5)->format('m/d/Y') )
|
|
// ->where('kode_status_lunas','CURRENT')
|
|
//->where('outstanding', '<>', 0)
|
|
->where('nama_cabang','like', '%'.$request->kodecabang.'%')
|
|
->get();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
$Accounts = Dpk::where('cif',$request->cif)
|
|
->where('nama_cabang','like', '%'.$request->kodecabang.'%')
|
|
//->whereIn('no_rek', $arrAccount)
|
|
->whereDate('period',$startDate )
|
|
->get();
|
|
|
|
if ($Accounts->isEmpty()) {
|
|
// $Accounts = $Account->getSearchAccount($request->cif, $arrAccount, $request->kodecabang, $startDate->subDays(1)->format('m/d/Y'))->get();
|
|
$Accounts = DPK::where('cif',$request->cif)
|
|
->where('nama_cabang','like', '%'.$request->kodecabang.'%')
|
|
->whereDate('period',$startDate->subDays(1)->format('m/d/Y') )
|
|
->get();
|
|
|
|
|
|
if($Accounts->isEmpty() ){
|
|
// $Accounts = $Account->getSearchAccount($request->cif, $arrAccount, $request->kodecabang, $startDate->subDays(2)->format('m/d/Y'))->get();
|
|
$Accounts = DPK::where('cif',$request->cif)
|
|
->where('nama_cabang','like', '%'.$request->kodecabang.'%')
|
|
->whereDate('period',$startDate->subDays(2)->format('m/d/Y') )
|
|
->get();
|
|
|
|
if ($Accounts->isEmpty()) {
|
|
// $Accounts = $Account->getSearchAccount($request->cif, $arrAccount, $request->kodecabang, $startDate->subDays(3)->format('m/d/Y'))->get();
|
|
$Accounts = DPK::where('cif',$request->cif)
|
|
->where('nama_cabang','like', '%'.$request->kodecabang.'%')
|
|
->whereDate('period',$startDate->subDays(3)->format('m/d/Y') )
|
|
->get();
|
|
if ($Accounts->isEmpty()) {
|
|
//$Accounts = $Account->getSearchAccount($request->cif, $arrAccount, $request->kodecabang, $startDate->subDays(4)->format('m/d/Y'))->get();
|
|
$Accounts = DPK::where('cif',$request->cif)
|
|
->where('nama_cabang','like', '%'.$request->kodecabang.'%')
|
|
->whereDate('period',$startDate->subDays(4)->format('m/d/Y') )
|
|
->get();
|
|
if ($Accounts->isEmpty()) {
|
|
//$Accounts = $Account->getSearchAccount($request->cif, $arrAccount, $request->kodecabang, $startDate->subDays(5)->format('m/d/Y'))->get();
|
|
$Accounts = DPK::where('cif',$request->cif)
|
|
->where('nama_cabang','like', '%'.$request->kodecabang.'%')
|
|
->whereDate('period',$startDate->subDays(5)->format('m/d/Y') )
|
|
->get();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
foreach ($Accounts as $key => $value) {
|
|
$dataAccount[$key]['ACCOUNT_NUMBER'] = $value->no_rek;
|
|
$dataAccount[$key]['COMPANY_NAME'] = $value->nama_cabang;
|
|
$dataAccount[$key]['SHORT_NAME'] = $value->jenis_rekening;
|
|
$dataAccount[$key]['CURRENCY'] = $value->kode_mata_uang;
|
|
$dataAccount[$key]['WORKING_BALANCE'] = number_format(abs($value->jumlah_nominal), 2, ',', '.') ;
|
|
|
|
}
|
|
|
|
|
|
foreach ($Loans as $key2 => $loan) {
|
|
if ($loan->kode_status_lunas != 'EXPIRED') {
|
|
$dataLoan[$key2]['ACCOUNT_NUMBER'] = $loan->no_rek;
|
|
$dataLoan[$key2]['COMPANY_NAME'] = $loan->nama_cabang;
|
|
$dataLoan[$key2]['SHORT_NAME'] = $loan->product_loan;
|
|
$dataLoan[$key2]['CURRENCY'] = $loan->kode_mata_uang;
|
|
$dataLoan[$key2]['WORKING_BALANCE'] = number_format(abs($loan->outstanding), 2, ',', '.') ;
|
|
}
|
|
|
|
|
|
}
|
|
|
|
$data = array_merge($dataAccount, $dataLoan);
|
|
|
|
return json_encode($data );
|
|
}
|
|
|
|
|
|
|
|
|
|
public function postInfoSurat(Request $request)
|
|
{
|
|
// $noSurat = $this->generateNomorSurat();
|
|
// $request->validate([
|
|
// 'signer' => ['required'],
|
|
// 'no_req_surat' => ['required', 'max:100'],
|
|
// 'tgl_req_surat' => ['required'],
|
|
// 'email' => ['email'],
|
|
// 'tlp' => ['numeric', 'max:10'],
|
|
// 'nama_tujuan' => ['required'],
|
|
// 'alamat' => ['required']
|
|
// ]);
|
|
|
|
//Validate the request
|
|
//Validate the request
|
|
$currentDate = Carbon::now();
|
|
$tglSurat = $currentDate->format('Y-m-d');
|
|
|
|
$letter = new Letters();
|
|
$letter->no_cif = $request->cus_no;
|
|
$letter->no_surat = $request->no_surat;
|
|
$letter->tgl_surat = $tglSurat;
|
|
$letter->no_req_surat = $request->no_req_surat;
|
|
$letter->tgl_req_surat = $request->tgl_req_surat;
|
|
$letter->email = $request->email ;
|
|
$letter->tlp = $request->tlp ;
|
|
$letter->nama_tujuan = $request->nama_tujuan ;
|
|
$letter->alamat = $request->alamat ;
|
|
$letter->created_at = $currentDate;
|
|
$letter->status = 1;
|
|
$letter->save();
|
|
|
|
echo json_encode(['status' => 'success', 'message' => ' Info Surat created successfully.']);
|
|
|
|
}
|
|
|
|
|
|
public function numberToRoman($num)
|
|
{
|
|
// Be sure to convert the given parameter into an integer
|
|
$n = intval($num);
|
|
$result = '';
|
|
|
|
// Declare a lookup array that we will use to traverse the number:
|
|
$lookup = array(
|
|
'M' => 1000, 'CM' => 900, 'D' => 500, 'CD' => 400,
|
|
'C' => 100, 'XC' => 90, 'L' => 50, 'XL' => 40,
|
|
'X' => 10, 'IX' => 9, 'V' => 5, 'IV' => 4, 'I' => 1
|
|
);
|
|
|
|
foreach ($lookup as $roman => $value) {
|
|
// Look for number of matches
|
|
$matches = intval($n / $value);
|
|
|
|
// Concatenate characters
|
|
$result .= str_repeat($roman, $matches);
|
|
|
|
// Substract that from the number
|
|
$n = $n % $value;
|
|
}
|
|
|
|
return $result;
|
|
}
|
|
|
|
|
|
|
|
public function signer(Request $request)
|
|
{
|
|
if (is_null($this->user) || !$this->user->can('konfirmasibank.create')) {
|
|
abort(403, 'Sorry !! You are Unauthorized to view any master data !');
|
|
}
|
|
|
|
$data = [];
|
|
$signer = Signer::where('status', 1)->paginate(10);
|
|
$data['signer'] = $signer;
|
|
|
|
return view('konfirmasibank::pages.index_signer', compact('data'));
|
|
|
|
}
|
|
|
|
|
|
public function convertToRupiah($amount)
|
|
{
|
|
$formattedAmount = number_format($amount, 0, ',', '.');
|
|
return $formattedAmount;
|
|
}
|
|
|
|
public function postSigner(Request $request)
|
|
{
|
|
if (is_null($this->user) || !$this->user->can('konfirmasibank.create')) {
|
|
abort(403, 'Maaf!! Anda tidak memiliki otorisasi untuk membuat konfirmasi bank.');
|
|
}
|
|
|
|
$messages = [
|
|
'deputy_director.required' => 'Nama Deputy Director wajib diisi.',
|
|
'deputy_director.string' => 'Nama Deputy Director harus berupa teks.',
|
|
'deputy_director.unique' => 'Nama Deputy Director sudah terdaftar.',
|
|
'deputy_director.regex' => 'Nama Deputy Director tidak boleh mengandung angka.',
|
|
'executive_officer.required' => 'Nama Executive Officer wajib diisi.',
|
|
'executive_officer.string' => 'Nama Executive Officer harus berupa teks.',
|
|
'executive_officer.unique' => 'Nama Executive Officer sudah terdaftar.',
|
|
'executive_officer.regex' => 'Nama Executive Officer tidak boleh mengandung angka.',
|
|
'signer_type.required' => 'Tipe penandatangan wajib diisi.',
|
|
'signer_type.string' => 'Tipe penandatangan harus berupa teks.',
|
|
];
|
|
|
|
$request->validate([
|
|
'deputy_director' => [
|
|
'required',
|
|
'string',
|
|
'unique:signers,deputy_director_name',
|
|
'regex:/^[a-zA-Z\s]*$/',
|
|
function ($attribute, $value, $fail) use ($request) {
|
|
if ($value === $request->executive_officer) {
|
|
$fail('Nama Deputy Director tidak boleh sama dengan nama Executive Officer.');
|
|
}
|
|
},
|
|
],
|
|
'executive_officer' => [
|
|
'required',
|
|
'string',
|
|
'unique:signers,executive_officer_name',
|
|
'regex:/^[a-zA-Z\s]*$/'
|
|
],
|
|
'signer_type' => 'required|string'
|
|
], $messages);
|
|
|
|
try {
|
|
// Membuat instance baru dari Signer
|
|
$signer = new Signer();
|
|
$signer->deputy_director_name = $request->deputy_director;
|
|
$signer->executive_officer_name = $request->executive_officer;
|
|
$signer->signer_type = $request->signer_type;
|
|
$signer->created_at = Carbon::now();
|
|
$signer->status = 1;
|
|
$signer->save();
|
|
|
|
return response()->json(['status' => 'success', 'message' => 'Penandatangan berhasil ditambahkan.']);
|
|
} catch (Exception $e) {
|
|
return response()->json([
|
|
'status' => 'error',
|
|
'message' => $e->getMessage()
|
|
]);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Show the form for editing the specified resource.
|
|
*
|
|
* @param int $id
|
|
*
|
|
* @return Response
|
|
*/
|
|
public function editSigner(Request $request)
|
|
{
|
|
|
|
if (is_null($this->user) || !$this->user->can('konfirmasibank.update')) {
|
|
abort(403, 'Sorry !! You are Unauthorized to edit any role !');
|
|
}
|
|
|
|
$signer = Signer::find($request->id);
|
|
|
|
return json_encode($signer);
|
|
}
|
|
|
|
|
|
public function updateSigner(Request $request)
|
|
{
|
|
|
|
if (is_null($this->user) || !$this->user->can('konfirmasibank.update')) {
|
|
abort(403, 'Maaf!! Anda tidak memiliki otorisasi untuk mengupdate konfirmasi bank.');
|
|
}
|
|
|
|
$signer = Signer::findOrFail($request->id);
|
|
|
|
$messages = [
|
|
'deputy_director.required' => 'Nama Deputy Director wajib diisi.',
|
|
'deputy_director.string' => 'Nama Deputy Director harus berupa teks.',
|
|
'deputy_director.unique' => 'Nama Deputy Director sudah terdaftar.',
|
|
'deputy_director.regex' => 'Nama Deputy Director tidak boleh mengandung angka.',
|
|
'executive_officer.required' => 'Nama Executive Officer wajib diisi.',
|
|
'executive_officer.string' => 'Nama Executive Officer harus berupa teks.',
|
|
'executive_officer.unique' => 'Nama Executive Officer sudah terdaftar.',
|
|
'executive_officer.regex' => 'Nama Executive Officer tidak boleh mengandung angka.',
|
|
'signer_type.required' => 'Tipe penandatangan wajib diisi.',
|
|
'signer_type.string' => 'Tipe penandatangan harus berupa teks.',
|
|
];
|
|
|
|
$request->validate([
|
|
'deputy_director' => [
|
|
'required',
|
|
'string',
|
|
'regex:/^[a-zA-Z\s]*$/',
|
|
function ($attribute, $value, $fail) use ($request) {
|
|
if ($value === $request->executive_officer) {
|
|
$fail('Nama Deputy Director tidak boleh sama dengan nama Executive Officer.');
|
|
}
|
|
},
|
|
],
|
|
'executive_officer' => [
|
|
'required',
|
|
'string',
|
|
'regex:/^[a-zA-Z\s]*$/'
|
|
],
|
|
'signer_type' => 'required|string'
|
|
], $messages);
|
|
|
|
try {
|
|
$signer->deputy_director_name = $request->deputy_director;
|
|
$signer->executive_officer_name = $request->executive_officer;
|
|
$signer->signer_type = $request->signer_type;
|
|
$signer->updated_at = Carbon::now();
|
|
$signer->save();
|
|
|
|
return response()->json(['status' => 'success', 'message' => 'Penandatangan berhasil diperbarui.']);
|
|
} catch (Exception $e) {
|
|
return response()->json([
|
|
'status' => 'error',
|
|
'message' => $e->getMessage()
|
|
]);
|
|
}
|
|
}
|
|
|
|
public function export(Request $request)
|
|
{
|
|
dd(test);
|
|
$arrAccount = explode(",", $request['accNo']);
|
|
$dateCoreAccount = Carbon::parse($request['startDate2']);
|
|
$dateCoreDepo = Carbon::parse($request['startDate2']);
|
|
$startDateLoan = Carbon::parse($request['startDate2']);
|
|
$cabang = $request['cabang'];
|
|
$Account = new Account();
|
|
$data = [];
|
|
$DataAccounts = [];
|
|
$DataPinjaman = [];
|
|
$DataFasilitas = [];
|
|
$DataRK = [];
|
|
$rekEscrow = [];
|
|
$DataDepo = [];
|
|
$GetCustomer = Nasabah::where('cif',$request['cusNo'])->first();
|
|
|
|
$Loans =Loan::whereIn('no_rek',$arrAccount)
|
|
->whereDate('periode',$startDateLoan )
|
|
//->where('kode_status_lunas', '<>', 'EXPIRED')
|
|
->where('nama_cabang','like', '%'.$cabang.'%')
|
|
->get();
|
|
|
|
$Depos =Loan::whereIn('no_rek',$arrAccount)
|
|
->whereDate('periode',$startDateLoan )
|
|
//->where('kode_status_lunas', '<>', 'EXPIRED')
|
|
->where('nama_cabang','like', '%'.$cabang.'%')
|
|
->get();
|
|
|
|
|
|
|
|
|
|
if ($Loans->isEmpty()) {
|
|
$Loans =Loan::whereIn('no_rek',$arrAccount)
|
|
->whereDate('periode',$startDateLoan->subDays(1)->format('m/d/Y') )
|
|
//->where('kode_status_lunas', '<>', 'EXPIRED')
|
|
->where('nama_cabang','like', '%'.$cabang.'%')
|
|
->get();
|
|
|
|
|
|
|
|
|
|
if ($Loans->isEmpty()) {
|
|
$Loans =Loan::whereIn('no_rek',$arrAccount)
|
|
->whereDate('periode',$startDateLoan->subDays(2)->format('m/d/Y') )
|
|
//->where('kode_status_lunas', '<>', 'EXPIRED')
|
|
->where('nama_cabang','like', '%'.$cabang.'%')
|
|
->get();
|
|
if ($Loans->isEmpty()) {
|
|
$Loans =Loan::whereIn('no_rek',$arrAccount)
|
|
->whereDate('periode',$startDateLoan->subDays(3)->format('m/d/Y') )
|
|
//->where('kode_status_lunas', '<>', 'EXPIRED')
|
|
->where('nama_cabang','like', '%'.$cabang.'%')
|
|
->get();
|
|
if ($Loans->isEmpty()) {
|
|
$Loans =Loan::whereIn('no_rek',$arrAccount)
|
|
->whereDate('periode',$startDateLoan->subDays(4)->format('m/d/Y') )
|
|
//->where('kode_status_lunas', '<>', 'EXPIRED')
|
|
->where('nama_cabang','like', '%'.$cabang.'%')
|
|
->get();
|
|
if ($Loans->isEmpty()) {
|
|
$Loans =Loan::whereIn('no_rek',$arrAccount)
|
|
->whereDate('periode',$startDateLoan->subDays(5)->format('m/d/Y') )
|
|
//->where('kode_status_lunas', '<>', 'EXPIRED')
|
|
->where('nama_cabang','like', '%'.$cabang.'%')
|
|
->get();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
$listAccount = DPK::where('cif',$request['cusNo'])
|
|
->whereIn('no_rek', $arrAccount)
|
|
->whereDate('period', $dateCoreAccount )
|
|
->where('nama_cabang','like', '%'.$cabang.'%')
|
|
->orderBy('jenis_rekening', 'DESC')
|
|
->get();
|
|
|
|
|
|
if ($listAccount->isEmpty()) {
|
|
$dateCoreDepo = $dateCoreDepo->addDays(1)->format('m/d/Y');
|
|
$dateCoreAccount = $dateCoreAccount->subDays(1)->format('m/d/Y');
|
|
$listAccount = DPK::where('cif',$request['cusNo'])
|
|
// ->whereIn('no_rek', $arrAccount)
|
|
->whereDate('period', $dateCoreAccount )
|
|
->where('nama_cabang','like', '%'.$cabang.'%')
|
|
->orderBy('jenis_rekening', 'DESC')
|
|
->get();
|
|
if($listAccount->isEmpty()){
|
|
$dateCoreDepo = carbon::parse($dateCoreDepo)->addDays(2)->format('m/d/Y');
|
|
$dateCoreAccount = carbon::parse($dateCoreAccount)->subDays(2)->format('m/d/Y');
|
|
$listAccount = DPK::where('cif',$request['cusNo'])
|
|
->whereIn('no_rek', $arrAccount)
|
|
->whereDate('period', $dateCoreAccount )
|
|
->where('nama_cabang','like', '%'.$cabang.'%')
|
|
->orderBy('jenis_rekening', 'DESC')
|
|
->get();
|
|
if ($listAccount->isEmpty()) {
|
|
$dateCoreDepo = carbon::parse($dateCoreDepo)->addDays(3)->format('m/d/Y');
|
|
$dateCoreAccount = carbon::parse($dateCoreAccount)->subDays(3)->format('m/d/Y');
|
|
$listAccount = DPK::where('cif',$request['cusNo'])
|
|
->whereIn('no_rek', $arrAccount)
|
|
->whereDate('period', $dateCoreAccount )
|
|
->where('nama_cabang','like', '%'.$cabang.'%')
|
|
->orderBy('jenis_rekening', 'DESC')
|
|
->get();
|
|
if ($listAccount->isEmpty()) {
|
|
$dateCoreDepo = carbon::parse($dateCoreDepo)->addDays(4)->format('m/d/Y');
|
|
$dateCoreAccount = carbon::parse($dateCoreAccount)->subDays(4)->format('m/d/Y');
|
|
$listAccount = DPK::where('cif',$request['cusNo'])
|
|
->whereIn('no_rek', $arrAccount)
|
|
->whereDate('period', $dateCoreAccount )
|
|
->where('nama_cabang','like', '%'.$cabang.'%')
|
|
->orderBy('jenis_rekening', 'DESC')
|
|
->get();
|
|
if ($listAccount->isEmpty()) {
|
|
$dateCoreDepo = carbon::parse($dateCoreDepo)->addDays(5)->format('m/d/Y');
|
|
$dateCoreAccount = carbon::parse($dateCoreAccount)->subDays(5)->format('m/d/Y');
|
|
$listAccount = DPK::where('cif',$request['cusNo'])
|
|
->whereIn('no_rek', $arrAccount)
|
|
->whereDate('period', $dateCoreAccount )
|
|
// ->where('nama_cabang','like', '%'.$cabang.'%')
|
|
->orderBy('jatuh_tempo', 'DESC')
|
|
->get();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//listdeposito
|
|
$listDepo = Vwdeposito::where('cif',$request['cusNo'])
|
|
->whereDate('period', $dateCoreAccount )
|
|
->where('nama_cabang','like', '%'.$cabang.'%')
|
|
->orderBy('jenis_rekening', 'DESC')
|
|
->get();
|
|
|
|
// dd($listDepo);
|
|
|
|
|
|
|
|
// try {
|
|
foreach ($listAccount as $key1 => $account) {
|
|
|
|
if ($account->jenis_rekening != 'DEPOSITO') {
|
|
$DataAccounts[$key1]['ACCOUNT_NUMBER'] = $account->no_rek;
|
|
$DataAccounts[$key1]['BATCH_DATE'] = $account->period;
|
|
$DataAccounts[$key1]['CUSTOMER_NO'] = $account->cif;
|
|
$DataAccounts[$key1]['SHORT_NAME'] = 'GIRO';
|
|
$DataAccounts[$key1]['CURRENCY'] = $account->kode_mata_uang;
|
|
$DataAccounts[$key1]['PRODUCT'] = $account->jenis_rekening;
|
|
$DataAccounts[$key1]['COMPANY_NAME'] = $account->nama_cabang;
|
|
$DataAccounts[$key1]['WORKING_BALANCE'] = $account->jumlah_nominal != null ? number_format(abs($account->jumlah_nominal), 2, ',', '.') : 'NIHIL';
|
|
$DataAccounts[$key1]['MATURITY_DATE'] = '' ;
|
|
$DataAccounts[$key1]['ARRANGEMENT_ID'] = '';
|
|
$DataAccounts[$key1]['FIXED_RATE'] = '';
|
|
$DataAccounts[$key1]['TERM'] = '';
|
|
}
|
|
|
|
// if ($account->jenis_rekening == 'DEPOSITO') {
|
|
// $tanggalMulai = Carbon::parse($account->tgl_mulai);
|
|
// $tanggalJatuhTempo = Carbon::parse($account->jatuh_tempo);
|
|
// $selisihHari = $tanggalMulai->diffInMonths($tanggalJatuhTempo);
|
|
// $DataDepo[$key1]['ACCOUNT_NUMBER'] = $account->no_rek;
|
|
// $DataDepo[$key1]['BATCH_DATE'] = $account->period;
|
|
// $DataDepo[$key1]['CUSTOMER_NO'] = $account->cif;
|
|
// $DataDepo[$key1]['SHORT_NAME'] = $account->jenis_rekening; //$depo->SHORT_NAME;
|
|
// $DataDepo[$key1]['CURRENCY'] = $account->kode_mata_uang;
|
|
// $DataDepo[$key1]['PRODUCT'] = $account->jenis_rekening;
|
|
// $DataDepo[$key1]['COMPANY_NAME'] = $account->nama_cabang;
|
|
// $DataDepo[$key1]['WORKING_BALANCE'] = $account->jumlah_nominal != null ? number_format(abs($account->jumlah_nominal), 2, ',', '.') : 'NIHIL';
|
|
// $DataDepo[$key1]['MATURITY_DATE'] = Carbon::parse($account->jatuh_tempo)->format('d-m-Y');
|
|
// $DataDepo[$key1]['FIXED_RATE'] = $account->suku_bunga . ' %' ;
|
|
// $DataDepo[$key1]['TERM'] = $selisihHari . ' BLN';
|
|
// }
|
|
|
|
}
|
|
|
|
foreach ($listDepo as $key2 => $depo) {
|
|
$DataDepo[$key2]['ACCOUNT_NUMBER'] = $depo->no_rek;
|
|
$DataDepo[$key2]['BATCH_DATE'] = $depo->period;
|
|
$DataDepo[$key2]['CUSTOMER_NO'] = $depo->cif;
|
|
$DataDepo[$key2]['SHORT_NAME'] = $depo->jenis_rekening; //$depo->SHORT_NAME;
|
|
$DataDepo[$key2]['CURRENCY'] = $depo->kode_mata_uang;
|
|
$DataDepo[$key2]['PRODUCT'] = $depo->jenis_rekening;
|
|
$DataDepo[$key2]['COMPANY_NAME'] = $depo->nama_cabang;
|
|
$DataDepo[$key2]['WORKING_BALANCE'] = $depo->jumlah_nominal != null ? number_format(abs($depo->jumlah_nominal), 2, ',', '.') : 'NIHIL';
|
|
$DataDepo[$key2]['MATURITY_DATE'] = Carbon::parse($depo->jatuh_tempo)->format('d-m-Y');
|
|
$DataDepo[$key2]['FIXED_RATE'] = $depo->suku_bunga . ' %' ;
|
|
$DataDepo[$key2]['TERM'] = $depo->tenor;
|
|
}
|
|
|
|
|
|
|
|
$DataLoan = [];
|
|
foreach ($Loans as $keyLon => $lon) {
|
|
if ($lon->kode_status_lunas != 'EXPIRED') {
|
|
$DataLoan[$keyLon]['ACCOUNT_NUMBER'] = $lon->no_rek;
|
|
$DataLoan[$keyLon]['BATCH_DATE'] = $lon->periode;
|
|
$DataLoan[$keyLon]['SHORT_NAME'] = $lon->product_loan;
|
|
$DataLoan[$keyLon]['CURRENCY'] = $lon->kode_mata_uang;
|
|
$DataLoan[$keyLon]['WORKING_BALANCE'] = number_format(abs($lon->outstanding), 2, ',', '.') ;
|
|
$DataLoan[$keyLon]['MATURITY_DATE'] = Carbon::parse($lon->jatuh_tempo)->format('d-m-Y');
|
|
$DataLoan[$keyLon]['ARRANGEMENT_ID'] = '';
|
|
$DataLoan[$keyLon]['FIXED_RATE'] = number_format($lon->interest_rate, 2, ',', '.') ?? '';
|
|
$DataLoan[$keyLon]['TERM'] = intval($lon->tenor) ;
|
|
}
|
|
}
|
|
|
|
|
|
$fasilitas = Fasilitas::where('nomor_cif', $request['cusNo'])->where('status', 1)->get();
|
|
foreach ($fasilitas as $key3 => $val3) {
|
|
$DataFasilitas[$key3]['jenis_fasilitas'] = $val3->jenis_fasilitas;
|
|
$DataFasilitas[$key3]['start_date'] = $val3->start_date;
|
|
$DataFasilitas[$key3]['mata_uang'] = $val3->mata_uang;
|
|
$DataFasilitas[$key3]['saldo'] = number_format(floatval($val3->saldo), 2, ',', '.');
|
|
$DataFasilitas[$key3]['jangka_waktu'] = $this->convertDateToMonth($val3->jangka_waktu) . ' BLN' ?? '';
|
|
$DataFasilitas[$key3]['fixed_rate'] = number_format(floatval($val3->fixed_rate), 2, ',', '.') ?? '';
|
|
$DataFasilitas[$key3]['due_date'] = $val3->due_date ?? '';
|
|
$DataFasilitas[$key3]['nomor_rekening'] = $val3->nomor_rekening;
|
|
}
|
|
|
|
$signer = Signer::where('id', $request['signerId'])->where('status', 1)->get();
|
|
$batchDate = Carbon::parse($request['startDate2']);
|
|
$currentDate = Carbon::now();
|
|
$tanggalIndonesia = strtoupper($batchDate->locale('id')->isoFormat('DD MMMM YYYY')); // Mengubah seluruh string menjadi huruf besar
|
|
$today = strtoupper($currentDate->locale('id')->isoFormat('DD MMMM YYYY'));
|
|
$letter = new Letters();
|
|
$infoSuratNew = $letter->where('no_cif', $request['cusNo'])->orderBy('id', 'DESC')->first();
|
|
|
|
$data['DataAccounts'] = $DataAccounts ?? '';
|
|
$data['DataLoan'] = $DataLoan ?? '';
|
|
$data['DataDepo'] = $DataDepo ?? '';
|
|
$data['DataFasilitas'] = $DataFasilitas;
|
|
$data['DataSigner'] = $signer ?? '';
|
|
$data['DataCustomer'] = $GetCustomer ?? '';
|
|
$data['localDate'] = $tanggalIndonesia;
|
|
$data['today'] = $today;
|
|
$data['infoSuratNew'] = $infoSuratNew;
|
|
|
|
$pdf = PDF::loadview('konfirmasibank::exportPdf', ['data' => $data]);
|
|
// Set page script to disable header on the first page
|
|
// Set options for DOMPDF as needed
|
|
|
|
$pdf->render();
|
|
|
|
$canvas = $pdf->get_canvas();
|
|
$cpdf = $canvas->get_cpdf();
|
|
|
|
$font = $pdf->getFontMetrics()->get_font("helvetica");
|
|
|
|
$firstPageId = $cpdf->getFirstPageId();
|
|
$objects = $cpdf->objects;
|
|
$pages = array_filter($objects, function ($v) {
|
|
return $v['t'] == 'page';
|
|
});
|
|
|
|
$number = 1;
|
|
$no = 0;
|
|
$noSurat = $infoSuratNew['no_surat'] ;
|
|
$countPage = count($pages);
|
|
foreach($pages as $pageId => $page) {
|
|
$nos = $page['info']['pageNum'];
|
|
$canvas->reopen_object($pageId + 1);
|
|
$canvas->text(300, 797, $nos . "/" . $countPage, $font, 10, array(0,0,0));
|
|
$canvas->close_object();
|
|
$number++;
|
|
|
|
if(($pageId + 1) !== $firstPageId) {
|
|
$canvas->reopen_object($pageId + 1);
|
|
$canvas->text(350, 50, "Lanjutan Surat No : $noSurat", $font, 10, array(0,0,0));
|
|
$canvas->close_object();
|
|
$number++;
|
|
}
|
|
}
|
|
|
|
$exportTime = Carbon::now();
|
|
$filename = "Kobank_" . $request['cusNo'] .'_'.$exportTime->format('YmdHis'). '.PDF';
|
|
|
|
return $pdf->stream($filename);
|
|
|
|
// } catch (Exception $e) {
|
|
// return redirect()->route('konfirmasibank.timeout');
|
|
// }
|
|
|
|
// return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
public function convertDateToMonth($termVal)
|
|
{
|
|
|
|
$months = '';
|
|
$getPeriode = substr($termVal, -1); // Mengambil satu karakter dari kanan
|
|
$trimmedStr = substr($termVal, 0, -1 * 1);
|
|
if ($getPeriode == 'Y') {
|
|
$months = intval($trimmedStr) * 12;
|
|
} elseif ($getPeriode == 'D') {
|
|
$days = $trimmedStr; // Number of days to convert
|
|
$months = intval($trimmedStr / 30) ; // Get the whole number of months (assuming 30 days per month)
|
|
} else {
|
|
$months = $trimmedStr;
|
|
}
|
|
|
|
return $months;
|
|
|
|
}
|
|
|
|
|
|
public function fasilitas(Request $request)
|
|
{
|
|
|
|
if (is_null($this->user) || !$this->user->can('konfirmasibank.create')) {
|
|
abort(403, 'Sorry !! You are Unauthorized to view any master data !');
|
|
}
|
|
|
|
$data = [];
|
|
$DataFasilitas = [];
|
|
|
|
$fasilitas = Fasilitas::where('status', 1)->where('nomor_cif', $request->query()['cus_no_fasilitas'])->paginate(10)->appends($request->query()['cus_no_fasilitas'], $request->query()['company_name'], $request->query()['startDateFasilitas'], $request->query()['endDateFasilitas']);
|
|
|
|
$Category = Category::all();
|
|
$Company = Company::all();
|
|
$limitReference = LimitReference::all();
|
|
|
|
$data['queryParam'] = $request->query();
|
|
$data['fasilitas'] = $fasilitas;
|
|
$data['limitReference'] = $limitReference;
|
|
$data['Category'] = $Category;
|
|
$data['Company'] = $Company;
|
|
|
|
return view('konfirmasibank::pages.index_fasilitas', compact('data'));
|
|
|
|
}
|
|
|
|
|
|
public function postFasilitas(Request $request)
|
|
{
|
|
|
|
if (is_null($this->user) || !$this->user->can('konfirmasibank.create')) {
|
|
abort(403, 'Sorry !! You are Unauthorized to create any konfirmasibank.create !');
|
|
}
|
|
|
|
$validated = $request->validate([
|
|
// 'nomor_rekening' => 'max:10|unique:fasilitas,nomor_rekening',
|
|
'jenis_fasilitas' => 'required|string',
|
|
'cabang' => 'required|string',
|
|
'mata_uang' => 'required|string',
|
|
'jenis_rekening' => 'required|string',
|
|
'saldo' => 'required|string',
|
|
'start_date' => 'required|string',
|
|
'due_date' => 'required|string',
|
|
'fixed_rate' => 'required|string'
|
|
]);
|
|
|
|
|
|
$startDate = Carbon::parse($request->start_date);
|
|
$endDate = Carbon::parse($request->due_date);
|
|
$jangkaWaktu = $endDate->diffInDays($startDate);
|
|
|
|
if ($validated) {
|
|
try {
|
|
// Create New User
|
|
$fasilitas = new Fasilitas();
|
|
$fasilitas->nomor_cif = $request->nomor_cif;
|
|
$fasilitas->nomor_rekening = $request->nomor_rekening;
|
|
$fasilitas->cabang = $request->cabang;
|
|
$fasilitas->jenis_fasilitas = $request->jenis_fasilitas;
|
|
$fasilitas->jenis_rekening = $request->jenis_rekening;
|
|
$fasilitas->mata_uang = $request->mata_uang;
|
|
$fasilitas->saldo = $request->saldo;
|
|
$fasilitas->start_date = $request->start_date;
|
|
$fasilitas->due_date = $request->due_date;
|
|
$fasilitas->jangka_waktu = $jangkaWaktu;
|
|
$fasilitas->fixed_rate = $request->fixed_rate;
|
|
$fasilitas->keterangan = $request->keterangan;
|
|
|
|
$fasilitas->save();
|
|
|
|
echo json_encode(['status' => 'success', 'message' => 'Add fasilitas successfully.']);
|
|
|
|
} catch (Exception $e) {
|
|
|
|
echo json_encode(['status' => 'error', 'message' => $e->getMessage()]);
|
|
}
|
|
}
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
/**
|
|
* Show the form for editing the specified resource.
|
|
*
|
|
* @param int $id
|
|
*
|
|
* @return Response
|
|
*/
|
|
public function editFasilitas(Request $request)
|
|
{
|
|
|
|
if (is_null($this->user) || !$this->user->can('konfirmasibank.update')) {
|
|
abort(403, 'Sorry !! You are Unauthorized to edit any role !');
|
|
}
|
|
|
|
$fasilitas = Fasilitas::find($request->id);
|
|
|
|
return json_encode($fasilitas);
|
|
}
|
|
|
|
/**
|
|
* Update the specified resource in storage.
|
|
*
|
|
* @param Request $request
|
|
* @param int $id
|
|
*
|
|
* @return Response
|
|
*/
|
|
public function updateFasilitas(Request $request)
|
|
{
|
|
|
|
if (is_null($this->user) || !$this->user->can('konfirmasibank.update')) {
|
|
abort(403, 'Sorry !! You are Unauthorized to edit any role !');
|
|
}
|
|
|
|
$today = Carbon::now();
|
|
|
|
// Validation Data\
|
|
$validator = Validator::make($request->all(), [
|
|
//'nomor_rekening_edit' => 'required|string',
|
|
'cabang_edit' => 'required|string',
|
|
'jenis_fasilitas_edit' => 'required|string',
|
|
'jenis_rekening_edit' => 'required|string',
|
|
'mata_uang_edit' => 'required|string',
|
|
'saldo_edit' => 'required|string',
|
|
'start_date_edit' => 'required|string',
|
|
'due_date_edit' => 'required|string',
|
|
'fixed_rate_edit' => 'required|string'
|
|
// Other validation rules
|
|
]);
|
|
|
|
|
|
if ($validator->fails()) {
|
|
return response()->json(['errors' => $validator->errors()], 422); // Return validation errors as JSON
|
|
}
|
|
|
|
$startDate = Carbon::parse($request->start_date_edit);
|
|
$endDate = Carbon::parse($request->due_date_edit);
|
|
$jangkaWaktu = $endDate->diffInDays($startDate);
|
|
if ($validator) {
|
|
try {
|
|
$fasilitas = Fasilitas::findOrFail($request->id);
|
|
$fasilitas->nomor_rekening = $request->nomor_rekening_edit;
|
|
$fasilitas->cabang = $request->cabang_edit;
|
|
$fasilitas->jenis_fasilitas = $request->jenis_fasilitas_edit;
|
|
$fasilitas->jenis_rekening = $request->jenis_rekening_edit;
|
|
$fasilitas->mata_uang = $request->mata_uang_edit;
|
|
$fasilitas->saldo = $request->saldo_edit;
|
|
$fasilitas->start_date = $request->start_date_edit;
|
|
$fasilitas->due_date = $request->due_date_edit;
|
|
$fasilitas->jangka_waktu = $jangkaWaktu;
|
|
$fasilitas->fixed_rate = $request->fixed_rate_edit;
|
|
$fasilitas->keterangan = $request->keterangan_edit;
|
|
$fasilitas->updated_at = $today;
|
|
$fasilitas->save();
|
|
|
|
echo json_encode(['status' => 'success', 'message' => ' fasilitas updated successfully.']);
|
|
|
|
} catch (Exception $e) {
|
|
echo json_encode(['status' => 'error', 'message' => ' fasilitas updated failed.']);
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
echo json_encode(['status' => 'error', 'message' => ' fasilitas updated failed.']);
|
|
}
|
|
|
|
|
|
/**
|
|
* Remove the specified resource from storage.
|
|
*
|
|
* @param int $id
|
|
*
|
|
* @return Renderable
|
|
*/
|
|
public function destroyFasilitas(Request $request)
|
|
{
|
|
if (is_null($this->user) || !$this->user->can('konfirmasibank.delete')) {
|
|
abort(403, 'Sorry !! You are Unauthorized to delete any konfirmasibank module !');
|
|
}
|
|
|
|
$fasilitas = Fasilitas::findOrFail($request->id);
|
|
|
|
try {
|
|
$fasilitas->status = 0;
|
|
$fasilitas->save();
|
|
echo json_encode(['status' => 'success', 'message' => ' fasilitas deleted successfully.']);
|
|
} catch (Exception $e) {
|
|
echo json_encode(['status' => 'error', 'message' => ' fasilitas deleted failed.']);
|
|
}
|
|
}
|
|
|
|
public function destroySigner(Request $request)
|
|
{
|
|
if (is_null($this->user) || !$this->user->can('konfirmasibank.delete')) {
|
|
abort(403, 'Sorry !! You are Unauthorized to delete any konfirmasibank module !');
|
|
}
|
|
|
|
|
|
$signer = Signer::findOrFail($request->id);
|
|
|
|
|
|
try {
|
|
$signer->status = 0;
|
|
$signer->save();
|
|
echo json_encode(['status' => 'success', 'message' => ' Signer deleted successfully.']);
|
|
} catch (Exception $e) {
|
|
echo json_encode(['status' => 'error', 'message' => ' Signer deleted failed.']);
|
|
}
|
|
|
|
}
|
|
|
|
public function timeout(){
|
|
return view('konfirmasibank::errors.404');
|
|
}
|
|
|
|
|
|
} |