Commit Graph

61 Commits

Author SHA1 Message Date
Daeng Deni Mardaeni
c0e5ddd37a perf(webstatement): optimasi performa GenerateClosingBalanceReportJob dengan database staging
Perubahan yang dilakukan:
- Menambahkan model `ProcessedClosingBalance` untuk menyimpan data sementara laporan closing balance
- Membuat migration `processed_closing_balances` dengan 26 kolom dan index komposit untuk query optimal
- Mengganti proses langsung ekspor ke CSV menjadi dua tahap:
  * Tahap 1: Proses dan simpan data ke DB secara bertahap melalui `processAndSaveClosingBalanceData()`
  * Tahap 2: Ekspor data dari DB ke CSV via `exportFromDatabaseToCsv()`
- Menambahkan method:
  * `deleteExistingProcessedData()` untuk membersihkan data lama
  * `prepareProcessedClosingBalanceData()` untuk batch insert ke DB
  * `getProcessedRecordCount()` untuk monitoring progres
- Mengoptimalkan memori dengan menghindari akumulasi data dalam array
- Menambahkan DB transaction untuk menjamin konsistensi data selama proses
- Logging diperluas agar progres lebih mudah dipantau
- Menambahkan error handling untuk menangani kegagalan proses dengan aman

Keuntungan:
- Waktu proses menurun drastis dari 1+ jam menjadi beberapa menit
- Skalabilitas meningkat — mampu menangani jutaan record tanpa memory overload
- Data hasil olahan dapat diekspor ulang tanpa harus re-process
- Pola kerja selaras dengan `ExportStatementJob` untuk konsistensi antar modul
- Monitoring dan debugging lebih mudah melalui database dan log

Catatan tambahan:
- Tabel `processed_closing_balances` mendukung kolom `group_name` untuk segmentasi (QRIS/NON_QRIS)
- Menggunakan tipe data numerik dengan presisi untuk nilai keuangan (`amount_lcy`, `balance`, dsb)
2025-07-30 17:15:14 +07:00
Daeng Deni Mardaeni
ad9780ccd6 feat(webstatement): tambah stmt_entry_detail migrasi, model, dan job processing
Menambahkan fitur pengelolaan data stmt_entry_detail untuk integrasi transaksi dengan detail yang lebih lengkap.

Perubahan yang dilakukan:

- Membuat migrasi create_stmt_entry_detail_table dengan struktur field sesuai kebutuhan bisnis
- Menambahkan index pada kolom penting untuk meningkatkan performa query

- Membuat model StmtEntryDetail dengan relasi ke:
  - Account
  - TempFundsTransfer
  - TempTransaction
  - Teller
  - DataCapture
  - TempArrangement
- Mengimplementasikan $fillable dan $casts sesuai struktur tabel
- Menambahkan relasi untuk memudahkan integrasi antar modul

- Membuat job ProcessStmtEntryDetailDataJob untuk memproses file CSV dengan batch processing
- Mengimplementasikan chunking untuk menangani file besar secara efisien
- Membersihkan trans_reference dari karakter tidak valid sebelum penyimpanan
- Menggunakan updateOrCreate untuk mencegah duplikasi primary key
- Menggunakan database transaction untuk menjaga konsistensi data
- Menambahkan logging komprehensif untuk monitoring dan debugging
- Mengimplementasikan error handling yang robust untuk menghindari job failure tanpa informasi
- Memastikan penggunaan resource memory tetap optimal saat memproses data besar

- Menambahkan case baru di MigrasiController untuk memproses stmt_entry_detail
- Konsisten dengan pattern migrasi data yang sudah ada di sistem

Tujuan perubahan:

- Menyediakan sistem import dan pengolahan data stmt_entry_detail dengan proses yang aman dan efisien
- Memudahkan integrasi transaksi dengan detail tambahan di modul Webstatement
- Menjamin integritas data dengan penggunaan transaction, logging, dan error handling yang komprehensif
2025-07-21 11:21:42 +07:00
Daeng Deni Mardaeni
3beaf78872 feat(webstatement): implementasi job processing untuk laporan closing balance
Menambahkan fitur job processing untuk memproses laporan closing balance secara asynchronous dengan dukungan data besar.

Perubahan yang dilakukan:
- Membuat model `ClosingBalanceReportLog` untuk mencatat permintaan laporan dan status proses
- Membuat job `GenerateClosingBalanceReportJob` untuk memproses laporan closing balance di background queue
- Memodifikasi `LaporanClosingBalanceController` untuk mengintegrasikan job processing saat generate laporan
- Menambahkan migration `closing_balance_report_logs` untuk menyimpan log permintaan, path file, dan status
- Menggunakan query custom dari input user untuk pengambilan data transaksi
- Menambahkan field `closing_balance` yang dihitung otomatis (saldo awal + amount_lcy)
- Mengimplementasikan chunking data untuk memproses transaksi dalam jumlah besar secara efisien
- Menambahkan logging detail untuk memudahkan monitoring, debugging, dan audit trail
- Menggunakan database transaction untuk menjaga konsistensi data selama proses job
- Menambahkan fitur retry otomatis pada job jika terjadi kegagalan atau timeout
- Mengekspor hasil laporan ke file CSV dengan delimiter pipe `|` untuk kebutuhan integrasi sistem lain
- Menambahkan workflow approval untuk validasi laporan sebelum download
- Implementasi download tracking dan manajemen file untuk memudahkan kontrol akses

Tujuan perubahan:
- Memungkinkan pemrosesan laporan closing balance dengan jumlah data besar secara efisien dan aman
- Mengurangi beban proses synchronous pada server dengan pemanfaatan queue
- Menyediakan audit trail lengkap untuk setiap proses generate laporan
- Meningkatkan pengalaman pengguna dengan proses generate yang lebih responsif dan terkontrol
2025-07-17 19:49:22 +07:00
Daeng Deni Mardaeni
36abab1280 fix(webstatement): perbaiki nama field dari no_receipt menjadi recipt_no
Perubahan yang dilakukan:
- Mengubah nama field dari no_receipt menjadi recipt_no pada model ProcessedStatement.
- Memperbaiki nama kolom pada migrasi dari no_receipt menjadi recipt_no.
- Menyesuaikan nama index dari no_receipt ke recipt_no untuk konsistensi.
- Memperbarui method down() pada migrasi agar menghapus kolom dan index dengan nama yang benar.

