kaktusy/modules/hipay/mapi/mapi_product.php

275 lines
4.5 KiB
PHP

<?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 (!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('L\'objet n\'à pas été initilisé. Vous devez préciser un nom de produit, une quantité, un prix, une catégorie et des 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();
}
}
?>