<?php

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

/**
 * Agrega el campo forgiven_amount a la tabla installments.
 *
 * PROPÓSITO:
 *   Registra cuánto de una cuota fue condonado (perdonado) mediante una
 *   operación de Cierre Anticipado / Condonación (SettleCreditAction).
 *
 * IMPACTO EN LA LÓGICA EXISTENTE:
 *   - El campo es nullable: ningún registro existente cambia su comportamiento.
 *   - El SmartCreditStateResolver usa amount_paid >= total_amount para determinar
 *     si una cuota está pagada. La condonación eleva amount_paid hasta total_amount,
 *     por lo que el resolver funciona sin modificación.
 *   - forgiven_amount es exclusivamente de auditoría: permite reportar cuánto
 *     interés/capital fue perdonado sin afectar la lógica de pagos.
 */
return new class extends Migration
{
    public function up(): void
    {
        Schema::table('installments', function (Blueprint $table) {
            // Monto condonado en esta cuota (null = sin condonación)
            $table->decimal('forgiven_amount', 12, 2)->nullable()->default(null)->after('amount_paid');
        });
    }

    public function down(): void
    {
        Schema::table('installments', function (Blueprint $table) {
            $table->dropColumn('forgiven_amount');
        });
    }
};
