src/Entity/Inventory/ItemStockEntry.php line 12

  1. <?php
  2. namespace App\Entity\Inventory;
  3. use ApiPlatform\Metadata\ApiResource;
  4. use Doctrine\ORM\Mapping as ORM;
  5. use Symfony\Component\Validator\Constraints as Assert;
  6. use Symfony\Component\Validator\Context\ExecutionContextInterface;
  7. #[ORM\Entity]
  8. #[ApiResource(routePrefix'inventory')]
  9. class ItemStockEntry extends ItemMovement
  10. {
  11.     #[ORM\ManyToOne(targetEntityInventoryItemUnitization::class, inversedBy'outputs')]
  12.     #[ORM\JoinColumn(name'source_unitization_id'referencedColumnName'id')]
  13.     private ?InventoryItemUnitization $sourceUnitization null;
  14.     #[Assert\Callback]
  15.     public function validate(ExecutionContextInterface $context$payload): void
  16.     {
  17.         if (empty($this->packageMovement) && empty($this->sourceUnitization)) {
  18.             $context->buildViolation('Item movement must be associated only with either, a package entry, or a source unitization')
  19.                 ->atPath('packageMovement')
  20.                 ->addViolation();
  21.             $context->buildViolation('Item movement must be associated only with either, a package entry, or a source unitization')
  22.                 ->atPath('sourceUnitization')
  23.                 ->addViolation();
  24.         }
  25.     }
  26.     public function getSourceUnitization(): ?InventoryItemUnitization
  27.     {
  28.         return $this->sourceUnitization;
  29.     }
  30.     public function setSourceUnitization(?InventoryItemUnitization $sourceUnitization): static
  31.     {
  32.         $this->sourceUnitization $sourceUnitization;
  33.         return $this;
  34.     }
  35. }