Update 20251125110000_create_warehouse_project.php
This commit is contained in:
@@ -5,58 +5,56 @@ use Phinx\Migration\AbstractMigration;
|
|||||||
|
|
||||||
final class CreateWarehouseProject extends AbstractMigration
|
final class CreateWarehouseProject extends AbstractMigration
|
||||||
{
|
{
|
||||||
public function change(): void
|
public function change(): void
|
||||||
{
|
{
|
||||||
if ($this->getEnvironment() == "thetool") {
|
if ($this->getEnvironment() == "thetool") {
|
||||||
// Main Project Table
|
// Main Project Table
|
||||||
$projects = $this->table('WarehouseProject');
|
$projects = $this->table('WarehouseProject');
|
||||||
$projects->addColumn('projectNumber', 'string', ['limit' => 20, 'comment' => 'XP-YYYY-NNNN'])
|
$projects->addColumn('projectNumber', 'string', ['limit' => 20, 'comment' => 'XP-YYYY-NNNN'])
|
||||||
->addColumn('title', 'string', ['limit' => 255])
|
->addColumn('title', 'string', ['limit' => 255])
|
||||||
->addColumn('description', 'text', ['null' => true])
|
->addColumn('description', 'text', ['null' => true])
|
||||||
->addColumn('startDate', 'integer', ['null' => true])
|
->addColumn('startDate', 'integer', ['null' => true])
|
||||||
->addColumn('endDate', 'integer', ['null' => true])
|
->addColumn('endDate', 'integer', ['null' => true])
|
||||||
->addColumn('status', 'enum', ['values' => ['new', 'wip', 'finished', 'cancelled'], 'default' => 'new'])
|
->addColumn('status', 'enum', ['values' => ['new', 'wip', 'finished', 'cancelled'], 'default' => 'new'])
|
||||||
->addColumn('financials', 'decimal', ['precision' => 10, 'scale' => 2, 'default' => 0.00])
|
->addColumn('financials', 'decimal', ['precision' => 10, 'scale' => 2, 'default' => 0.00])
|
||||||
->addColumn('storageLocation', 'string', ['limit' => 255, 'null' => true])
|
->addColumn('storageLocation', 'string', ['limit' => 255, 'null' => true])
|
||||||
->addColumn('externalTeam', 'text', ['null' => true, 'comment' => 'Free text for external participants'])
|
->addColumn('externalTeam', 'text', ['null' => true, 'comment' => 'Free text for external participants'])
|
||||||
->addColumn('createdFromOrderId', 'integer', ['null' => true])
|
->addColumn('createdFromOrderId', 'integer', ['null' => true, 'signed' => false]) // FIX: Likely needs to match Order ID
|
||||||
->addColumn('createBy', 'integer')
|
->addColumn('createBy', 'integer', ['signed' => false]) // FIX: Likely references a User ID
|
||||||
->addColumn('create', 'integer')
|
->addColumn('create', 'integer')
|
||||||
->addIndex(['projectNumber'], ['unique' => true])
|
->addIndex(['projectNumber'], ['unique' => true])
|
||||||
->create();
|
->create();
|
||||||
|
|
||||||
// Tasks Table
|
// Tasks Table
|
||||||
$tasks = $this->table('WarehouseProjectTask');
|
$tasks = $this->table('WarehouseProjectTask');
|
||||||
$tasks->addColumn('projectId', 'integer')
|
$tasks->addColumn('projectId', 'integer', ['signed' => false]) // <--- FIX HERE
|
||||||
->addColumn('parentTaskId', 'integer', ['null' => true])
|
->addColumn('parentTaskId', 'integer', ['null' => true, 'signed' => false]) // FIX: Good practice for self-referencing FKs
|
||||||
->addColumn('title', 'string', ['limit' => 255])
|
->addColumn('title', 'string', ['limit' => 255])
|
||||||
->addColumn('description', 'text', ['null' => true])
|
->addColumn('description', 'text', ['null' => true])
|
||||||
->addColumn('status', 'enum', ['values' => ['todo', 'in_progress', 'done'], 'default' => 'todo'])
|
->addColumn('status', 'enum', ['values' => ['todo', 'in_progress', 'done'], 'default' => 'todo'])
|
||||||
->addColumn('assignedUserId', 'integer', ['null' => true])
|
->addColumn('assignedUserId', 'integer', ['null' => true, 'signed' => false]) // FIX: Matches User ID
|
||||||
->addColumn('order', 'integer', ['default' => 0])
|
->addColumn('order', 'integer', ['default' => 0])
|
||||||
->addColumn('createBy', 'integer')
|
->addColumn('createBy', 'integer', ['signed' => false]) // FIX
|
||||||
->addColumn('create', 'integer')
|
->addColumn('create', 'integer')
|
||||||
->addForeignKey('projectId', 'WarehouseProject', 'id', ['delete' => 'CASCADE', 'update' => 'CASCADE'])
|
->addForeignKey('projectId', 'WarehouseProject', 'id', ['delete' => 'CASCADE', 'update' => 'CASCADE'])
|
||||||
->create();
|
->create();
|
||||||
|
|
||||||
// Project Members (Internal Team)
|
// Project Members (Internal Team)
|
||||||
$members = $this->table('WarehouseProjectMember');
|
$members = $this->table('WarehouseProjectMember');
|
||||||
$members->addColumn('projectId', 'integer')
|
$members->addColumn('projectId', 'integer', ['signed' => false]) // <--- FIX HERE
|
||||||
->addColumn('userId', 'integer')
|
->addColumn('userId', 'integer', ['signed' => false]) // FIX
|
||||||
->addColumn('role', 'string', ['limit' => 50, 'null' => true])
|
->addColumn('role', 'string', ['limit' => 50, 'null' => true])
|
||||||
->addColumn('create', 'integer')
|
->addColumn('create', 'integer')
|
||||||
->addForeignKey('projectId', 'WarehouseProject', 'id', ['delete' => 'CASCADE', 'update' => 'CASCADE'])
|
->addForeignKey('projectId', 'WarehouseProject', 'id', ['delete' => 'CASCADE', 'update' => 'CASCADE'])
|
||||||
->create();
|
->create();
|
||||||
|
|
||||||
// Link table for Order Requests
|
// Link table for Order Requests
|
||||||
$orderRequests = $this->table('WarehouseProjectOrderRequest');
|
$orderRequests = $this->table('WarehouseProjectOrderRequest');
|
||||||
$orderRequests->addColumn('projectId', 'integer')
|
$orderRequests->addColumn('projectId', 'integer', ['signed' => false]) // <--- FIX HERE
|
||||||
->addColumn('orderRequestId', 'integer')
|
->addColumn('orderRequestId', 'integer', ['signed' => false]) // FIX
|
||||||
->addColumn('create', 'integer')
|
->addColumn('create', 'integer')
|
||||||
->addForeignKey('projectId', 'WarehouseProject', 'id', ['delete' => 'CASCADE', 'update' => 'CASCADE'])
|
->addForeignKey('projectId', 'WarehouseProject', 'id', ['delete' => 'CASCADE', 'update' => 'CASCADE'])
|
||||||
// Assuming WarehouseOrderRequest table exists based on controller analysis
|
->addForeignKey('orderRequestId', 'WarehouseOrderRequest', 'id', ['delete' => 'CASCADE', 'update' => 'CASCADE'])
|
||||||
->addForeignKey('orderRequestId', 'WarehouseOrderRequest', 'id', ['delete' => 'CASCADE', 'update' => 'CASCADE'])
|
->create();
|
||||||
->create();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user