Files
thetool/db/migrations/20241010070000_warehouse_modify.php
2024-10-10 08:49:50 +02:00

146 lines
6.9 KiB
PHP

<?php /** @noinspection ALL */
declare(strict_types=1);
use Phinx\Migration\AbstractMigration;
final class WarehouseModify extends AbstractMigration
{
public function up(): void
{
if ($this->getEnvironment() == "thetool") {
// Create Tables
$WarehouseShippingNoteTextElement = $this->table("WarehouseShippingNoteTextElement", ["signed" => true]);
$WarehouseShippingNoteTextElement
->addColumn('title', 'string', ['null' => false])
->addColumn('content', 'text', ['null' => false])
->addColumn('create', 'integer', ['null' => false, 'default' => 1728541890])
->addColumn('createBy', 'integer', ['null' => false, 'default' => 1])
->create();
$WarehouseShippingNote = $this->table("WarehouseShippingNote", ["signed" => true]);
$WarehouseShippingNote
->addColumn('billingAddressId', 'integer', ['null' => false])
->addColumn('deliveryAddressName', 'string', ['null' => false])
->addColumn('deliveryAddressLine', 'string', ['null' => false])
->addColumn('deliveryAddressPLZ', 'string', ['null' => false])
->addColumn('deliveryAddressCity', 'string', ['null' => false])
->addColumn('status', 'enum', ['values' => ['new', 'accepted', 'invoiced'], 'null' => false])
->addColumn('positions', 'text', ['null' => false])
->addColumn('textElements', 'text', ['null' => false])
->addColumn('create', 'integer', ['null' => false, 'default' => 1728541890])
->addColumn('createBy', 'integer', ['null' => false, 'default' => 1])
->create();
$WarehouseOrder = $this->table("WarehouseOrder", ["signed" => true]);
$WarehouseOrder
->addColumn('distributorId', 'integer', ['null' => false])
->addColumn('intRef', 'string', ['null' => true])
->addColumn('extRef', 'string', ['null' => true])
->addColumn('status', 'enum', ['values' => ['new', 'accepted', 'sent', 'done'], 'null' => false, 'default' => 'new'])
->addColumn('sum', 'float', ['null' => true])
->addColumn('trackingNumber', 'string', ['null' => true])
->addColumn('create', 'integer', ['null' => false, 'default' => 1728541890])
->addColumn('createBy', 'integer', ['null' => false, 'default' => 1])
->create();
$WarehouseOrderItem = $this->table("WarehouseOrderItem", ["signed" => true]);
$WarehouseOrderItem
->addColumn('orderId', 'integer', ['null' => false])
->addColumn('articleId', 'integer', ['null' => false])
->addColumn('quantity', 'integer', ['null' => false])
->addColumn('price', 'float', ['null' => false])
->addForeignKey('orderId', 'WarehouseOrder', 'id')
->addForeignKey('articleId', 'WarehouseArticle', 'id')
->create();
// Delete Table
$WarehouseRevenueAccount = $this->table("WarehouseRevenueAccount");
$WarehouseRevenueAccount->drop()->save();
// Modify Tables
$WarehouseLocation = $this->table("WarehouseLocation");
$WarehouseLocation
->addColumn('description', 'text', ['null' => true])
->addColumn('createBy', 'integer', ['null' => false, 'default' => 1728541890])
->addColumn('create', 'integer', ['null' => false, 'default' => 1])
->update();
$WarehouseItem = $this->table("WarehouseItem");
$WarehouseItem
->changeColumn('quantity', 'integer', ['null' => true])
->addColumn('rack', 'string', ['null' => true])
->addColumn('shelf', 'string', ['null' => true])
->addColumn('createBy', 'integer', ['null' => false, 'default' => 1728541890])
->addColumn('create', 'integer', ['null' => false, 'default' => 1])
->update();
$WarehouseArticlePriceType = $this->table("WarehouseArticlePriceType");
$WarehouseArticlePriceType
->addColumn('description', 'string', ['null' => true])
->addColumn('defaultPriceFactor', 'float', ['null' => true])
->addColumn('createBy', 'integer', ['null' => false, 'default' => 1728541890])
->addColumn('create', 'integer', ['null' => false, 'default' => 1])
->update();
// Set nullable createBy and create columns
$WarehouseLocation
->changeColumn('createBy', 'integer', ['null' => true])
->changeColumn('create', 'integer', ['null' => true])
->save();
$WarehouseItem
->changeColumn('createBy', 'integer', ['null' => true])
->changeColumn('create', 'integer', ['null' => true])
->save();
$WarehouseArticlePriceType
->changeColumn('createBy', 'integer', ['null' => true])
->changeColumn('create', 'integer', ['null' => true])
->save();
}
}
public function down(): void
{
if ($this->getEnvironment() == "thetool") {
// Drop created tables
$this->table('WarehouseShippingNoteTextElement')->drop()->save();
$this->table('WarehouseShippingNote')->drop()->save();
$this->table('WarehouseOrder')->drop()->save();
$this->table('WarehouseOrderItem')->drop()->save();
// Recreate deleted table
$WarehouseRevenueAccount = $this->table("WarehouseRevenueAccount");
$WarehouseRevenueAccount
->addColumn('revenueAccountNumber', 'integer', ['null' => false])
->addColumn('title', 'string', ['null' => false])
->create();
// Revert modifications
$WarehouseLocation = $this->table("WarehouseLocation");
$WarehouseLocation
->removeColumn('description')
->removeColumn('createBy')
->removeColumn('create')
->update();
$WarehouseItem = $this->table("WarehouseItem");
$WarehouseItem
->changeColumn('quantity', 'integer', ['null' => false])
->removeColumn('rack')
->removeColumn('shelf')
->removeColumn('createBy')
->removeColumn('create')
->update();
$WarehouseArticlePriceType = $this->table("WarehouseArticlePriceType");
$WarehouseArticlePriceType
->removeColumn('description')
->removeColumn('defaultPriceFactor')
->removeColumn('createBy')
->removeColumn('create')
->update();
}
}
}