File yang dimodifikasi:
- app/Models/ProcessedStatement.php: Mengubah no_receipt menjadi recipt_no pada fillable fields.
- database/migrations/2025_07_14_022029_add_no_receipt_to_processed_statements_table.php:
  - Mengubah nama kolom dan index dari no_receipt ke recipt_no.
  - Memperbaiki rollback agar konsisten dengan perubahan.

Tujuan perubahan:
- Menjaga konsistensi penamaan field dengan struktur data yang sudah ada.
- Menyesuaikan penamaan dengan field recipt_no dari relasi ft untuk mencegah potensi error mapping.
2025-07-14 10:06:00 +07:00
Daeng Deni Mardaeni
7818d1677b feat(webstatement): tambah field no_receipt pada processed_statements
Perubahan yang dilakukan:
- Menambahkan field no_receipt pada tabel processed_statements melalui migrasi baru.
- Menambahkan no_receipt ke dalam fillable array di model ProcessedStatement.
- Mengintegrasikan field recipt_no dari relasi ft ke dalam data yang disimpan di processed_statements.
- Menambahkan kolom NO.RECEIPT pada header CSV export statement.
- Menyertakan data recipt_no ke dalam output CSV export statement.
- Mengomentari kode yang sebelumnya menambahkan receipt number ke narrative description untuk menghindari duplikasi.
- Menggunakan nilai default '-' jika recipt_no tidak tersedia.

File yang dimodifikasi:
- app/Jobs/ExportStatementJob.php: Menambahkan mapping recipt_no ke no_receipt, update header CSV, dan menyertakan data dalam export.
- app/Models/ProcessedStatement.php: Menambahkan no_receipt ke fillable fields.
- Modules/Webstatement/database/migrations/2025_07_14_022029_add_no_receipt_to_processed_statements_table.php: Menambahkan kolom no_receipt di database.

Tujuan perubahan:
- Memisahkan nomor receipt transaksi dari narrative description untuk kemudahan pelaporan dan audit.
- Memberikan fleksibilitas lebih dalam pengolahan data statement, khususnya untuk kebutuhan export dan compliance.
2025-07-14 09:24:38 +07:00
Daeng Deni Mardaeni
5b235def37 feat(webstatement): tambah field password untuk proteksi PDF statement
Perubahan yang dilakukan:
- Menambahkan kolom password (nullable) pada tabel print_statement_logs melalui migrasi baru.
- Menambahkan field password di model PrintStatementLog dengan atribut hidden untuk keamanan serialisasi.
- Menambahkan input password pada form request print statement.
- Menambahkan validasi sisi klien agar password minimal 6 karakter.
- Menambahkan konfirmasi melalui SweetAlert untuk pengisian password dan email tujuan.
- Menambahkan index pada kolom password untuk optimasi pencarian jika dibutuhkan.
- Menggunakan field password untuk proteksi file PDF melalui PDFPasswordProtect.
- Menambahkan helper text dan placeholder pada form untuk meningkatkan pengalaman pengguna.
- Menambahkan atribut autocomplete="new-password" untuk menghindari autofill browser yang tidak aman.
- Menjaga kompatibilitas ke belakang dengan membuat field bersifat opsional (nullable).

Tujuan perubahan:
- Memberikan opsi proteksi file PDF dengan password yang diatur oleh pengguna.
- Meningkatkan keamanan distribusi file statement melalui email.
- Memastikan pengalaman pengguna tetap aman dan nyaman saat mengatur proteksi.
2025-07-10 14:33:26 +07:00
Daeng Deni Mardaeni
8d84c0a1ba feat(webstatement): tambah migration dan model ProvinceCore
Perubahan yang dilakukan:
- Membuat migration untuk tabel province_core dengan field code dan name.
- Menambahkan model ProvinceCore dengan beberapa scope dan method helper.
- Mengimplementasikan logging untuk semua operasi database yang berkaitan.
- Menambahkan dukungan transaction rollback untuk menjaga integritas data.
- Membuat seeder untuk data provinsi seluruh Indonesia.
- Menambahkan validasi dan method utility untuk keperluan dropdown.
- Menggunakan PostgreSQL ILIKE untuk pencarian yang bersifat case-insensitive.
- Menambahkan index pada kolom tertentu untuk optimasi performa query.
- Mengimplementasikan event model untuk memantau operasi CRUD.
- Menyesuaikan struktur file agar sesuai dengan arsitektur Laravel modules.

Tujuan perubahan:
- Menyediakan data master provinsi yang dapat digunakan secara global.
- Memastikan efisiensi dan keamanan data pada proses insert/update.
- Mendukung pengembangan fitur yang membutuhkan referensi data provinsi.
2025-07-10 09:56:47 +07:00
Daeng Deni Mardaeni
1f140af94a fix(migration): perbaiki error PostgreSQL enum untuk request_type
Perubahan yang dilakukan:
- Memperbaiki typo nama tabel dari print_stetement_logs menjadi print_statement_logs.
- Menggunakan raw SQL untuk menambahkan nilai enum baru ke tipe data request_type.
- Menambahkan constraint check sebagai alternatif validasi agar kompatibel dengan PostgreSQL.
- Menambahkan rollback transaction untuk menjaga integritas data saat migrasi gagal.
- Menambahkan logging untuk memantau proses migrasi enum.
- Memperbaiki syntax error pada perintah ALTER TYPE di PostgreSQL.
- Menambahkan kondisi IF NOT EXISTS untuk menghindari error duplikat nilai enum.
- Mengimplementasikan strategi rollback yang aman untuk migrasi enum PostgreSQL.

