uuid('id')->primary(); $table->foreignUuid('product_id')->constrained('products')->cascadeOnDelete(); $table->integer('transfer_order')->default(0); $table->string('contract_type')->default('HĐMB'); $table->string('contract_number')->unique(); $table->date('signing_date')->nullable(); $table->string('status')->default('Đang hiệu lực'); $table->decimal('total_value', 15, 2); $table->decimal('paid_amount', 15, 2)->default(0); // Cột ảo tự động tính số tiền còn lại, dev không cần query tính toán $table->decimal('remaining_amount', 15, 2)->virtualAs('total_value - paid_amount'); $table->jsonb('metadata')->nullable(); $table->timestamps(); }); } public function down(): void { Schema::dropIfExists('contracts'); } };