increments('id'); $table->string('loan_id', 50); $table->string('rps_type', 50); $table->decimal('principal_outstanding', 15, 2)->default(0.00); $table->decimal('interest_outstanding', 15, 2)->default(0.00); $table->decimal('total_bounce_due', 15, 2)->default(0.00); $table->decimal('total_penal_due', 15, 2)->default(0.00); $table->decimal('amount_overdue', 15, 2)->default(0.00); $table->decimal('total_outstanding', 15, 2)->default(0.00); $table->date('first_unpaid_emi_date')->nullable(); $table->integer('dpd')->default(0); $table->string('dpd_bucket', 20)->default('Current'); $table->integer('emi_paid_count')->default(0); $table->integer('emi_unpaid_count')->default(0); $table->timestamps(); // Composite unique key for upserts $table->unique(['loan_id', 'rps_type'], 'loan_rps_unique'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('co_lending_loan_metrics'); } }