src/Entity/Inventory/ItemMovement.php line 33

  1. <?php
  2. namespace App\Entity\Inventory;
  3. use ApiPlatform\Metadata\ApiResource;
  4. use App\Entity\Common as Common;
  5. use App\Entity\Expediting\Item;
  6. use DateTimeInterface;
  7. use Doctrine\DBAL\Types\Types;
  8. use Doctrine\ORM\Mapping as ORM;
  9. use Symfony\Component\Uid\Ulid;
  10. use Symfony\Component\Validator\Constraints as Assert;
  11. #[ORM\Table(name'inventory_item_movement')]
  12. #[ORM\Index(columns: ['item_id'], name'inventory_item_movement_item_id_idx')]
  13. #[ORM\Index(columns: ['movement_id'], name'inventory_item_movement_movement_id_idx')]
  14. #[ORM\Index(columns: ['inventory_item_id'], name'inventory_item_movement_inventory_item_id_idx')]
  15. #[ORM\Index(columns: ['source_unitization_id'], name'inventory_item_movement_source_unitization_id_idx')]
  16. #[ORM\Index(columns: ['destination_unitization_id'], name'inventory_item_movement_destination_unitization_id_idx')]
  17. #[ORM\Index(columns: ['withdrawal_id'], name'inventory_item_movement_withdrawal_id_idx')]
  18. #[ORM\Index(columns: ['disposal_id'], name'inventory_item_movement_disposal_id_idx')]
  19. #[ORM\Index(columns: ['created_by'], name'inventory_item_movement_created_by_idx')]
  20. #[ORM\Index(columns: ['updated_by'], name'inventory_item_movement_updated_by_idx')]
  21. #[ORM\UniqueConstraint(name'inventory_item_movement_identifier_key'columns: ['identifier'])]
  22. #[ORM\InheritanceType('SINGLE_TABLE')]
  23. #[ORM\DiscriminatorColumn(name'type')]
  24. #[ORM\DiscriminatorMap([
  25.     'ENTRY' => ItemStockEntry::class,
  26.     'EXIT' => ItemStockExit::class,
  27. ])]
  28. #[ORM\Entity]
  29. #[ApiResource(routePrefix'inventory')]
  30. Abstract class ItemMovement
  31. {
  32.     use Common\Blameable;
  33.     use Common\Trackable;
  34.     #[ORM\Id]
  35.     #[ORM\GeneratedValue(strategy'IDENTITY')]
  36.     #[ORM\SequenceGenerator(sequenceName'inventory_movement_id_seq')]
  37.     #[ORM\Column(typeTypes::INTEGER)]
  38.     private ?int $id null;
  39.     #[Assert\Ulid]
  40.     #[Assert\NotNull]
  41.     #[ORM\Column(type'ulid'uniquetrue)]
  42.     protected ?Ulid $identifier null;
  43.     #[ORM\ManyToOne(targetEntityItem::class, inversedBy'movements')]
  44.     #[ORM\JoinColumn(name'item_id'referencedColumnName'id'nullablefalse)]
  45.     protected ?Item $item null;
  46.     #[ORM\ManyToOne(targetEntityInventoryItem::class, inversedBy'movements')]
  47.     #[ORM\JoinColumn(name'inventory_item_id'referencedColumnName'id'nullablefalse)]
  48.     protected ?InventoryItem $inventoryItem null;
  49.     #[ORM\ManyToOne(targetEntityPackageMovement::class, inversedBy'itemsMovements')]
  50.     #[ORM\JoinColumn(name'movement_id'referencedColumnName'id')]
  51.     protected ?PackageMovement $packageMovement null;
  52.     #[Assert\Type(typeTypes::INTEGER)]
  53.     #[ORM\Column(typeTypes::INTEGER)]
  54.     protected ?int $quantity null;
  55.     #[Assert\Type(typeTypes::FLOAT)]
  56.     #[ORM\Column(typeTypes::DECIMALprecision18scale5)]
  57.     protected ?float $unitPrice null;
  58.     #[Assert\Type(typeTypes::FLOAT)]
  59.     #[ORM\Column(typeTypes::DECIMALprecision18scale5)]
  60.     protected ?float $value null;
  61.     #[Assert\Type(typeDateTimeInterface::class)]
  62.     #[ORM\Column(typeTypes::DATETIMETZ_MUTABLEnullablefalse)]
  63.     protected ?DateTimeInterface $completedAt null;
  64.     public function __construct()
  65.     {
  66.         $this->identifier = new Ulid();
  67.     }
  68.     public function getId(): ?int
  69.     {
  70.         return $this->id;
  71.     }
  72.     public function getIdentifier(): ?Ulid
  73.     {
  74.         return $this->identifier;
  75.     }
  76.     public function setIdentifier(Ulid $identifier): static
  77.     {
  78.         $this->identifier $identifier;
  79.         return $this;
  80.     }
  81.     public function getQuantity(): ?int
  82.     {
  83.         return $this->quantity;
  84.     }
  85.     public function setQuantity(int $quantity): static
  86.     {
  87.         $this->quantity $quantity;
  88.         return $this;
  89.     }
  90.     public function getUnitPrice(): ?string
  91.     {
  92.         return $this->unitPrice;
  93.     }
  94.     public function setUnitPrice(string $unitPrice): static
  95.     {
  96.         $this->unitPrice $unitPrice;
  97.         return $this;
  98.     }
  99.     public function getValue(): ?string
  100.     {
  101.         return $this->value;
  102.     }
  103.     public function setValue(string $value): static
  104.     {
  105.         $this->value $value;
  106.         return $this;
  107.     }
  108.     public function getCompletedAt(): ?DateTimeInterface
  109.     {
  110.         return $this->completedAt;
  111.     }
  112.     public function setCompletedAt(DateTimeInterface $completedAt): static
  113.     {
  114.         $this->completedAt $completedAt;
  115.         return $this;
  116.     }
  117.     public function getItem(): ?Item
  118.     {
  119.         return $this->item;
  120.     }
  121.     public function setItem(?Item $item): static
  122.     {
  123.         $this->item $item;
  124.         return $this;
  125.     }
  126.     public function getInventoryItem(): ?InventoryItem
  127.     {
  128.         return $this->inventoryItem;
  129.     }
  130.     public function setInventoryItem(?InventoryItem $inventoryItem): static
  131.     {
  132.         $this->inventoryItem $inventoryItem;
  133.         return $this;
  134.     }
  135.     public function getPackageMovement(): ?PackageMovement
  136.     {
  137.         return $this->packageMovement;
  138.     }
  139.     public function setPackageMovement(?PackageMovement $packageMovement): static
  140.     {
  141.         $this->packageMovement $packageMovement;
  142.         return $this;
  143.     }
  144. }