migrations/Purchasing/Version20200306152908_PurchasingLineItem.php line 1
<?php
declare(strict_types=1);
namespace DoctrineMigrations\Purchasing;
use App\Doctrine\Type\Purchasing\LineItemStatus;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
/**
* Auto-generated Migration: Please modify to your needs!
*/
final class Version20200306152908_PurchasingLineItem extends AbstractMigration
{
public function getDescription(): string
{
return 'Add line item table';
}
public function up(Schema $schema): void
{
$lineItemStatusType = LineItemStatus::getName();
$defaultStatus = LineItemStatus::ORDERED->value;
$this->addSql("CREATE TABLE purchasing_line_item (
id SERIAL PRIMARY KEY,
identifier UUID NOT NULL,
slug CHARACTER VARYING NOT NULL,
order_id INTEGER NOT NULL REFERENCES purchasing_order (id),
customer_id INTEGER REFERENCES public.company (id),
supplier_id INTEGER REFERENCES public.company (id),
asset_id INTEGER REFERENCES company_asset (id),
flow_id INTEGER REFERENCES purchasing_flow (id),
number CHARACTER VARYING NOT NULL,
material_number CHARACTER VARYING,
material_group CHARACTER VARYING,
supplier_part_number CHARACTER VARYING,
supplier_description CHARACTER VARYING,
customer_description CHARACTER VARYING,
quantity INTEGER,
hs_code CHARACTER VARYING,
country_of_origin CHARACTER VARYING,
currency CHARACTER VARYING(3),
unit_price DECIMAL(18, 5),
value DECIMAL(18, 5),
available_on DATE,
status {$lineItemStatusType} NOT NULL DEFAULT '{$defaultStatus}',
created_by INTEGER NOT NULL REFERENCES public.user (id),
updated_by INTEGER REFERENCES public.user (id),
created_at TIMESTAMP(0) WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP(0) WITH TIME ZONE,
deleted_at TIMESTAMP(0) WITH TIME ZONE,
CONSTRAINT purchasing_line_item_identifier_key UNIQUE (identifier),
CONSTRAINT purchasing_line_item_order_id_number_key UNIQUE (order_id, number),
CONSTRAINT purchasing_line_item_slug_key UNIQUE (slug)
)");
$this->addSql("COMMENT ON COLUMN purchasing_line_item.identifier IS '(DC2Type:ulid)'");
$this->addSql("CREATE INDEX purchasing_line_item_order_id_idx ON purchasing_line_item (order_id)");
$this->addSql("CREATE INDEX purchasing_line_item_customer_id_idx ON purchasing_line_item (customer_id)");
$this->addSql("CREATE INDEX purchasing_line_item_supplier_id_idx ON purchasing_line_item (supplier_id)");
$this->addSql("CREATE INDEX purchasing_line_item_asset_id_idx ON purchasing_line_item (asset_id)");
$this->addSql("CREATE INDEX purchasing_line_item_flow_id_idx ON purchasing_line_item (flow_id)");
$this->addSql("CREATE INDEX purchasing_line_item_created_by_idx ON purchasing_line_item (created_by)");
$this->addSql("CREATE INDEX purchasing_line_item_updated_by_idx ON purchasing_line_item (updated_by)");
}
public function down(Schema $schema): void
{
$this->addSql("DROP TABLE IF EXISTS purchasing_line_item");
}
}