<?php
declare(strict_types=1);
namespace App\Entity\System;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Table(name="order_status")
*
* @ORM\Entity(repositoryClass="App\Repository\System\OrderStatusRepository")
*/
class OrderStatus
{
public const NOT_VISIBLE = 0;
public const PENDING_PAYMENT = 1;
public const PROCESSING = 2;
public const FLEXIBLE_PAYMENT = 3;
public const PAYMENT_INCIDENT = 4;
public const SHIPPED = 5;
public const CANCELLED = 6;
public const PROCESSED = 7;
public const PAYPAL_VALIDATION_PENDING = 8;
public const PAYPAL_PENDING_VALIDATION = 9;
public const DELIVERED = 10;
public const PARTIALLY_SHIPPED = 11;
public const PENDING_INVOICE = 12;
public const RETURNED = 13;
public const PAYMENT_CANCELLED = 14;
public const PAYMENT_REIMBURSED = 15;
public const ADYEN_PENDING_VALIDATION = 16;
public const TRANSPORT_CODE_PENDING_VALIDATION = 17;
public const SCHEDULED_CONFIRMATION = 18;
public const STRIPE_PENDING_VALIDATION = 19;
public const PAYMENT_ERROR = 20;
public const ORDERS_PROCESSED = [OrderStatus::SHIPPED, OrderStatus::PROCESSED, OrderStatus::DELIVERED, OrderStatus::PARTIALLY_SHIPPED, OrderStatus::PENDING_INVOICE];
public const INVALID_ORDER_IDS = [
OrderStatus::NOT_VISIBLE,
OrderStatus::CANCELLED,
OrderStatus::PENDING_PAYMENT,
OrderStatus::PAYMENT_ERROR,
OrderStatus::PAYMENT_INCIDENT,
OrderStatus::PAYPAL_VALIDATION_PENDING,
OrderStatus::PAYPAL_PENDING_VALIDATION,
OrderStatus::PENDING_INVOICE,
OrderStatus::RETURNED,
OrderStatus::PAYMENT_CANCELLED,
OrderStatus::PAYMENT_REIMBURSED,
OrderStatus::ADYEN_PENDING_VALIDATION,
OrderStatus::STRIPE_PENDING_VALIDATION,
];
public const ORDER_NOT_PROCESSING_IDS = [OrderStatus::NOT_VISIBLE, OrderStatus::PAYMENT_ERROR, OrderStatus::PAYMENT_CANCELLED, OrderStatus::CANCELLED];
public const ALLOWED_ORDER_STATUSES_FOR_RMA = [OrderStatus::SHIPPED, OrderStatus::PROCESSED, OrderStatus::DELIVERED, OrderStatus::PARTIALLY_SHIPPED, OrderStatus::PAYMENT_REIMBURSED];
public const CONFIRMED_ORDERS = [self::PROCESSING, self::SCHEDULED_CONFIRMATION, self::SHIPPED, self::PROCESSED, self::DELIVERED];
public const NOT_CANCELABLE_STATUSES = [self::SHIPPED, self::DELIVERED, self::RETURNED, self::PARTIALLY_SHIPPED];
public const STILL_NOT_CONFIRMED_STATUS_IDS = [OrderStatus::PAYPAL_PENDING_VALIDATION, OrderStatus::ADYEN_PENDING_VALIDATION, OrderStatus::STRIPE_PENDING_VALIDATION, OrderStatus::PENDING_PAYMENT, OrderStatus::PENDING_INVOICE, OrderStatus::TRANSPORT_CODE_PENDING_VALIDATION, OrderStatus::SCHEDULED_CONFIRMATION];
public const STILL_NOT_SHIPPED_STATUS_IDS = [OrderStatus::PROCESSING, OrderStatus::PROCESSED, ] + self::STILL_NOT_CONFIRMED_STATUS_IDS;
public const CANCELABLE_STATUSES = [
self::PENDING_PAYMENT,
self::PENDING_INVOICE,
self::ADYEN_PENDING_VALIDATION,
self::STRIPE_PENDING_VALIDATION,
self::TRANSPORT_CODE_PENDING_VALIDATION,
];
public const PACKS_CONFIRMED_ORDERS = [self::PROCESSING, self::DELIVERED];
/**
* @var int
*
* @ORM\Id()
*
* @ORM\Column(type="integer")
*/
private $id;
/**
* @var string
*
* @ORM\Column(type="string", length=64)
*/
private string $key;
/**
* @ORM\Column(type="boolean", nullable=false)
*/
private bool $visible;
/**
* @var ArrayCollection<int, OrderStatusLanguage>
*
* @ORM\OneToMany(targetEntity="App\Entity\System\OrderStatusLanguage", mappedBy="orderStatus")
*/
private $orderStatusLanguages;
public function getId(): int
{
return $this->id;
}
public function setId(int $id): self
{
$this->id = $id;
return $this;
}
public function getKey(): string
{
return $this->key;
}
public function setKey(string $name): self
{
$this->key = $name;
return $this;
}
public function isVisible(): bool
{
return $this->visible;
}
public function setVisible(bool $visible): self
{
$this->visible = $visible;
return $this;
}
/**
* @return ArrayCollection<int, OrderStatusLanguage>
*/
public function getOrderStatusLanguages()
{
return $this->orderStatusLanguages;
}
/**
* @param ArrayCollection<int, OrderStatusLanguage> $orderStatusLanguages
*
* @return $this
*/
public function setOrderStatusLanguages($orderStatusLanguages): OrderStatus
{
$this->orderStatusLanguages = $orderStatusLanguages;
return $this;
}
}