<?php
namespace App\Entity;
use App\Repository\SaleOrderShipmentRepository;
use App\Traits\DateTrait;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use JMS\Serializer\Annotation as Serializer;
use JMS\Serializer\Annotation\Expose;
use JMS\Serializer\Annotation\Groups;
/**
* @ORM\Entity(repositoryClass=SaleOrderShipmentRepository::class)
*
* @Serializer\ExclusionPolicy("ALL")
*/
class SaleOrderShipment
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*
* @Expose
* @Groups({
* "sale_order",
* "sale_order:updated",
* "get:read"
* })
*/
private $id;
/**
* @TODO anciennement '$order' mais c'est un mot réservé, on peut pas l'utiliser
* @ORM\ManyToOne(targetEntity=SaleOrder::class, inversedBy="shipments")
* @ORM\JoinColumn(nullable=false)
*/
private $saleOrder;
/**
* @ORM\Column(type="string", length=64, nullable=true)
*
* @Expose
* @Groups({
* "sale_order",
* "sale_order:item",
* "sale_order:updated",
* "get:read",
* "export_order_datatable"
* })
*/
private $trackingCode;
/**
* @ORM\Column(type="text", nullable=true)
*
* @Expose
* @Groups({
* "sale_order",
* "sale_order:updated"
* })
*/
private ?string $trackingUrl = null;
/**
* @ORM\Column(type="decimal", precision=10, scale=3, nullable=true)
*
* @Expose
* @Groups({
* "sale_order",
* "sale_order:updated",
* "get:read",
* "export_order_datatable"
* })
*/
private $weight;
/**
* @ORM\Column(type="string", length=64, nullable=true)
*
* @Expose
* @Groups({
* "sale_order",
* "sale_order:updated",
* "sale_order:item",
* "export_order_datatable"
* })
*/
private $carrier;
/**
* @ORM\Column(type="integer", nullable=true)
*/
private $boId;
/**
* @ORM\OneToMany(
* targetEntity=SaleOrderShipmentItem::class,
* mappedBy="saleOrderShipment",
* cascade={"persist", "remove"},
* orphanRemoval=true)
*/
private $saleOrderShipmentItems;
/**
* @ORM\Column(type="float", nullable=true)
*/
private $shippingCost;
public function __construct()
{
$this->saleOrderShipmentItems = new ArrayCollection();
}
use DateTrait;
public function getId(): ?int
{
return $this->id;
}
public function getTrackingCode(): ?string
{
return $this->trackingCode;
}
public function setTrackingCode( ?string $trackingCode ): self
{
$this->trackingCode = $trackingCode;
return $this;
}
public function getTrackingUrl(): ?string
{
return $this->trackingUrl;
}
public function setTrackingUrl( ?string $trackingUrl ): self
{
$this->trackingUrl = $trackingUrl;
return $this;
}
public function getWeight(): ?string
{
return $this->weight;
}
public function setWeight( ?string $weight ): self
{
$this->weight = $weight;
return $this;
}
public function getCarrier(): ?string
{
return $this->carrier;
}
public function setCarrier( ?string $carrier ): self
{
$this->carrier = $carrier;
return $this;
}
public function getSaleOrder(): ?SaleOrder
{
return $this->saleOrder;
}
public function setSaleOrder( ?SaleOrder $saleOrder ): self
{
$this->saleOrder = $saleOrder;
return $this;
}
public function getBoId(): ?int
{
return $this->boId;
}
public function setBoId( ?int $boId ): self
{
$this->boId = $boId;
return $this;
}
/**
* @return Collection<int, SaleOrderShipmentItem>
*/
public function getSaleOrderShipmentItems(): Collection
{
return $this->saleOrderShipmentItems;
}
public function addSaleOrderShipmentItem(SaleOrderShipmentItem $saleOrderShipmentItem): self
{
if (!$this->saleOrderShipmentItems->contains($saleOrderShipmentItem)) {
$this->saleOrderShipmentItems[] = $saleOrderShipmentItem;
$saleOrderShipmentItem->setSaleOrderShipment($this);
}
return $this;
}
public function removeSaleOrderShipmentItem(SaleOrderShipmentItem $saleOrderShipmentItem): self
{
if ($this->saleOrderShipmentItems->removeElement($saleOrderShipmentItem)) {
// set the owning side to null (unless already changed)
if ($saleOrderShipmentItem->getSaleOrderShipment() === $this) {
$saleOrderShipmentItem->setSaleOrderShipment(null);
}
}
return $this;
}
public function getShippingCost(): ?float
{
return $this->shippingCost;
}
public function setShippingCost(?float $shippingCost): self
{
$this->shippingCost = $shippingCost;
return $this;
}
}