From f51d19cd5f0d32c0f70e62af04f3ec3b437122aa Mon Sep 17 00:00:00 2001 From: KhatamNugraha Date: Mon, 17 Jul 2023 14:35:12 +0700 Subject: [PATCH] add module konfirmasibank --- Config/.gitkeep | 0 Config/config.php | 5 + Console/.gitkeep | 0 DataTables/AccountDataTable.php | 160 ++++++++++++ DataTables/CustomerDataTable.php | 100 ++++++++ DataTables/ViewAccountDataTable.php | 161 ++++++++++++ DataTables/ViewCustomerDataTable.php | 175 +++++++++++++ Database/Migrations/.gitkeep | 0 Database/Seeders/.gitkeep | 0 .../Seeders/KonfirmasiBankDatabaseSeeder.php | 21 ++ Database/factories/.gitkeep | 0 Entities/.gitkeep | 0 Entities/Account.php | 35 +++ Entities/Customer.php | 65 +++++ Entities/ViewAccount.php | 105 ++++++++ Entities/ViewCustomer.php | 34 +++ Http/Controllers/.gitkeep | 0 Http/Controllers/KonfirmasiBankController.php | 149 +++++++++++ Http/Middleware/.gitkeep | 0 Http/Requests/.gitkeep | 0 Providers/.gitkeep | 0 Providers/KonfirmasiBankServiceProvider.php | 114 +++++++++ Providers/RouteServiceProvider.php | 69 +++++ Resources/assets/.gitkeep | 0 Resources/assets/js/app.js | 0 Resources/assets/sass/app.scss | 0 Resources/lang/.gitkeep | 0 Resources/views/.gitkeep | 0 Resources/views/_action.blade.php | 18 ++ Resources/views/_form.blade.php | 70 ++++++ Resources/views/_table.blade.php | 218 ++++++++++++++++ Resources/views/exportPdf.blade.php | 236 ++++++++++++++++++ Resources/views/index.blade.php | 67 +++++ Resources/views/layouts/master.blade.php | 19 ++ Routes/.gitkeep | 0 Routes/api.php | 18 ++ Routes/web.php | 23 ++ Tests/Feature/.gitkeep | 0 Tests/Unit/.gitkeep | 0 composer.json | 21 ++ module.json | 11 + package.json | 16 ++ vite.config.js | 24 ++ 43 files changed, 1934 insertions(+) create mode 100644 Config/.gitkeep create mode 100644 Config/config.php create mode 100644 Console/.gitkeep create mode 100644 DataTables/AccountDataTable.php create mode 100644 DataTables/CustomerDataTable.php create mode 100644 DataTables/ViewAccountDataTable.php create mode 100644 DataTables/ViewCustomerDataTable.php create mode 100644 Database/Migrations/.gitkeep create mode 100644 Database/Seeders/.gitkeep create mode 100644 Database/Seeders/KonfirmasiBankDatabaseSeeder.php create mode 100644 Database/factories/.gitkeep create mode 100644 Entities/.gitkeep create mode 100644 Entities/Account.php create mode 100644 Entities/Customer.php create mode 100644 Entities/ViewAccount.php create mode 100644 Entities/ViewCustomer.php create mode 100644 Http/Controllers/.gitkeep create mode 100644 Http/Controllers/KonfirmasiBankController.php create mode 100644 Http/Middleware/.gitkeep create mode 100644 Http/Requests/.gitkeep create mode 100644 Providers/.gitkeep create mode 100644 Providers/KonfirmasiBankServiceProvider.php create mode 100644 Providers/RouteServiceProvider.php create mode 100644 Resources/assets/.gitkeep create mode 100644 Resources/assets/js/app.js create mode 100644 Resources/assets/sass/app.scss create mode 100644 Resources/lang/.gitkeep create mode 100644 Resources/views/.gitkeep create mode 100644 Resources/views/_action.blade.php create mode 100644 Resources/views/_form.blade.php create mode 100644 Resources/views/_table.blade.php create mode 100644 Resources/views/exportPdf.blade.php create mode 100644 Resources/views/index.blade.php create mode 100644 Resources/views/layouts/master.blade.php create mode 100644 Routes/.gitkeep create mode 100644 Routes/api.php create mode 100644 Routes/web.php create mode 100644 Tests/Feature/.gitkeep create mode 100644 Tests/Unit/.gitkeep create mode 100644 composer.json create mode 100644 module.json create mode 100644 package.json create mode 100644 vite.config.js diff --git a/Config/.gitkeep b/Config/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/Config/config.php b/Config/config.php new file mode 100644 index 0000000..4761639 --- /dev/null +++ b/Config/config.php @@ -0,0 +1,5 @@ + 'KonfirmasiBank' +]; diff --git a/Console/.gitkeep b/Console/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/DataTables/AccountDataTable.php b/DataTables/AccountDataTable.php new file mode 100644 index 0000000..0b10b63 --- /dev/null +++ b/DataTables/AccountDataTable.php @@ -0,0 +1,160 @@ +with(['ViewCustomer']); + return (new EloquentDataTable($query)) + ->filter(function ($query) { + if (request()->has('search')) { + $search = request()->get('search'); + $dataSearch = explode(',', $search['value']); + $query->where(function($query) use ($dataSearch){ + if($dataSearch[0] != "" && $dataSearch[1] == "" && $dataSearch[2] == ""){ + $query->where('CUSTOMER_NO', $dataSearch[0]); + } else if($dataSearch[0] != "" && $dataSearch[1] != "" && $dataSearch[2] == ""){ + $query->where('CUSTOMER_NO', $dataSearch[0]); + $query->Where('CO_CODE', $dataSearch[1]); + }else if($dataSearch[0] != "" && $dataSearch[1] != "" && $dataSearch[2] != ""){ + $query->where('CUSTOMER_NO', $dataSearch[0]); + $query->Where('CO_CODE', $dataSearch[1]); + $query->where('BATCH_DATE', 'like', "%" . Carbon::parse($dataSearch[2])->format('m'). "%" ); + } + + }); + } + }) + ->addColumn('customer_no', function ($model) { + return $model->CUSTOMER_NO; + }) + ->addColumn('account_number', function ($model) { + return $model->ACCOUNT_NUMBER; + }) + ->addColumn('account_name', function ($model) { + return $model->ACCOUNT_TITLE_1; + }) + ->addColumn('co_code', function ($model) { + return $model->CO_CODE; + }) + ->addColumn('currency', function ($model) { + return $model->CURRENCY; + // $dt = Carbon::create($model->tanggal_upload); + // return $dt->isoFormat('D MMMM Y H:mm:ss'); + }) + ->addColumn('batch_date', function ($model) { + $dt = Carbon::create($model->BATCH_DATE); + return $dt->isoFormat('DD/MM/YYYY'); + }) + ->addColumn('status', function ($model) { + return 'Approved'; + // if ($model->status == 1) { + // return 'Approved'; + // } else if ($model->status == 0) { + // return 'Menunggu Approval'; + // } else if ($model->status == 3) { + // return 'Rejected'; + // } else if ($model->status == 4) { + // return 'Approved Request Download'; + // } else if ($model->status == 5) { + // return 'Approved Download Approved'; + // } else if ($model->status == 6) { + // return 'Approved Request Delete'; + // } else if ($model->status == 7) { + // return 'Approved Request Delete'; + // } else if ($model->status == 8) { + // return 'Deleted'; + // } else if ($model->status == 9) { + // return 'Approved Request Non-Aktif'; + // } + }) + ->addIndexColumn() + ->rawColumns(['status', 'action']) + ->addColumn('action', 'konfirmasibank::._action') + ->setRowId('id'); + } + + /** + * Get the query source of dataTable. + */ + public function query(Account $model) + : QueryBuilder + { + $currentYear = Carbon::now()->format('Y'); + + return $model->newQuery()->where('BATCH_DATE', 'like', "%" . $currentYear. "%"); + } + + /** + * Optional method if you want to use the html builder. + */ + public function html() + : HtmlBuilder + { + return $this->builder() + ->setTableId('konfirmasibank-table') + ->columns($this->getColumns()) + ->minifiedAjax() + ->stateSave(false) + ->responsive() + ->autoWidth(true) + ->orderBy(1) + ->parameters([ + 'scrollX' => true, + 'drawCallback' => 'function() { KTMenu.createInstances(); }', + ]) + ->addTableClass('align-middle table-row-dashed fs-6 gy-5'); + } + + /** + * Get the dataTable columns definition. + */ + public function getColumns() + : array + { + return [ + Column::make('DT_RowIndex')->title('No')->orderable(false)->searchable(false)->addClass('text-center'), + Column::make('customer_no')->title('NO CIF')->addClass('text-center'), + Column::make('account_number')->title('No Account')->addClass('text-center'), + Column::make('account_name')->title('Nama Account')->addClass('text-center'), + Column::make('co_code')->title('Kode Cabang')->addClass('text-center'), + Column::make('currency')->title('Mata Uang')->addClass('text-center'), + Column::make('batch_date')->title('Periode')->addClass('text-center'), + // Column::computed('status'), + Column::computed('action') + ->exportable(false) + ->printable(false) + ->addClass('text-center'), + ]; + } + + /** + * Get the filename for export. + */ + protected function filename() + : string + { + return 'Document_' . date('YmdHis'); + } +} \ No newline at end of file diff --git a/DataTables/CustomerDataTable.php b/DataTables/CustomerDataTable.php new file mode 100644 index 0000000..d0f60df --- /dev/null +++ b/DataTables/CustomerDataTable.php @@ -0,0 +1,100 @@ +filter(function ($query) { + if (request()->has('search')) { + $search = request()->get('search'); + $query->where('customer_no', 'like', "%" . $search['value'] . "%") + ->orWhere('customer_name', 'like', "%" . $search['value'] . "%"); + } + }) + ->addColumn('customer',function($model){ + return $model->ACCOUNT_NUMBER; + }) + ->addColumn('customer',function($model){ + return $model->customer; + }) + ->addIndexColumn() + ->addColumn('action', 'customer::_action') + ->setRowId('id'); + } + + /** + * Get the query source of dataTable. + */ + public function query(Customer $model): QueryBuilder + { + + return $model->newQuery(); + } + + /** + * Optional method if you want to use the html builder. + */ + public function html(): HtmlBuilder + { + return $this->builder() + ->setTableId('customer-table') + ->columns($this->getColumns()) + ->minifiedAjax() + ->stateSave(false) + ->responsive() + ->autoWidth(true) + ->orderBy(1) + ->parameters([ + 'scrollX' => true, + 'drawCallback' => 'function() { KTMenu.createInstances(); }', + ]) + ->addTableClass('align-middle table-row-dashed fs-6 gy-5'); + } + + /** + * Get the dataTable columns definition. + */ + public function getColumns(): array + { + return [ + Column::make('DT_RowIndex')->title('No')->orderable(false)->searchable(false), + // Column::make('ID')->title('CIF'), + Column::make('CUSTOMER_NO')->title('CUSTOMER NO'), + Column::make('NAME_1')->title('NAME'), + Column::make('ADDRESS')->title('ADDRESS'), + Column::computed('action') + ->exportable(false) + ->printable(false) + ->width(60) + ->addClass('text-center'), + ]; + } + + /** + * Get the filename for export. + */ + protected function filename(): string + { + return 'Customer_' . date('YmdHis'); + } +} \ No newline at end of file diff --git a/DataTables/ViewAccountDataTable.php b/DataTables/ViewAccountDataTable.php new file mode 100644 index 0000000..ea465d1 --- /dev/null +++ b/DataTables/ViewAccountDataTable.php @@ -0,0 +1,161 @@ +with(['ViewCustomer']); + return (new EloquentDataTable($query)) + ->filter(function ($query) { + if (request()->has('search')) { + $search = request()->get('search'); + $dataSearch = explode(',', $search['value']); + $query->where(function($query) use ($dataSearch){ + if($dataSearch[0] != "" && $dataSearch[1] == "" && $dataSearch[2] == ""){ + $query->where('CUSTOMER_NO', $dataSearch[0]); + } else if($dataSearch[0] != "" && $dataSearch[1] != "" && $dataSearch[2] == ""){ + $query->where('CUSTOMER_NO', $dataSearch[0]); + $query->where('COMPANY_NAME', 'LIKE', "%" . $dataSearch[1] . "%"); + }else if($dataSearch[0] != "" && $dataSearch[1] != "" && $dataSearch[2] != ""){ + $query->where('CUSTOMER_NO', $dataSearch[0]); + $query->Where('COMPANY_NAME', 'LIKE', "%" . $dataSearch[1] . "%"); + $query->where('BATCH_DATE', 'like', "%" . Carbon::parse($dataSearch[2])->format('m'). "%" ); + } + + }); + } + }) + ->addColumn('account_number', function ($model) { + return $model->ACCOUNT_NUMBER; + }) + ->addColumn('co_code', function ($model) { + return $model->COMPANY_NAME; + }) + ->addColumn('product', function ($model) { + return $model->PRODUCT; + }) + ->addColumn('currency', function ($model) { + return $model->CURRENCY; + }) + ->addColumn('working_balance', function ($model) { + return $model->WORKING_BALANCE; + }) + ->addColumn('batch_date', function ($model) { + return $model->BATCH_DATE; + }) + // ->addColumn('', function ($model) { + // $dt = Carbon::create($model->BATCH_DATE); + // return $dt->isoFormat('DD/MM/YYYY'); + // }) + ->addColumn('status', function ($model) { + return 'Approved'; + // if ($model->status == 1) { + // return 'Approved'; + // } else if ($model->status == 0) { + // return 'Menunggu Approval'; + // } else if ($model->status == 3) { + // return 'Rejected'; + // } else if ($model->status == 4) { + // return 'Approved Request Download'; + // } else if ($model->status == 5) { + // return 'Approved Download Approved'; + // } else if ($model->status == 6) { + // return 'Approved Request Delete'; + // } else if ($model->status == 7) { + // return 'Approved Request Delete'; + // } else if ($model->status == 8) { + // return 'Deleted'; + // } else if ($model->status == 9) { + // return 'Approved Request Non-Aktif'; + // } + }) + ->addIndexColumn() + ->rawColumns(['status', 'action']) + ->addColumn('action', 'konfirmasibank::._action') + ->setRowId('id'); + } + + /** + * Get the query source of dataTable. + */ + public function query(ViewAccount $model) + : QueryBuilder + { + $currentYear = Carbon::now()->format('Y'); + + return $model->newQuery()->where('BATCH_DATE', 'like', "%" . $currentYear. "%"); + } + + /** + * Optional method if you want to use the html builder. + */ + public function html() + : HtmlBuilder + { + return $this->builder() + ->setTableId('konfirmasibank-table') + ->columns($this->getColumns()) + ->minifiedAjax() + ->stateSave(false) + ->responsive() + ->autoWidth(true) + ->orderBy(1) + ->parameters([ + 'scrollX' => true, + 'drawCallback' => 'function() { KTMenu.createInstances(); }', + ]) + ->addTableClass('align-middle table-row-dashed fs-6 gy-5'); + } + + /** + * Get the dataTable columns definition. + */ + public function getColumns() + : array + { + return [ + Column::make('DT_RowIndex')->title('No')->orderable(false)->searchable(false)->addClass('text-center'), + Column::make('account_number')->title('NO Rekening')->addClass('text-center'), + Column::make('co_code')->title('Cabang')->addClass('text-center'), + Column::make('product')->title('Jenis Rekening')->addClass('text-center'), + Column::make('currency')->title('Mata uang')->addClass('text-center'), + Column::make('working_balance')->title('Saldo')->addClass('text-center'), + Column::make('batch_date')->title('Periode')->addClass('text-center'), + // Column::computed('status'), + Column::computed('action') + ->exportable(false) + ->printable(false) + ->addClass('text-center'), + ]; + } + + /** + * Get the filename for export. + */ + protected function filename() + : string + { + return 'Document_' . date('YmdHis'); + } +} \ No newline at end of file diff --git a/DataTables/ViewCustomerDataTable.php b/DataTables/ViewCustomerDataTable.php new file mode 100644 index 0000000..011531e --- /dev/null +++ b/DataTables/ViewCustomerDataTable.php @@ -0,0 +1,175 @@ +with(['ViewCustomer']); + return (new EloquentDataTable($query)) + ->filter(function ($query) { + + + if (request()->has('search')) { + $search = request()->get('search'); + + $dataSearch = explode(',', $search['value']); + //dd(int)$dataSearch[1]); + $query->where(function($query) use ($dataSearch){ + if($dataSearch[0] != "" && $dataSearch[1] == "" && $dataSearch[2] == ""){ + $query->where('CUSTOMER_CODE', $dataSearch[0]); + } else if($dataSearch[0] != "" && $dataSearch[1] != "" && $dataSearch[2] == ""){ + $query->where('CUSTOMER_CODE', $dataSearch[0]); + $query->Where('BRANCH_CODE', $dataSearch[1]); + }else if($dataSearch[0] != "" && $dataSearch[1] != "" && $dataSearch[2] != ""){ + $query->where('CUSTOMER_CODE', $dataSearch[0]); + $query->Where('BRANCH_CODE', $dataSearch[1]); + $query->Where('OPENING_DATE', 'like', "%" . $dataSearch[2] . "%"); + } + + }); + } + + if(request()->has('kodecabang')){ + if(request()->get('kodecabang') != null){ + $query->where('BRANCH_CODE', '>=', request()->get('kodecabang')); + } + } + + if(request()->has('periode')){ + if(request()->get('periode') != null){ + $query->where('OPENING_DATE', 'like', "%" . Carbon::parse(request()->get('periode'))->format('Y-m-d') . "%" ); + } + } + }) + ->addColumn('customer_code', function ($model) { + return $model->customer_code; + }) + ->addColumn('account_number', function ($model) { + return $model->account_number; + }) + ->addColumn('account_name', function ($model) { + return $model->account_name; + }) + ->addColumn('branch_code', function ($model) { + return $model->branch_code; + }) + ->addColumn('currency_code', function ($model) { + return $model->currency_code; + // $dt = Carbon::create($model->tanggal_upload); + // return $dt->isoFormat('D MMMM Y H:mm:ss'); + }) + ->addColumn('periode', function ($model) { + $dt = Carbon::create($model->opening_date); + return $dt->isoFormat('D MMMM Y'); + }) + ->addColumn('status', function ($model) { + return 'Approved'; + // if ($model->status == 1) { + // return 'Approved'; + // } else if ($model->status == 0) { + // return 'Menunggu Approval'; + // } else if ($model->status == 3) { + // return 'Rejected'; + // } else if ($model->status == 4) { + // return 'Approved Request Download'; + // } else if ($model->status == 5) { + // return 'Approved Download Approved'; + // } else if ($model->status == 6) { + // return 'Approved Request Delete'; + // } else if ($model->status == 7) { + // return 'Approved Request Delete'; + // } else if ($model->status == 8) { + // return 'Deleted'; + // } else if ($model->status == 9) { + // return 'Approved Request Non-Aktif'; + // } + }) + ->addIndexColumn() + ->rawColumns(['status', 'action']) + ->addColumn('action', 'konfirmasibank::._action') + ->setRowId('id'); + } + + /** + * Get the query source of dataTable. + */ + public function query(ViewCustomer $model) + : QueryBuilder + { + + return $model->newQuery(); + } + + /** + * Optional method if you want to use the html builder. + */ + public function html() + : HtmlBuilder + { + return $this->builder() + ->setTableId('konfirmasibank-table') + ->columns($this->getColumns()) + ->minifiedAjax() + ->stateSave(false) + ->responsive() + ->autoWidth(true) + ->orderBy(1) + ->parameters([ + 'scrollX' => true, + 'drawCallback' => 'function() { KTMenu.createInstances(); }', + ]) + ->addTableClass('align-middle table-row-dashed fs-6 gy-5'); + } + + /** + * Get the dataTable columns definition. + */ + public function getColumns() + : array + { + return [ + Column::make('DT_RowIndex')->title('No')->orderable(false)->searchable(false)->addClass('text-center'), + Column::make('customer_code')->title('NO CIF')->addClass('text-center'), + Column::make('account_number')->title('No Account')->addClass('text-center'), + Column::make('account_name')->title('Nama Account')->addClass('text-center'), + Column::make('branch_code')->title('Kode Cabang')->addClass('text-center'), + Column::make('currency_code')->title('Mata Uang')->addClass('text-center'), + Column::make('opening_date')->title('Periode')->addClass('text-center'), + // Column::computed('status'), + Column::computed('action') + ->exportable(false) + ->printable(false) + ->addClass('text-center'), + ]; + } + + /** + * Get the filename for export. + */ + protected function filename() + : string + { + return 'Document_' . date('YmdHis'); + } +} diff --git a/Database/Migrations/.gitkeep b/Database/Migrations/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/Database/Seeders/.gitkeep b/Database/Seeders/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/Database/Seeders/KonfirmasiBankDatabaseSeeder.php b/Database/Seeders/KonfirmasiBankDatabaseSeeder.php new file mode 100644 index 0000000..76f5163 --- /dev/null +++ b/Database/Seeders/KonfirmasiBankDatabaseSeeder.php @@ -0,0 +1,21 @@ +call("OthersTableSeeder"); + } +} diff --git a/Database/factories/.gitkeep b/Database/factories/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/Entities/.gitkeep b/Entities/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/Entities/Account.php b/Entities/Account.php new file mode 100644 index 0000000..2f92295 --- /dev/null +++ b/Entities/Account.php @@ -0,0 +1,35 @@ +belongsTo(Customer::class, 'CUSTOMER_NO'); + } + + +} \ No newline at end of file diff --git a/Entities/Customer.php b/Entities/Customer.php new file mode 100644 index 0000000..ca1ce8b --- /dev/null +++ b/Entities/Customer.php @@ -0,0 +1,65 @@ +table("T24DWH.V_CUSTOMER")->limit(20)->get()->map(function($item) {return (array) $item;}); + return $data; + + } + + public function getCustomer(){ + $data = []; + $data = DB::connection("oracle")->table("T24DWH.V_CUSTOMER")->select('CUSTOMER_CODE')->limit(50); + return $data; + } + + public function exportPdf($cus_no,$account,$kodecabang,$periode){ + $data = []; + $data = DB::table('view_customers') + ->where('CUSTOMER_NO',$cus_no) + ->whereIn('ACCOUNT_NUMBER', $account) + ->where('SECTOR',$kodecabang) + ->where('LEGAL_ISS_DATE','LIKE','%'.$periode.'%') + ->get(); + + + return $data; + } + + + public function accounts(): HasMany + { + return $this->hasMany(Account::class, 'CUSTOMER_CODE'); + } + + +} \ No newline at end of file diff --git a/Entities/ViewAccount.php b/Entities/ViewAccount.php new file mode 100644 index 0000000..5764101 --- /dev/null +++ b/Entities/ViewAccount.php @@ -0,0 +1,105 @@ +table("STG_DB.VW_ACCOUNTS")->select('*')->where('CUSTOMER_NO',$cus_no)->whereIn('ACCOUNT_NUMBER',$account)->get(); + return $data; + + } + + public function getPinjaman($cus_no){ + $data = []; + $data = DB::connection("db2")->table("STG_DB.VW_AA_ARRANGEMENT")->select('CUSTOMER','STREET','ADDRESS','SHORT_NAME','CO_CODE','PRODUCT_LINE','PRODUCT','CURRENCY','COMPANY_NAME',DB::raw('MAX(CATEGORY) AS CATEGORY'),DB::raw('MAX(BATCH_DATE) AS BATCH_DATE'),DB::raw('MAX(WORKING_BALANCE) AS WORKING_BALANCE'),DB::raw('MAX(OPENING_DATE) AS OPENING_DATE'),DB::raw('MAX(MATURITY_DATE) AS MATURITY_DATE'),DB::raw('MAX(MATURITY_DATE) AS MATURITY_DATE'), DB::raw('MAX(ARRANGEMENT_ID) AS ARRANGEMENT_ID'))->where('CUSTOMER',$cus_no)->groupBy('CUSTOMER','STREET','ADDRESS','SHORT_NAME','CO_CODE','PRODUCT_LINE','PRODUCT','CURRENCY','COMPANY_NAME')->get(); + return $data; + + } + + public function getFasilitas($cus_no){ + $data = []; + $data =DB::connection("db2")->table("STG_DB.LIMIT")->select('*')->where('@ID', 'like', "%" .$cus_no. "%")->get(); + return $data; + } + + public function getTerm($arr_id){ + $data = []; + $data =DB::connection("db2")->table("STG_DB.AA_ARR_TERM_AMOUNT")->select(DB::raw('MAX(ID) AS ID'),DB::raw('MAX(TERM) AS TERM'))->where('ID', 'like', "%" .$arr_id."%")->orderBy('ID','DESC')->get(); + return $data; + } + + public function getInterest($arr_id){ + $data = []; + $data =DB::connection("db2")->table("STG_DB.AA_ARR_INTEREST")->select(DB::raw('MAX(ID) AS ID'),DB::raw('MAX(FIXED_RATE) AS FIXED_RATE'))->where('ID', 'like', "%".$arr_id."%")->orderBy('ID','DESC')->get(); + return $data; + } + + public function getCategory($category_id){ + + $data = []; + $data =DB::connection("db2")->table("STG_DB.CATEGORY")->select('ID','SHORT_NAME')->where('ID',$category_id)->get(); + return $data; + } + + public function getAA($aa_id){ + + $data = []; + $data =DB::connection("db2")->table("STG_DB.AA_ARRANGEMENENT")->select('ID')->where('ID', 'like',"%".$aa_id."%")->orderBy('ID','DESC')->get(); + return $data; + } + + public function getLimit($cus_id,$periode){ + + $data = []; + $data =DB::connection("db2")->table("STG_DB.LIMIT AS LM") + ->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.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('LM.@ID', 'like',"%".$cus_id."%") + ->where('LM.BATCH_DATE', 'like',"%".$periode."%") + ->orderBy('LM.@ID','DESC')->get(); + return $data; + } + + public function getLimitProduct($limit_product_id){ + + $data = []; + $data =DB::connection("db2")->table("STG_DB.LIMIT_REFERENCE")->select('ID','SHORT_NAME','LIMIT_PERCENTAGE')->where('ID',$limit_product_id)->first(); + return $data; + } + +} \ No newline at end of file diff --git a/Entities/ViewCustomer.php b/Entities/ViewCustomer.php new file mode 100644 index 0000000..abfc3e5 --- /dev/null +++ b/Entities/ViewCustomer.php @@ -0,0 +1,34 @@ +middleware(function ($request, $next) { + $this->user = Auth::guard('web')->user(); + return $next($request); + }); + + addVendor('chained-select'); + + } + + /** + * Display a listing of the resource. + */ + public function index(ViewAccountDataTable $dataTable) + { + + if (is_null($this->user) || !$this->user->can('konfirmasibank.read')) { + abort(403, 'Sorry !! You are Unauthorized to view any master data !'); + } + + return $dataTable->render('konfirmasibank::index'); + } + + + /* + ----- export pdf ----- + */ + public function export(Request $request) { + if (is_null($this->user) || !$this->user->can('konfirmasibank.report')) { + abort(403, 'Sorry !! You are Unauthorized to view any master data !'); + } + + $account = explode("," , $request['acc_no']); + + $ViewAccount = new ViewAccount; + $data = []; + $DataAccounts = []; + $DataPinjaman = []; + $DataLimit = []; + $ListAccount = $ViewAccount->getAccount($request['cus_no'],$account,$request['kode_cabang'],$request['periode']); + + foreach ($ListAccount as $key1 => $account) { + $DataAccounts[$key1]['ACCOUNT_NUMBER'] = $account->ACCOUNT_NUMBER; + $DataAccounts[$key1]['CUSTOMER_NO'] = $account->CUSTOMER_NO; + $DataAccounts[$key1]['CURRENCY'] = $account->CURRENCY; + $DataAccounts[$key1]['PRODUCT'] = $account->PRODUCT; + $DataAccounts[$key1]['COMPANY_NAME'] = $account->COMPANY_NAME; + $DataAccounts[$key1]['WORKING_BALANCE'] = $account->WORKING_BALANCE; + $DataAccounts[$key1]['BATCH_DATE'] = $account->BATCH_DATE; + $DataAccounts[$key1]['MATURITY_DATE'] = $account->MATURITY_DATE; + $ListBunga =$ViewAccount->getInterest($account->ARRANGEMENT_ID); + $ListTenor =$ViewAccount->getTerm($account->ARRANGEMENT_ID); + foreach ($ListBunga as $bunga) { + if (strpos($bunga->ID ,$account->ARRANGEMENT_ID) !== false) { + $DataAccounts[$key1]['FIXED_RATE'] = $bunga->FIXED_RATE; + + } + } + + + + + } + + + $ListPinjaman =$ViewAccount->getPinjaman($ListAccount[0]->CUSTOMER_NO); + $pinjaman = []; + foreach ($ListPinjaman as $key => $item) { + $ListTenor =$ViewAccount->getTerm($item->ARRANGEMENT_ID); + $ListBunga =$ViewAccount->getInterest($item->ARRANGEMENT_ID); + $ListCategory =$ViewAccount->getCategory($item->CATEGORY); + $pinjaman[$key]['CUSTOMER'] = $item->CUSTOMER; + $pinjaman[$key]['SHORT_NAME'] = $item->SHORT_NAME; + $pinjaman[$key]['STREET'] = $item->STREET; + $pinjaman[$key]['ADDRESS'] = $item->ADDRESS; + $pinjaman[$key]['COMPANY_NAME'] = $item->COMPANY_NAME; + $pinjaman[$key]['CURRENCY'] = $item->CURRENCY; + $pinjaman[$key]['PRODUCT_LINE'] = $item->PRODUCT_LINE; + $pinjaman[$key]['PRODUCT'] = $item->PRODUCT; + $pinjaman[$key]['WORKING_BALANCE'] = $item->WORKING_BALANCE; + $pinjaman[$key]['BATCH_DATE'] = $item->OPENING_DATE; + $pinjaman[$key]['MATURITY_DATE'] = $item->MATURITY_DATE; + + foreach ($ListBunga as $bunga) { + if (strpos($bunga->ID ,$item->ARRANGEMENT_ID) !== false) { + $pinjaman[$key]['FIXED_RATE'] = $bunga->FIXED_RATE; + } + } + foreach ($ListTenor as $tenor) { + if (strpos($tenor->ID ,$item->ARRANGEMENT_ID) !== false) { + $pinjaman[$key]['TERM'] = $tenor->TERM; + } + } + foreach ($ListCategory as $category) { + if ($category->ID == $item->CATEGORY) { + $pinjaman[$key]['CATEGORY'] = $category->SHORT_NAME; + } + } + } + + $DataProducts = []; + $ListLimits = $ViewAccount->getLimit($request['cus_no'],$request['periode']); + + $data['DataAccounts'] = $DataAccounts; + $data['DataPinjaman'] = $pinjaman; + $data['DataLimit'] = $ListLimits; + + $currentDate = Carbon::now(); + $formattedDate = $currentDate->format('Y-m-d'); + + $html = View::make('konfirmasibank::exportPdf', ['data' => $data])->render(); + + $pdf = new Dompdf(); + $pdf->loadHtml($html); + + // Mengatur jenis kertas + $pdf->setPaper('f4', 'landscape')->set_option('defaultFont', 'Arial'); + + // Render HTML menjadi PDF + $pdf->render(); + + // Keluarkan file PDF ke browser + $pdf->stream('"Konfirmasi_bank_"'.$ListPinjaman[0]->SHORT_NAME.'"'. $formattedDate.'".pdf"'); + + // $pdf->render(); + // return $pdf->stream('Konfirmasi_bank_"'.$ListPinjaman[0]->SHORT_NAME.'"'. $formattedDate.'""'); + + } + + + } \ No newline at end of file diff --git a/Http/Middleware/.gitkeep b/Http/Middleware/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/Http/Requests/.gitkeep b/Http/Requests/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/Providers/.gitkeep b/Providers/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/Providers/KonfirmasiBankServiceProvider.php b/Providers/KonfirmasiBankServiceProvider.php new file mode 100644 index 0000000..cd61f56 --- /dev/null +++ b/Providers/KonfirmasiBankServiceProvider.php @@ -0,0 +1,114 @@ +registerTranslations(); + $this->registerConfig(); + $this->registerViews(); + $this->loadMigrationsFrom(module_path($this->moduleName, 'Database/Migrations')); + } + + /** + * Register the service provider. + * + * @return void + */ + public function register() + { + $this->app->register(RouteServiceProvider::class); + } + + /** + * Register config. + * + * @return void + */ + protected function registerConfig() + { + $this->publishes([ + module_path($this->moduleName, 'Config/config.php') => config_path($this->moduleNameLower . '.php'), + ], 'config'); + $this->mergeConfigFrom( + module_path($this->moduleName, 'Config/config.php'), $this->moduleNameLower + ); + } + + /** + * Register views. + * + * @return void + */ + public function registerViews() + { + $viewPath = resource_path('views/modules/' . $this->moduleNameLower); + + $sourcePath = module_path($this->moduleName, 'Resources/views'); + + $this->publishes([ + $sourcePath => $viewPath + ], ['views', $this->moduleNameLower . '-module-views']); + + $this->loadViewsFrom(array_merge($this->getPublishableViewPaths(), [$sourcePath]), $this->moduleNameLower); + } + + /** + * Register translations. + * + * @return void + */ + public function registerTranslations() + { + $langPath = resource_path('lang/modules/' . $this->moduleNameLower); + + if (is_dir($langPath)) { + $this->loadTranslationsFrom($langPath, $this->moduleNameLower); + $this->loadJsonTranslationsFrom($langPath); + } else { + $this->loadTranslationsFrom(module_path($this->moduleName, 'Resources/lang'), $this->moduleNameLower); + $this->loadJsonTranslationsFrom(module_path($this->moduleName, 'Resources/lang')); + } + } + + /** + * Get the services provided by the provider. + * + * @return array + */ + public function provides() + { + return []; + } + + private function getPublishableViewPaths(): array + { + $paths = []; + foreach (\Config::get('view.paths') as $path) { + if (is_dir($path . '/modules/' . $this->moduleNameLower)) { + $paths[] = $path . '/modules/' . $this->moduleNameLower; + } + } + return $paths; + } +} diff --git a/Providers/RouteServiceProvider.php b/Providers/RouteServiceProvider.php new file mode 100644 index 0000000..e954625 --- /dev/null +++ b/Providers/RouteServiceProvider.php @@ -0,0 +1,69 @@ +mapApiRoutes(); + + $this->mapWebRoutes(); + } + + /** + * Define the "web" routes for the application. + * + * These routes all receive session state, CSRF protection, etc. + * + * @return void + */ + protected function mapWebRoutes() + { + Route::middleware('web') + ->namespace($this->moduleNamespace) + ->group(module_path('KonfirmasiBank', '/Routes/web.php')); + } + + /** + * Define the "api" routes for the application. + * + * These routes are typically stateless. + * + * @return void + */ + protected function mapApiRoutes() + { + Route::prefix('api') + ->middleware('api') + ->namespace($this->moduleNamespace) + ->group(module_path('KonfirmasiBank', '/Routes/api.php')); + } +} diff --git a/Resources/assets/.gitkeep b/Resources/assets/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/Resources/assets/js/app.js b/Resources/assets/js/app.js new file mode 100644 index 0000000..e69de29 diff --git a/Resources/assets/sass/app.scss b/Resources/assets/sass/app.scss new file mode 100644 index 0000000..e69de29 diff --git a/Resources/lang/.gitkeep b/Resources/lang/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/Resources/views/.gitkeep b/Resources/views/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/Resources/views/_action.blade.php b/Resources/views/_action.blade.php new file mode 100644 index 0000000..d0a1b0a --- /dev/null +++ b/Resources/views/_action.blade.php @@ -0,0 +1,18 @@ +@php + $route = explode('.', Route::currentRouteName()); + +@endphp + +
+ {{-- + {!! getIcon("eye", "fs-1 text-info","duotune") !!} + --}} +
+ +
+ + {{-- {!! Form::open(['method' => 'DELETE','route' => [$route[0].'.destroy', $model->ID],'class'=>'']) !!} --}} + {{-- {{ Form::button(getIcon("trash", "fs-1 text-danger","duotune"), ['type' => 'submit', 'class' => 'delete btn btn-icon btn-bg-light btn-active-light-danger btn-sm'] ) }} --}} + {{-- {!! Form::close() !!} --}} +
diff --git a/Resources/views/_form.blade.php b/Resources/views/_form.blade.php new file mode 100644 index 0000000..8aa51e6 --- /dev/null +++ b/Resources/views/_form.blade.php @@ -0,0 +1,70 @@ +@php + $route = explode('.', Route::currentRouteName()); +@endphp + + + + diff --git a/Resources/views/_table.blade.php b/Resources/views/_table.blade.php new file mode 100644 index 0000000..e3e4999 --- /dev/null +++ b/Resources/views/_table.blade.php @@ -0,0 +1,218 @@ + +{{ $dataTable->table() }} + + +{{-- Inject Scripts --}} +@section('scripts') + +@endsection + +@push('customscript') + @php + $route = explode('.', Route::currentRouteName()); + @endphp + + +@endpush + +@section('styles') + +@endsection diff --git a/Resources/views/exportPdf.blade.php b/Resources/views/exportPdf.blade.php new file mode 100644 index 0000000..63f526a --- /dev/null +++ b/Resources/views/exportPdf.blade.php @@ -0,0 +1,236 @@ + + + + + + + Membuat Laporan PDF Dengan DOMPDF Laravel + + + + + + + + @php + $route = explode('.', Route::currentRouteName()); + @endphp + +
+ + + + + + +
+ +

Nomor :

+

Tanggal :

+
+ + +

BANK ARTHA GRAHA INTERNATIONAL

+

Kawasan Niaga Terpadu Sudirman (SCBD) + Jl. Jendral Sudirman Kav. 52 – 53 , Jakarta Indonesia +

+

Phone :

+

Faxmail :

+

+ + +

Kepada Yth

+

Bp. ...

+

{{$data['DataPinjaman'][0]['STREET']}}, {{$data['DataPinjaman'][0]['ADDRESS']}}

+ +

Sesuai dengan surat saudara Nomor …. tanggal … dengan ini kami smpaikan data – data nasbah sesuai permintaan saudara sebagai berikut :

+ + + + + + + + + + + + +
+

Nama Nasabah

+
+ : + +

{{$data['DataPinjaman'][0]['SHORT_NAME']}}

+
+

Nomor CIF

+
+ : + +

{{$data['DataAccounts'][0]['CUSTOMER_NO']}}

+

+ +

SIMPAMAN NASABAH YANG BERSANGKUTAN PADA BANK

+

POSISI ....

+ + + + + + + + + + + + + + + + @if (count($data['DataAccounts'])>0) + @php $i=1 @endphp + @foreach ($data['DataAccounts'] as $val) + + + + + + + + + + + + @endforeach + @else + + + + @endif + + +
NoRekeningCabangJenis RekeningMata UangSaldoJangka WaktuSuku BungTgl Jatuh Tempo
{{ $i++ }}{{ $val['ACCOUNT_NUMBER'] }}{{ $val['COMPANY_NAME'] }}{{ $val['PRODUCT'] }}{{ $val['CURRENCY'] }}{{ $val['WORKING_BALANCE'] }}{{ $val['BATCH_DATE'] }}{{ $val['FIXED_RATE'] }}{{ $val['MATURITY_DATE'] }}
Tidak Ada Account

+ +

PINJAMAN YANG DI BERIKAN OLEH BANK KEPADA NASABAH

+

POSISI ....

+ + + + + + + + + + + + + + + + @if (count($data['DataPinjaman'])>0) + @php $i=1 @endphp + @foreach ($data['DataPinjaman'] as $pinjaman) + + + + + + + + + + + + @endforeach + @else + + + + @endif + +
NoJenis PinjamanCabangJenis RekeningMata UangSaldoJangka WaktuSuku BungTgl Jatuh Tempo
{{ $i++ }}{{ $pinjaman['PRODUCT_LINE'] }}{{ $pinjaman['COMPANY_NAME'] }}{{ $pinjaman['CATEGORY'] }}{{ $pinjaman['CURRENCY'] }}{{ $pinjaman['WORKING_BALANCE'] }}{{ $pinjaman['BATCH_DATE'] }}{{ $pinjaman['FIXED_RATE'] }}{{ $pinjaman['MATURITY_DATE'] }}
Tidak Ada Pinjaman

+ +

FASILITAS LAIN YANG DI TERIMA OLEH NASABAH

+

POSISI ....

+ + + + + + + + + + + + + + + + @if (count($data['DataLimit']) > 0) + @php $i=1 @endphp + @foreach ($data['DataLimit'] as $limit) + + + + + + + + + + + + @endforeach + @else + + + + @endif + + +
NoJenis FasilitasCabangJenis RekeningMata UangSaldoJangka WaktuSuku BungTgl Jatuh Tempo
{{ $i++ }}{{ $limit->SHORT_NAME }}{{ $limit->COMPANY_NAME }}{{ $limit->ACCOUNT_TYPE }}{{ $limit->LIMIT_CURRENCY }}{{ $limit->AVAIL_AMT }}{{ $limit->BATCH_DATE }}{{ $limit->LIMIT_PERCENTAGE }}{{ $limit->EXPIRY_DATE}}
Tidak Ada Fasilitas


+ +
+ + + + + +
+

Nama Pejabat 1

+

Jabatan

+
+

Nama Pejabat 2

+

Jabatan

+
+
+
+ + + + diff --git a/Resources/views/index.blade.php b/Resources/views/index.blade.php new file mode 100644 index 0000000..80a8759 --- /dev/null +++ b/Resources/views/index.blade.php @@ -0,0 +1,67 @@ + + @php + $route = explode('.', Route::currentRouteName()); + @endphp + +
+ +
+
+
+  No CIF :  + +  Kode Cabang :  + +  Periode :  +   +   +
+ +
+ +
+ +
+ @csrf +
+ + + + +
+ {{-- Cari --}} + +
+
+
+ + + {{-- +
+ --}} + +
+
+
+
+ + +
+ @include('konfirmasibank::_table') +
+ +
+ +
diff --git a/Resources/views/layouts/master.blade.php b/Resources/views/layouts/master.blade.php new file mode 100644 index 0000000..db6e9b8 --- /dev/null +++ b/Resources/views/layouts/master.blade.php @@ -0,0 +1,19 @@ + + + + + + + Module KonfirmasiBank + + {{-- Laravel Vite - CSS File --}} + {{-- {{ module_vite('build-konfirmasibank', 'Resources/assets/sass/app.scss') }} --}} + + + + @yield('content') + + {{-- Laravel Vite - JS File --}} + {{-- {{ module_vite('build-konfirmasibank', 'Resources/assets/js/app.js') }} --}} + + diff --git a/Routes/.gitkeep b/Routes/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/Routes/api.php b/Routes/api.php new file mode 100644 index 0000000..33d5032 --- /dev/null +++ b/Routes/api.php @@ -0,0 +1,18 @@ +get('/konfirmasibank', function (Request $request) { + return $request->user(); +}); \ No newline at end of file diff --git a/Routes/web.php b/Routes/web.php new file mode 100644 index 0000000..4840858 --- /dev/null +++ b/Routes/web.php @@ -0,0 +1,23 @@ + ['auth', 'verified']], function () { + Route::resource('konfirmasibank', KonfirmasiBankController::class); + // Route::post('konfirmasibank/getPdf', [KonfirmasiBankController::class, 'getPdf'])->name('getPdf'); + Route::Post('/export',[KonfirmasiBankController::class,'export'])->name('konfirmasibank.export'); +}); \ No newline at end of file diff --git a/Tests/Feature/.gitkeep b/Tests/Feature/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/Tests/Unit/.gitkeep b/Tests/Unit/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..b778469 --- /dev/null +++ b/composer.json @@ -0,0 +1,21 @@ +{ + "name": "katam/konfirmasibank-module", + "description": "", + "authors": [{ + "name": "Katam Nugraha", + "email": "katam.iat2023@gmail.com" + }], + "extra": { + "laravel": { + "providers": [], + "aliases": { + + } + } + }, + "autoload": { + "psr-4": { + "Modules\\KonfirmasiBank\\": "" + } + } +} diff --git a/module.json b/module.json new file mode 100644 index 0000000..3cc7585 --- /dev/null +++ b/module.json @@ -0,0 +1,11 @@ +{ + "name": "KonfirmasiBank", + "alias": "konfirmasibank", + "description": "", + "keywords": [], + "priority": 0, + "providers": [ + "Modules\\KonfirmasiBank\\Providers\\KonfirmasiBankServiceProvider" + ], + "files": [] +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..30c1a80 --- /dev/null +++ b/package.json @@ -0,0 +1,16 @@ +{ + "private": true, + "scripts": { + "dev": "vite", + "build": "vite build" + }, + "devDependencies": { + "axios": "^0.21.4", + "dotenv": "^10.0.0", + "dotenv-expand": "^5.1.0", + "laravel-vite-plugin": "^0.6.0", + "lodash": "^4.17.21", + "postcss": "^8.3.7", + "vite": "^3.0.9" + } +} diff --git a/vite.config.js b/vite.config.js new file mode 100644 index 0000000..afedf3b --- /dev/null +++ b/vite.config.js @@ -0,0 +1,24 @@ +const dotenvExpand = require('dotenv-expand'); +dotenvExpand(require('dotenv').config({ path: '../../.env'/*, debug: true*/})); + +import { defineConfig } from 'vite'; +import laravel from 'laravel-vite-plugin'; + +export default defineConfig({ + build: { + outDir: '../../public/build-konfirmasibank', + emptyOutDir: true, + manifest: true, + }, + plugins: [ + laravel({ + publicDirectory: '../../public', + buildDirectory: 'build-konfirmasibank', + input: [ + __dirname + '/Resources/assets/sass/app.scss', + __dirname + '/Resources/assets/js/app.js' + ], + refresh: true, + }), + ], +});