<?php
namespace App\Entity\Almacen;
use App\Repository\Almacen\ArticuloRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
use App\Entity\Equipos\Maquinaria;
/**
* @ORM\Entity(repositoryClass=ArticuloRepository::class)
* @ORM\Table(name="gral_articulos")
* @UniqueEntity(
* fields={"descripcion", "categoria"},
* errorPath="descripcion",
* message="Ya existe una categoria con el descripcion ingresada"
* )
*/
class Articulo
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=255)
* @Assert\NotNull(message="El campo es requerido")
*/
private $descripcion;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $codigo;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $codigoBarras;
/**
* @ORM\Column(type="boolean", options={"default"=true})
*/
private $activo = true;
/**
* @ORM\Column(type="boolean", options={"default"=false})
*/
private $herramienta = false;
/**
* @ORM\ManyToOne(targetEntity=UnidadMedida::class)
* @ORM\JoinColumn(name="id_uda_med", referencedColumnName="id", nullable=true)
* @Assert\NotNull(message="El campo es requerido")
*/
private $unidaMedida;
/**
* @ORM\ManyToOne(targetEntity=Categoria::class)
* @ORM\JoinColumn(name="id_categoria", referencedColumnName="id", nullable=true)
* @Assert\NotNull(message="El campo es requerido")
*/
private $categoria;
/**
* @ORM\ManyToMany(targetEntity=Maquinaria::class, inversedBy="articulos")
* @ORM\JoinTable(name="config_articulo_maquina")
*/
private $maquinarias;
/**
* ORM\OneToMany(targetEntity=ArticuloDeposito::class, mappedBy="articulo")
*/
private $articulosDeposito;
/**
* @ORM\ManyToMany(targetEntity=AplicacionArticulo::class)
* @ORM\JoinTable(name="gral_articulo_aplicacion",
* joinColumns={@ORM\JoinColumn(name="id_articulo", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="id_aplicacion", referencedColumnName="id")}
* )
*/
private $aplicaciones;
public function getListaAplicaciones()
{
return implode(' - ', $this->aplicaciones->toArray());
}
public function __construct()
{
$this->maquinarias = new ArrayCollection();
$this->articulosDeposito = new ArrayCollection();
$this->aplicaciones = new ArrayCollection();
}
public function __toString()
{
return $this->descripcion;
}
public function getId(): ?int
{
return $this->id;
}
public function getDescripcion(): ?string
{
return $this->descripcion;
}
public function setDescripcion(string $descripcion): self
{
$this->descripcion = $descripcion;
return $this;
}
public function getCodigo(): ?string
{
return $this->codigo;
}
public function setCodigo(?string $codigo): self
{
$this->codigo = $codigo;
return $this;
}
public function getCodigoBarras(): ?string
{
return $this->codigoBarras;
}
public function setCodigoBarras(?string $codigoBarras): self
{
$this->codigoBarras = $codigoBarras;
return $this;
}
public function getUnidaMedida(): ?UnidadMedida
{
return $this->unidaMedida;
}
public function setUnidaMedida(?UnidadMedida $unidaMedida): self
{
$this->unidaMedida = $unidaMedida;
return $this;
}
public function getCategoria(): ?Categoria
{
return $this->categoria;
}
public function setCategoria(?Categoria $categoria): self
{
$this->categoria = $categoria;
return $this;
}
/**
* @return Collection<int, Maquinaria>
*/
public function getMaquinarias(): Collection
{
return $this->maquinarias;
}
public function addMaquinaria(Maquinaria $maquinaria): self
{
if (!$this->maquinarias->contains($maquinaria)) {
$this->maquinarias[] = $maquinaria;
}
return $this;
}
public function removeMaquinaria(Maquinaria $maquinaria): self
{
$this->maquinarias->removeElement($maquinaria);
return $this;
}
/**
* @return Collection<int, ArticuloDeposito>
*/
public function getArticulosDeposito(): Collection
{
return $this->articulosDeposito;
}
public function addArticulosDeposito(ArticuloDeposito $articulosDeposito): self
{
if (!$this->articulosDeposito->contains($articulosDeposito)) {
$this->articulosDeposito[] = $articulosDeposito;
$articulosDeposito->setArticarticulos($this);
}
return $this;
}
public function removeArticulosDeposito(ArticuloDeposito $articulosDeposito): self
{
if ($this->articulosDeposito->removeElement($articulosDeposito)) {
// set the owning side to null (unless already changed)
if ($articulosDeposito->getArticarticulos() === $this) {
$articulosDeposito->setArticarticulos(null);
}
}
return $this;
}
public function isActivo(): ?bool
{
return $this->activo;
}
public function setActivo(bool $activo): self
{
$this->activo = $activo;
return $this;
}
public function isHerramienta(): ?bool
{
return $this->herramienta;
}
public function setHerramienta(bool $herramienta): self
{
$this->herramienta = $herramienta;
return $this;
}
/**
* @return Collection<int, AplicacionArticulo>
*/
public function getAplicaciones(): Collection
{
return $this->aplicaciones;
}
public function addAplicacione(AplicacionArticulo $aplicacione): self
{
if (!$this->aplicaciones->contains($aplicacione)) {
$this->aplicaciones[] = $aplicacione;
}
return $this;
}
public function removeAplicacione(AplicacionArticulo $aplicacione): self
{
$this->aplicaciones->removeElement($aplicacione);
return $this;
}
}