src/Entity/Inventory/ItemStockExit.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 ItemStockExit extends ItemMovement
  10. {
  11.     #[ORM\ManyToOne(targetEntityWithdrawal::class, inversedBy'itemsMovements')]
  12.     #[ORM\JoinColumn(name'withdrawal_id'referencedColumnName'id')]
  13.     private ?Withdrawal $withdrawal null;
  14.     #[ORM\ManyToOne(targetEntityInventoryItemUnitization::class, inversedBy'inputs')]
  15.     #[ORM\JoinColumn(name'destination_unitization_id'referencedColumnName'id')]
  16.     private ?InventoryItemUnitization $destinationUnitization null;
  17.     #[ORM\ManyToOne(targetEntityInventoryItemDisposal::class, inversedBy'movements')]
  18.     #[ORM\JoinColumn(name'disposal_id'referencedColumnName'id')]
  19.     private ?InventoryItemDisposal $disposal null;
  20.     #[Assert\Callback]
  21.     public function validate(ExecutionContextInterface $context$payload): void
  22.     {
  23.         if (empty($this->packageMovement) && empty($this->withdrawal) && empty($this->destinationUnitization) && empty($this->disposal)) {
  24.             $context->buildViolation('ItemStockExit must be associated only with either, a package movement, a withdrawal, a destination unitization, or a disposal')
  25.                 ->atPath('packageMovement')
  26.                 ->addViolation();
  27.             $context->buildViolation('ItemStockExit must be associated only with either, a package movement, a withdrawal, a destination unitization, or a disposal')
  28.                 ->atPath('withdrawal')
  29.                 ->addViolation();
  30.             $context->buildViolation('ItemStockExit must be associated only with either, a package movement, a withdrawal, a destination unitization, or a disposal')
  31.                 ->atPath('destinationUnitization')
  32.                 ->addViolation();
  33.             $context->buildViolation('ItemStockExit must be associated only with either, a package movement, a withdrawal, a destination unitization, or a disposal')
  34.                 ->atPath('disposal')
  35.                 ->addViolation();
  36.         }
  37.     }
  38.     public function getWithdrawal(): ?Withdrawal
  39.     {
  40.         return $this->withdrawal;
  41.     }
  42.     public function setWithdrawal(?Withdrawal $withdrawal): static
  43.     {
  44.         $this->withdrawal $withdrawal;
  45.         return $this;
  46.     }
  47.     public function getDestinationUnitization(): ?InventoryItemUnitization
  48.     {
  49.         return $this->destinationUnitization;
  50.     }
  51.     public function setDestinationUnitization(?InventoryItemUnitization $destinationUnitization): static
  52.     {
  53.         $this->destinationUnitization $destinationUnitization;
  54.         return $this;
  55.     }
  56.     public function getDisposal(): ?InventoryItemDisposal
  57.     {
  58.         return $this->disposal;
  59.     }
  60.     public function setDisposal(?InventoryItemDisposal $disposal): static
  61.     {
  62.         $this->disposal $disposal;
  63.         return $this;
  64.     }
  65. }