/** * Retourne le montant total de la somme devant être * distribuée aux affiliés */ protected function _getTotalAmountForAffiliates($installement_nr) { $affiliates = $this->order[0]->getAffiliate(); if (!HIPAY_MAPI_UTILS::is_an_array_of($affiliates, 'HIPAY_MAPI_Affiliate')) { return false; } $total_aff = 0; foreach ($affiliates as $aff) { $total_aff += $aff->getAmount(); } return $total_aff; }
/** * Vérifie si l'objet est correctement initialisé * * @return float */ public function check() { if ($this->price < 0) { throw new Exception('Montant invalide ou pas initilisé'); } if (!HIPAY_MAPI_UTILS::is_an_array_of($this->tax, 'HIPAY_MAPI_Tax')) { throw new Exception('Taxes invalides ou pas initialisées'); } foreach ($this->tax as $obj) { if (!$obj->check()) { return false; } } if (!is_bool($this->first)) { throw new Exception('Premier paiement ou suivant n\'est pas initialisé'); } return true; }
/** * 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')) if ($this->name == '' || $this->quantity < 0 || $this->category < 0 || !HIPAY_MAPI_UTILS::is_an_array_of($this->tax, 'HIPAY_MAPI_Tax')) { throw new Exception('L\'objet n\'à pas été initialisé. 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; }
/** * Calcul le montant des taxes * */ protected function computeTaxes() { // Taxes sur les produits au niveau de l'item (ligne de commande) // @FIXME bug et confusion entre indice d'item et indice d'order ? $cur = 0; // pour chaque ligne de commande foreach ($this->items as $item) { // Liste des taxes de la ligne $itemTaxes = $item->getTax(); $tItemsAmount = 0; // pour chaque taxe appliquée sur cette ligne foreach ($itemTaxes as $tax) { $amount = HIPAY_MAPI_UTILS::computeTax($item->getPrice(), $tax); $tax->setTaxAmount($amount); $tax->lock(); // mise a jour du montant total des taxes pour cet item (ligne de commande) $tItemsAmount += $amount; } if (!isset($this->order[$cur])) { $cur = 0; } if (!isset($this->_taxItemsAmount[$cur])) { $this->_taxItemsAmount[$cur] = 0; } // mise a jour du montant total des taxes pour cette ligne de commande // avec prise en compte du nombre de produits dans l'indice numLigneCommande // du tableau _taxItemsAmount de cette commande $this->_taxItemsAmount[$cur] += $tItemsAmount * $item->getQuantity(); $item->lock(); $cur++; } // Taxes sur frais d'envoi, assurances, coûts fixes // au niveau des commandes $cur = 0; foreach ($this->order as $order) { // Taxes sur frais d'envoi $taxArr =& $order->getShippingTax(); foreach ($taxArr as $key => $tax) { $amount = HIPAY_MAPI_UTILS::computeTax($order->getShippingAmount(), $tax); $taxArr[$key]->setTaxAmount($amount); $taxArr[$key]->lock(); if (!isset($this->_taxShippingAmount[$cur])) { $this->_taxShippingAmount[$cur] = 0; } $this->_taxShippingAmount[$cur] += $amount; } // Taxes sur assurances $taxArr =& $order->getInsuranceTax(); foreach ($taxArr as $key => $tax) { $amount = HIPAY_MAPI_UTILS::computeTax($order->getInsuranceAmount(), $tax); $taxArr[$key]->setTaxAmount($amount); $taxArr[$key]->lock(); if (!isset($this->_taxInsuranceAmount[$cur])) { $this->_taxInsuranceAmount[$cur] = 0; } $this->_taxInsuranceAmount[$cur] += $amount; } // Taxes sur coûts fixes $taxArr =& $order->getFixedCostTax(); foreach ($taxArr as $key => $tax) { $amount = HIPAY_MAPI_UTILS::computeTax($order->getFixedCostAmount(), $tax); $taxArr[$key]->setTaxAmount($amount); $taxArr[$key]->lock(); if (!isset($this->_taxFixedCostAmount[$cur])) { $this->_taxFixedCostAmount[$cur] = 0; } $this->_taxFixedCostAmount[$cur] += $amount; } $cur++; } }
/** * 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; }
/** * Assigne l'url du logo du marchand * * @param string $logo_url * @return boolean */ public function setLogoUrl($logo_url) { if ($this->_locked) { return false; } $logo_url = trim($logo_url); if (!HIPAY_MAPI_UTILS::checkURL($logo_url) && $logo_url != '') { return false; } $this->logo_url = $logo_url; return true; }
/** * 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; }