src/Entity/Venta.php line 21

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use App\Validator as PerseoAssert;
  4. use Doctrine\Common\Collections\ArrayCollection;
  5. use Doctrine\Common\Collections\Collection;
  6. use Doctrine\DBAL\Types\Types;
  7. use Doctrine\ORM\Mapping as ORM;
  8. use Gedmo\Mapping\Annotation as Gedmo;
  9. use Symfony\Component\Uid\Uuid;
  10. use Symfony\Component\Validator\Constraints as Assert;
  11. /**
  12. * @ORM\Table(name="venta", schema="perseo")
  13. * @ORM\EntityListeners({"App\EntityListener\Venta\CalcularPrecioTotalRelojListener"})
  14. * @ORM\Entity(repositoryClass="App\Repository\VentaRepository")
  15. * @Gedmo\SoftDeleteable(fieldName="deletedAt", timeAware=false, hardDelete=true)
  16. * @PerseoAssert\ContraintsValidarEntidadCp()
  17. */
  18. class Venta
  19. {
  20. /**
  21. * @ORM\Id
  22. * @ORM\Column(type="uuid", unique=true)
  23. * @ORM\GeneratedValue(strategy="CUSTOM")
  24. * @ORM\CustomIdGenerator(class="doctrine.uuid_generator")
  25. */
  26. protected $id;
  27. /**
  28. * @ORM\Column(type="string", length=4, nullable=true, options={"comment":"REBU รณ IVA"})
  29. */
  30. protected $regimen;
  31. /**
  32. * @ORM\Column(type="string", nullable=true)
  33. */
  34. protected $iban;
  35. /**
  36. * @ORM\Column(type="datetime", nullable=true, name="fecha_confirmacion_venta")
  37. */
  38. protected $fechaConfirmacionVenta;
  39. /**
  40. * @ORM\Column(type="datetime", nullable=true, name="fecha_envio_prevista")
  41. */
  42. protected $fechaEnvioPrevista;
  43. /**
  44. * @ORM\Column(type="string", nullable=true, name="direccion_facturacion_direccion")
  45. */
  46. protected $direccionFacturacionDireccion;
  47. /**
  48. * @ORM\Column(type="string", length=12, nullable=true, name="direccion_facturacion_cp")
  49. * @Assert\Length(min = 5, max = 12)
  50. */
  51. protected $direccionFacturacionCp;
  52. /**
  53. * @ORM\Column(type="string", nullable=true, name="direccion_facturacion_region")
  54. */
  55. protected $direccionFacturacionRegion;
  56. /**
  57. * @ORM\Column(type="string", nullable=true, name="direccion_facturacion_ciudad")
  58. */
  59. protected $direccionFacturacionCiudad;
  60. /**
  61. * @ORM\Column(type="string", nullable=true)
  62. */
  63. protected $destinatario;
  64. /**
  65. * @ORM\Column(type="string", nullable=true, name="destinatario_empresa")
  66. */
  67. protected $destinatarioEmpresa;
  68. /**
  69. * @ORM\Column(type="string", nullable=true, name="direccion_envio_direccion_1")
  70. */
  71. protected $direccionEnvioDireccion1;
  72. /**
  73. * @ORM\Column(type="string", nullable=true, name="direccion_envio_direccion_2")
  74. */
  75. protected $direccionEnvioDireccion2;
  76. /**
  77. * @ORM\Column(type="string", length=12, nullable=true, name="direccion_envio_cp")
  78. * @Assert\Length(min = 5, max = 12)
  79. */
  80. protected $direccionEnvioCp;
  81. /**
  82. * @ORM\Column(type="string", nullable=true, name="direccion_envio_region")
  83. */
  84. protected $direccionEnvioRegion;
  85. /**
  86. * @ORM\Column(type="string", nullable=true, name="direccion_envio_ciudad")
  87. */
  88. protected $direccionEnvioCiudad;
  89. /**
  90. * @ORM\Column(type="text", nullable=true, name="direccion_envio_comentario")
  91. */
  92. protected $direccionEnvioComentario;
  93. /**
  94. * @ORM\Column(type="datetime", nullable=true, name="deleted_at")
  95. */
  96. protected $deletedAt;
  97. /**
  98. * @ORM\Column(type="datetime", nullable=false, name="updated_at", options={"default":"2022-01-01 00:00:00"})
  99. * @Gedmo\Timestampable(on="update")
  100. */
  101. protected $updatedAt;
  102. /**
  103. * @ORM\Column(type="datetime", nullable=false, name="created_at", options={"default":"2022-01-01 00:00:00"})
  104. * @Gedmo\Timestampable(on="create")
  105. */
  106. protected $createdAt;
  107. /**
  108. * @ORM\Column(type="string", length=2, nullable=true, name="direccion_facturacion_pais")
  109. */
  110. protected $direccionFacturacionPais;
  111. /**
  112. * @ORM\Column(type="string", length=2, nullable=true, name="direccion_envio_pais")
  113. */
  114. protected $direccionEnvioPais;
  115. /**
  116. * @ORM\OneToOne(targetEntity="App\Entity\Operacion", mappedBy="venta")
  117. */
  118. protected $operacion;
  119. /**
  120. * @ORM\OneToMany(targetEntity="App\Entity\CosteVenta", mappedBy="venta")
  121. */
  122. protected $costesVenta;
  123. /**
  124. * @ORM\OneToMany(
  125. * targetEntity="App\Entity\DetalleVenta",
  126. * mappedBy="venta",
  127. * orphanRemoval=true,
  128. * cascade={"persist","remove"}
  129. * )
  130. */
  131. protected $detalle;
  132. /*
  133. * @ORM\ManyToOne(targetEntity="App\Entity\Ciudad", inversedBy="direccionFacturacionCiudadVentas")
  134. * @ORM\JoinColumn(name="direccion_facturacion_ciudad_id", referencedColumnName="id")
  135. */
  136. //protected $direccionFacturacionCiudad;
  137. /**
  138. * @ORM\ManyToOne(targetEntity="App\Entity\Provincia", inversedBy="direccionFacturacionProvinciaVentas")
  139. * @ORM\JoinColumn(name="direccion_facturacion_provincia_id", referencedColumnName="id")
  140. */
  141. protected $direccionFacturacionProvincia;
  142. /**
  143. * @ORM\ManyToOne(targetEntity="App\Entity\CCAA", inversedBy="direccionFacturacionCcaaVentas")
  144. * @ORM\JoinColumn(name="direccion_facturacion_ccaa_id", referencedColumnName="id")
  145. */
  146. protected $direccionFacturacionCcaa;
  147. /*
  148. * @ORM\ManyToOne(targetEntity="App\Entity\Ciudad", inversedBy="direccionEnvioCiudadVentas")
  149. * @ORM\JoinColumn(name="direccion_envio_ciudad_id", referencedColumnName="id")
  150. */
  151. //protected $direccionEnvioCiudad;
  152. /**
  153. * @ORM\ManyToOne(targetEntity="App\Entity\Provincia", inversedBy="direccionEnvioProvinciaVentas")
  154. * @ORM\JoinColumn(name="direccion_envio_provincia_id", referencedColumnName="id")
  155. */
  156. protected $direccionEnvioProvincia;
  157. /**
  158. * @ORM\ManyToOne(targetEntity="App\Entity\CCAA", inversedBy="direccionEnvioCcaaVentas")
  159. * @ORM\JoinColumn(name="direccion_envio_ccaa_id", referencedColumnName="id")
  160. */
  161. protected $direccionEnvioCcaa;
  162. public function __construct()
  163. {
  164. $this->costesVenta = new ArrayCollection();
  165. $this->detalle = new ArrayCollection();
  166. }
  167. public function __toString(): string
  168. {
  169. return $this->getOperacion()?->getIDperseo() ?? '---';
  170. }
  171. public function getId(): ?Uuid
  172. {
  173. return $this->id;
  174. }
  175. public function getRegimen(): ?string
  176. {
  177. return $this->regimen;
  178. }
  179. public function setRegimen(?string $regimen): self
  180. {
  181. $this->regimen = $regimen;
  182. return $this;
  183. }
  184. public function getIban(): ?string
  185. {
  186. return $this->iban;
  187. }
  188. public function setIban(?string $iban): self
  189. {
  190. $this->iban = $iban;
  191. return $this;
  192. }
  193. public function getFechaConfirmacionVenta(): ?\DateTimeInterface
  194. {
  195. return $this->fechaConfirmacionVenta;
  196. }
  197. public function setFechaConfirmacionVenta(?\DateTimeInterface $fechaConfirmacionVenta): self
  198. {
  199. $this->fechaConfirmacionVenta = $fechaConfirmacionVenta;
  200. return $this;
  201. }
  202. public function getFechaEnvioPrevista(): ?\DateTimeInterface
  203. {
  204. return $this->fechaEnvioPrevista;
  205. }
  206. public function setFechaEnvioPrevista(?\DateTimeInterface $fechaEnvioPrevista): self
  207. {
  208. $this->fechaEnvioPrevista = $fechaEnvioPrevista;
  209. return $this;
  210. }
  211. public function getDireccionFacturacionDireccion(): ?string
  212. {
  213. return $this->direccionFacturacionDireccion;
  214. }
  215. public function setDireccionFacturacionDireccion(?string $direccionFacturacionDireccion): self
  216. {
  217. $this->direccionFacturacionDireccion = $direccionFacturacionDireccion;
  218. return $this;
  219. }
  220. public function getDireccionEnvioDireccion1(): ?string
  221. {
  222. return $this->direccionEnvioDireccion1;
  223. }
  224. public function setDireccionEnvioDireccion1(?string $direccionEnvioDireccion1): self
  225. {
  226. $this->direccionEnvioDireccion1 = $direccionEnvioDireccion1;
  227. return $this;
  228. }
  229. public function getDireccionEnvioDireccion2(): ?string
  230. {
  231. return $this->direccionEnvioDireccion2;
  232. }
  233. public function setDireccionEnvioDireccion2(?string $direccionEnvioDireccion2): self
  234. {
  235. $this->direccionEnvioDireccion2 = $direccionEnvioDireccion2;
  236. return $this;
  237. }
  238. public function getDeletedAt(): ?\DateTimeInterface
  239. {
  240. return $this->deletedAt;
  241. }
  242. public function setDeletedAt(?\DateTimeInterface $deletedAt): self
  243. {
  244. $this->deletedAt = $deletedAt;
  245. return $this;
  246. }
  247. public function getUpdatedAt(): ?\DateTimeInterface
  248. {
  249. return $this->updatedAt;
  250. }
  251. public function setUpdatedAt(\DateTimeInterface $updatedAt): self
  252. {
  253. $this->updatedAt = $updatedAt;
  254. return $this;
  255. }
  256. public function getCreatedAt(): ?\DateTimeInterface
  257. {
  258. return $this->createdAt;
  259. }
  260. public function setCreatedAt(\DateTimeInterface $createdAt): self
  261. {
  262. $this->createdAt = $createdAt;
  263. return $this;
  264. }
  265. public function getOperacion(): ?Operacion
  266. {
  267. return $this->operacion;
  268. }
  269. public function setOperacion(?Operacion $operacion): self
  270. {
  271. // unset the owning side of the relation if necessary
  272. if ($operacion === null && $this->operacion !== null) {
  273. $this->operacion->setVenta(null);
  274. }
  275. // set the owning side of the relation if necessary
  276. if ($operacion !== null && $operacion->getVenta() !== $this) {
  277. $operacion->setVenta($this);
  278. }
  279. $this->operacion = $operacion;
  280. return $this;
  281. }
  282. /**
  283. * @return Collection|CosteVenta[]
  284. */
  285. public function getCostesVenta(): Collection
  286. {
  287. return $this->costesVenta;
  288. }
  289. public function addCostesVentum(CosteVenta $costesVentum): self
  290. {
  291. if (!$this->costesVenta->contains($costesVentum)) {
  292. $this->costesVenta[] = $costesVentum;
  293. $costesVentum->setVenta($this);
  294. }
  295. return $this;
  296. }
  297. public function removeCostesVentum(CosteVenta $costesVentum): self
  298. {
  299. if ($this->costesVenta->removeElement($costesVentum)) {
  300. // set the owning side to null (unless already changed)
  301. if ($costesVentum->getVenta() === $this) {
  302. $costesVentum->setVenta(null);
  303. }
  304. }
  305. return $this;
  306. }
  307. public function getDireccionFacturacionCiudad(): ?string
  308. {
  309. return $this->direccionFacturacionCiudad;
  310. }
  311. public function setDireccionFacturacionCiudad(?string $direccionFacturacionCiudad): self
  312. {
  313. $this->direccionFacturacionCiudad = $direccionFacturacionCiudad;
  314. return $this;
  315. }
  316. public function getDireccionFacturacionProvincia(): ?Provincia
  317. {
  318. return $this->direccionFacturacionProvincia;
  319. }
  320. public function setDireccionFacturacionProvincia(?Provincia $direccionFacturacionProvincia): self
  321. {
  322. $this->direccionFacturacionProvincia = $direccionFacturacionProvincia;
  323. return $this;
  324. }
  325. public function getDireccionFacturacionCcaa(): ?CCAA
  326. {
  327. return $this->direccionFacturacionCcaa;
  328. }
  329. public function setDireccionFacturacionCcaa(?CCAA $direccionFacturacionCcaa): self
  330. {
  331. $this->direccionFacturacionCcaa = $direccionFacturacionCcaa;
  332. return $this;
  333. }
  334. public function getDireccionFacturacionPais(): ?string
  335. {
  336. return $this->direccionFacturacionPais;
  337. }
  338. public function setDireccionFacturacionPais(?string $direccionFacturacionPais): self
  339. {
  340. $this->direccionFacturacionPais = $direccionFacturacionPais;
  341. return $this;
  342. }
  343. public function getDireccionEnvioCiudad(): ?string
  344. {
  345. return $this->direccionEnvioCiudad;
  346. }
  347. public function setDireccionEnvioCiudad(?string $direccionEnvioCiudad): self
  348. {
  349. $this->direccionEnvioCiudad = $direccionEnvioCiudad;
  350. return $this;
  351. }
  352. public function getDireccionEnvioProvincia(): ?Provincia
  353. {
  354. return $this->direccionEnvioProvincia;
  355. }
  356. public function setDireccionEnvioProvincia(?Provincia $direccionEnvioProvincia): self
  357. {
  358. $this->direccionEnvioProvincia = $direccionEnvioProvincia;
  359. return $this;
  360. }
  361. public function getDireccionEnvioCcaa(): ?CCAA
  362. {
  363. return $this->direccionEnvioCcaa;
  364. }
  365. public function setDireccionEnvioCcaa(?CCAA $direccionEnvioCcaa): self
  366. {
  367. $this->direccionEnvioCcaa = $direccionEnvioCcaa;
  368. return $this;
  369. }
  370. public function getDireccionEnvioPais(): ?string
  371. {
  372. return $this->direccionEnvioPais;
  373. }
  374. public function setDireccionEnvioPais(?string $direccionEnvioPais): self
  375. {
  376. $this->direccionEnvioPais = $direccionEnvioPais;
  377. return $this;
  378. }
  379. public function getDireccionEnvioComentario(): ?string
  380. {
  381. return $this->direccionEnvioComentario;
  382. }
  383. public function setDireccionEnvioComentario(?string $direccionEnvioComentario): self
  384. {
  385. $this->direccionEnvioComentario = $direccionEnvioComentario;
  386. return $this;
  387. }
  388. /**
  389. * @return Collection|DetalleVenta[]
  390. */
  391. public function getDetalle(): Collection
  392. {
  393. return $this->detalle;
  394. }
  395. public function addDetalle(DetalleVenta $detalle): self
  396. {
  397. if (!$this->detalle->contains($detalle)) {
  398. $this->detalle[] = $detalle;
  399. $detalle->setVenta($this);
  400. }
  401. return $this;
  402. }
  403. public function removeDetalle(DetalleVenta $detalle): self
  404. {
  405. if ($this->detalle->removeElement($detalle)) {
  406. // set the owning side to null (unless already changed)
  407. if ($detalle->getVenta() === $this) {
  408. $detalle->setVenta(null);
  409. }
  410. }
  411. return $this;
  412. }
  413. public function getDireccionFacturacionCp(): ?string
  414. {
  415. return $this->direccionFacturacionCp;
  416. }
  417. public function setDireccionFacturacionCp(?string $direccionFacturacionCp): self
  418. {
  419. $this->direccionFacturacionCp = $direccionFacturacionCp;
  420. return $this;
  421. }
  422. public function getDireccionEnvioCp(): ?string
  423. {
  424. return $this->direccionEnvioCp;
  425. }
  426. public function setDireccionEnvioCp(?string $direccionEnvioCp): self
  427. {
  428. $this->direccionEnvioCp = $direccionEnvioCp;
  429. return $this;
  430. }
  431. public function getDestinatario(): ?string
  432. {
  433. return $this->destinatario;
  434. }
  435. public function setDestinatario(?string $destinatario): static
  436. {
  437. $this->destinatario = $destinatario;
  438. return $this;
  439. }
  440. public function getDestinatarioEmpresa(): ?string
  441. {
  442. return $this->destinatarioEmpresa;
  443. }
  444. public function setDestinatarioEmpresa(?string $destinatarioEmpresa): static
  445. {
  446. $this->destinatarioEmpresa = $destinatarioEmpresa;
  447. return $this;
  448. }
  449. public function getDireccionEnvioRegion(): ?string
  450. {
  451. return $this->direccionEnvioRegion;
  452. }
  453. public function setDireccionEnvioRegion(?string $direccionEnvioRegion): static
  454. {
  455. $this->direccionEnvioRegion = $direccionEnvioRegion;
  456. return $this;
  457. }
  458. public function getDireccionFacturacionRegion(): ?string
  459. {
  460. return $this->direccionFacturacionRegion;
  461. }
  462. public function setDireccionFacturacionRegion(?string $direccionFacturacionRegion): static
  463. {
  464. $this->direccionFacturacionRegion = $direccionFacturacionRegion;
  465. return $this;
  466. }
  467. public function getDireccionEnvio(): ?string
  468. {
  469. return implode(' / ', [$this->getDireccionEnvioDireccion1(), $this->getDireccionEnvioDireccion2()]) . ' ' .
  470. $this->getDireccionEnvioCp() . ' ' . $this->getDireccionEnvioCiudad() . ' ' .
  471. $this->getDireccionEnvioRegion() . ' ' . $this->getDireccionEnvioPais()
  472. ;
  473. }
  474. public function getDestinatarioEnvio(): ?string
  475. {
  476. return implode(' / ', [$this->getDestinatario(), $this->getDestinatarioEmpresa()]);
  477. }
  478. }