<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

/**
 * `installments.balance_due` pasa a llamarse `principal_balance_after`.
 *
 * El nombre viejo describía justo lo contrario de lo que guarda. No es lo que
 * falta por cobrar de la cuota: es el saldo de CAPITAL que le queda al crédito
 * DESPUÉS de esa cuota — una columna de tabla de amortización. En un crédito de
 * $500.000 a 10 cuotas, la primera cuota (ya pagada, $70.000) lo tiene en
 * $450.000.
 *
 * El nombre invitaba al error y el error llegó a producción: tres widgets la
 * mostraban etiquetada "Monto a Cobrar" / "Monto" / "Monto Pendiente", inflando
 * el total del día 2,8x y ordenando mal la lista de prioridades del cobrador
 * (ver #253). El código ya llevaba avisos sobre ella en dos servicios de
 * métricas, pero un aviso en un servicio no protege a quien escribe un widget.
 *
 * Lo que falta por cobrar de una cuota se calcula con el accessor
 * `Installment::remaining_amount` (`total_amount - amount_paid`).
 */
return new class extends Migration
{
    public function up(): void
    {
        Schema::table('installments', function (Blueprint $table) {
            $table->renameColumn('balance_due', 'principal_balance_after');
        });
    }

    public function down(): void
    {
        Schema::table('installments', function (Blueprint $table) {
            $table->renameColumn('principal_balance_after', 'balance_due');
        });
    }
};
