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
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
class CreateStmtEntryDetailTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('stmt_entry_detail', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->string('stmt_entry_id')->nullable();
|
||||
$table->string('account_number')->nullable();
|
||||
$table->string('company_code')->nullable();
|
||||
$table->string('amount_lcy')->nullable();
|
||||
$table->string('transaction_code')->nullable();
|
||||
$table->string('narrative')->nullable();
|
||||
$table->string('product_category')->nullable();
|
||||
$table->string('value_date')->nullable();
|
||||
$table->string('amount_fcy')->nullable();
|
||||
$table->string('exchange_rate')->nullable();
|
||||
$table->string('trans_reference')->nullable();
|
||||
$table->string('booking_date')->nullable();
|
||||
$table->string('stmt_no')->nullable();
|
||||
$table->string('date_time')->nullable();
|
||||
$table->string('currency')->nullable();
|
||||
$table->string('crf_type')->nullable();
|
||||
$table->string('consol_key')->nullable();
|
||||
$table->timestamps();
|
||||
|
||||
// Index untuk performa query
|
||||
$table->index('stmt_entry_id');
|
||||
$table->index('account_number');
|
||||
$table->index('trans_reference');
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('stmt_entry_detail');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user