From 19c962307e537fefabdcf6045b6de3aebe1d1ef5 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Sun, 22 Jun 2025 20:57:24 +0700 Subject: [PATCH] feat(webstatement): tambahkan fitur multi-branch dan perbaikan validasi form pada halaman statements - **Penambahan Fitur Multi-Branch:** - Tambahkan dropdown pilihan cabang (branch) saat fitur multi-branch diaktifkan. - Secara otomatis mengisi informasi branch jika hanya tersedia satu branch yang terkait dengan user. - **Perbaikan Validasi Form:** - Memastikan field `account_number` dan `branch_id` memiliki validasi yang lebih ketat. - Tambahkan validasi untuk `period_from` agar hanya menerima data periode yang tersedia (`is_available`). - **Perubahan Tampilan:** - Menyesuaikan desain form: - Tambahkan kondisi dynamic display pada field branch berdasarkan status multi-branch. - Reformat struktur HTML untuk meningkatkan keterbacaan dengan indentasi lebih konsisten. - Perbaikan tampilan elemen tabel pada daftar request statement: - Mengoptimalkan style menggunakan properti CSS baru pada grid dan typography. - **Optimasi Query dan Akses Data:** - Tambahkan filter berdasarkan `branch_code` agar data hanya terlihat untuk cabang yang relevan dengan user. - Optimalkan pengambilan data branch dengan hanya memuat cabang yang aktif. - **Peningkatan Logging:** - Tambahkan log pada pengolahan query untuk mendeteksi masalah akses branch saat user tidak memiliki akses multi-branch. - **Refaktor Backend:** - Tambahkan variable `multiBranch` pada controller untuk mengatur logika UI secara dinamis. - Refaktor pencarian branch di server-side untuk mengantisipasi session `MULTI_BRANCH`. Perubahan ini mendukung fleksibilitas akses cabang untuk user dengan mode multi-branch serta meningkatkan validasi dan pengalaman UI form. Signed-off-by: Daeng Deni Mardaeni --- .../Controllers/PrintStatementController.php | 10 +- app/Http/Requests/PrintStatementRequest.php | 1 + resources/views/statements/index.blade.php | 161 +++++++++++------- 3 files changed, 107 insertions(+), 65 deletions(-) diff --git a/app/Http/Controllers/PrintStatementController.php b/app/Http/Controllers/PrintStatementController.php index 1049af9..858438c 100644 --- a/app/Http/Controllers/PrintStatementController.php +++ b/app/Http/Controllers/PrintStatementController.php @@ -30,7 +30,10 @@ ->orderBy('name') ->get(); - return view('webstatement::statements.index', compact('branches')); + $branch = Branch::find(Auth::user()->branch_id); + $multiBranch = session('MULTI_BRANCH') ?? false; + + return view('webstatement::statements.index', compact('branches', 'branch', 'multiBranch')); } /** @@ -341,7 +344,10 @@ $query = PrintStatementLog::query(); if (!auth()->user()->hasRole('administrator')) { - $query->where('user_id', Auth::id()); + $query->where(function($q) { + $q->where('user_id', Auth::id()) + ->orWhere('branch_code', Auth::user()->branch->code); + }); } // Apply search filter if provided diff --git a/app/Http/Requests/PrintStatementRequest.php b/app/Http/Requests/PrintStatementRequest.php index c6d4698..c39803f 100644 --- a/app/Http/Requests/PrintStatementRequest.php +++ b/app/Http/Requests/PrintStatementRequest.php @@ -35,6 +35,7 @@ class PrintStatementRequest extends FormRequest function ($attribute, $value, $fail) { $query = Statement::where('account_number', $this->input('account_number')) ->where('authorization_status', '!=', 'rejected') + ->where('is_available', true) ->where('period_from', $value); // If this is an update request, exclude the current record diff --git a/resources/views/statements/index.blade.php b/resources/views/statements/index.blade.php index 0546ca2..88cc931 100644 --- a/resources/views/statements/index.blade.php +++ b/resources/views/statements/index.blade.php @@ -11,26 +11,59 @@

Request Print Stetement

-
+ @csrf - @if(isset($statement)) + @if (isset($statement)) @method('PUT') @endif
+ + @if ($multiBranch) +
+ + + @error('branch_id') +
{{ $message }}
+ @enderror +
+ @else +
+ + + +
+ @endif +
- + @error('account_number') -
{{ $message }}
+
{{ $message }}
@enderror
-
+ @@ -38,24 +71,21 @@ + type="month" name="period_from" + value="{{ $statement->period_from ?? old('period_from') }}" + max="{{ date('Y-m', strtotime('-1 month')) }}"> @error('period_from') - {{ $message }} + {{ $message }} @enderror
- + @error('period_to') - {{ $message }} + {{ $message }} @enderror
@@ -70,8 +100,9 @@
-
-
+
+

Daftar Statement Request

@@ -85,51 +116,54 @@
- +
- - - - - - - - - - - + + + + + + + + + + +
- - - ID - - - Branch - - - Account Number - - - Period - - - Available - - - Notes - - - Created At - - Action
+ + + ID + + + Branch + + + Account Number + + + Period + + + Available + + + Notes + + + Created At + + Action
-