396 lines
7.2 KiB
PHP
396 lines
7.2 KiB
PHP
|
<?php
|
||
|
/**
|
||
|
* Objet représentant les informations de la commande
|
||
|
*
|
||
|
*/
|
||
|
class HIPAY_MAPI_Order extends HIPAY_MAPI_lockable {
|
||
|
|
||
|
/**
|
||
|
* Montant des frais de livraison
|
||
|
*
|
||
|
* @var float
|
||
|
*/
|
||
|
protected $shippingAmount;
|
||
|
|
||
|
/**
|
||
|
* Taxes s'appliquants aux frais de livraison
|
||
|
*
|
||
|
* @var array
|
||
|
*/
|
||
|
protected $shippingTax;
|
||
|
|
||
|
/**
|
||
|
* Montant des assurances
|
||
|
*
|
||
|
* @var float
|
||
|
*/
|
||
|
protected $insuranceAmount;
|
||
|
|
||
|
/**
|
||
|
* Taxes s'appliquants aux assurances
|
||
|
*
|
||
|
* @var array
|
||
|
*/
|
||
|
protected $insuranceTax;
|
||
|
|
||
|
/**
|
||
|
* Montant des coûts fixes
|
||
|
*
|
||
|
* @var float
|
||
|
*/
|
||
|
protected $fixedCostAmount;
|
||
|
|
||
|
/**
|
||
|
* Taxes s'appliquants aux coûts fixes
|
||
|
*
|
||
|
* @var array
|
||
|
*/
|
||
|
protected $fixedCostTax;
|
||
|
|
||
|
/**
|
||
|
* Affiliés
|
||
|
*
|
||
|
* @var array
|
||
|
*/
|
||
|
protected $affiliate;
|
||
|
|
||
|
/**
|
||
|
* Intitulé de la commande
|
||
|
*
|
||
|
* @var string
|
||
|
*/
|
||
|
protected $orderTitle;
|
||
|
|
||
|
/**
|
||
|
* Informations sur la commande
|
||
|
*
|
||
|
* @var string
|
||
|
*/
|
||
|
protected $orderInfo;
|
||
|
|
||
|
/**
|
||
|
* Catégorie de la commande
|
||
|
*
|
||
|
* @var int
|
||
|
*/
|
||
|
protected $orderCategory;
|
||
|
|
||
|
/**
|
||
|
* Défini le montant des frais d'envoi et les taxes s'y appliquant
|
||
|
*
|
||
|
* @param float $shippingAmount
|
||
|
* @param array $shippingTax
|
||
|
* @return boolean
|
||
|
*/
|
||
|
public function setShipping($shippingAmount, $shippingTax) {
|
||
|
if ($this->_locked)
|
||
|
return false;
|
||
|
|
||
|
$shippingAmount = sprintf('%.02f', (float)$shippingAmount);
|
||
|
if ($shippingAmount < 0) {
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
if (empty($shippingTax)) {
|
||
|
return false;
|
||
|
}
|
||
|
if (!HIPAY_MAPI_UTILS::is_an_array_of($shippingTax, 'HIPAY_MAPI_Tax')) {
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
$this->shippingAmount = $shippingAmount;
|
||
|
foreach ($shippingTax as $obj)
|
||
|
$this->shippingTax[] = clone $obj;
|
||
|
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Retourne le montant des frais d'envoi
|
||
|
*
|
||
|
* @return float
|
||
|
*/
|
||
|
public function getShippingAmount() {
|
||
|
return $this->shippingAmount;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Retourne les taxes s'appliquants aux frais d'envoi
|
||
|
*
|
||
|
* @return array
|
||
|
*/
|
||
|
public function &getShippingTax() {
|
||
|
return $this->shippingTax;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Défini le montant des assurances
|
||
|
*
|
||
|
* @param float $insuranceAmount
|
||
|
* @param array $insuranceTax
|
||
|
* @return boolean
|
||
|
*/
|
||
|
public function setInsurance($insuranceAmount, $insuranceTax) {
|
||
|
if ($this->_locked)
|
||
|
return false;
|
||
|
|
||
|
$insuranceAmount = sprintf('%.02f', (float)$insuranceAmount);
|
||
|
|
||
|
if ($insuranceAmount < 0)
|
||
|
return false;
|
||
|
|
||
|
if (empty($insuranceTax)) {
|
||
|
return false;
|
||
|
}
|
||
|
if (!HIPAY_MAPI_UTILS::is_an_array_of($insuranceTax, 'HIPAY_MAPI_Tax'))
|
||
|
return false;
|
||
|
|
||
|
$this->insuranceAmount = $insuranceAmount;
|
||
|
foreach ($insuranceTax as $obj)
|
||
|
$this->insuranceTax[] = clone $obj;
|
||
|
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Retourne le montant des assurances
|
||
|
*
|
||
|
* @return float
|
||
|
*/
|
||
|
public function getInsuranceAmount() {
|
||
|
return $this->insuranceAmount;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Retourne les taxes s'appliquants aux assurances
|
||
|
*
|
||
|
* @return array
|
||
|
*/
|
||
|
public function &getInsuranceTax() {
|
||
|
return $this->insuranceTax;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Défini le montant des coûts fixes et les taxes s'y appliquant
|
||
|
*
|
||
|
* @param float $fixedCostAmount
|
||
|
* @param array $fixedCostTax
|
||
|
* @return boolean
|
||
|
*/
|
||
|
public function setFixedCost($fixedCostAmount,$fixedCostTax) {
|
||
|
if ($this->_locked)
|
||
|
return false;
|
||
|
|
||
|
$fixedCostAmount = sprintf('%.02f', (float)$fixedCostAmount);
|
||
|
|
||
|
if ($fixedCostAmount<0)
|
||
|
return false;
|
||
|
|
||
|
if (empty($fixedCostTax)) {
|
||
|
return false;
|
||
|
}
|
||
|
if (!HIPAY_MAPI_UTILS::is_an_array_of($fixedCostTax, 'HIPAY_MAPI_Tax'))
|
||
|
return false;
|
||
|
|
||
|
$this->fixedCostAmount = $fixedCostAmount;
|
||
|
foreach ($fixedCostTax as $obj)
|
||
|
$this->fixedCostTax[] = clone $obj;
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Retourne le montant des coûts fixes
|
||
|
*
|
||
|
* @return float
|
||
|
*/
|
||
|
public function getFixedCostAmount() {
|
||
|
return $this->fixedCostAmount;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Retourne les taxes s'appliquant aux coûts fixes
|
||
|
*
|
||
|
* @return array
|
||
|
*/
|
||
|
public function &getFixedCostTax() {
|
||
|
return $this->fixedCostTax;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Défini les affiliés qui recevront une rétribution pour cette commande
|
||
|
*
|
||
|
* @param array $affiliate
|
||
|
* @return boolean
|
||
|
*/
|
||
|
public function setAffiliate($affiliate) {
|
||
|
if ($this->_locked)
|
||
|
return false;
|
||
|
|
||
|
if (empty($affiliate)) {
|
||
|
return false;
|
||
|
}
|
||
|
if (!HIPAY_MAPI_UTILS::is_an_array_of($affiliate, 'HIPAY_MAPI_Affiliate'))
|
||
|
return false;
|
||
|
|
||
|
foreach ($affiliate as $obj)
|
||
|
$this->affiliate[] = clone $obj;
|
||
|
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Retourne la liste des affiliés de cette commande
|
||
|
*
|
||
|
* @return array
|
||
|
*/
|
||
|
public function &getAffiliate() {
|
||
|
return $this->affiliate;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Assigne l'intitulé de la commande
|
||
|
*
|
||
|
* @param string $orderTitle
|
||
|
* @return boolean
|
||
|
*/
|
||
|
public function setOrderTitle($orderTitle) {
|
||
|
if ($this->_locked)
|
||
|
return false;
|
||
|
|
||
|
$orderTitle = HIPAY_MAPI_UTF8::forceUTF8($orderTitle);
|
||
|
$len = HIPAY_MAPI_UTF8::strlen_utf8($orderTitle);
|
||
|
if ($len < 1 || $len > HIPAY_MAPI_MAX_TITLE_LENGTH)
|
||
|
return false;
|
||
|
|
||
|
$this->orderTitle = $orderTitle;
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Retourne l'intitulé de la commande
|
||
|
*
|
||
|
* @return string
|
||
|
*/
|
||
|
public function getOrderTitle() {
|
||
|
return $this->orderTitle;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Assigne les infos sur la commande
|
||
|
*
|
||
|
* @param string $orderInfo
|
||
|
* @return boolean
|
||
|
*/
|
||
|
public function setOrderInfo($orderInfo) {
|
||
|
if ($this->_locked)
|
||
|
return false;
|
||
|
|
||
|
$orderInfo = HIPAY_MAPI_UTF8::forceUTF8($orderInfo);
|
||
|
$len = HIPAY_MAPI_UTF8::strlen_utf8($orderInfo);
|
||
|
if ($len > HIPAY_MAPI_MAX_INFO_LENGTH)
|
||
|
return false;
|
||
|
|
||
|
$this->orderInfo = $orderInfo;
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Retourne les infos sur la commande
|
||
|
*
|
||
|
* @return string
|
||
|
*/
|
||
|
public function getOrderInfo() {
|
||
|
return $this->orderInfo;
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Assigne la catégorie de la commande
|
||
|
*
|
||
|
* @param int $orderCategory
|
||
|
* @return boolean
|
||
|
*/
|
||
|
public function setOrderCategory($orderCategory) {
|
||
|
if ($this->_locked)
|
||
|
return false;
|
||
|
|
||
|
$orderCategory = (int)$orderCategory;
|
||
|
if ($orderCategory < 1)
|
||
|
return false;
|
||
|
|
||
|
$this->orderCategory = $orderCategory;
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Retourne la catégorie de la commande
|
||
|
*
|
||
|
* @return int
|
||
|
*/
|
||
|
public function getOrderCategory() {
|
||
|
return $this->orderCategory;
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Vérifie si l'objet est correctement initialisé
|
||
|
*
|
||
|
* @return boolean
|
||
|
*/
|
||
|
public function check() {
|
||
|
if ($this->orderTitle == '' || $this->orderCategory < 0)
|
||
|
throw new Exception('Label and/or category of order are missing');
|
||
|
|
||
|
foreach($this->affiliate as $obj) {
|
||
|
try {
|
||
|
$obj->check();
|
||
|
} catch (Exception $e) {
|
||
|
throw new Exception($e->getMessage());
|
||
|
}
|
||
|
}
|
||
|
|
||
|
foreach($this->shippingTax as $obj) {
|
||
|
try {
|
||
|
$obj->check();
|
||
|
} catch (Exception $e) {
|
||
|
throw new Exception($e->getMessage());
|
||
|
}
|
||
|
}
|
||
|
|
||
|
foreach($this->insuranceTax as $obj) {
|
||
|
try {
|
||
|
$obj->check();
|
||
|
} catch (Exception $e) {
|
||
|
throw new Exception($e->getMessage());
|
||
|
}
|
||
|
}
|
||
|
|
||
|
foreach($this->fixedCostTax as $obj) {
|
||
|
try {
|
||
|
$obj->check();
|
||
|
} catch (Exception $e) {
|
||
|
throw new Exception($e->getMessage());
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
protected function init() {
|
||
|
$this->shippingAmount = 0;
|
||
|
$this->shippingTax = array();
|
||
|
$this->insuranceAmount = 0;
|
||
|
$this->insuranceTax = array();
|
||
|
$this->fixedCostAmount = 0;
|
||
|
$this->fixedCostTax = array();
|
||
|
$this->affiliate = array();
|
||
|
$this->orderTitle = '';
|
||
|
$this->orderInfo = '';
|
||
|
$this->orderCategory = -1;
|
||
|
}
|
||
|
|
||
|
function __construct() {
|
||
|
$this->init();
|
||
|
parent::__construct();
|
||
|
}
|
||
|
}
|