bebeboutik/modules/hipay/mapi/mapi_product.php
Srv Bebeboutik 6c0978166c add modules
2016-01-04 12:49:26 +01:00

285 lines
4.6 KiB
PHP
Executable File

<?php
/**
* Représente une ligne de la commande pour un paiement simple
*
*/
class HIPAY_MAPI_Product extends HIPAY_MAPI_Item {
/**
* Nom du produit
*
* @var string
*/
protected $name;
/**
* Informations sur le produit
*
* @var string
*/
protected $info;
/**
* quantité
*
* @var int
*/
protected $quantity;
/**
* Réference produit
*
* @var string
*/
protected $ref;
/**
* Catégorie du produit
*
* @var int
*/
protected $category;
/**
* Montant unitaire HT du produit
*
* @var float
*/
protected $price;
/**
* Taxes s'appliquant à ce produit
*
* @var array
*/
protected $tax;
/**
* Assigne le nom du produit
*
* @param string $name
* @return boolean
*/
public function setName($name) {
if ($this->_locked)
return false;
$name = HIPAY_MAPI_UTF8::forceUTF8($name);
$len = HIPAY_MAPI_UTF8::strlen_utf8($name);
if ($len < 1 || $len > HIPAY_MAPI_MAX_PRODUCT_NAME_LENGTH)
return false;
$this->name = $name;
return true;
}
/**
* Retourne le nom du produit
*
* @return string
*/
public function getName() {
return $this->name;
}
/**
* Assigne les informations sur le produit
*
* @param string $info
* @return boolean
*/
public function setInfo($info) {
if ($this->_locked)
return false;
$info = HIPAY_MAPI_UTF8::forceUTF8($info);
$len = HIPAY_MAPI_UTF8::strlen_utf8($info);
if ($len > HIPAY_MAPI_MAX_PRODUCT_INFO_LENGTH)
return false;
$this->info = $info;
return true;
}
/**
* Retourne les informations sur le produit
*
* @return string
*/
public function getInfo() {
return $this->info;
}
/**
* Assigne la quantité de produit
*
* @param int $quantity
* @return boolean
*/
public function setQuantity($quantity) {
if ($this->_locked)
return false;
$quantity = (int)$quantity;
if ($quantity < 1)
return false;
$this->quantity = $quantity;
return true;
}
/**
* Retourne la quantité de produit
*
* @return int
*/
public function getQuantity() {
return $this->quantity;
}
/**
* Assigne la réference du produit
*
* @param string $ref
* @return boolean
*/
public function setRef($ref) {
if ($this->_locked)
return false;
$ref = HIPAY_MAPI_UTF8::forceUTF8($ref);
$len = HIPAY_MAPI_UTF8::strlen_utf8($ref);
if ($len > HIPAY_MAPI_MAX_PRODUCT_REF_LENGTH)
return false;
$this->ref = $ref;
return true;
}
/**
* Retourne la réference du produit
*
* @return string
*/
public function getRef() {
return $this->ref;
}
/**
* Assigne la catégorie du produit
*
* @param int $category
* @return boolean
*/
public function setCategory($category) {
if ($this->_locked)
return false;
$category = (int)$category;
if ($category < 1)
return false;
$this->category = $category;
return true;
}
/**
* Retourne la catégorie du produit
*
* @return int
*/
public function getCategory() {
return $this->category;
}
/**
* Assigne le montant unitaire HT du produit
*
* @param float $price
* @return boolean
*/
public function setPrice($price) {
if ($this->_locked)
return false;
$price = sprintf('%.02f', (float)$price);
if ($price < 0)
return false;
$this->price = $price;
return true;
}
/**
* Retourne montant unitaire HT du produit
*
* @return float
*/
public function getPrice() {
return $this->price;
}
/**
* Assigne les taxes s'appliquant à ce produit
*
* @param array $tax
* @return boolean
*/
public function setTax($tax) {
if ($this->_locked)
return false;
if (empty($tax))
return false;
if (!HIPAY_MAPI_UTILS::is_an_array_of($tax,'HIPAY_MAPI_Tax'))
return false;
foreach ($tax as $obj)
$this->tax[]= clone $obj;
return true;
}
/**
* Retourne les taxes s'appliquant à ce produit
*
* @return array
*/
public function getTax() {
return $this->tax;
}
/**
* Vérifie que l'objet est correctement initialisé
*
* @return boolean
*/
public function check() {
if ($this->name == '' || $this->quantity < 0 || $this->category < 0 || $this->price < 0 || !HIPAY_MAPI_UTILS::is_an_array_of($this->tax, 'HIPAY_MAPI_Tax'))
throw new Exception('Object not initialized. Please precise a product name, quantity, price, category and taxes');
foreach($this->tax as $obj) {
if (!$obj->check())
return false;
}
return true;
}
protected function init() {
$this->name = '';
$this->info = '';
$this->quantity = -1;
$this->ref = '';
$this->category = -1;
$this->price = -1;
$this->tax = array();
}
function __construct() {
$this->init();
parent::__construct();
}
}