diff --git a/app/Http/Controllers/NocController.php b/app/Http/Controllers/NocController.php
index 48f685b..1f24819 100644
--- a/app/Http/Controllers/NocController.php
+++ b/app/Http/Controllers/NocController.php
@@ -19,9 +19,20 @@
* Display a listing of the resource.
*/
public function index()
+ {
+ return redirect()->route('noc.pembayaran');
+ }
+
+ public function pembayaran()
{
$persetujuanPenawarans = PersetujuanPenawaran::all();
- return view('lpj::noc.index', compact('persetujuanPenawarans'));
+ return view('lpj::noc.pembayaran', compact('persetujuanPenawarans'));
+ }
+
+ public function penyelesaian()
+ {
+ $persetujuanPenawarans = PersetujuanPenawaran::all();
+ return view('lpj::noc.penyelesaian', compact('persetujuanPenawarans'));
}
/**
@@ -131,6 +142,7 @@
$noc = Noc::updateOrCreate(
[
+ 'permohonan_id' => $validated['permohonan_id'],
'permohonan_id' => $validated['permohonan_id'],
'persetujuan_penawaran_id' => $validated['persetujuan_penawaran_id'],
],
@@ -190,6 +202,12 @@
}
public function dataForDatatables(Request $request)
+ {
+ // Redirect to pembayaran datatables by default
+ return $this->dataForDatatablesPembayaran($request);
+ }
+
+ public function dataForDatatablesPembayaran(Request $request)
{
if (is_null($this->user) || !$this->user->can('noc.view')) {
//abort(403, 'Sorry! You are not allowed to view persetujuan penawaran.');
@@ -198,6 +216,11 @@
// Retrieve data from the database
$query = PersetujuanPenawaran::query();
+ // Filter for pembayaran (where memo_penyelesaian is null)
+ $query->whereDoesntHave('noc', function($q) {
+ $q->whereNotNull('memo_penyelesaian');
+ });
+
// Apply search filter if provided
if ($request->has('search') && !empty($request->get('search'))) {
$search = $request->get('search');
@@ -243,11 +266,97 @@
),
'nominal_bayar' => currencyFormat($persetujuanPenawaran->nominal_bayar ?? 0,
),
- 'nominal_diterima' => currencyFormat(
+ 'nominal_diterima' => currencyFormat(
$persetujuanPenawaran->noc->nominal_bayar ?? 0,
),
'bukti_ksl' => $persetujuanPenawaran->noc->bukti_ksl ?? $persetujuanPenawaran->bukti_ksl ?? null,
- 'bukti_bayar' => $persetujuanPenawaran->bukti_bayar ?? null,
+ 'bukti_bayar' => $persetujuanPenawaran->bukti_bayar ?? null,
+ 'updated_at' => dateFormat($persetujuanPenawaran->updated_at, true),
+ ];
+ })->sortBy('updated_at', 1);
+
+ // Calculate the page count
+ $pageCount = ceil($totalRecords / $request->get('size'));
+
+ // Calculate the current page number
+ $currentPage = $request->get('page', 1);
+
+ // Return the response data as a JSON object
+ return response()->json([
+ 'draw' => $request->get('draw'),
+ 'recordsTotal' => $totalRecords,
+ 'recordsFiltered' => $filteredRecords,
+ 'pageCount' => $pageCount,
+ 'page' => $currentPage,
+ 'totalCount' => $totalRecords,
+ 'data' => $data,
+ ]);
+ }
+
+ public function dataForDatatablesPenyelesaian(Request $request)
+ {
+ if (is_null($this->user) || !$this->user->can('noc.view')) {
+ //abort(403, 'Sorry! You are not allowed to view persetujuan penawaran.');
+ }
+
+ // Retrieve data from the database
+ $query = PersetujuanPenawaran::query();
+
+ // Filter for penyelesaian (where memo_penyelesaian is not null)
+ $query->whereHas('noc', function($q) {
+ $q->whereNotNull('memo_penyelesaian');
+ });
+
+ // Apply search filter if provided
+ if ($request->has('search') && !empty($request->get('search'))) {
+ $search = $request->get('search');
+ $query->where(function ($q) use ($search) {
+ $q->orWhereRelation('penawaran', 'nomor_registrasi', 'LIKE', '%' . $search . '%');
+ });
+ }
+
+ // Apply sorting if provided
+ if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) {
+ $order = $request->get('sortOrder');
+ $column = $request->get('sortField');
+ $query->orderBy($column, $order);
+ }
+
+ // Get the total count of records
+ $totalRecords = $query->count();
+
+ // Apply pagination if provided
+ if ($request->has('page') && $request->has('size')) {
+ $page = $request->get('page');
+ $size = $request->get('size');
+ $offset = ($page - 1) * $size; // Calculate the offset
+
+ $query->skip($offset)->take($size);
+ }
+
+ // Get the filtered count of records
+ $filteredRecords = $query->count();
+
+ // Get the data for the current page
+ $data = $query->get();
+
+ $data = $data->map(function ($persetujuanPenawaran) {
+ return [
+ 'id' => $persetujuanPenawaran->id,
+ 'nomor_registrasi' => $persetujuanPenawaran->permohonan->nomor_registrasi ?? $persetujuanPenawaran->penawaran->nomor_registrasi,
+ 'nama_debitur' => $persetujuanPenawaran->permohonan->debiture->name ?? $persetujuanPenawaran->penawaran->permohonan->debiture->name,
+ 'cabang' => $persetujuanPenawaran->permohonan->branch->name ?? $persetujuanPenawaran->penawaran->permohonan->branch->name,
+ 'tanggal_pembayaran' => dateFormat(
+ $persetujuanPenawaran->noc->tanggal_pembayaran ?? $persetujuanPenawaran->noc?->created_at,
+ true,
+ ),
+ 'nominal_bayar' => currencyFormat($persetujuanPenawaran->nominal_bayar ?? 0,
+ ),
+ 'nominal_diterima' => currencyFormat(
+ $persetujuanPenawaran->noc->nominal_bayar ?? 0,
+ ),
+ 'bukti_ksl' => $persetujuanPenawaran->noc->bukti_ksl ?? $persetujuanPenawaran->bukti_ksl ?? null,
+ 'bukti_bayar' => $persetujuanPenawaran->bukti_bayar ?? null,
'memo_penyelesaian' => $persetujuanPenawaran->noc->memo_penyelesaian ?? $persetujuanPenawaran->memo_penyelesaian ?? null,
'nominal_penyelesaian' => currencyFormat(
$persetujuanPenawaran->noc->nominal_penyelesaian ?? $persetujuanPenawaran->nominal_penyelesaian ?? 0,
diff --git a/module.json b/module.json
index bf9626d..7b1f5f6 100644
--- a/module.json
+++ b/module.json
@@ -265,13 +265,39 @@
{
"title": "NOC",
"path": "noc",
- "icon": "ki-filled ki-two-credit-cart text-lg text-primary",
+ "icon": "ki-filled ki-briefcase text-lg text-primary",
"classes": "",
"attributes": [],
"permission": "",
"roles": [
"administrator",
- "noc"
+ "admin"
+ ],
+ "sub": [
+ {
+ "title": "Pembayaran",
+ "path": "noc.pembayaran",
+ "icon": "ki-filled ki-two-credit-cart text-lg text-primary",
+ "classes": "",
+ "attributes": [],
+ "permission": "",
+ "roles": [
+ "administrator",
+ "noc"
+ ]
+ },
+ {
+ "title": "Penyelesaian",
+ "path": "noc.penyelesaian",
+ "icon": "ki-filled ki-two-credit-cart text-lg text-primary",
+ "classes": "",
+ "attributes": [],
+ "permission": "",
+ "roles": [
+ "administrator",
+ "noc"
+ ]
+ }
]
},
{
diff --git a/resources/views/noc/pembayaran.blade.php b/resources/views/noc/pembayaran.blade.php
new file mode 100644
index 0000000..aca056b
--- /dev/null
+++ b/resources/views/noc/pembayaran.blade.php
@@ -0,0 +1,198 @@
+@extends('layouts.main')
+
+@section('breadcrumbs')
+ {{ Breadcrumbs::render('noc.pembayaran') }}
+@endsection
+
+@section('content')
+
+
+ @endsection
+
+ @push('scripts')
+
+
+
+ @endpush
diff --git a/resources/views/noc/penyelesaian.blade.php b/resources/views/noc/penyelesaian.blade.php
new file mode 100644
index 0000000..3b6b9e5
--- /dev/null
+++ b/resources/views/noc/penyelesaian.blade.php
@@ -0,0 +1,244 @@
+@extends('layouts.main')
+
+@section('breadcrumbs')
+ {{ Breadcrumbs::render('noc.penyelesaian') }}
+@endsection
+
+@section('content')
+
+
+ @endsection
+
+ @push('scripts')
+
+
+
+ @endpush
diff --git a/routes/breadcrumbs.php b/routes/breadcrumbs.php
index 2e9f08c..fc822e6 100644
--- a/routes/breadcrumbs.php
+++ b/routes/breadcrumbs.php
@@ -673,16 +673,19 @@ Breadcrumbs::for('noc', function (BreadcrumbTrail $trail) {
$trail->push('NOC', route('noc.index'));
});
+Breadcrumbs::for('noc.pembayaran', function (BreadcrumbTrail $trail) {
+ $trail->push('NOC Pembayaran', route('noc.pembayaran.index'));
+});
+
+Breadcrumbs::for('noc.penyelesaian', function (BreadcrumbTrail $trail) {
+ $trail->push('NOC Penyelesaian', route('noc.penyelesaian.index'));
+});
+
Breadcrumbs::for('noc.edit', function (BreadcrumbTrail $trail) {
$trail->parent('noc');
$trail->push('Proses NOC');
});
- Breadcrumbs::for('noc.penyelesaian', function (BreadcrumbTrail $trail) {
- $trail->parent('noc');
- $trail->push('Proses Memo Penyelesaian NOC');
- });
-
Breadcrumbs::for('laporan-external', function (BreadcrumbTrail $trail) {
$trail->push('Laporan External', route('laporan-external.index'));
});
diff --git a/routes/web.php b/routes/web.php
index d04fe9a..14fd007 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -654,9 +654,14 @@ Route::middleware(['auth'])->group(function () {
Route::get('noc/datatables', [NocController::class, 'dataForDatatables'])
->name('noc.datatables');
- Route::get('noc/penyelesaian',[NocController::class, 'show'])->name('noc.penyelesaian');
- Route::post('noc/penyelesaian',[NocController::class, 'penyelesaian'])->name('noc.store.penyelesaian');
+ Route::get('noc/datatables/pembayaran', [NocController::class, 'dataForDatatablesPembayaran'])
+ ->name('noc.datatables.pembayaran');
+ Route::get('noc/datatables/penyelesaian', [NocController::class, 'dataForDatatablesPenyelesaian'])
+ ->name('noc.datatables.penyelesaian');
+ Route::get('noc/pembayaran', [NocController::class, 'pembayaran'])->name('noc.pembayaran.index');
+ Route::get('noc/penyelesaian', [NocController::class, 'penyelesaian'])->name('noc.penyelesaian.index');
+ Route::post('noc/penyelesaian',[NocController::class, 'penyelesaian'])->name('noc.store.penyelesaian');
Route::resource('noc', NocController::class);