src/Entity/Inventory/ItemMovement.php line 33
<?php
namespace App\Entity\Inventory;
use ApiPlatform\Metadata\ApiResource;
use App\Entity\Common as Common;
use App\Entity\Expediting\Item;
use DateTimeInterface;
use Doctrine\DBAL\Types\Types;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Uid\Ulid;
use Symfony\Component\Validator\Constraints as Assert;
#[ORM\Table(name: 'inventory_item_movement')]
#[ORM\Index(columns: ['item_id'], name: 'inventory_item_movement_item_id_idx')]
#[ORM\Index(columns: ['movement_id'], name: 'inventory_item_movement_movement_id_idx')]
#[ORM\Index(columns: ['inventory_item_id'], name: 'inventory_item_movement_inventory_item_id_idx')]
#[ORM\Index(columns: ['source_unitization_id'], name: 'inventory_item_movement_source_unitization_id_idx')]
#[ORM\Index(columns: ['destination_unitization_id'], name: 'inventory_item_movement_destination_unitization_id_idx')]
#[ORM\Index(columns: ['withdrawal_id'], name: 'inventory_item_movement_withdrawal_id_idx')]
#[ORM\Index(columns: ['disposal_id'], name: 'inventory_item_movement_disposal_id_idx')]
#[ORM\Index(columns: ['created_by'], name: 'inventory_item_movement_created_by_idx')]
#[ORM\Index(columns: ['updated_by'], name: 'inventory_item_movement_updated_by_idx')]
#[ORM\UniqueConstraint(name: 'inventory_item_movement_identifier_key', columns: ['identifier'])]
#[ORM\InheritanceType('SINGLE_TABLE')]
#[ORM\DiscriminatorColumn(name: 'type')]
#[ORM\DiscriminatorMap([
'ENTRY' => ItemStockEntry::class,
'EXIT' => ItemStockExit::class,
])]
#[ORM\Entity]
#[ApiResource(routePrefix: 'inventory')]
Abstract class ItemMovement
{
use Common\Blameable;
use Common\Trackable;
#[ORM\Id]
#[ORM\GeneratedValue(strategy: 'IDENTITY')]
#[ORM\SequenceGenerator(sequenceName: 'inventory_movement_id_seq')]
#[ORM\Column(type: Types::INTEGER)]
private ?int $id = null;
#[Assert\Ulid]
#[Assert\NotNull]
#[ORM\Column(type: 'ulid', unique: true)]
protected ?Ulid $identifier = null;
#[ORM\ManyToOne(targetEntity: Item::class, inversedBy: 'movements')]
#[ORM\JoinColumn(name: 'item_id', referencedColumnName: 'id', nullable: false)]
protected ?Item $item = null;
#[ORM\ManyToOne(targetEntity: InventoryItem::class, inversedBy: 'movements')]
#[ORM\JoinColumn(name: 'inventory_item_id', referencedColumnName: 'id', nullable: false)]
protected ?InventoryItem $inventoryItem = null;
#[ORM\ManyToOne(targetEntity: PackageMovement::class, inversedBy: 'itemsMovements')]
#[ORM\JoinColumn(name: 'movement_id', referencedColumnName: 'id')]
protected ?PackageMovement $packageMovement = null;
#[Assert\Type(type: Types::INTEGER)]
#[ORM\Column(type: Types::INTEGER)]
protected ?int $quantity = null;
#[Assert\Type(type: Types::FLOAT)]
#[ORM\Column(type: Types::DECIMAL, precision: 18, scale: 5)]
protected ?float $unitPrice = null;
#[Assert\Type(type: Types::FLOAT)]
#[ORM\Column(type: Types::DECIMAL, precision: 18, scale: 5)]
protected ?float $value = null;
#[Assert\Type(type: DateTimeInterface::class)]
#[ORM\Column(type: Types::DATETIMETZ_MUTABLE, nullable: false)]
protected ?DateTimeInterface $completedAt = null;
public function __construct()
{
$this->identifier = new Ulid();
}
public function getId(): ?int
{
return $this->id;
}
public function getIdentifier(): ?Ulid
{
return $this->identifier;
}
public function setIdentifier(Ulid $identifier): static
{
$this->identifier = $identifier;
return $this;
}
public function getQuantity(): ?int
{
return $this->quantity;
}
public function setQuantity(int $quantity): static
{
$this->quantity = $quantity;
return $this;
}
public function getUnitPrice(): ?string
{
return $this->unitPrice;
}
public function setUnitPrice(string $unitPrice): static
{
$this->unitPrice = $unitPrice;
return $this;
}
public function getValue(): ?string
{
return $this->value;
}
public function setValue(string $value): static
{
$this->value = $value;
return $this;
}
public function getCompletedAt(): ?DateTimeInterface
{
return $this->completedAt;
}
public function setCompletedAt(DateTimeInterface $completedAt): static
{
$this->completedAt = $completedAt;
return $this;
}
public function getItem(): ?Item
{
return $this->item;
}
public function setItem(?Item $item): static
{
$this->item = $item;
return $this;
}
public function getInventoryItem(): ?InventoryItem
{
return $this->inventoryItem;
}
public function setInventoryItem(?InventoryItem $inventoryItem): static
{
$this->inventoryItem = $inventoryItem;
return $this;
}
public function getPackageMovement(): ?PackageMovement
{
return $this->packageMovement;
}
public function setPackageMovement(?PackageMovement $packageMovement): static
{
$this->packageMovement = $packageMovement;
return $this;
}
}