<?php
namespace App\Entity;
use App\Validator as PerseoAssert;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\DBAL\Types\Types;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Table(name="venta", schema="perseo")
* @ORM\EntityListeners({"App\EntityListener\Venta\CalcularPrecioTotalRelojListener"})
* @ORM\Entity(repositoryClass="App\Repository\VentaRepository")
* @Gedmo\SoftDeleteable(fieldName="deletedAt", timeAware=false, hardDelete=true)
* @PerseoAssert\ContraintsValidarEntidadCp()
*/
class Venta
{
/**
* @ORM\Id
* @ORM\Column(type="bigint", options={"unsigned":true})
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string", length=4, nullable=true, options={"comment":"REBU รณ IVA"})
*/
protected $regimen;
/**
* @ORM\Column(type="string", nullable=true)
*/
protected $iban;
/**
* @ORM\Column(type="datetime", nullable=true, name="fecha_confirmacion_venta")
*/
protected $fechaConfirmacionVenta;
/**
* @ORM\Column(type="datetime", nullable=true, name="fecha_envio_prevista")
*/
protected $fechaEnvioPrevista;
/**
* @ORM\Column(type="string", nullable=true, name="direccion_facturacion_direccion")
*/
protected $direccionFacturacionDireccion;
/**
* @ORM\Column(type="string", length=12, nullable=true, name="direccion_facturacion_cp")
* @Assert\Length(min = 5, max = 12)
*/
protected $direccionFacturacionCp;
/**
* @ORM\Column(type="string", nullable=true, name="direccion_facturacion_region")
*/
protected $direccionFacturacionRegion;
/**
* @ORM\Column(type="string", nullable=true, name="direccion_facturacion_ciudad")
*/
protected $direccionFacturacionCiudad;
/**
* @ORM\Column(type="string", nullable=true)
*/
protected $destinatario;
/**
* @ORM\Column(type="string", nullable=true, name="destinatario_empresa")
*/
protected $destinatarioEmpresa;
/**
* @ORM\Column(type="string", nullable=true, name="direccion_envio_direccion_1")
*/
protected $direccionEnvioDireccion1;
/**
* @ORM\Column(type="string", nullable=true, name="direccion_envio_direccion_2")
*/
protected $direccionEnvioDireccion2;
/**
* @ORM\Column(type="string", length=12, nullable=true, name="direccion_envio_cp")
* @Assert\Length(min = 5, max = 12)
*/
protected $direccionEnvioCp;
/**
* @ORM\Column(type="string", nullable=true, name="direccion_envio_region")
*/
protected $direccionEnvioRegion;
/**
* @ORM\Column(type="string", nullable=true, name="direccion_envio_ciudad")
*/
protected $direccionEnvioCiudad;
/**
* @ORM\Column(type="text", nullable=true, name="direccion_envio_comentario")
*/
protected $direccionEnvioComentario;
/**
* @ORM\Column(type="datetime", nullable=true, name="deleted_at")
*/
protected $deletedAt;
/**
* @ORM\Column(type="datetime", nullable=false, name="updated_at", options={"default":"2022-01-01 00:00:00"})
* @Gedmo\Timestampable(on="update")
*/
protected $updatedAt;
/**
* @ORM\Column(type="datetime", nullable=false, name="created_at", options={"default":"2022-01-01 00:00:00"})
* @Gedmo\Timestampable(on="create")
*/
protected $createdAt;
/**
* @ORM\Column(type="string", length=2, nullable=true, name="direccion_facturacion_pais")
*/
protected $direccionFacturacionPais;
/**
* @ORM\Column(type="string", length=2, nullable=true, name="direccion_envio_pais")
*/
protected $direccionEnvioPais;
/**
* @ORM\OneToOne(targetEntity="App\Entity\Operacion", mappedBy="venta")
*/
protected $operacion;
/**
* @ORM\OneToMany(targetEntity="App\Entity\CosteVenta", mappedBy="venta")
*/
protected $costesVenta;
/**
* @ORM\OneToMany(
* targetEntity="App\Entity\DetalleVenta",
* mappedBy="venta",
* orphanRemoval=true,
* cascade={"persist","remove"}
* )
*/
protected $detalle;
/*
* @ORM\ManyToOne(targetEntity="App\Entity\Ciudad", inversedBy="direccionFacturacionCiudadVentas")
* @ORM\JoinColumn(name="direccion_facturacion_ciudad_id", referencedColumnName="id")
*/
//protected $direccionFacturacionCiudad;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Provincia", inversedBy="direccionFacturacionProvinciaVentas")
* @ORM\JoinColumn(name="direccion_facturacion_provincia_id", referencedColumnName="id")
*/
protected $direccionFacturacionProvincia;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\CCAA", inversedBy="direccionFacturacionCcaaVentas")
* @ORM\JoinColumn(name="direccion_facturacion_ccaa_id", referencedColumnName="id")
*/
protected $direccionFacturacionCcaa;
/*
* @ORM\ManyToOne(targetEntity="App\Entity\Ciudad", inversedBy="direccionEnvioCiudadVentas")
* @ORM\JoinColumn(name="direccion_envio_ciudad_id", referencedColumnName="id")
*/
//protected $direccionEnvioCiudad;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Provincia", inversedBy="direccionEnvioProvinciaVentas")
* @ORM\JoinColumn(name="direccion_envio_provincia_id", referencedColumnName="id")
*/
protected $direccionEnvioProvincia;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\CCAA", inversedBy="direccionEnvioCcaaVentas")
* @ORM\JoinColumn(name="direccion_envio_ccaa_id", referencedColumnName="id")
*/
protected $direccionEnvioCcaa;
public function __construct()
{
$this->costesVenta = new ArrayCollection();
$this->detalle = new ArrayCollection();
}
public function __toString(): string
{
return $this->getOperacion()?->getIDperseo() ?? '---';
}
public function getId(): ?string
{
return $this->id;
}
public function getRegimen(): ?string
{
return $this->regimen;
}
public function setRegimen(?string $regimen): self
{
$this->regimen = $regimen;
return $this;
}
public function getIban(): ?string
{
return $this->iban;
}
public function setIban(?string $iban): self
{
$this->iban = $iban;
return $this;
}
public function getFechaConfirmacionVenta(): ?\DateTimeInterface
{
return $this->fechaConfirmacionVenta;
}
public function setFechaConfirmacionVenta(?\DateTimeInterface $fechaConfirmacionVenta): self
{
$this->fechaConfirmacionVenta = $fechaConfirmacionVenta;
return $this;
}
public function getFechaEnvioPrevista(): ?\DateTimeInterface
{
return $this->fechaEnvioPrevista;
}
public function setFechaEnvioPrevista(?\DateTimeInterface $fechaEnvioPrevista): self
{
$this->fechaEnvioPrevista = $fechaEnvioPrevista;
return $this;
}
public function getDireccionFacturacionDireccion(): ?string
{
return $this->direccionFacturacionDireccion;
}
public function setDireccionFacturacionDireccion(?string $direccionFacturacionDireccion): self
{
$this->direccionFacturacionDireccion = $direccionFacturacionDireccion;
return $this;
}
public function getDireccionEnvioDireccion1(): ?string
{
return $this->direccionEnvioDireccion1;
}
public function setDireccionEnvioDireccion1(?string $direccionEnvioDireccion1): self
{
$this->direccionEnvioDireccion1 = $direccionEnvioDireccion1;
return $this;
}
public function getDireccionEnvioDireccion2(): ?string
{
return $this->direccionEnvioDireccion2;
}
public function setDireccionEnvioDireccion2(?string $direccionEnvioDireccion2): self
{
$this->direccionEnvioDireccion2 = $direccionEnvioDireccion2;
return $this;
}
public function getDeletedAt(): ?\DateTimeInterface
{
return $this->deletedAt;
}
public function setDeletedAt(?\DateTimeInterface $deletedAt): self
{
$this->deletedAt = $deletedAt;
return $this;
}
public function getUpdatedAt(): ?\DateTimeInterface
{
return $this->updatedAt;
}
public function setUpdatedAt(\DateTimeInterface $updatedAt): self
{
$this->updatedAt = $updatedAt;
return $this;
}
public function getCreatedAt(): ?\DateTimeInterface
{
return $this->createdAt;
}
public function setCreatedAt(\DateTimeInterface $createdAt): self
{
$this->createdAt = $createdAt;
return $this;
}
public function getOperacion(): ?Operacion
{
return $this->operacion;
}
public function setOperacion(?Operacion $operacion): self
{
// unset the owning side of the relation if necessary
if ($operacion === null && $this->operacion !== null) {
$this->operacion->setVenta(null);
}
// set the owning side of the relation if necessary
if ($operacion !== null && $operacion->getVenta() !== $this) {
$operacion->setVenta($this);
}
$this->operacion = $operacion;
return $this;
}
/**
* @return Collection|CosteVenta[]
*/
public function getCostesVenta(): Collection
{
return $this->costesVenta;
}
public function addCostesVentum(CosteVenta $costesVentum): self
{
if (!$this->costesVenta->contains($costesVentum)) {
$this->costesVenta[] = $costesVentum;
$costesVentum->setVenta($this);
}
return $this;
}
public function removeCostesVentum(CosteVenta $costesVentum): self
{
if ($this->costesVenta->removeElement($costesVentum)) {
// set the owning side to null (unless already changed)
if ($costesVentum->getVenta() === $this) {
$costesVentum->setVenta(null);
}
}
return $this;
}
public function getDireccionFacturacionCiudad(): ?string
{
return $this->direccionFacturacionCiudad;
}
public function setDireccionFacturacionCiudad(?string $direccionFacturacionCiudad): self
{
$this->direccionFacturacionCiudad = $direccionFacturacionCiudad;
return $this;
}
public function getDireccionFacturacionProvincia(): ?Provincia
{
return $this->direccionFacturacionProvincia;
}
public function setDireccionFacturacionProvincia(?Provincia $direccionFacturacionProvincia): self
{
$this->direccionFacturacionProvincia = $direccionFacturacionProvincia;
return $this;
}
public function getDireccionFacturacionCcaa(): ?CCAA
{
return $this->direccionFacturacionCcaa;
}
public function setDireccionFacturacionCcaa(?CCAA $direccionFacturacionCcaa): self
{
$this->direccionFacturacionCcaa = $direccionFacturacionCcaa;
return $this;
}
public function getDireccionFacturacionPais(): ?string
{
return $this->direccionFacturacionPais;
}
public function setDireccionFacturacionPais(?string $direccionFacturacionPais): self
{
$this->direccionFacturacionPais = $direccionFacturacionPais;
return $this;
}
public function getDireccionEnvioCiudad(): ?string
{
return $this->direccionEnvioCiudad;
}
public function setDireccionEnvioCiudad(?string $direccionEnvioCiudad): self
{
$this->direccionEnvioCiudad = $direccionEnvioCiudad;
return $this;
}
public function getDireccionEnvioProvincia(): ?Provincia
{
return $this->direccionEnvioProvincia;
}
public function setDireccionEnvioProvincia(?Provincia $direccionEnvioProvincia): self
{
$this->direccionEnvioProvincia = $direccionEnvioProvincia;
return $this;
}
public function getDireccionEnvioCcaa(): ?CCAA
{
return $this->direccionEnvioCcaa;
}
public function setDireccionEnvioCcaa(?CCAA $direccionEnvioCcaa): self
{
$this->direccionEnvioCcaa = $direccionEnvioCcaa;
return $this;
}
public function getDireccionEnvioPais(): ?string
{
return $this->direccionEnvioPais;
}
public function setDireccionEnvioPais(?string $direccionEnvioPais): self
{
$this->direccionEnvioPais = $direccionEnvioPais;
return $this;
}
public function getDireccionEnvioComentario(): ?string
{
return $this->direccionEnvioComentario;
}
public function setDireccionEnvioComentario(?string $direccionEnvioComentario): self
{
$this->direccionEnvioComentario = $direccionEnvioComentario;
return $this;
}
/**
* @return Collection|DetalleVenta[]
*/
public function getDetalle(): Collection
{
return $this->detalle;
}
public function addDetalle(DetalleVenta $detalle): self
{
if (!$this->detalle->contains($detalle)) {
$this->detalle[] = $detalle;
$detalle->setVenta($this);
}
return $this;
}
public function removeDetalle(DetalleVenta $detalle): self
{
if ($this->detalle->removeElement($detalle)) {
// set the owning side to null (unless already changed)
if ($detalle->getVenta() === $this) {
$detalle->setVenta(null);
}
}
return $this;
}
public function getDireccionFacturacionCp(): ?string
{
return $this->direccionFacturacionCp;
}
public function setDireccionFacturacionCp(?string $direccionFacturacionCp): self
{
$this->direccionFacturacionCp = $direccionFacturacionCp;
return $this;
}
public function getDireccionEnvioCp(): ?string
{
return $this->direccionEnvioCp;
}
public function setDireccionEnvioCp(?string $direccionEnvioCp): self
{
$this->direccionEnvioCp = $direccionEnvioCp;
return $this;
}
public function getDestinatario(): ?string
{
return $this->destinatario;
}
public function setDestinatario(?string $destinatario): static
{
$this->destinatario = $destinatario;
return $this;
}
public function getDestinatarioEmpresa(): ?string
{
return $this->destinatarioEmpresa;
}
public function setDestinatarioEmpresa(?string $destinatarioEmpresa): static
{
$this->destinatarioEmpresa = $destinatarioEmpresa;
return $this;
}
public function getDireccionEnvioRegion(): ?string
{
return $this->direccionEnvioRegion;
}
public function setDireccionEnvioRegion(?string $direccionEnvioRegion): static
{
$this->direccionEnvioRegion = $direccionEnvioRegion;
return $this;
}
public function getDireccionFacturacionRegion(): ?string
{
return $this->direccionFacturacionRegion;
}
public function setDireccionFacturacionRegion(?string $direccionFacturacionRegion): static
{
$this->direccionFacturacionRegion = $direccionFacturacionRegion;
return $this;
}
public function getDireccionEnvio(): ?string
{
return implode(' / ', [$this->getDireccionEnvioDireccion1(), $this->getDireccionEnvioDireccion2()]) . ' ' .
$this->getDireccionEnvioCp() . ' ' . $this->getDireccionEnvioCiudad() . ' ' .
$this->getDireccionEnvioRegion() . ' ' . $this->getDireccionEnvioPais()
;
}
public function getDestinatarioEnvio(): ?string
{
return implode(' / ', [$this->getDestinatario(), $this->getDestinatarioEmpresa()]);
}
}