id(); $table->foreignId('tenant_id')->constrained()->restrictOnDelete(); $table->foreignId('department_id')->constrained()->restrictOnDelete(); $table->foreignId('requisition_id')->nullable()->unique()->constrained()->restrictOnDelete(); $table->foreignId('created_by')->constrained('users')->restrictOnDelete(); $table->foreignId('responsible_id')->constrained('users')->restrictOnDelete(); $table->string('title', 200); $table->string('nature'); $table->unsignedInteger('version')->default(1); $table->timestamps(); }); Schema::create('purchase_plan_milestones', function (Blueprint $table) { $table->id(); $table->foreignId('tenant_id')->constrained()->restrictOnDelete(); $table->foreignId('purchase_plan_item_id')->constrained()->restrictOnDelete(); $table->foreignId('created_by')->constrained('users')->restrictOnDelete(); $table->string('label', 120); $table->date('planned_on'); $table->date('actual_on')->nullable(); $table->unsignedInteger('version')->default(1); $table->timestamps(); $table->unique(['purchase_plan_item_id', 'label']); }); } public function down(): void { throw new LogicException('Preservar o planeamento e o histórico das alterações.'); } };