src/Entity/Inventory/ItemStockExit.php line 12
<?php
namespace App\Entity\Inventory;
use ApiPlatform\Metadata\ApiResource;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Component\Validator\Context\ExecutionContextInterface;
#[ORM\Entity]
#[ApiResource(routePrefix: 'inventory')]
class ItemStockExit extends ItemMovement
{
#[ORM\ManyToOne(targetEntity: Withdrawal::class, inversedBy: 'itemsMovements')]
#[ORM\JoinColumn(name: 'withdrawal_id', referencedColumnName: 'id')]
private ?Withdrawal $withdrawal = null;
#[ORM\ManyToOne(targetEntity: InventoryItemUnitization::class, inversedBy: 'inputs')]
#[ORM\JoinColumn(name: 'destination_unitization_id', referencedColumnName: 'id')]
private ?InventoryItemUnitization $destinationUnitization = null;
#[ORM\ManyToOne(targetEntity: InventoryItemDisposal::class, inversedBy: 'movements')]
#[ORM\JoinColumn(name: 'disposal_id', referencedColumnName: 'id')]
private ?InventoryItemDisposal $disposal = null;
#[Assert\Callback]
public function validate(ExecutionContextInterface $context, $payload): void
{
if (empty($this->packageMovement) && empty($this->withdrawal) && empty($this->destinationUnitization) && empty($this->disposal)) {
$context->buildViolation('ItemStockExit must be associated only with either, a package movement, a withdrawal, a destination unitization, or a disposal')
->atPath('packageMovement')
->addViolation();
$context->buildViolation('ItemStockExit must be associated only with either, a package movement, a withdrawal, a destination unitization, or a disposal')
->atPath('withdrawal')
->addViolation();
$context->buildViolation('ItemStockExit must be associated only with either, a package movement, a withdrawal, a destination unitization, or a disposal')
->atPath('destinationUnitization')
->addViolation();
$context->buildViolation('ItemStockExit must be associated only with either, a package movement, a withdrawal, a destination unitization, or a disposal')
->atPath('disposal')
->addViolation();
}
}
public function getWithdrawal(): ?Withdrawal
{
return $this->withdrawal;
}
public function setWithdrawal(?Withdrawal $withdrawal): static
{
$this->withdrawal = $withdrawal;
return $this;
}
public function getDestinationUnitization(): ?InventoryItemUnitization
{
return $this->destinationUnitization;
}
public function setDestinationUnitization(?InventoryItemUnitization $destinationUnitization): static
{
$this->destinationUnitization = $destinationUnitization;
return $this;
}
public function getDisposal(): ?InventoryItemDisposal
{
return $this->disposal;
}
public function setDisposal(?InventoryItemDisposal $disposal): static
{
$this->disposal = $disposal;
return $this;
}
}