Tujuan perubahan:
- Memastikan proses migrasi enum berjalan lancar di PostgreSQL tanpa error duplikasi atau syntax.
- Menjamin keamanan data selama proses migrasi berjalan.
- Menyediakan log yang jelas untuk debugging bila terjadi kesalahan.
2025-07-10 09:19:38 +07:00
Daeng Deni Mardaeni
0ace1d5c70 feat(migration): tambah multi_account ke enum request_type
- Menambahkan nilai 'multi_account' ke enum request_type pada tabel print_statement_logs
- Mendukung pemrosesan statement untuk multiple account sekaligus
- Enum request_type sekarang mencakup: single_account, branch, all_branches, multi_account
- Memungkinkan sistem untuk menangani berbagai jenis request statement
- Meningkatkan fleksibilitas dalam pemrosesan batch statement
2025-07-10 09:00:47 +07:00
Daeng Deni Mardaeni
595ab89390 feat(database): tambah field alamat dan referensi lokal ke tabel customers
Menambahkan migration untuk field tambahan pada tabel customers:
- Menambahkan field home_rt dan home_rw untuk RT/RW alamat rumah
- Menambahkan field ktp_rt dan ktp_rw untuk RT/RW alamat KTP
- Menambahkan field local_ref dengan tipe TEXT untuk referensi lokal panjang
- Semua field dibuat nullable untuk fleksibilitas data
- Menambahkan index untuk kombinasi RT/RW untuk performa query
- Menambahkan comment pada setiap field untuk dokumentasi
- Menyediakan method down() lengkap untuk rollback migration
- Menggunakan tipe data yang sesuai untuk setiap field
2025-07-10 09:00:31 +07:00
Daeng Deni Mardaeni
40f552cb66 Merge branch 'new'
# Conflicts:
#	app/Http/Controllers/PrintStatementController.php
#	app/Jobs/GenerateBiayaKartuCsvJob.php
#	app/Jobs/SendStatementEmailJob.php
#	app/Mail/StatementEmail.php
#	resources/views/statements/email.blade.php
#	resources/views/statements/index.blade.php
2025-07-08 21:46:55 +07:00
Daeng Deni Mardaeni
a3060322f9 feat(webstatement): tambahkan kolom baru dan migrasi untuk log print statement
- **Perubahan Model:**
  - Menambahkan atribut `stmt_sent_type` dan `is_generated` pada model `PrintStatementLog`.
  - Menyesuaikan properti `$fillable` untuk mendukung atribut baru tersebut.
  - Menambahkan properti `is_generated` ke dalam `$casts` untuk tipe data boolean.

- **Migrasi Database:**
  - Membuat file migrasi baru `2025_07_08_090357_add_stmt_sent_type_to_print_statement_logs_table`.
    - Menambahkan kolom `stmt_sent_type` (string, nullable) setelah kolom `status`.
    - Menambahkan kolom `is_generated` (boolean, nullable, default false) setelah kolom `is_available`.
  - Menambahkan rollback pada fungsi `down()` untuk menghapus kolom `stmt_sent_type` dan `is_generated`.

- **Tujuan Perubahan:**
  - Mendukung pencatatan tipe pengiriman statement melalui kolom `stmt_sent_type`.
  - Menambah fleksibilitas dalam pelacakan status pembuatan laporan dengan atribut `is_generated`.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-07-08 17:39:23 +07:00
Daeng Deni Mardaeni
4b889da5a5 feat(webstatement): tambahkan pengelolaan product_code pada ATM Card
- **Penambahan Field Baru:**
  - Menambahkan field baru `product_code` pada tabel `atmcards` melalui migrasi database.
  - Field bersifat nullable dan memiliki komentar deskriptif untuk dokumentasi skema database.

- **Refaktor Logika pada UpdateAtmCardBranchCurrencyJob:**
  - Menambahkan assignment data `product_code` untuk update kartu ATM berdasarkan informasi account.
  - Mengoptimalkan proses query dengan memperbaiki penggunaan namespace model `Account`.

- **Peningkatan Model Atmcard:**
  - Menambahkan relasi baru `biaya` untuk mendapatkan informasi terkait jenis kartu (`JenisKartu`).
  - Menambah **scope** baru:
    - `active` untuk memfilter kartu ATM yang aktif.
    - `byProductCode` untuk memfilter berdasarkan kode produk (`product_code`).
  - Memperkenalkan accessor dan mutator untuk memastikan format `product_code` konsisten (uppercase, trimmed).
  - Menambahkan logging pada setiap akses relasi atau perubahan terkait field `product_code`.

- **Penyesuaian Logging:**
  - Memperbanyak log untuk monitoring aktivitas, termasuk:
    - Akses dan perubahan data `product_code`.
    - Scope query pada model `Atmcard`.

- **Migrasi Database:**
  - Menambahkan proses safe migration dengan transaksi pada operasi `up` dan `down`.
  - Mencatat log saat migrasi berhasil atau rollback diperlukan jika terjadi kesalahan.

- **Optimisasi dan Perbaikan Format:**
  - Mengorganisasi ulang import pada file `UpdateAtmCardBranchCurrencyJob` sesuai standar PSR-12.
  - Membenahi key output response dari `openCategory` menjadi `acctType` untuk dukungan data baru `product_code`.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-06-13 15:06:37 +07:00
Daeng Deni Mardaeni
9199a4d748 feat(webstatement): tambahkan fitur monitoring dan peningkatan pengiriman email statement
- **Perbaikan dan Penambahan Komando:**
  - Memberikan komando baru `webstatement:check-progress` untuk memantau progres pengiriman email statement.
    - Menampilkan informasi seperti `Log ID`, `Batch ID`, `Request Type`, status, hingga persentase progress.
    - Menangani secara detail jumlah akun yang diproses, sukses, gagal, dan kalkulasi tingkat keberhasilan.
    - Menyediakan penanganan error jika log tidak ditemukan atau terjadi kegagalan lainnya.
  - Memperluas komando `webstatement:send-email`:
    - Mendukung pengiriman berdasarkan `single account`, `branch`, atau `all branches`.
    - Menambahkan validasi parameter `type` (`single`, `branch`, `all`) dan input spesifik seperti `--account` atau `--branch` untuk mode tertentu.
    - Melakukan pencatatan log awal dengan metadata lengkap seperti `request_type`, `batch_id`, dan status.

- **Peningkatan Logika Proses Backend:**
  - Menambahkan fungsi `createLogEntry` untuk mencatat log pengiriman email statement secara dinamis berdasarkan tipe request.
  - Menyediakan reusable method seperti `validateParameters` dan `determineRequestTypeAndTarget` untuk mempermudah pengelolaan parameter pengiriman.
  - Memberikan feedback dan panduan kepada pengguna mengenai ID log dan komando monitoring (`webstatement:check-progress`).

- **Penambahan Controller dan Fitur UI:**
  - Menambahkan controller baru `EmailStatementLogController`:
    - Mendukung pengelolaan log seperti list, detail, dan retry untuk pengiriman ulang email statement.
    - Menyediakan fitur pencarian, filter, dan halaman data log yang responsif menggunakan datatable.
    - Menambahkan kemampuan resend email untuk log dengan status `completed` atau `failed`.
  - Mengimplementasikan UI untuk log pengiriman:
    - Halaman daftar monitoring dengan filter berdasarkan branch, account number, request type, status, dan tanggal.
    - Menampilkan kemajuan, tingkat keberhasilan, serta tombol aksi seperti detail dan pengiriman ulang.

