Esempio n. 1
0
 /**
  * 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++;
     }
 }