<?php
namespace App\Entity\System;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Table(name="ps_order_tracking_temp", indexes={
*
* @ORM\Index(name="order_tracking__id_tracking_status_index", columns={"id_tracking_status"}),
* @ORM\Index(name="order_tracking__id_order", columns={"id_order"}),
* @ORM\Index(name="order_tracking__id_carrier_master", columns={"id_carrier_master"}),
* @ORM\Index(name="order_tracking__viewed_index", columns={"viewed"}),
* @ORM\Index(name="order_tracking__tracking_number", columns={"tracking_number"})
* })
*
* @ORM\Entity(repositoryClass="App\Repository\System\TrackingRepository")
*/
class Tracking
{
public const NOT_AVAILABLE_TEXT = 'N/A';
public const STATUS_WAITING_TO_COMPUTE = 'WAITING_TO_COMPUTE';
public const NO_MOVEMENT_TOLERANCY_IN_SECONDS = 7300;
public const NO_MOVEMENT_BETWEEN_EVENT_IN_SECONDS_FACTOR = 345600;
public const A4B_LOGISTICS_CANONICAL_STATUS_NAME_RETURNED = 'RETURNED';
public const A4B_LOGISTICS_CANONICAL_STATUS_NAME_PICKUP_POINT = 'PICKUP_POINT';
public const A4B_LOGISTICS_CANONICAL_STATUS_NAME_DAMAGE = 'DAMAGE';
public const A4B_LOGISTICS_CANONICAL_STATUS_NAME_LOST = 'LOST';
/**
* @var int
*
* @ORM\Id
*
* @ORM\GeneratedValue(strategy="AUTO")
*
* @ORM\Column(type="integer", name="id_order_tracking")
*/
private $id;
/**
* @var \DateTime|null
*
* @ORM\Column(type="datetime", nullable=true, name="date_status", nullable=true)
*/
private $statusDate;
/**
* @var Order
*
* @ORM\ManyToOne(targetEntity="App\Entity\System\Order")
*
* @ORM\JoinColumn(name="id_order", referencedColumnName="id_order", nullable=false)
*/
private $order;
/**
* @var CarrierMaster
*
* @ORM\ManyToOne(targetEntity="App\Entity\System\CarrierMaster")
*
* @ORM\JoinColumn(name="id_carrier_master", referencedColumnName="id_carrier_master", nullable=false)
*/
private $carrierMaster;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\System\TrackingStatus")
*
* @ORM\Column(type="integer", nullable=true, name="id_tracking_status")
*/
private ?int $trackingStatusId;
/**
* @var bool|null
*
* @ORM\Column(type="boolean", nullable=true)
*/
private $downloaded;
/**
* @var string
*
* @ORM\Column(type="string", length=256)
*/
private $trackingNumber;
/**
* @var string
*
* @ORM\Column(type="text", nullable=true)
*/
private $trackingStatus;
/**
* @var bool
*
* @ORM\Column(type="boolean")
*/
private $viewed;
/**
* @return mixed
*/
public function getId()
{
return $this->id;
}
/**
* @param int $id
*
* @return Tracking
*/
public function setId(int $id): Tracking
{
$this->id = $id;
return $this;
}
/**
* @return bool
*/
public function isViewed(): bool
{
return $this->viewed;
}
/**
* @param bool $viewed
*
* @return Tracking
*/
public function setViewed(bool $viewed): Tracking
{
$this->viewed = $viewed;
return $this;
}
public function getStatusDate(): ?\DateTime
{
return $this->statusDate;
}
public function setStatusDate(?\DateTime $statusDate): Tracking
{
$this->statusDate = $statusDate;
return $this;
}
public function getOrder(): Order
{
return $this->order;
}
public function setOrder(Order $order): Tracking
{
$this->order = $order;
return $this;
}
public function getCarrierMaster(): CarrierMaster
{
return $this->carrierMaster;
}
public function setCarrierMaster(CarrierMaster $carrierMaster): Tracking
{
$this->carrierMaster = $carrierMaster;
return $this;
}
public function getTrackingStatusId(): ?int
{
return $this->trackingStatusId;
}
public function setTrackingStatusId(int $trackingStatusId): Tracking
{
$this->trackingStatusId = $trackingStatusId;
return $this;
}
public function getDownloaded(): ?bool
{
return $this->downloaded;
}
public function setDownloaded(?bool $downloaded): Tracking
{
$this->downloaded = $downloaded;
return $this;
}
public function getTrackingNumber(): string
{
return $this->trackingNumber;
}
public function setTrackingNumber(string $trackingNumber): Tracking
{
$this->trackingNumber = $trackingNumber;
return $this;
}
public function getTrackingStatus(): string
{
return $this->trackingStatus;
}
public function setTrackingStatus(string $trackingStatus): Tracking
{
$this->trackingStatus = $trackingStatus;
return $this;
}
}