- **Peningkatan Model dan Validasi:**
  - Menyesuaikan model `PrintStatementLog` untuk mendukung lebih banyak atribut seperti `processed_accounts`, `success_count`, `failed_count`, `request_type`, serta metode utilitas seperti `getProgressPercentage()` dan `getSuccessRate()`.
  - Memvalidasi parameter input lebih mendalam agar kesalahan dapat diminimalisasi di awal proses.

- **Peningkatan pada View dan Feedback Pengguna:**
  - Menambah daftar command berguna untuk user di interface log:
    - Status antrian dengan `php artisan queue:work`.
    - Monitoring menggunakan komando custom yang baru ditambahkan.

- **Perbaikan Logging dan Error Handling:**
  - Menambahkan logging komprehensif pada semua proses, termasuk batch pengiriman ulang.
  - Memastikan rollback pada database jika terjadi error melalui transaksi pada critical path.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-06-11 09:57:09 +07:00
Daeng Deni Mardaeni
6eef6e89bf feat(webstatement): tambahkan migrasi tabel log laporan transaksi ATM
- Menambahkan file migrasi baru `create_atm_transaction_report_logs_table`:
  - Membuat tabel `atm_transaction_report_logs` untuk menyimpan log laporan transaksi ATM.
  - Struktur tabel meliputi:
    - Field `period` (format Ymd) untuk menyimpan periode laporan.
    - Status laporan `status` dengan opsi: `pending`, `processing`, `completed`, dan `failed`.
    - Status otorisasi `authorization_status` dengan opsi: `pending`, `approved`, dan `rejected`.
    - Informasi file laporan seperti `file_path`, `file_size`, dan `record_count`.
    - Informasi kesalahan dengan `error_message`.
    - Status unduhan laporan dengan `is_downloaded` dan `downloaded_at`.
    - Informasi user terkait (`user_id`, `created_by`, `updated_by`, dan `authorized_by`).
    - Metadata lain seperti `ip_address`, `user_agent`, serta timestamps.

- Menambahkan beberapa indeks untuk optimasi:
  - Indeks untuk kolom `period`, `status`, `authorization_status`, dan `created_at`.

- Menambahkan fungsi rollback untuk menghapus tabel jika migrasi dibatalkan.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-06-08 23:41:32 +07:00
Daeng Deni Mardaeni
66f84600eb feat(webstatement): tambahkan kolom baru sektor, tipe pelanggan, dan tanggal lahir/pendirian pada model Customer
- Memperbarui model `Customer` dengan menambahkan properti baru pada `$fillable`:
  - `sector`
  - `customer_type`
  - `birth_incorp_date`
- Menambahkan migrasi baru `add_sector_customer_type_birth_incorp_date_to_customers_table`:
  - Menambahkan kolom `sector`, `customer_type`, dan `birth_incorp_date` pada tabel `customers`.
  - Semua kolom bersifat nullable untuk menjaga kompatibilitas data lama.
  - Menyediakan fungsi rollback dengan menghapus kolom yang ditambahkan.
- Tujuan perubahan ini:
  - Mendukung penyimpanan data sektor, tipe pelanggan, dan tanggal lahir/pendirian pada entitas pelanggan.
  - Memfasilitasi validasi data tambahan dalam proses bisnis dan laporan.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-06-03 12:02:31 +07:00
Daeng Deni Mardaeni
cc99883875 feat(webstatement): tambahkan fitur pemrosesan data sektor dan parameter pada migrasi harian
- Menambahkan opsi baru `--process_parameter` pada command `webstatement:process-daily-migration`.
  - Memungkinkan pengguna untuk menentukan parameter proses migrasi seperti tanggal (`date`) dan tipe (`type`).
  - Menambahkan logging tambahan untuk mencatat nilai parameter yang diproviding pengguna.
- Memperbarui logika command dan controller:
  - Mengirimkan parameter `date` dan `type` ke controller untuk mendukung proses migrasi dengan parameter yang lebih spesifik.
- Menambahkan proses migrasi baru untuk data sektor:
  - Membuat job `ProcessSectorDataJob` yang bertugas membaca file CSV terkait sektor dari SFTP.
  - Melakukan validasi keberadaan file, memproses tiap baris data, dan menyimpannya ke database jika valid.
  - Logging untuk setiap aktivitas proses sektor, termasuk error dan kesuksesan per baris.
- Membuat model `Sector` untuk mendukung operasi database data sektor:
  - Menambah atribut dapat diolah (`fillable`) seperti `sector_code`, `co_code`, `description`, dll.
  - Menambahkan cast `date_time` ke tipe datetime.
- Menambahkan migrasi baru untuk tabel `sectors`:
  - Tabel memiliki kolom seperti `id`, `date_time`, `description`, `curr_no`, `co_code`, dan `sector_code`.
  - Meningkatkan pendukung penyimpanan data sektor untuk migrasi masa depan.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-06-03 11:58:16 +07:00
Daeng Deni Mardaeni
76ebdce2ea fix(webstatement): ubah metode upsert menjadi updateOrCreate pada ProcessStmtEntryDataJob
- Refactor proses penyimpanan data pada `ProcessStmtEntryDataJob`:
  - Mengganti metode `StmtEntry::upsert` dengan `StmtEntry::updateOrCreate` untuk setiap entri dalam batch.
  - Metode `updateOrCreate` memungkinkan pembaruan data atau penyisipan data baru berdasarkan `stmt_entry_id` sebagai kunci unik.
- Meningkatkan fleksibilitas pembaruan data dengan menggunakan loop per entry dibandingkan bulk operation, sehingga lebih kompatibel untuk kasus tertentu.

- Tambahkan file migrasi baru untuk penyesuaian tabel `stmt_entry`:
  - File migrasi telah dibuat sebagai dasar, namun implementasi detail dalam tabel masih kosong.
  - File ini akan digunakan untuk perubahan skema di masa mendatang sesuai kebutuhan pengembangan.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-05-29 19:40:35 +07:00
Daeng Deni Mardaeni
deb702c68e feat(webstatement): tambahkan kolom dealer_desk pada model dan tabel tellers
- Menambahkan atribut baru `dealer_desk` pada properti `$fillable` di model `Teller` untuk memungkinkan atribut ini diisi secara massal.
- Membuat migration baru `2025_05_29_024729_add_dealer_desk_to_tellers_table` untuk penambahan kolom `dealer_desk` ke dalam tabel `tellers`.
  - Kolom `dealer_desk` bertipe string dan dapat bernilai null.
  - Penempatan kolom dilakukan setelah kolom `last_version`.
