migrations/Purchasing/Version20200306152908_PurchasingLineItem.php line 1

  1. <?php
  2. declare(strict_types=1);
  3. namespace DoctrineMigrations\Purchasing;
  4. use App\Doctrine\Type\Purchasing\LineItemStatus;
  5. use Doctrine\DBAL\Schema\Schema;
  6. use Doctrine\Migrations\AbstractMigration;
  7. /**
  8.  * Auto-generated Migration: Please modify to your needs!
  9.  */
  10. final class Version20200306152908_PurchasingLineItem extends AbstractMigration
  11. {
  12.     public function getDescription(): string
  13.     {
  14.         return 'Add line item table';
  15.     }
  16.     public function up(Schema $schema): void
  17.     {
  18.         $lineItemStatusType LineItemStatus::getName();
  19.         $defaultStatus LineItemStatus::ORDERED->value;
  20.         $this->addSql("CREATE TABLE purchasing_line_item (
  21.             id                              SERIAL PRIMARY KEY,
  22.             identifier                      UUID                        NOT NULL,
  23.             slug                            CHARACTER VARYING           NOT NULL,
  24.             order_id                        INTEGER                     NOT NULL REFERENCES purchasing_order (id),
  25.             customer_id                     INTEGER                              REFERENCES public.company (id),
  26.             supplier_id                     INTEGER                              REFERENCES public.company (id),
  27.             asset_id                        INTEGER                              REFERENCES company_asset (id),
  28.             flow_id                         INTEGER                              REFERENCES purchasing_flow (id),
  29.             number                          CHARACTER VARYING           NOT NULL,
  30.             material_number                 CHARACTER VARYING,
  31.             material_group                  CHARACTER VARYING,
  32.             supplier_part_number            CHARACTER VARYING,
  33.             supplier_description            CHARACTER VARYING,
  34.             customer_description            CHARACTER VARYING,
  35.             quantity                        INTEGER,
  36.             hs_code                         CHARACTER VARYING,
  37.             country_of_origin               CHARACTER VARYING,
  38.             currency                        CHARACTER VARYING(3),
  39.             unit_price                      DECIMAL(18, 5),
  40.             value                           DECIMAL(18, 5),
  41.             available_on                    DATE,
  42.             status                          {$lineItemStatusType}       NOT NULL DEFAULT '{$defaultStatus}',
  43.             created_by                      INTEGER                     NOT NULL REFERENCES public.user (id),
  44.             updated_by                      INTEGER                              REFERENCES public.user (id),
  45.             created_at                      TIMESTAMP(0) WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
  46.             updated_at                      TIMESTAMP(0) WITH TIME ZONE,
  47.             deleted_at                      TIMESTAMP(0) WITH TIME ZONE,
  48.             CONSTRAINT purchasing_line_item_identifier_key UNIQUE (identifier),
  49.             CONSTRAINT purchasing_line_item_order_id_number_key UNIQUE (order_id, number),
  50.             CONSTRAINT purchasing_line_item_slug_key UNIQUE (slug)
  51.         )");
  52.         $this->addSql("COMMENT ON COLUMN purchasing_line_item.identifier IS '(DC2Type:ulid)'");
  53.         $this->addSql("CREATE INDEX purchasing_line_item_order_id_idx ON purchasing_line_item (order_id)");
  54.         $this->addSql("CREATE INDEX purchasing_line_item_customer_id_idx ON purchasing_line_item (customer_id)");
  55.         $this->addSql("CREATE INDEX purchasing_line_item_supplier_id_idx ON purchasing_line_item (supplier_id)");
  56.         $this->addSql("CREATE INDEX purchasing_line_item_asset_id_idx ON purchasing_line_item (asset_id)");
  57.         $this->addSql("CREATE INDEX purchasing_line_item_flow_id_idx ON purchasing_line_item (flow_id)");
  58.         $this->addSql("CREATE INDEX purchasing_line_item_created_by_idx ON purchasing_line_item (created_by)");
  59.         $this->addSql("CREATE INDEX purchasing_line_item_updated_by_idx ON purchasing_line_item (updated_by)");
  60.     }
  61.     public function down(Schema $schema): void
  62.     {
  63.         $this->addSql("DROP TABLE IF EXISTS purchasing_line_item");
  64.     }
  65. }