<?php

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

return new class extends Migration
{
    public function up(): void
    {
        Schema::table('detalle_facturas', function (Blueprint $table) {
            $table->foreignId('tipo_impuesto_id')->nullable()->after('inventario_id')->constrained('tipos_impuesto');
            $table->decimal('impuesto_porcentaje', 5, 2)->default(0)->after('subtotal');
            $table->decimal('impuesto_monto', 10, 2)->default(0)->after('impuesto_porcentaje');
        });

        $exentoId = DB::table('tipos_impuesto')->where('nombre', 'Exento')->value('id');
        $predeterminadoId = DB::table('tipos_impuesto')->where('predeterminado', true)->value('id');

        DB::table('detalle_facturas')->where('exento_iva', true)->update(['tipo_impuesto_id' => $exentoId]);
        DB::table('detalle_facturas')->whereNull('tipo_impuesto_id')->update(['tipo_impuesto_id' => $predeterminadoId]);

        Schema::table('detalle_facturas', function (Blueprint $table) {
            $table->dropColumn('exento_iva');
        });
    }

    public function down(): void
    {
        Schema::table('detalle_facturas', function (Blueprint $table) {
            $table->boolean('exento_iva')->default(false);
            $table->dropConstrainedForeignId('tipo_impuesto_id');
            $table->dropColumn(['impuesto_porcentaje', 'impuesto_monto']);
        });
    }
};