- Menambahkan method untuk rollback migration yang menghapus kolom `dealer_desk` dari tabel `tellers`.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-05-29 09:47:57 +07:00
Daeng Deni Mardaeni
1ae98bcc26 feat(webstatement): tambahkan field baru pada TempFundsTransfer dan migrasi terkait
- Menambahkan daftar field baru pada model `TempFundsTransfer` untuk mendukung pengelolaan data transfer dana sementara.
  - Field tambahan meliputi:
    - `at_unique_id`
    - `bif_ref_no`
    - `atm_order_id`
    - `api_iss_acct`
    - `api_benff_acct`
    - `remarks`
    - `api_mrchn_id`
    - `bif_rcv_acct`
    - `bif_snd_acct`
    - `bif_rcv_name`
    - `bif_va_no`

- Membuat file migrasi bernama `2025_05_29_015537_add_fields_to_temp_funds_transfer_table.php` untuk:
  - Menambahkan field baru pada tabel `temp_funds_transfer`.
  - Menyediakan mekanisme rollback dengan menghapus field yang ditambahkan.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-05-29 08:57:10 +07:00
daengdeni
562cc94822 refactor(database): ubah tipe kolom dari date/datetime/decimal menjadi string di berbagai tabel
Ubah tipe kolom di database yang sebelumnya menggunakan date, datetime, atau decimal menjadi string. Langkah ini meningkatkan fleksibilitas penyimpanan data.

- `customers` table:
  - Ubah tipe kolom `date_of_birth` dari `date` menjadi `string`.

- `accounts` table:
  - Ubah tipe kolom `opening_date` dari `date` menjadi `string`.
  - Ubah tipe kolom `closure_date` dari `date` menjadi `string`.
  - Revisi kolom `start_year_bal` menjadi `string` dengan parameter yang disesuaikan.

- `ft_txn_type_condition` table:
  - Ubah tipe kolom `date_time` dari `dateTime` menjadi `string`.

- `data_captures` table:
  - Ubah tipe kolom `value_date`, `exposure_date`, dan `accounting_date` dari `date` menjadi `string`.
  - Ubah tipe kolom `date_time` dari `dateTime` menjadi `string`.
  - Ubah tipe kolom `amount_lcy`, `amount_fcy`, dan `exchange_rate` dari `decimal` menjadi `string`.

- `temp_arrangements` table:
  - Ubah tipe kolom `orig_contract_date` dan `start_date` dari `date` menjadi `string`.

- Model changes:
  - Hapus properti `casts` dari model berikut:
    - `AtmTransaction`
    - `DataCapture`
    - `FtTxnTypeCondition`
2025-05-24 17:04:31 +07:00
daengdeni
566dd1e4e7 refactor(database): update primary key in processed_statements table
- Menghapus kolom `id` dari tabel `processed_statements` dan sekaligus menghapus primary key auto-increment terkait.
- Menetapkan kombinasi kolom `account_number`, `period`, dan `sequence_no` sebagai keys baru dengan composite primary key untuk memastikan setiap record bersifat unik.
- Menambahkan kemampuan rollback pada migration untuk mengembalikan struktur ke kondisi awal:
  - Menghapus composite primary key pada kolom `account_number`, `period`, dan `sequence_no`.
  - Menambahkan kembali kolom `id` sebagai auto-increment primary key di posisi paling awal tabel.
2025-05-24 09:04:15 +07:00
daengdeni
2e2c8b4b0d refactor(database): remove id from account_balances table
- Menghapus kolom `id` dari tabel `account_balances` termasuk primary key auto-increment-nya.
- Menjadikan kolom `account_number` dan `period` sebagai composite primary key.
- Menghapus constraint unik pada kolom `account_number` dan `period`.
- Menambahkan kembali kolom `id` dan constraint unik pada proses rollback.
- Memastikan mendukung migrasi maju dan mundur dengan aman.
2025-05-24 08:27:35 +07:00
Daeng Deni Mardaeni
a687385017 fix(migration): ubah tipe data balance menjadi string
- Mengubah tipe data kolom `actual_balance` dan `cleared_balance` dari `decimal` menjadi `string`.
- Menambahkan default value `0` pada kedua kolom tersebut.
- Perubahan untuk memastikan kompatibilitas dalam pengelolaan data balance dengan format non-numerik atau string.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-05-23 21:50:01 +07:00
Daeng Deni Mardaeni
a7a55a92a1 feat(webstatement): tambah model AccountBalance dan relasi balances pada Account
- Menambahkan model `AccountBalance` dengan fitur berikut:
  - Properti `fillable` meliputi: `account_number`, `period`, `actual_balance`, `cleared_balance`.
  - Relasi `belongsTo` dengan model `Account`.
  - Scope query untuk filter berdasarkan `account_number` (`scopeForAccount`) dan `period` (`scopeForPeriod`).
  - Fungsi statis `getBalance` untuk mendapatkan saldo berdasarkan `account_number` dan `period`.

- Menambahkan method berikut pada model `Account`:
  - Relasi `hasMany` dengan `AccountBalance` untuk mendapatkan semua saldo terkait.
  - Method `getBalanceForPeriod` untuk mendapatkan saldo pada periode tertentu.

- Membuat migrasi untuk tabel `account_balances` dengan spesifikasi berikut:
  - Kolom: `account_number`, `period` (format: YYYY-MM), `actual_balance` (decimal), `cleared_balance` (decimal), `timestamps`.
  - Konstrain unik untuk pasangan `account_number` dan `period`.
  - Indeks pada kolom `account_number`, `period`, dan `created_at`.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-05-23 19:27:44 +07:00
daengdeni
b54fabd416 feat(database,performance): optimize indexing and processing for statement export
- Menambahkan indeks baru pada table `stmt_entry`:
  - Kombinasi indeks untuk kolom `account_number` dan `booking_date`.
  - Indeks untuk kolom `date_time`.
  - Indeks untuk kolom `trans_reference`.
- Memperbesar ukuran chunk processing di `ExportStatementJob` dari 500 menjadi 1000 untuk mengoptimalkan performa proses ekspor data dan mengurangi overhead.

