Files
sterivein/core/lib/Thelia/Model/OrderStatus.php
2020-11-19 15:36:28 +01:00

124 lines
4.2 KiB
PHP

<?php
namespace Thelia\Model;
use Thelia\Model\Base\OrderStatus as BaseOrderStatus;
use Thelia\Model\Tools\ModelEventDispatcherTrait;
use Thelia\Model\Tools\PositionManagementTrait;
class OrderStatus extends BaseOrderStatus
{
use ModelEventDispatcherTrait;
use PositionManagementTrait;
const CODE_NOT_PAID = "not_paid";
const CODE_PAID = "paid";
const CODE_PROCESSING = "processing";
const CODE_SENT = "sent";
const CODE_CANCELED = "canceled";
const CODE_REFUNDED = "refunded";
/**
* Check if the current status is NOT PAID
*
* @param bool $exact if true, the method will check if the current status is exactly OrderStatus::CODE_NOT_PAID.
* if false, it will check if the order has not been paid, whatever the exact status is. The default is true.
*
* @return bool true if NOT PAID, false otherwise.
*/
public function isNotPaid($exact = true)
{
//return $this->hasStatusHelper(OrderStatus::CODE_NOT_PAID);
if ($exact) {
return $this->hasStatusHelper(OrderStatus::CODE_NOT_PAID);
} else {
return ! $this->isPaid(false);
}
}
/**
* Check if the current status is PAID
*
* @param bool $exact if true, the method will check if the current status is exactly OrderStatus::CODE_PAID.
* if false, it will check if the order has been paid, whatever the exact status is. The default is true.
*
* @return bool true if PAID, false otherwise.
*/
public function isPaid($exact = true)
{
return $this->hasStatusHelper(
$exact ?
OrderStatus::CODE_PAID :
[ OrderStatus::CODE_PAID, OrderStatus::CODE_PROCESSING, OrderStatus::CODE_SENT ]
);
}
/**
* Check if the current status is PROCESSING
*
* @param bool $exact if true, the method will check if the current status is exactly OrderStatus::CODE_PROCESSING.
* if false, it will check if the order is processing, whatever the exact status is. The default is true.
*
* @return bool true if PROCESSING, false otherwise.
*/
public function isProcessing($exact = true)
{
return $this->hasStatusHelper(OrderStatus::CODE_PROCESSING);
}
/**
* Check if the current status is SENT
*
* @param bool $exact if true, the method will check if the current status is exactly OrderStatus::CODE_SENT.
* if false, it will check if the order is send, whatever the exact status is. The default is true.
*
* @return bool true if SENT, false otherwise.
*/
public function isSent($exact = true)
{
return $this->hasStatusHelper(OrderStatus::CODE_SENT);
}
/**
* Check if the current status is CANCELED
*
* @param bool $exact if true, the method will check if the current status is exactly OrderStatus::CODE_CANCELED.
* if false, it will check if the order is canceled, whatever the exact status is. The default is true.
*
* @return bool true if CANCELED, false otherwise.
*/
public function isCancelled($exact = true)
{
return $this->hasStatusHelper(OrderStatus::CODE_CANCELED);
}
/**
* Check if the current status is REFUNDED
*
* @param bool $exact if true, the method will check if the current status is exactly OrderStatus::CODE_CANCELED.
* if false, it will check if the order is canceled, whatever the exact status is. The default is true.
*
* @return bool true if REFUNDED, false otherwise.
*/
public function isRefunded($exact = true)
{
return $this->hasStatusHelper(OrderStatus::CODE_REFUNDED);
}
/**
* Check if the current status is $statusCode or, if $statusCode is an array, if the current
* status is in the $statusCode array.
*
* @param string|array $statusCode the status code, one of OrderStatus::CODE_xxx constants.
* @return bool true if the current status is in the provided status, false otherwise.
*/
public function hasStatusHelper($statusCode)
{
if (\is_array($statusCode)) {
return \in_array($this->getCode(), $statusCode);
} else {
return $this->getCode() == $statusCode;
}
}
}