- Update 'is_dalam_kota' to true for existing branches based on suffix code
- Set 'is_dalam_kota' to false for branches not in the list
- Add new branches (ID0012005 - KORPORASI, ID0010172 - AMBON TUAL MALUKU)
- Seeder is idempotent and can be rerun safely
run this command:
php artisan module:seed Basicdata --class="UpdateBranchesIsDalamKotaSeeder"
php artisan module:seed --class="Modules\\Basicdata\\Database\\Seeders\\UpdateBranchesIsDalamKotaSeeder"
- Menambahkan properti `protected $parent_id` pada kelas **BranchExport**.
- Properti ini digunakan untuk menyimpan ID cabang induk yang akan dipakai sebagai filter saat melakukan ekspor data.
- Memastikan nilai `parent_id` diinisialisasi melalui constructor dan dideklarasikan sebagai properti kelas.
- Perbaikan ini memastikan filter berdasarkan cabang induk berfungsi dengan benar pada proses ekspor.
- Mendukung konsistensi data pada ekspor **Excel/CSV** dengan filter yang akurat.
- Meningkatkan keandalan fitur ekspor cabang dalam modul laporan.
- Mengoptimalkan integrasi antara fitur filter dan proses ekspor.
- Memperbaiki potensi bug yang muncul akibat properti tidak dideklarasikan.
- Menjamin proses ekspor lebih stabil dan sesuai dengan parameter yang diberikan.
- Mengoptimalkan middleware autentikasi di controller berikut:
- `BranchController`, `CurrencyController`, dan `HolidayCalendarController`.
- Mengganti penggunaan `Auth::guard('web')->user()` menjadi middleware `auth`.
- Menambahkan middleware closure untuk menetapkan properti `$this->user` setelah middleware `auth`.
- Penyesuaian pada semua pemanggilan terkait autentikasi pengguna untuk menggunakan `$this->user`.
- Refaktor `PermissionSeeder`:
- Menghapus metode `crudActions` beserta logika iterasi CRUD yang tidak digunakan.
- Menyederhanakan proses seeding untuk model `PermissionGroup` dengan `updateOrCreate`.
- Menghilangkan logika assignment izin dari seeder untuk mempercepat proses seeding.
- Menambahkan `PermissionSeeder` untuk inisialisasi data izin dengan struktur CRUD pada modul Basicdata.
- Data izin mencakup tindakan seperti `create`, `read`, `update`, `delete`, `export`, `authorize`, `report`, dan `restore`.
- Menyediakan relasi dengan grup izin menggunakan model `PermissionGroup`.
- Memanggil `PermissionSeeder` di `BasicdataDatabaseSeeder` untuk memastikan data izin terpasang saat proses seeding.
- Mengoptimalkan autentikasi pengguna di konstruktor controller:
- Mengganti logika middleware pada `BranchController`, `CurrencyController`, dan `HolidayCalendarController` dengan properti `$this->user`.
- Menggunakan `Auth::guard('web')->user()` sebagai standar pengelolaan autentikasi.
- Menghapus middleware yang tidak diperlukan demi meningkatkan kinerja kode.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- Mengganti namespace trait `Userstamps` dari `Wildside\Userstamps\Userstamps` ke `Mattiverse\Userstamps\Traits\Userstamps`.
- Perubahan ini bertujuan untuk menyesuaikan penggunaan namespace dengan struktur library terbaru.
- Menghapus import `Spatie\Activitylog\Facades\CauserResolver` yang tidak digunakan untuk merapikan kode.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- Mengganti namespace trait `Userstamps` dari `Wildside\Userstamps\Userstamps` menjadi `Mattiverse\Userstamps\Traits\Userstamps`.
- Penyesuaian ini bertujuan untuk memastikan kompatibilitas sistem dengan dependensi atau library terbaru.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- Menambahkan kolom baru pada tabel `branches` melalui migrasi:
- `address`
- `mnemonic`
- `customer_company`
- `customer_mnemonic`
- `company_group`
- `curr_no`
- `co_code`
- `l_vendor_atm`
- `l_vendor_cpc`
- Memperbarui model `Branch` agar mendukung kolom baru di properti `fillable`.
- Menambahkan dukungan pencarian berdasarkan kolom `address` pada:
- `BranchExport.php` (untuk ekspor data)
- `BranchController.php` (untuk API pencarian data cabang)
- Memperbarui tampilan daftar cabang (`branch/index.blade.php`) untuk menampilkan kolom `address`.
- Memperbarui format data ekspor cabang dengan menambahkan kolom `address`.
- Memperbaiki pengaturan format kolom tanggal pada data ekspor.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- Menambahkan kemampuan pencarian pada fitur ekspor Holiday Calendar.
- Mengubah konstruktor `HolidayCalendarExport` untuk menerima parameter `search` yang bersifat opsional.
- Menyesuaikan query pengambilan data pada `HolidayCalendarExport` agar mendukung filter berdasarkan:
- Deskripsi (`description`).
- Tipe (`type`).
- Tanggal (`date`).
- Memperbaiki logika perhitungan halaman aktif pada pagination di `HolidayCalendarController`.
- Menambahkan parameter `search` pada fungsi `export` di `HolidayCalendarController`.
- Memperbarui URL export pada tampilan `index.blade.php` ketika input pencarian diubah.
- Menambahkan fungsi JavaScript `updateExportUrl()` untuk menyisipkan filter pencarian pada URL ekspor.
- Menjamin tidak ada perubahan URL ekspor jika pencarian kosong.
Fitur ini memungkinkan pengguna untuk mengekspor data kalender libur berdasarkan hasil pencarian spesifik.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- Modifikasi `CurrencyController`:
- Tambahkan parameter `Request` pada method `export` untuk menerima input filter `search`.
- Perbarui logika ekspor agar mendukung pencarian berbasis parameter `search`.
- Perubahan pada `CurrencyExport`:
- Tambahkan konstruktor untuk menerima dan menyimpan parameter pencarian (`search`).
- Modifikasi query pada method `collection` untuk menambahkan filter berdasarkan `code`, `name`, atau `decimal_places` yang sesuai dengan parameter `search`.
- Hapus kolom `updated_at` dan `deleted_at` dari output ekspor.
- Perbaikan format data pada method `columnFormats`.
- Update pada view `currency/index.blade.php`:
- Tambahkan elemen JavaScript untuk mengatur URL parameter `search` pada tombol ekspor.
- Ganti event `change` pada input pencarian dengan `input` untuk meningkatkan respon pencarian secara real-time.
- Pastikan URL ekspor diperbarui setiap kali pengguna mengetik dalam kolom pencarian.
- Penyesuaian minor pada `branch/index.blade.php`:
- Hapus log yang tidak relevan sebelum proses ekspor.
Fitur ini memastikan proses ekspor data mata uang dapat disaring berdasarkan pencarian spesifik, memberikan fleksibilitas lebih kepada pengguna.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- Menambahkan parameter `search` dan `parent_id` pada `BranchExport` untuk mendukung fitur filter.
- Memodifikasi method `collection` di `BranchExport` agar mendukung filter pencarian dan parent cabang.
- Memperbaiki issue pada method `collection` terkait penggunaan query `LOWER` untuk pencarian.
- Mengubah method `export` di `BranchController` agar menerima parameter filter dari request.
- Menambahkan logika filtering untuk `search` dan `parent_id` pada method index API `BranchController`.
- Menambahkan dropdown filter parent di tampilan `branch/index.blade.php`.
- Implementasi JavaScript di `branch/index.blade.php` untuk mendukung filter pencarian dan parent cabang.
- Menambahkan logika sinkronisasi URL eksport dengan parameter filter.
- Menambahkan event listener untuk filter pencarian dan dropdown parent.
- Menambahkan validasi agar filter diterapkan ke datatable dan URL eksport secara dinamis.
- Memperbaiki penghitungan halaman pagination di datatable.
- Penyesuaian minor pada model Branch dan cara logging aktivitas di model Base.
Fitur ini memungkinkan pengguna melakukan filter data cabang berdasarkan pencarian dan parent cabang saat menampilkan tabel ataupun mengekspor data ke Excel.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- Menambahkan kolom `parent_id` pada tabel `branches` dengan migrasi baru.
- Update model `Branch`:
- Menambahkan relasi `parent()` untuk mendapatkan cabang induk.
- Menambahkan relasi `children()` untuk mendapatkan anak cabang.
- Update `BranchController`:
- Menampilkan daftar cabang induk saat membuat atau mengedit cabang.
- Cek validasi agar cabang tidak bisa menjadi induk dirinya sendiri.
- Tambahkan larangan hapus cabang jika memiliki anak cabang, baik untuk hapus tunggal maupun multiple.
- Update validation rules pada `BranchRequest` untuk memastikan validitas `parent_id`.
- Update tampilan:
- Formulir pembuatan/edit cabang: Menampilkan dropdown untuk memilih cabang induk.
- Daftar cabang: Menampilkan kolom untuk cabang induk.
- Tambahkan test unit:
- Validasi relasi parent-child pada penyimpanan dan pembaruan cabang.
- Melarang penghapusan cabang yang memiliki anak.
- Memastikan perilaku relasi parent-child sesuai ekspektasi.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- Memindahkan autentikasi user dari metode `getUser` ke properti `user` di konstruktor controller.
- Mengganti semua pemanggilan metode `getUser` dengan properti `$this->user`.
- Memastikan validasi hak akses user menggunakan properti `$this->user` di seluruh fungsi controller:
- `BranchController`
- `CurrencyController`
- `HolidayCalendarController`.
- Menghapus rute restore yang tidak digunakan pada Branch dan Currency.
- Menggunakan `Route::resource` untuk HolidayCalendarController agar lebih ringkas.
- Menambahkan dependensi `use Illuminate\Support\Facades\Auth` pada HolidayCalendarController demi konsistensi autentikasi.
Perubahan ini bertujuan untuk menyederhanakan pengelolaan user dan meningkatkan konsistensi autentikasi dalam modul.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- Mengganti namespace model `HolidayCalendar` dari `Entities` ke `Models`.
- Menambahkan validasi izin untuk semua aksi CRUD dan ekspor pada `HolidayCalendarController`.
- Mengintegrasikan fitur izin pada tombol aksi (create, update, delete, export) di view `index.blade.php`.
- Mengupdate logika form view `create.blade.php` untuk mendukung pengelolaan izin dan action dinamis.
- Menambahkan class test `HolidayCalendarControllerTest` dengan pengujian lengkap mencakup:
- Hak akses untuk membaca, membuat, memperbarui, menghapus, dan mengekspor data.
- Validasi data saat penyimpanan/pembaruan.
- Validasi respon HTTP untuk setiap aksi berdasarkan izin.
- Memastikan user tanpa izin akan menerima pesan atau pembatasan akses yang relevan (HTTP 403).
- Fitur ekspor CSV hanya dapat diakses oleh user dengan izin `basic-data.export`.
- Memperbaiki rendering tindakan pada data tabel di `index.blade.php` agar responsif terhadap izin user.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- Implementasi otorisasi berbasis peran untuk seluruh aksi di BranchController seperti index, create, store, edit, update, delete, dan export.
- Tambahan utilitas `getUser` untuk mendapatkan pengguna yang diautentikasi dan mempermudah pengecekan otorisasi.
- Semua aksi pada controller sekarang memeriksa izin pengguna sebelum melanjutkan:
- `basic-data.read` untuk melihat data.
- `basic-data.create` untuk membuat cabang baru.
- `basic-data.update` untuk memperbarui data cabang.
- `basic-data.delete` untuk menghapus data cabang.
- `basic-data.export` untuk mengekspor data cabang.
- Penyesuaian pada view:
- Tombol aksi seperti `Save`, `Delete Selected`, dan `Export to Excel` hanya tampil jika pengguna memiliki izin terkait.
- Tambahan pengujian (unit test) pada `BranchControllerTest` untuk memastikan logika otorisasi:
- Pengguna dengan izin dapat melakukan aksi sesuai dengan perannya.
- Pengguna tanpa izin mendapatkan respon 403 atau dicegah melakukan aksi tertentu.
- Update logika tombol aksi di datatables untuk mendukung pengecekan izin sebelum menampilkan opsi edit/hapus.
- Update respons JSON dalam aksi hapus tunggal dan hapus banyak untuk kejelasan struktur pesan.
Commit ini mengamankan BranchController dari akses tak sah dan meningkatkan fleksibilitas sistem terkait kendali peran dan izin.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- Menambahkan validasi Role-based Access Control (RBAC) untuk tindakan CRUD mata uang:
1. Validasi untuk `read`, `create`, `update`, dan `delete` pada CurrencyController.
2. Menambahkan metode `getUser()` untuk memperoleh user terautentikasi.
3. Menangani respon dengan HTTP status `403 Forbidden` jika tidak memiliki izin.
- Memperbaiki rute dan logika `store` serta `update`:
1. Validasi terhadap atribut `code` disesuaikan dengan skenario update (menggunakan ID).
2. Menambahkan metode `authorize()` pada CurrencyRequest untuk memastikan izin aksi sesuai role (CRUD spesifik).
- Perubahan pada view blade:
1. Menambahkan validasi izin sebelum rendering tombol `Tambah`, `Hapus`, `Export`, dan `Edit`.
2. Menambahkan logika dinamis untuk izin terkait.
- Tambahan logika pada export ke Excel:
1. Validasi izin untuk `basic-data.export` sebelum mengunduh file.
- Test Feature dengan PHPUnit:
1. Menambahkan test coverage untuk tindakan CRUD, validasi izin role, dan ekspor data.
2. Menggunakan database segar dengan RefreshDatabase.
- Refactor penggunaan model Currency di `CurrencyExport` agar sesuai namespace setelah modifikasi.
- Respon di `destroy` dan `deleteMultiple` dikembalikan dalam format JSON untuk standardisasi.
- Memastikan test mencakup berbagai skenario:
1. User dengan izin vs tanpa izin.
2. Operasi data valid dan tidak valid.
Penyesuaian ini meningkatkan keamanan dan manajemen peran pada modul Currency, serta memastikan pengujian yang mendalam terhadap semua fitur baru.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- Menambahkan helper `workingDays` untuk menghitung jumlah hari kerja antara dua tanggal.
- Menambahkan helper `holidays` untuk mendapatkan daftar tanggal libur.
- Memperbarui fungsi `format_currency` menjadi `currencyFormat` dengan menambahkan dokumentasi yang lebih jelas.
- Mengubah format desimal mata uang IDR menjadi 2 desimal di `CurrencySeeder`.
- Menambahkan file `HolidayCalendar.php` ke dalam daftar autoload di `module.json`.
- Menambahkan proses truncate sebelum insert data di seeder `CurrencySeeder`.
- Menambahkan file helper `Currency.php` untuk format mata uang.
- Menyediakan fungsi `format_currency` yang mendukung parameter angka dan kode mata uang.
- Memperbarui `module.json` untuk memuat file helper secara otomatis.
- Ubah perhitungan jumlah halaman untuk menggunakan jumlah record yang difilter.
- Sesuaikan pengambilan nomor halaman saat ini dari request.
- Ganti event listener pencarian dari 'input' menjadi 'change' untuk meningkatkan performa.
- Tambahkan pemanggilan fungsi untuk mengatur ulang halaman ke 1 saat pencarian dilakukan.
- Menambahkan seeder untuk mengisi tabel holiday_calendars dengan data libur nasional dan cuti bersama tahun 2025.
- Setiap entri mencakup tanggal, deskripsi, jenis libur, serta timestamp untuk created_at dan updated_at.
- Menambahkan seeder baru untuk mengisi tabel currencies dengan data mata uang.
- Memperbarui daftar mata uang dengan simbol dan detail lainnya.
- Menggunakan Carbon untuk timestamp created_at dan updated_at.
- Menambahkan kelas BranchesSeeder untuk mengisi tabel branches.
- Menggunakan Carbon untuk menetapkan waktu pembuatan dan pembaruan.
- Memasukkan data cabang dengan atribut kode, nama, status, dan timestamp.
- Menambahkan kolom simbol pada tabel mata uang di halaman index.
- Menambahkan input simbol pada form pembuatan mata uang.
- Memperbarui aturan validasi untuk simbol pada CurrencyRequest.
- Memperbarui model Currency untuk menyertakan atribut simbol.
- Memperbarui migrasi untuk menambahkan kolom simbol pada tabel currencies.
- Memperpanjang panjang maksimum kode cabang dari 3 menjadi 10 karakter.
- Menggunakan aturan unik yang mempertimbangkan kolom deleted_at untuk menghindari konflik dengan cabang yang dihapus.
- Mengubah namespace model Branch dari Modules\Lpj\Models\Branch
menjadi Modules\Basicdata\Models\Branch
- Memastikan ekspor data cabang menggunakan model yang benar
- Mengubah pesan konfirmasi dari 'User has been deleted.' menjadi 'Branch has been deleted.'
- Memastikan pesan yang ditampilkan sesuai dengan konteks penghapusan data cabang.
- Menambahkan kelas `text-primary` pada atribut ikon di menu `Basic Data` dalam file `module.json`.
- Perubahan ini bertujuan untuk meningkatkan styling visual dengan warna ikon yang lebih menonjol (`text-primary`).
- Tidak ada logika atau fungsi lain yang terdampak oleh perubahan ini.
- Menambahkan endpoint `deleteMultiple` di HolidayCalendarController untuk menghapus beberapa data hari libur sekaligus.
- Menambahkan tombol "Delete Selected" di halaman index holiday calendar, yang terlihat hanya jika ada data yang dipilih.
- Implementasi logika JavaScript untuk menangani pemilihan baris, visibilitas tombol, dan penghapusan data dengan AJAX.
- Memperbarui file `web.php` untuk menambahkan rute POST baru `delete-multiple` guna mendukung fitur ini.
- Menambahkan endpoint `deleteMultiple` pada CurrencyController untuk menghapus beberapa data secara bersamaan.
- Memperbarui tampilan index mata uang untuk mendukung fungsi hapus batch, termasuk tombol "Delete Selected".
- Menambahkan logika pada JavaScript untuk menangani penghapusan batch menggunakan AJAX.
- Memperbarui visibilitas tombol hapus berdasarkan checkbox yang dipilih pada tabel.
- Menambahkan route baru untuk endpoint `deleteMultiple` pada BranchController.
- Update BranchController dengan fungsi `deleteMultiple` untuk menghapus banyak data cabang berdasarkan ID yang diterima.
- Menambahkan tombol "Delete Selected" di halaman cabang untuk memulai proses penghapusan.
- Menambahkan fungsi JavaScript untuk menangani seleksi data, konfirmasi penghapusan menggunakan SweetAlert, dan pengiriman data menggunakan Ajax.
- Memperbarui tampilan untuk mendukung penghapusan multiple dengan kontrol visibilitas tombol "Delete Selected".
Mengubah atribut `data-datatable-page-size` dari nilai default 5 menjadi 10 pada tabel di view `branch`, `currency`, dan `holidaycalendar`. Perubahan ini ditujukan untuk menampilkan lebih banyak data secara default di tiap tabel, sehingga meningkatkan pengalaman pengguna.
Menghapus peran "pemohon-ao", "pemohon-eo", dan "surveyor", serta menyederhanakan daftar ke peran "admin" pada beberapa bagian. Menambahkan peran "admin" sebagai pelengkap pada entitas dengan peran "administrator".
Mengubah `holidayCalendar` menjadi `holiday` di variable form untuk konsistensi.
Juga memperbaiki rute `href` pada view index agar sesuai dengan rute yang benar.
Menghapus duplikasi kode dalam fungsi `up` di file migrasi `create_holiday_calendars_table.php`. Kode yang ada sebelumnya memiliki nested `Schema::create` yang tidak diperlukan. Dengan perubahan ini, kode menjadi lebih jelas dan bersih tanpa adanya duplikasi yang membingungkan.
Menambahkan routing dan breadcrumbs untuk modul kalender hari libur. Ditambahkan HolidayCalendarController dengan metode index, create, store, edit, update, dan destroy, serta endpoints untuk datatables dan export.
Telah ditambahkan halaman baru untuk pembuatan (create.blade.php) dan daftar (index.blade.php) hari libur. Halaman pembuatan mencakup form untuk menambah atau mengedit hari libur, sementara halaman daftar mendukung fitur pencarian dan penghapusan data hari libur.
Menambahkan controller baru HolidayCalendarController untuk mengelola kalender liburan. Fitur yang disertakan: create, read, update, delete, pengelolaan data dengan pagination dan sorting, serta ekspor data ke format Excel.
Menambahkan kelas `HolidayCalendarExport` yang mengimplementasikan berbagai antarmuka dari Maatwebsite Excel untuk mendukung ekspor data kalender libur. Data yang diekspor mencakup ID, tanggal, deskripsi, tipe, dan tanggal pembuatan serta pembaruan dengan format kolom yang sesuai.
Membuat file request baru HolidayCalendarRequest untuk validasi input pada form penambahan kalender liburan. Request ini memeriksa keabsahan data tanggal, deskripsi, dan tipe yang diperbolehkan ('national_holiday' atau 'collective_leave'). Pesan kustom ditambahkan untuk menangani kesalahan validasi.
Menambahkan model HolidayCalendar untuk menangani kalender liburan di modul Basicdata. Model ini dilengkapi dengan atribut yang mass assignable seperti 'date', 'description', dan 'type', serta pengaturan untuk casting atribut 'date' sebagai tipe tanggal.
Menambahkan file migrasi untuk membuat tabel "holiday_calendars" yang menyimpan informasi tanggal libur beserta deskripsi dan jenisnya (libur nasional atau cuti bersama). Tabel ini juga memiliki kolom untuk pencatatan waktu pembuatan, update, soft delete, serta pencatatan pengguna yang melakukan perubahan.