Perubahan ini bertujuan untuk meningkatkan efisiensi query pada table `stmt_entry` dan mengurangi waktu proses pada job ekspor pernyataan.
2025-05-23 10:17:42 +07:00
Daeng Deni Mardaeni
b98408a8d2 feat(webstatement): optimalkan proses ekspor statement dengan chunking dan tabel terproses
- Menambahkan penggunaan chunking dalam pemrosesan data `StmtEntry` untuk mengurangi konsumsi memori
- Menghapus data yang telah diproses pada tabel `processed_statements` sebelum memproses ulang data baru
- Menambahkan metode `processStatementData` untuk memproses data transaksi dengan pengelolaan hemisan-memori
- Mengganti mekanisme ekspor CSV agar sesuai dengan data yang sudah diproses; menggunakan chunk pada pembacaan dan penulisan data agar lebih efisien
- Memperkenalkan tabel baru `processed_statements` untuk menyimpan hasil pemrosesan sebagai cache sementara
- Menambahkan log untuk setiap tahap pemrosesan untuk mempermudah debugging dan pelacakan proses
- Menambahkan file model `ProcessedStatement` untuk interaksi dengan tabel `processed_statements`
- Menambahkan file migrasi untuk membuat tabel `processed_statements` di database

Enhancement ini meningkatkan performa aplikasi, terutama saat menangani data besar, dengan mengurangi penggunaan memori dan meningkatkan efisiensi proses ekspor.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-05-22 17:36:55 +07:00
Daeng Deni Mardaeni
d5495d721e feat(webstatement): tambah pemrosesan data ATM Transaction
- Menambahkan job `ProcessAtmTransactionJob` untuk memproses data transaksi ATM dari file CSV.
  - Implementasi pemrosesan file CSV termasuk pembacaan, pemetaan header, dan simpan data ke model.
  - Menyediakan logging untuk pemantauan jumlah data yang diproses dan jumlah error.
  - Menambahkan mekanisme penanganan error pada setiap proses baris dan file.

- Menambahkan model `AtmTransaction`:
  - Mendeklarasikan atribut yang bisa diisi (`fillable`) seperti `transaction_id`, `txn_amount`, dan lainnya.
  - Mendefinisikan tipe data casting untuk beberapa atribut seperti `txn_amount` dalam tipe decimal dan `booking_date` dalam tipe datetime.

- Menambahkan migration `2025_05_21_150736_create_atm_transactions_table` untuk tabel `atm_transactions`:
  - Tabel memiliki kolom seperti `transaction_id`, `txn_amount`, `booking_date`, dan indeks untuk kolom tertentu.
  - Meng-handle struktur kolom untuk mendukung atribut yang diperlukan di model.

- Memperbarui `MigrasiController`:
  - Menambahkan fungsi `ProcessAtmTransaction` untuk menjadwalkan `ProcessAtmTransactionJob`.
  - Memperbaiki pesan response pada beberapa fungsi agar lebih deskriptif dan konsisten.

- Memperbarui pemanggilan fungsi dari `__invoke` di bagian pemrosesan data (`ProcessAtmTransaction`) untuk period tertentu.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-05-21 22:14:58 +07:00
Daeng Deni Mardaeni
e511025307 feat(webstatement): tambahkan fitur proses data teller
- Menambahkan job baru `ProcessTellerDataJob` untuk memproses data teller dari file CSV.
- Membuat controller method `ProcessTellerData` di `MigrasiController` untuk dispatch job `ProcessTellerDataJob`.
- Menambahkan model baru `Teller` yang merepresentasikan data teller dengan kolom sesuai header map pada CSV.
- Menambahkan migrasi `2025_05_21_144332_create_tellers_table.php` untuk membuat tabel database `tellers` dengan struktur data lengkap.
- Menambahkan logika pada job untuk membaca, memproses, dan menyimpan data CSV ke dalam database.
- Menyediakan mekanisme pemrosesan file CSV termasuk:
  - Validasi jumlah kolom pada CSV jika tidak sesuai dengan header.
  - Membuat dan menghapus file sementara selama pemrosesan.
  - Mapping data CSV ke atribut model `Teller`.
  - Penanganan error saat menyimpan data ke model `Teller`.
  - Logging proses meliputi jumlah data yang diproses dan error selama jalannya job.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-05-21 22:01:31 +07:00
Daeng Deni Mardaeni
285c2409ea feat(webstatement): tambah fitur pemrosesan data kategori
- Menambahkan `ProcessCategoryDataJob` untuk memproses data kategori dari file CSV yang diambil melalui SFTP.
- Membuat model `Category` dengan atribut-atribut:
  - `id_category`
  - `date_time`
  - `description`
  - `short_name`
  - `system_ind`
  - `record_status`
  - `co_code`
  - `curr_no`
  - `l_db_cr_ind`
  - `category_code`
- Menambahkan endpoint baru `ProcessCategoryData` di `MigrasiController` untuk memanggil job pemrosesan data kategori.
- Menambahkan migrasi untuk membuat tabel `categories` dengan kolom-kolom yang relevan.
- Memperbaiki bug pada `ProcessStmtEntryDataJob` dengan menambahkan validasi khusus untuk menghindari pemrosesan baris header yang tidak valid.
- Menghapus pemanggilan job yang tidak diperlukan di `MigrasiController`.
- Mengupdate logika pemrosesan file untuk memastikan integritas data dalam job kategori.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-05-21 21:36:45 +07:00
Daeng Deni Mardaeni
39e356e2ff refactor(webstatement): update data processing and migration logic
- Menonaktifkan pemanggilan fungsi-fungsi yang tidak diperlukan untuk data processing di `MigrasiController`:
  - `processTransactionData`, `processStmtNarrFormatData`, `processAccountData`, dan `ProcessCompanyData`.
- Mengubah argumen di beberapa pemanggilan fungsi untuk data processing agar lebih spesifik ke periode tertentu:
  - Mengganti `$periods` menjadi `['20250512']` untuk `processArrangementData`, `processBillDetailData`, `processFundsTransferData`, dan `processStmtEntryData`.
- Memodifikasi logika skipping folder `_parameter` pada `ProcessFtTxnTypeConditionJob` dengan mengomentari proses pengecekan.
- Mengubah delimiter `fgetcsv` pada `ProcessBillDetailDataJob` dari `;` menjadi `~`.
- Menambahkan file migrasi baru untuk mengubah tipe kolom pada tabel `temp_fund_transfer`:
  - Mengubah semua kolom pada tabel menjadi tipe `text` untuk mendukung data yang lebih besar.
  - Menyediakan metode `down` untuk rollback tipe data kembali ke `string`.

Perubahan ini bertujuan untuk meningkatkan efisiensi proses data, mendukung fleksibilitas data lebih besar pada migrasi database, serta membuka jalan untuk refaktor atau penghapusan fungsi yang tidak digunakan.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-05-21 08:17:47 +07:00
Daeng Deni Mardaeni
fb6fd534d5 feat(webstatement): tambah fitur pemrosesan data "Data Capture"
- Menambahkan fungsi baru `ProcessDataCaptureData` di `MigrasiController` untuk menjadwalkan pemrosesan data "Data Capture".
- Menambahkan job baru `ProcessDataCaptureDataJob`:
  - Mengambil data "Data Capture" dari file CSV melalui SFTP.
  - Memproses dan menyimpan data ke database dengan validasi dan logging.
  - Mendukung operasi pembaruan (update) atau pembuatan (insert) data menggunakan Eloquent `updateOrCreate`.
