<?php

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

return new class extends Migration
{
    /**
     * Run the migrations.
     * 카드 거래 분개 테이블 - 하나의 카드 거래를 여러 계정과목으로 분개
     */
    public function up(): void
    {
        Schema::create('barobill_card_transaction_splits', function (Blueprint $table) {
            $table->id();
            $table->foreignId('tenant_id')->constrained()->onDelete('cascade');

            // 원본 거래 고유키 (바로빌에서 가져온 원본 데이터 식별)
            $table->string('original_unique_key', 200)->comment('원본 거래 고유키 (cardNum|useDt|approvalNum|amount)');

            // 분개 정보
            $table->decimal('split_amount', 18, 2)->comment('분개 금액');
            $table->string('account_code', 50)->nullable()->comment('계정과목 코드');
            $table->string('account_name', 100)->nullable()->comment('계정과목명');
            $table->string('memo', 255)->nullable()->comment('분개 메모');
            $table->integer('sort_order')->default(0)->comment('정렬 순서');

            // 원본 거래 정보 (조회 편의를 위해 저장)
            $table->string('card_num', 50)->comment('카드번호');
            $table->string('use_dt', 20)->comment('사용일시 (YYYYMMDDHHMMSS)');
            $table->string('use_date', 8)->comment('사용일 (YYYYMMDD)');
            $table->string('approval_num', 50)->nullable()->comment('승인번호');
            $table->decimal('original_amount', 18, 2)->comment('원본 거래 총액');
            $table->string('merchant_name', 255)->nullable()->comment('가맹점명');

            $table->timestamps();

            // 인덱스
            $table->index(['tenant_id', 'original_unique_key'], 'bb_card_split_tenant_key_idx');
            $table->index(['tenant_id', 'use_date'], 'bb_card_split_tenant_date_idx');
        });
    }

    /**
     * Reverse the migrations.
     */
    public function down(): void
    {
        Schema::dropIfExists('barobill_card_transaction_splits');
    }
};
