<?php

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

return new class extends Migration
{
    /**
     * 수주(orders)에 견적 연결 및 금액 필드 추가
     * - 견적 → 수주 전환 시 견적 정보 및 금액 저장
     * - 수주 기반 생산/출하 플로우 지원
     */
    public function up(): void
    {
        Schema::table('orders', function (Blueprint $table) {
            // 견적 연결 (추적용)
            $table->unsignedBigInteger('quote_id')->nullable()->after('tenant_id')->comment('원본 견적 ID');

            // 거래처 정보 (비정규화 - 조회 성능)
            $table->string('client_name', 200)->nullable()->after('client_id')->comment('거래처명');

            // 금액 정보 (합계)
            $table->decimal('supply_amount', 15, 2)->default(0)->after('quantity')->comment('공급가액 합계');
            $table->decimal('tax_amount', 15, 2)->default(0)->after('supply_amount')->comment('세액 합계');
            $table->decimal('total_amount', 15, 2)->default(0)->after('tax_amount')->comment('총액 (공급가액 + 세액)');

            // 할인 정보
            $table->decimal('discount_rate', 5, 2)->default(0)->after('total_amount')->comment('할인율 (%)');
            $table->decimal('discount_amount', 15, 2)->default(0)->after('discount_rate')->comment('할인금액');

            // 추가 정보
            $table->text('remarks')->nullable()->after('memo')->comment('비고');
            $table->text('note')->nullable()->after('remarks')->comment('내부 메모');

            // 인덱스
            $table->index('quote_id', 'idx_orders_quote_id');
            $table->index('client_name', 'idx_orders_client_name');
        });
    }

    /**
     * Reverse the migrations.
     */
    public function down(): void
    {
        Schema::table('orders', function (Blueprint $table) {
            // 인덱스 삭제
            $table->dropIndex('idx_orders_quote_id');
            $table->dropIndex('idx_orders_client_name');

            // 컬럼 삭제
            $table->dropColumn([
                'quote_id',
                'client_name',
                'supply_amount',
                'tax_amount',
                'total_amount',
                'discount_rate',
                'discount_amount',
                'remarks',
                'note',
            ]);
        });
    }
};
