<?php

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

return new class extends Migration
{
    public function up(): void
    {
        if (Schema::hasTable('purchase_invoices')) return;

        Schema::create('purchase_invoices', function (Blueprint $table) {
            $table->id();

            $table->unsignedBigInteger('branch_id');
            $table->unsignedBigInteger('supplier_id');

            // ✅ رقم متسلسل لكل فرع
            $table->unsignedInteger('inv_no_branch');

            // ✅ رقم فاتورة المورد (إجباري وغير مكرر لنفس المورد داخل نفس الفرع)
            $table->string('supplier_bill_no', 100);

            // تاريخ فاتورة المورد
            $table->date('bill_date')->nullable();

            // VAT %
            $table->decimal('vat_rate', 6, 2)->default(15.00);

            // Totals
            $table->decimal('subtotal', 14, 2)->default(0);     // قبل الضريبة
            $table->decimal('vat_amount', 14, 2)->default(0);   // الضريبة
            $table->decimal('total', 14, 2)->default(0);        // شامل

            $table->text('notes')->nullable();
            $table->timestamps();

            $table->index(['branch_id', 'inv_no_branch']);
            $table->index(['branch_id', 'supplier_id']);

            // ✅ منع تكرار فاتورة المورد
            $table->unique(['branch_id', 'supplier_id', 'supplier_bill_no'], 'uq_purchase_supplier_bill');

            $table->foreign('branch_id')->references('id')->on('branches')->onDelete('restrict');
            $table->foreign('supplier_id')->references('id')->on('suppliers')->onDelete('restrict');
        });
    }

    public function down(): void
    {
        // Schema::dropIfExists('purchase_invoices');
    }
};