- Menambahkan model baru `DataCapture`:
  - Memetakan data ke tabel `data_captures` di database.
  - Mendukung properti `fillable` dan `casts` untuk format data yang valid, termasuk konversi nilai decimal dan tanggal.
- Menambahkan migrasi baru `create_data_captures_table` untuk membuat tabel `data_captures`:
  - Mendefinisikan semua kolom sesuai kebutuhan data "Data Capture".
  - Menetapkan tipe data yang relevan seperti decimal, date, dan datetime.
- Memperbarui metode `migrasiAll` di `MigrasiController` untuk memanggil fungsi pemrosesan baru `ProcessDataCaptureData`.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-05-20 22:15:44 +07:00
Daeng Deni Mardaeni
1c8d9a4a8a fix(webstatement): perbaiki duplikasi kode dalam migrasi ft_txn_type_condition
- Menghapus duplikasi `Schema::create` dalam fungsi `up()` di file migrasi.
- Memastikan struktur tabel `ft_txn_type_condition` dihasilkan dengan benar tanpa deklarasi berulang.
- Tidak ada perubahan struktur tabel selain penghapusan kode yang redundan.
- Peningkatan keterbacaan dan pengurangan kemungkinan error karena kode yang berulang.
- Tidak ada dampak pada data atau fungsionalitas yang telah ada.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-05-20 21:40:44 +07:00
Daeng Deni Mardaeni
24700c5bd8 feat(webstatement): tambahkan proses pengolahan data FtTxnTypeCondition
- Menambahkan method `ProcessFtTxnTypeConditioData` pada `MigrasiController` untuk memproses data FtTxnTypeCondition melalui dispatching job baru.
- Menambahkan job baru `ProcessFtTxnTypeConditionJob` untuk mengelola dan memproses data TxnTypeCondition dari file `TXN_TYPE_CONDITION.csv`:
  - Membaca file CSV melalui SFTP dengan validasi header dan struktur kolom.
  - Menggunakan model `FtTxnTypeCondition` untuk menyimpan atau memperbarui data ke database.
  - Menambahkan logging untuk memberikan informasi dan menangani pengecualian/error selama proses.
- Menambahkan model `FtTxnTypeCondition` untuk representasi data `ft_txn_type_condition` di database:
  - Tabel memiliki atribut seperti `id`, `date_time`, `transaction_type`, `short_descr`, `txn_code_cr`, dan `txn_code_dr`.
  - Mengatur primary key pada atribut `id` dengan tipe string dan non-incremental.
- Menambahkan migrasi untuk tabel `ft_txn_type_condition`:
  - Menyediakan kolom utama yang diperlukan dengan tipe data sesuai kebutuhan, termasuk `softDelete`.
  - Kolom primary key `id` dengan tipe `string`.
