<?php
namespace App\Entity\Movimientos;
use App\Repository\Movimientos\ItemMovimientoRepository;
use Doctrine\DBAL\Types\Types;
use Doctrine\ORM\Mapping as ORM;
use App\Entity\Almacen\Articulo;
use Symfony\Component\Validator\Constraints as Assert;
use App\Entity\Calidad\InsumoArticulo;
use App\Entity\Calidad\ProductoArticulo;
use App\Entity\Calidad\TipoArticulo;
use App\Entity\Calidad\Descripcion;
use App\Entity\Mantenimiento\PedidoReparacionDiagramado;
/**
* @ORM\Entity(repositoryClass=ItemMovimientoRepository::class)
*/
class ItemMovimiento
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="float")
* @Assert\NotNull(message="El campo es requerido")
*/
private $cantidad;
/**
* @ORM\Column(name="cantidad_ingresada", type="float")
*/
private $cantidadIngresada = 0;
//Para las ordenes de compra es la cantidad que efecivamente ingreso al stock - Para el caso de las ordenes de reparacion es la cantidad devuelta de producto excedente a la reparacion
/**
* @ORM\Column(name="observaciones", type="text", nullable=true)
*/
private $observaciones;
/**
* @ORM\Column(name="observado", type="boolean", nullable=true)
*/
private $observado = false;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $remito;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $trazabilidad;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $estado; //Esto es para calidad representa el estadoen el que se recibieron los articulos
/**
* @ORM\ManyToOne(targetEntity=Articulo::class)
* @ORM\JoinColumn(name="id_articulo", referencedColumnName="id")
* @Assert\NotNull(message="El campo es requerido")
*/
private $articulo;
/**
* @ORM\ManyToOne(targetEntity=MovimientoStock::class, inversedBy="items")
* @ORM\JoinColumn(name="id_movimiento", referencedColumnName="id")
* @Assert\NotNull(message="El campo es requerido")
*/
private $movimiento;
/**
* @ORM\ManyToOne(targetEntity=PedidoReparacionDiagramado::class)
* @ORM\JoinColumn(name="id_tarea_diag", referencedColumnName="id", nullable=true)
*/
private $tareaDiagramada;
/**
* @ORM\ManyToOne(targetEntity=InsumoArticulo::class)
* @ORM\JoinColumn(name="id_insumo", referencedColumnName="id", nullable=true)
*/
private $insumo;
/**
* @ORM\ManyToOne(targetEntity=ProductoArticulo::class)
* @ORM\JoinColumn(name="id_producto", referencedColumnName="id", nullable=true)
*/
private $producto;
/**
* @ORM\ManyToOne(targetEntity=TipoArticulo::class)
* @ORM\JoinColumn(name="id_tipo", referencedColumnName="id", nullable=true)
*/
private $tipo;
/**
* @ORM\ManyToOne(targetEntity=Descripcion::class)
* @ORM\JoinColumn(name="id_descripcion", referencedColumnName="id", nullable=true)
*/
private $descripcion;
/**
* @ORM\PreUpdate
*/
public function setCreatedAtValue()
{
$this->observado = ($this->cantidad != $this->cantidadIngresada);
}
public function getId(): ?int
{
return $this->id;
}
public function getCantidad(): ?float
{
return $this->cantidad;
}
public function setCantidad(float $cantidad): self
{
$this->cantidad = $cantidad;
return $this;
}
public function getArticulo(): ?Articulo
{
return $this->articulo;
}
public function setArticulo(?Articulo $articulo): self
{
$this->articulo = $articulo;
return $this;
}
public function getMovimiento(): ?MovimientoStock
{
return $this->movimiento;
}
public function setMovimiento(?MovimientoStock $movimiento): self
{
$this->movimiento = $movimiento;
return $this;
}
public function getCantidadIngresada(): ?float
{
return $this->cantidadIngresada;
}
public function setCantidadIngresada(float $cantidadIngresada): self
{
$this->cantidadIngresada = $cantidadIngresada;
return $this;
}
public function getObservaciones(): ?string
{
return $this->observaciones;
}
public function setObservaciones(?string $observaciones): self
{
$this->observaciones = $observaciones;
return $this;
}
public function isObservado(): ?bool
{
return $this->observado;
}
public function setObservado(?bool $observado): self
{
$this->observado = $observado;
return $this;
}
public function getTareaDiagramada(): ?PedidoReparacionDiagramado
{
return $this->tareaDiagramada;
}
public function setTareaDiagramada(?PedidoReparacionDiagramado $tareaDiagramada): self
{
$this->tareaDiagramada = $tareaDiagramada;
return $this;
}
public function getRemito(): ?string
{
return $this->remito;
}
public function setRemito(?string $remito): self
{
$this->remito = $remito;
return $this;
}
public function getTrazabilidad(): ?string
{
return $this->trazabilidad;
}
public function setTrazabilidad(?string $trazabilidad): self
{
$this->trazabilidad = $trazabilidad;
return $this;
}
public function getInsumo(): ?InsumoArticulo
{
return $this->insumo;
}
public function setInsumo(?InsumoArticulo $insumo): self
{
$this->insumo = $insumo;
return $this;
}
public function getProducto(): ?ProductoArticulo
{
return $this->producto;
}
public function setProducto(?ProductoArticulo $producto): self
{
$this->producto = $producto;
return $this;
}
public function getTipo(): ?TipoArticulo
{
return $this->tipo;
}
public function setTipo(?TipoArticulo $tipo): self
{
$this->tipo = $tipo;
return $this;
}
public function getDescripcion(): ?Descripcion
{
return $this->descripcion;
}
public function setDescripcion(?Descripcion $descripcion): self
{
$this->descripcion = $descripcion;
return $this;
}
public function getEstado(): ?string
{
return $this->estado;
}
public function setEstado(?string $estado): self
{
$this->estado = $estado;
return $this;
}
}