- Memodifikasi proses migrasi utama untuk memanggil method `ProcessFtTxnTypeConditioData`.
- Menangani folder `_parameter` sebagai folder yang diabaikan dalam proses.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-05-20 21:38:27 +07:00
Daeng Deni Mardaeni
c442b27dad feat(webstatement): optimalkan proses migrasi data SFTP
- Menambahkan parameter `$periods` untuk mendukung proses dinamis berdasarkan folder periode dalam SFTP.
- Memperkenalkan penggunaan `Storage::disk('sftpStatement')` untuk membaca file dari SFTP.
- Menyortir folder periode secara menurun berdasarkan tanggal.
- Memproses tiap entitas data (Customer, Account, Arrangement, Bill Details, dll.) berdasarkan file dalam folder periode.
- Menambah log untuk mencatat jumlah proses yang berhasil, baris error, dan peringatan tentang ketidaksesuaian jumlah kolom.
- Menyisipkan mekanisme untuk mengabaikan folder `_parameter`.
- Mengubah pendekatan dari membaca file lokal menjadi menggunakan file sementara (temp).
- Memperbaiki bug pada metode yang sebelumnya menggunakan jalur file statis.
- Memastikan penanganan file CSV yang lebih fleksibel, termasuk kasus di mana jumlah kolom dalam baris melebihi ekspektasi.
- Menambah error handling untuk mencatat baris-baris bermasalah dan menghindari interupsi proses.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-05-20 16:44:59 +07:00
Daeng Deni Mardaeni
427d1291f8 feat(webstatement): tambah fitur pengiriman statement ke email
- Menambahkan kolom `email` dan `email_sent_at` pada tabel `print_statement_logs`.
- Menambah endpoint baru untuk mengirim statement via email (`/send-email`).
- Mengupdate form request untuk validasi email pada `PrintStatementRequest`.
- Menambah logika pengiriman email dengan menggunakan `Mailable` (`StatementEmail`).
- Memvalidasi ketersediaan file statement sebelum dikirimkan via email.
- Menambahkan tombol baru pada tampilan frontend untuk opsi `Send to Email`.
- Mengupdate file zip untuk pengiriman email ketika ada statement dalam rentang waktu.
- Refaktor dan perbaikan minor pada kode terkait check statement availability.
- Menyesuaikan title menu pada `module.json` dari "Periode Statement" ke "Create Periode" dan "Print Statement" ke "Statement".

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-05-13 16:44:22 +07:00
Daeng Deni Mardaeni
8e5c2ce79e feat(webstatement): update print statement functionalities
- Menambahkan kolom `remarks` pada tabel print_statement_logs untuk menyimpan catatan tambahan.
- Mengubah validasi periode pada `PrintStatementRequest` untuk mencegah request duplikasi periode.
- Memperbaiki tampilan di `statements.index` dan `statements.show` agar lebih responsif dan informatif.
- Mengubah logika download statement untuk mendukung file range periode dalam format zip.
- Menambahkan logika cek file statement berdasarkan ketersediaan file di storage SFTP.
- Menghapus file legacy `create.blade.php` yang tidak lagi digunakan.
- Menyesuaikan ikon menu dari `calendar` ke `printer` agar lebih relevan.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-05-13 14:01:41 +07:00
Daeng Deni Mardaeni
eaa847e7e7 feat(webstatement): tambah fitur request dan pengelolaan print statement
- Tambah menu baru untuk "Print Statement" di konfigurasi module.
- Tambah route baru untuk pengelolaan statement seperti list, download, otorisasi, dan datatables.
- Implementasi `PrintStatementController` untuk operasi terkait request dan manajemen statement.
- Implementasi model `PrintStatementLog` untuk mencatat log request statement, termasuk validasi dan relasi yang dibutuhkan.
- Tambah form request `PrintStatementRequest` untuk validasi input.
- Tambah migration untuk tabel `print_statement_logs` yang menyimpan rekaman log statement.
- Tambah halaman blade untuk index dan form request statement.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-05-11 18:15:21 +07:00
Daeng Deni Mardaeni
7df50b5141 feat(webstatement): implement periode statement management feature
- Menambahkan menu "Periode Statement" pada module.json dengan akses untuk role administrator.
- Menambahkan model `PeriodeStatement` dengan fitur tracking user dan scoped query.
- Menyediakan controller `PeriodeStatementController` dengan fungsi CRUD, otorisasi, proses, ekspor data ke Excel, dan datatables.
- Menambahkan request validation melalui `PeriodeStatementRequest`.
- Menyediakan view untuk list, create, edit, dan otorisasi periode statement.
- Menambahkan routing termasuk resource routes dan breadcrumbs untuk mendukung fitur ini.
- Menambahkan migrasi database `periode_statements` dengan kolom untuk menyimpan data periode, status, otorisasi, serta metadata.
- Fitur ini memungkinkan pengelolaan dan pemrosesan periode statement secara terstruktur dan aman.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-05-11 15:58:49 +07:00
Daeng Deni Mardaeni
e1e52f78fb ```
feat(sync-logs): tambah fitur sinkronisasi log biaya kartu

- Menambahkan route, controller, model, dan migration untuk fitur baru `sync-logs`.
- Mengganti referensi `BiayaKartuController` menjadi `SyncLogsController`.
- Menyediakan halaman untuk menampilkan data log sinkronisasi dengan filter, pencarian, dan pagination.
- Menambahkan kemampuan melihat detail proses sinkronisasi langsung dari modal.
- Memperbarui `module.json` dengan item menu baru untuk fitur log sinkronisasi.
- Menghapus `BiayaKartuController` yang sudah tidak digunakan lagi.
```

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-05-10 15:12:56 +07:00
Daeng Deni Mardaeni
496d7f58c7 feat(webstatement): tambah fitur manajemen Jenis Kartu
- Menambahkan model, migrasi, seed, controller, request, dan tampilan untuk fitur Jenis Kartu.
- Menambahkan routing dan breadcrumbs untuk Jenis Kartu.
- Mengimplementasikan fungsi CRUD, ekspor data ke Excel, dan penghapusan multiple records pada Jenis Kartu.
- Memperbarui `module.json` untuk menampilkan menu Jenis Kartu di bagian Master.
- Menambah seeder untuk data awal Jenis Kartu.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-05-10 10:47:10 +07:00
Daeng Deni Mardaeni
697966471a feat(webstatement): tambahkan kolom baru dan perbaiki kode job sinkronisasi ATM card
- Menambahkan kolom `crdate` pada tabel `atmcards` di database.
- Memperbaiki struktur dan penyesuaian format kode pada file `BiayaKartu.php`.
- Menyelaraskan alignment konstanta, parameter, dan body fungsi untuk meningkatkan keterbacaan.
- Menambahkan pengelolaan data `crdate` dalam proses sinkronisasi kartu ATM.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-05-08 16:13:09 +07:00
daengdeni
bd810389cd feat(atmcard): tambahkan model dan migrasi untuk tabel atmcards
- Menambahkan model Atmcard untuk mengelola data kartu ATM.
- Membuat migrasi untuk tabel atmcards dengan atribut yang diperlukan.
- Menambahkan job BiayaKartu untuk menyinkronkan data kartu dari database Oracle.
2025-05-08 11:20:06 +07:00
Daeng Deni Mardaeni
90d7c017f0 feat(migrations): perbarui struktur tabel customers dan accounts
- Tambahkan kolom province, city, district, village, dan postal_code pada tabel customers.
- Ganti nama kolom customer_no menjadi customer_code pada tabel accounts.
2025-04-08 18:56:00 +07:00
Daeng Deni Mardaeni
5024f3eb58 feat(accounts): perbarui struktur tabel akun
- Ganti nama kolom 'customer_code' menjadi 'customer_no'.
- Tambahkan kolom 'co_code', 'open_category', 'start_year_bal', 'closure_date', 'account_type', 'stmt_email', dan 'stmt_sent_type'.
2025-04-08 16:33:44 +07:00
Daeng Deni Mardaeni
2cb27c12d6 feat(email-blast): tambahkan model dan migrasi untuk riwayat email blast
- Menambahkan model EmailBlastHistory untuk menyimpan informasi riwayat email blast.
- Membuat migrasi untuk tabel email_blast_histories dengan kolom subject, content, recipients_count, dan status.
2025-02-18 16:36:20 +07:00
Daeng Deni Mardaeni
1b8c32a84d feat(customers): tambahkan model dan migrasi untuk tabel customers
- Menambahkan model Customer dengan relasi ke akun dan cabang.
- Membuat migrasi untuk tabel customers dengan kolom yang diperlukan.
2025-02-18 16:36:20 +07:00
Daeng Deni Mardaeni
3986b35c25 feat(stmt_entry): tambahkan model dan migrasi untuk tabel stmt_entry
- Menambahkan model StmtEntry untuk mengelola data entri pernyataan.
- Membuat migrasi untuk tabel stmt_entry dengan kolom yang diperlukan.
- Menyediakan relasi dengan model Account melalui kolom account_number.
2025-02-18 16:36:20 +07:00
Daeng Deni Mardaeni
d8740ea8f5 feat(accounts): tambahkan model dan migrasi untuk tabel akun
- Menambahkan model Account dengan atribut yang dapat diisi.
- Menambahkan migrasi untuk membuat tabel accounts dengan kolom yang diperlukan.
2025-02-18 16:36:20 +07:00
Daeng Deni Mardaeni
f5d675fde8 feat(jobs): tambahkan job untuk memproses data entry statement
- Menambahkan kelas ProcessStmtEntryDataJob untuk memproses file CSV yang berisi data entry statement.
- Membuat model TempStmtEntry untuk menyimpan data entry statement ke dalam database.
- Menambahkan migrasi untuk membuat tabel temp_stmt_entry dengan kolom yang sesuai.
2025-02-18 16:36:20 +07:00