Example #1
0
 public function toArray($format = 's')
 {
     $ret = array();
     $ret = parent::toArray($format);
     $oledrion_Currency = oledrion_Currency::getInstance();
     $ret['vat_rate_formated'] = $oledrion_Currency->amountInCurrency(floatval($this->getVar('vat_rate', 'e')));
     return $ret;
 }
Example #2
0
 /**
  * Retourne les éléments du produits formatés pour affichage
  *
  * @param string $format	Le format à utiliser
  * @return array	Les informations formatées
  */
 function toArray($format = 's')
 {
     $ret = array();
     $ret = parent::toArray($format);
     $oledrion_Currency = oledrion_Currency::getInstance();
     $ret['caddy_price_fordisplay'] = $oledrion_Currency->amountForDisplay($this->getVar('caddy_price'));
     $ret['caddy_shipping_fordisplay'] = $oledrion_Currency->amountForDisplay($this->getVar('caddy_shipping'));
     return $ret;
 }
Example #3
0
 /**
  * Retourne les éléments du produits formatés pour affichage
  *
  * @param  string $format
  * @return array
  */
 public function toArray($format = 's')
 {
     $oledrion_Currency = oledrion_Currency::getInstance();
     $ret = array();
     $ret = parent::toArray($format);
     $ret['packing_price_fordisplay'] = $oledrion_Currency->amountForDisplay($this->getVar('packing_price'));
     $ret['packing_image_url'] = $this->getPictureUrl();
     return $ret;
 }
Example #4
0
function listCart()
{
    global $xoopsTpl, $uid;
    $cartForTemplate = $discountsDescription = array();
    $emptyCart = false;
    $shippingAmount = $commandAmount = $vatAmount = $commandAmountTTC = $discountsCount = $ecotaxeAmount = $discountAmount = $totalSavings = 0;
    $goOn = '';
    $reductions = new oledrion_reductions();
    $reductions->computeCart($cartForTemplate, $emptyCart, $shippingAmount, $commandAmount, $vatAmount, $goOn, $commandAmountTTC, $discountsDescription, $discountsCount, $ecotaxeAmount, $discountAmount, $totalSavings);
    $oledrion_Currency =& oledrion_Currency::getInstance();
    $xoopsTpl->assign('emptyCart', $emptyCart);
    // Caddy Vide ?
    $xoopsTpl->assign('caddieProducts', $cartForTemplate);
    // Produits dans le caddy
    $xoopsTpl->assign('shippingAmount', $oledrion_Currency->amountForDisplay($shippingAmount));
    // Montant des frais de port
    $xoopsTpl->assign('ecotaxeAmount', $oledrion_Currency->amountForDisplay($ecotaxeAmount));
    // Montant des frais de port
    $xoopsTpl->assign('commandAmount', $oledrion_Currency->amountForDisplay($commandAmount));
    // Montant HT de la commande
    $xoopsTpl->assign('discountAmount', $oledrion_Currency->amountForDisplay($discountAmount));
    // Total Discount
    $xoopsTpl->assign('totalSavings', $oledrion_Currency->amountForDisplay($totalSavings));
    // Total Savings
    $xoopsTpl->assign('vatAmount', $oledrion_Currency->amountForDisplay($vatAmount));
    // Montant de la TVA
    $xoopsTpl->assign('discountsCount', $discountsCount);
    // Nombre de réductions appliquées
    $xoopsTpl->assign('goOn', $goOn);
    // Adresse à utiliser pour continuer ses achats
    $xoopsTpl->assign('commandAmountTTC', $oledrion_Currency->amountForDisplay($commandAmountTTC, 'l'));
    // Montant TTC de la commande
    $xoopsTpl->assign('discountsDescription', $discountsDescription);
    // Liste des réductions accordées
    $showOrderButton = true;
    $showRegistredOnly = false;
    if (oledrion_utils::getModuleOption('restrict_orders', false) && $uid == 0) {
        $showRegistredOnly = true;
        $showOrderButton = false;
    }
    $xoopsTpl->assign('showRegistredOnly', $showRegistredOnly);
    $xoopsTpl->assign('showOrderButton', $showOrderButton);
}
 /**
  * Retourne les éléments du produits formatés pour affichage
  *
  * @param string $format	Le format à utiliser
  * @return array	Les informations formatées
  */
 function toArray($format = 's')
 {
     $ret = array();
     $ret = parent::toArray($format);
     include_once XOOPS_ROOT_PATH . '/class/xoopslists.php';
     $countries = array();
     $countries = XoopsLists::getCountryList();
     $oledrion_Currency = oledrion_Currency::getInstance();
     $ret['cmd_total_fordisplay'] = $oledrion_Currency->amountForDisplay($this->getVar('cmd_total'));
     // Montant TTC de la commande
     $ret['cmd_shipping_fordisplay'] = $oledrion_Currency->amountForDisplay($this->getVar('cmd_shipping'));
     // Montant TTC des frais de port
     $ret['cmd_text_fordisplay'] = nl2br($this->getVar('cmd_text'));
     // Liste des réductions accordées
     if (isset($countries[$this->getVar('cmd_country')])) {
         // Libellé du pays de l'acheteur
         $ret['cmd_country_label'] = $countries[$this->getVar('cmd_country')];
     }
     return $ret;
 }
Example #6
0
                         $optionPrice = $attribute->getOptionPriceFromValue($optionName);
                         $productPrice += $optionPrice;
                     }
                 } else {
                     $optionPrice = $attribute->getOptionPriceFromValue(oledrion_utils::getName($attributeValues));
                     $productPrice += $optionPrice;
                 }
             }
         }
         // Mise en template
         include_once XOOPS_ROOT_PATH . '/class/template.php';
         $template = new XoopsTpl();
         $vat = null;
         $vat = $handlers->h_oledrion_vat->get($vat_id);
         $productPriceTTC = oledrion_utils::getAmountWithVat($productPrice, $vat_id);
         $oledrion_Currency = oledrion_Currency::getInstance();
         $templateProduct = $product->toArray();
         $templateProduct['product_final_price_ht_formated_long'] = $oledrion_Currency->amountForDisplay($productPrice, 'l');
         $templateProduct['product_final_price_ttc_formated_long'] = $oledrion_Currency->amountForDisplay($productPriceTTC, 'l');
         if (is_object($vat)) {
             $templateProduct['product_vat_rate'] = $vat->toArray();
         }
         $templateProduct['product_vat_amount_formated_long'] = $oledrion_Currency->amountForDisplay($productPriceTTC - $productPrice, 'l');
         $template->assign('product', $templateProduct);
         $return = $template->fetch('db:oledrion_product_price.tpl');
     }
     break;
     // ajax search
 // ajax search
 case 'search':
     // ajax search
 /**
  * Calcul le prix HT des options sélectionnées pour un produit
  *
  * @param array $choosenAttributes	[clé] = attribute_id, [value] = array(valueId1, valueId2 ...)
  * @param integer $product_vat_id	L'ID de TVA du produit
  * @param array $descriptions	Tableau valorisé par la méthode [clé] = Id attribut [valeur] = array('attribute_title', array('attribute_names', 'attribute_prices'))
  * @return float
  * @since 2.3.2009.03.21
  */
 function getProductOptionsPrice($choosenAttributes, $product_vat_id, &$descriptions = null)
 {
     static $vats = array();
     if (is_array($vats) && isset($vats[$product_vat_id])) {
         $vat_rate = $vats[$product_vat_id];
     } else {
         $vat = null;
         $vat = oledrion_handler::getInstance()->h_oledrion_vat->get($product_vat_id);
         if (is_object($vat)) {
             $vats[$product_vat_id] = $vat_rate = $vat->getVar('vat_rate', 'n');
         }
     }
     $ret = 0;
     $attributesIds = $attributes = array();
     if (!is_array($choosenAttributes) || count($choosenAttributes) == 0) {
         return $ret;
     }
     $attributesIds = array_keys($choosenAttributes);
     $attributes = $this->getItemsFromIds($attributesIds);
     if (count($attributes) == 0) {
         return $ret;
     }
     $oledrion_Currency = oledrion_Currency::getInstance();
     foreach ($choosenAttributes as $userAttributeId => $userAttributeValues) {
         if (isset($attributes[$userAttributeId])) {
             $attribute = $attributes[$userAttributeId];
             $dataForDescriptions = array();
             $optionDescription = '';
             if (is_array($userAttributeValues) && count($userAttributeValues) > 0) {
                 foreach ($userAttributeValues as $option) {
                     $optionName = oledrion_utils::getName($option);
                     $price = $attribute->getOptionPriceFromValue($optionName);
                     $optionDescription = $attribute->getOptionNameFromValue($optionName);
                     $vatAmount = oledrion_utils::getVAT($price, $vat_rate);
                     $ttc = $price + $vatAmount;
                     $vatAmountFormated = $oledrion_Currency->amountForDisplay($vatAmount);
                     $htFormated = $oledrion_Currency->amountForDisplay($price);
                     $ttcFormated = $oledrion_Currency->amountForDisplay($ttc);
                     $dataForDescriptions[] = array('option_name' => $optionDescription, 'option_value' => $optionName, 'option_price' => $price, 'option_vat' => $vatAmount, 'option_ttc' => $ttc, 'option_price_ht_formated' => $htFormated, 'option_vat_formated' => $vatAmountFormated, 'option_ttc_formated' => $ttcFormated);
                     $ret += $price;
                     // Total de toutes les options
                 }
             } else {
                 $optionName = oledrion_utils::getName($userAttributeValues);
                 $price = $attribute->getOptionPriceFromValue($optionName);
                 $optionDescription = $attribute->getOptionNameFromValue($optionName);
                 $vatAmount = oledrion_utils::getVAT($price, $vat_rate);
                 $ttc = $price + $vatAmount;
                 $vatAmountFormated = $oledrion_Currency->amountForDisplay($vatAmount);
                 $htFormated = $oledrion_Currency->amountForDisplay($price);
                 $ttcFormated = $oledrion_Currency->amountForDisplay($ttc);
                 $dataForDescriptions[] = array('option_name' => $optionDescription, 'option_value' => $optionName, 'option_price' => $price, 'option_vat' => $vatAmount, 'option_ttc' => $ttc, 'option_price_ht_formated' => $htFormated, 'option_vat_formated' => $vatAmountFormated, 'option_ttc_formated' => $ttcFormated);
                 $ret += $price;
                 // Total de toutes les options
             }
             if (is_array($descriptions)) {
                 $descriptions[$attribute->getVar('attribute_id')] = array('attribute_title' => $attribute->getVar('attribute_title'), 'attribute_options' => $dataForDescriptions);
             }
         }
     }
     return $ret;
 }
Example #8
0
 /**
  * Retourne les éléments du produits formatés pour affichage
  *
  * @param  string $format Le format à utiliser
  * @return array  Les informations formatées
  */
 public function toArray($format = 's')
 {
     $ret = array();
     $ret = parent::toArray($format);
     include_once XOOPS_ROOT_PATH . '/class/xoopslists.php';
     $countries = array();
     $countries = XoopsLists::getCountryList();
     $oledrion_Currency = oledrion_Currency::getInstance();
     $ret['cmd_total_fordisplay'] = $oledrion_Currency->amountForDisplay($this->getVar('cmd_total'));
     // Montant TTC de la commande
     $ret['cmd_shipping_fordisplay'] = $oledrion_Currency->amountForDisplay($this->getVar('cmd_shipping'));
     // Montant TTC des frais de port
     $ret['cmd_packing_price_fordisplay'] = $oledrion_Currency->amountForDisplay($this->getVar('cmd_packing_price'));
     $ret['cmd_text_fordisplay'] = nl2br($this->getVar('cmd_text'));
     // Liste des réductions accordées
     if (isset($countries[$this->getVar('cmd_country')])) {
         // Libellé du pays de l'acheteur
         $ret['cmd_country_label'] = $countries[$this->getVar('cmd_country')];
     }
     if ($this->getVar('cmd_uid') > 0) {
         $ret['cmd_uname'] = XoopsUser::getUnameFromId($this->getVar('cmd_uid'));
     }
     $ret['cmd_create_date'] = formatTimestamp($this->getVar('cmd_create'), _MEDIUMDATESTRING);
     return $ret;
 }
 /**
  * Calcul de la facture en fonction du panier
  * Contenu du panier en session :
  *
  * 	$datas['number'] = Indice du produit dans le panier
  * 	$datas['id'] = Identifiant du produit dans la base
  * 	$datas['qty'] = Quantité voulue
  *  $datas['attributes'] = Attributs produit array('attr_id' => id attribut, 'values' => array(valueId1, valueId2 ...))
  *
  * En variable privé, le panier (dans $cart) contient la même chose + un objet 'oledrion_products' dans la clé 'product'
  *
  * @param array $cartForTemplate Contenu du caddy à passer au template (en fait la liste des produits)
  * @param boolean emptyCart Indique si le panier est vide ou pas
  * @param float $shippingAmount Montant des frais de port
  * @param float $commandAmount Montant HT de la commande
  * @param float $vatAmount Montant de la TVA
  * @param string $goOn Adresse vers laquelle renvoyer le visiteur après qu'il ait ajouté un produit dans son panier (cela correspond en fait à la catégorie du dernier produit ajouté dans le panier)
  * @param float $commandAmountTTC Montant TTC de la commande
  * @param array $discountsDescription Descriptions des remises GLOBALES appliquées (et pas les remises par produit !)
  * @param integer $discountsCount	Le nombre TOTAL de réductions appliquées (individuellement ou sur la globalité du panier)
  *
  * TODO: Passer les paramètres sous forme d'objet
  */
 function computeCart(&$cartForTemplate, &$emptyCart, &$shippingAmount, &$commandAmount, &$vatAmount, &$goOn, &$commandAmountTTC, &$discountsDescription, &$discountsCount)
 {
     $emptyCart = false;
     $goOn = '';
     $vats = array();
     $cpt = 0;
     $discountsCount = 0;
     $this->cart = isset($_SESSION[OledrionOledrion_caddyHandler::CADDY_NAME]) ? $_SESSION[OledrionOledrion_caddyHandler::CADDY_NAME] : array();
     $cartCount = count($this->cart);
     if ($cartCount == 0) {
         $emptyCart = true;
         return true;
     }
     // Réinitialisation des données privées
     $this->initializePrivateData();
     // Chargement des objets produits associés aux produits du panier et calcul des quantités par catégorie
     $this->loadProductsAssociatedToCart();
     // Chargement des TVA
     $vats = $this->handlers->h_oledrion_vat->getAllVats(new oledrion_parameters());
     $oledrion_Currency =& oledrion_Currency::getInstance();
     $caddyCount = count($this->cart);
     // Initialisation des totaux généraux (ht, tva et frais de port)
     $totalHT = $totalVAT = $totalShipping = 0.0;
     // Boucle sur tous les produits et sur chacune des règles pour calculer le prix du produit (et ses frais de port) et voir si on doit y appliquer une réduction
     foreach ($this->cart as $cartProduct) {
         if (floatval($cartProduct['product']->getVar('product_discount_price', 'n')) > 0) {
             $ht = floatval($cartProduct['product']->getVar('product_discount_price', 'n'));
         } else {
             $ht = floatval($cartProduct['product']->getVar('product_price', 'n'));
         }
         // S'il y a des options, on rajoute leur montant
         $productAttributes = array();
         if (is_array($cartProduct['attributes']) && count($cartProduct['attributes']) > 0) {
             $ht += $this->handlers->h_oledrion_attributes->getProductOptionsPrice($cartProduct['attributes'], $cartProduct['product']->getVar('product_vat_id'), $productAttributes);
         }
         $discountedPrice = $ht;
         $quantity = intval($cartProduct['qty']);
         if (oledrion_utils::getModuleOption('shipping_quantity')) {
             $discountedShipping = floatval($cartProduct['product']->getVar('product_shipping_price', 'n') * $quantity);
         } else {
             $discountedShipping = floatval($cartProduct['product']->getVar('product_shipping_price', 'n'));
         }
         $totalPrice = 0.0;
         $reduction = '';
         $cpt++;
         if ($cpt == $caddyCount) {
             // On arrive sur le dernier produit
             $category = null;
             $category = $this->handlers->h_oledrion_cat->get($cartProduct['product']->getVar('product_cid'));
             if (is_object($category)) {
                 $goOn = $category->getLink();
             }
         }
         // Boucle sur les règles
         foreach ($this->allActiveRules as $rule) {
             $applyRule = false;
             if ($rule->disc_group != 0 && oledrion_utils::isMemberOfGroup($rule->disc_group) || $rule->disc_group == 0) {
                 if ($rule->disc_cat_cid != 0 && $cartProduct['product']->getVar('product_cid') == $rule->disc_cat_cid || $rule->disc_cat_cid == 0) {
                     if ($rule->disc_vendor_id != 0 && $cartProduct['product']->getVar('disc_vendor_id') == $rule->disc_vendor_id || $rule->disc_vendor_id == 0) {
                         if ($rule->disc_product_id != 0 && $cartProduct['product']->getVar('product_id') == $rule->disc_product_id || $rule->disc_product_id == 0) {
                             // Dans quel cas appliquer la réduction ?
                             switch ($rule->disc_price_case) {
                                 case OLEDRION_DISCOUNT_PRICE_CASE_ALL:
                                     // Dans tous les cas
                                     $applyRule = true;
                                     break;
                                 case OLEDRION_DISCOUNT_PRICE_CASE_FIRST_BUY:
                                     // Si c'est le premier achat de l'utilisateur sur le site
                                     if ($this->handlers->h_oledrion_commands->isFirstCommand()) {
                                         $applyRule = true;
                                     }
                                     break;
                                 case OLEDRION_DISCOUNT_PRICE_CASE_PRODUCT_NEVER:
                                     // Si le produit n'a jamais été acheté par le client
                                     if (!$this->handlers->h_oledrion_commands->productAlreadyBought(0, $cartProduct['product']->getVar('product_id'))) {
                                         $applyRule = true;
                                     }
                                     break;
                                 case OLEDRION_DISCOUNT_PRICE_CASE_QTY_IS:
                                     // Si la quantité de produit est ... à ...
                                     switch ($rule->disc_price_case_qty_cond) {
                                         case OLEDRION_DISCOUNT_PRICE_QTY_COND1:
                                             // >
                                             if ($cartProduct['qty'] > $rule->disc_price_case_qty_value) {
                                                 $applyRule = true;
                                             }
                                             break;
                                         case OLEDRION_DISCOUNT_PRICE_QTY_COND2:
                                             // >=
                                             if ($cartProduct['qty'] >= $rule->disc_price_case_qty_value) {
                                                 $applyRule = true;
                                             }
                                             break;
                                         case OLEDRION_DISCOUNT_PRICE_QTY_COND3:
                                             // <
                                             if ($cartProduct['qty'] < $rule->disc_price_case_qty_value) {
                                                 $applyRule = true;
                                             }
                                             break;
                                         case OLEDRION_DISCOUNT_PRICE_QTY_COND4:
                                             // <=
                                             if ($cartProduct['qty'] <= $rule->disc_price_case_qty_value) {
                                                 $applyRule = true;
                                             }
                                             break;
                                         case OLEDRION_DISCOUNT_PRICE_QTY_COND5:
                                             // ==
                                             if ($cartProduct['qty'] == $rule->disc_price_case_qty_value) {
                                                 $applyRule = true;
                                             }
                                             break;
                                     }
                             }
                         }
                     }
                 }
             }
             if ($applyRule) {
                 // Il faut appliquer la règle
                 // On calcule le nouveau prix ht du produit
                 switch ($rule->disc_price_type) {
                     case OLEDRION_DISCOUNT_PRICE_TYPE1:
                         // Montant dégressif selon les quantités
                         if ($quantity >= $rule->disc_price_degress_l1qty1 && $quantity <= $rule->disc_price_degress_l1qty2) {
                             $discountedPrice = floatval($rule->getVar('disc_price_degress_l1total', 'n'));
                         }
                         if ($quantity >= $rule->disc_price_degress_l2qty1 && $quantity <= $rule->disc_price_degress_l2qty2) {
                             $discountedPrice = floatval($rule->getVar('disc_price_degress_l2total', 'n'));
                         }
                         if ($quantity >= $rule->disc_price_degress_l3qty1 && $quantity <= $rule->disc_price_degress_l3qty2) {
                             $discountedPrice = floatval($rule->getVar('disc_price_degress_l3total', 'n'));
                         }
                         if ($quantity >= $rule->disc_price_degress_l4qty1 && $quantity <= $rule->disc_price_degress_l4qty2) {
                             $discountedPrice = floatval($rule->getVar('disc_price_degress_l4total', 'n'));
                         }
                         if ($quantity >= $rule->disc_price_degress_l5qty1 && $quantity <= $rule->disc_price_degress_l5qty2) {
                             $discountedPrice = floatval($rule->getVar('disc_price_degress_l5total', 'n'));
                         }
                         $reduction = $rule->disc_description;
                         $discountsCount++;
                         break;
                     case OLEDRION_DISCOUNT_PRICE_TYPE2:
                         // D'un montant ou d'un pourcentage
                         if ($rule->disc_price_amount_on == OLEDRION_DISCOUNT_PRICE_AMOUNT_ON_PRODUCT) {
                             // Réduction sur le produit
                             if ($rule->disc_price_amount_type == OLEDRION_DISCOUNT_PRICE_REDUCE_PERCENT) {
                                 // Réduction en pourcentage
                                 $discountedPrice = $this->getDiscountedPrice($discountedPrice, $rule->getVar('disc_price_amount_amount', 'n'));
                             } elseif ($rule->disc_price_amount_type == OLEDRION_DISCOUNT_PRICE_REDUCE_MONEY) {
                                 // Réduction d'un montant en euros
                                 $discountedPrice -= floatval($rule->getVar('disc_price_amount_amount', 'n'));
                             }
                             // Pas de montants négatifs
                             oledrion_utils::doNotAcceptNegativeAmounts($discountedPrice);
                             $reduction = $rule->disc_description;
                             $discountsCount++;
                         } elseif ($rule->disc_price_amount_on == OLEDRION_DISCOUNT_PRICE_AMOUNT_ON_CART) {
                             // Règle à appliquer sur le panier
                             if (!isset($this->rulesForTheWhole[$rule->disc_id])) {
                                 $this->rulesForTheWhole[$rule->disc_id] = $rule;
                             }
                         }
                         break;
                 }
                 // On passe au montant des frais de port
                 switch ($rule->disc_shipping_type) {
                     case OLEDRION_DISCOUNT_SHIPPING_TYPE1:
                         // A payer dans leur intégralité, rien à faire
                         break;
                     case OLEDRION_DISCOUNT_SHIPPING_TYPE2:
                         // Totalement gratuits si le client commande plus de X euros d'achat
                         if ($this->totalAmountBeforeDiscounts > $rule->disc_shipping_free_morethan) {
                             $discountedShipping = 0.0;
                         }
                         break;
                     case OLEDRION_DISCOUNT_SHIPPING_TYPE3:
                         // Frais de port réduits de X euros si la commande est > x
                         if ($this->totalAmountBeforeDiscounts > $rule->disc_shipping_reduce_cartamount) {
                             $discountedShipping -= floatval($rule->getVar('disc_shipping_reduce_amount', 'n'));
                         }
                         // Pas de montants négatifs
                         oledrion_utils::doNotAcceptNegativeAmounts($discountedShipping);
                         break;
                     case OLEDRION_DISCOUNT_SHIPPING_TYPE4:
                         // Frais de port dégressifs
                         if ($quantity >= $rule->disc_shipping_degress_l1qty1 && $quantity <= $rule->disc_shipping_degress_l1qty2) {
                             $discountedShipping = floatval($rule->getVar('disc_shipping_degress_l1total', 'n'));
                         }
                         if ($quantity >= $rule->disc_shipping_degress_l2qty1 && $quantity <= $rule->disc_shipping_degress_l2qty2) {
                             $discountedShipping = floatval($rule->getVar('disc_shipping_degress_l2total', 'n'));
                         }
                         if ($quantity >= $rule->disc_shipping_degress_l3qty1 && $quantity <= $rule->disc_shipping_degress_l3qty2) {
                             $discountedShipping = floatval($rule->getVar('disc_shipping_degress_l3total', 'n'));
                         }
                         if ($quantity >= $rule->disc_shipping_degress_l4qty1 && $quantity <= $rule->disc_shipping_degress_l4qty2) {
                             $discountedShipping = floatval($rule->getVar('disc_shipping_degress_l4total', 'n'));
                         }
                         if ($quantity >= $rule->disc_shipping_degress_l5qty1 && $quantity <= $rule->disc_shipping_degress_l5qty2) {
                             $discountedShipping = floatval($rule->getVar('disc_shipping_degress_l5total', 'n'));
                         }
                         break;
                 }
                 // Sélection du type de réduction sur les frais de port
             }
             // Il faut appliquer la règle de réduction
         }
         // Boucle sur les réductions
         // Calcul de la TVA du produit
         $vatId = $cartProduct['product']->getVar('product_vat_id');
         if (is_array($vats) && isset($vats[$vatId])) {
             $vatRate = floatval($vats[$vatId]->getVar('vat_rate', 'n'));
             $vatAmount = oledrion_utils::getVAT($discountedPrice * $quantity, $vatRate);
         } else {
             $vatRate = 0.0;
             $vatAmount = 0.0;
         }
         // Calcul du TTC du produit ((ht * qte) + tva + frais de port)
         $totalPrice = floatval($discountedPrice * $quantity + $vatAmount + $discountedShipping);
         // Les totaux généraux
         $totalHT += $discountedPrice * $quantity;
         $totalVAT += $vatAmount;
         $totalShipping += $discountedShipping;
         // Recherche des éléments associés au produit
         $associatedVendor = $associatedCategory = $associatedManufacturers = array();
         $manufacturersJoinList = '';
         // Le vendeur
         if (isset($this->associatedVendors[$cartProduct['product']->product_vendor_id])) {
             $associatedVendor = $this->associatedVendors[$cartProduct['product']->product_vendor_id]->toArray();
         }
         // La catégorie
         if (isset($this->associatedCategories[$cartProduct['product']->product_cid])) {
             $associatedCategory = $this->associatedCategories[$cartProduct['product']->product_cid]->toArray();
         }
         // Les fabricants
         $product_id = $cartProduct['product']->product_id;
         if (isset($this->associatedManufacturersPerProduct[$product_id])) {
             // Recherche de la liste des fabricants associés à ce produit
             $manufacturers = $this->associatedManufacturersPerProduct[$product_id];
             $manufacturersList = array();
             foreach ($manufacturers as $manufacturer_id) {
                 if (isset($this->associatedManufacturers[$manufacturer_id])) {
                     $associatedManufacturers[] = $this->associatedManufacturers[$manufacturer_id]->toArray();
                 }
                 $manufacturersList[] = $this->associatedManufacturers[$manufacturer_id]->manu_commercialname . ' ' . $this->associatedManufacturers[$manufacturer_id]->manu_name;
             }
             $manufacturersJoinList = implode(OLEDRION_STRING_TO_JOIN_MANUFACTURERS, $manufacturersList);
         }
         $productTemplate = array();
         $productTemplate = $cartProduct['product']->toArray();
         $productTemplate['attributes'] = $productAttributes;
         $productTemplate['number'] = $cartProduct['number'];
         $productTemplate['id'] = $cartProduct['id'];
         $productTemplate['product_qty'] = $cartProduct['qty'];
         $productTemplate['unitBasePrice'] = $ht;
         // Prix unitaire HT SANS réduction
         $productTemplate['discountedPrice'] = $discountedPrice;
         // Prix unitaire HT AVEC réduction
         $productTemplate['discountedPriceWithQuantity'] = $discountedPrice * $quantity;
         // Prix HT AVEC réduction et la quantité
         // Les même prix mais formatés
         $productTemplate['unitBasePriceFormated'] = $oledrion_Currency->amountForDisplay($ht);
         // Prix unitaire HT SANS réduction
         $productTemplate['discountedPriceFormated'] = $oledrion_Currency->amountForDisplay($discountedPrice);
         // Prix unitaire HT AVEC réduction
         $productTemplate['discountedPriceWithQuantityFormated'] = $oledrion_Currency->amountForDisplay($discountedPrice * $quantity);
         // Prix HT AVEC réduction et la quantité
         $productTemplate['vatRate'] = $oledrion_Currency->amountInCurrency($vatRate);
         $productTemplate['vatAmount'] = $vatAmount;
         $productTemplate['normalShipping'] = $cartProduct['product']->getVar('product_shipping_price', 'n');
         $productTemplate['discountedShipping'] = $discountedShipping;
         $productTemplate['totalPrice'] = $totalPrice;
         $productTemplate['reduction'] = $reduction;
         $productTemplate['templateProduct'] = $cartProduct['product']->toArray();
         $productTemplate['vatAmountFormated'] = $oledrion_Currency->amountInCurrency($vatAmount);
         $productTemplate['normalShippingFormated'] = $oledrion_Currency->amountForDisplay($cartProduct['product']->getVar('product_shipping_price', 'n'));
         $productTemplate['discountedShippingFormated'] = $oledrion_Currency->amountForDisplay($discountedShipping);
         $productTemplate['totalPriceFormated'] = $oledrion_Currency->amountInCurrency($totalPrice);
         $productTemplate['templateCategory'] = $associatedCategory;
         $productTemplate['templateVendor'] = $associatedVendor;
         $productTemplate['templateManufacturers'] = $associatedManufacturers;
         $productTemplate['manufacturersJoinList'] = $manufacturersJoinList;
         $this->cartForTemplate[] = $productTemplate;
     }
     // foreach sur les produits du panier
     // Traitement des règles générales s'il y en a
     if (count($this->rulesForTheWhole) > 0) {
         // $discountsDescription
         foreach ($this->rulesForTheWhole as $rule) {
             switch ($rule->disc_price_type) {
                 case OLEDRION_DISCOUNT_PRICE_TYPE2:
                     // D'un montant ou d'un pourcentage
                     if ($rule->disc_price_amount_on == OLEDRION_DISCOUNT_PRICE_AMOUNT_ON_CART) {
                         // Règle à appliquer sur le panier
                         if ($rule->disc_price_amount_type == OLEDRION_DISCOUNT_PRICE_REDUCE_PERCENT) {
                             // Réduction en pourcentage
                             $totalHT = $this->getDiscountedPrice($totalHT, $rule->getVar('disc_price_amount_amount'));
                             $totalVAT = $this->getDiscountedPrice($totalVAT, $rule->getVar('disc_price_amount_amount'));
                         } elseif ($rule->disc_price_amount_type == OLEDRION_DISCOUNT_PRICE_REDUCE_MONEY) {
                             // Réduction d'un montant en euros
                             $totalHT -= floatval($rule->getVar('disc_price_amount_amount'));
                             $totalVAT -= floatval($rule->getVar('disc_price_amount_amount'));
                         }
                         // Pas de montants négatifs
                         oledrion_utils::doNotAcceptNegativeAmounts($totalHT);
                         oledrion_utils::doNotAcceptNegativeAmounts($totalVAT);
                         $discountsDescription[] = $rule->disc_description;
                         $discountsCount++;
                     }
                     // Règle à appliquer sur le panier
                     break;
             }
             // Switch
         }
         // Foreach
     }
     // S'il y a des règles globales
     // Les totaux "renvoyés" à l'appelant
     $shippingAmount = $totalShipping;
     $commandAmount = $totalHT;
     $vatAmount = $totalVAT;
     $commandAmountTTC = $totalHT + $totalVAT + $totalShipping;
     $cartForTemplate = $this->cartForTemplate;
     return true;
 }
Example #10
0
 /**
  * Retourne les éléments du produits formatés pour affichage
  *
  * @param  string $format Le format à utiliser
  * @return array  Les informations formatées
  */
 public function toArray($format = 's')
 {
     $ret = array();
     $ret = parent::toArray($format);
     $oledrion_Currency = oledrion_Currency::getInstance();
     $ttc = $finalPriceTTC = $this->getTTC();
     $finalPriceHT = floatval($this->getVar('product_price'));
     $ret['product_ecotaxe_formated'] = $oledrion_Currency->amountForDisplay($this->getVar('product_ecotaxe'));
     $ret['product_price_formated'] = $oledrion_Currency->amountForDisplay($this->getVar('product_price', 'e'));
     $ret['product_shipping_price_formated'] = $oledrion_Currency->amountForDisplay($this->getVar('product_shipping_price', 'e'));
     $ret['product_discount_price_formated'] = $oledrion_Currency->amountForDisplay($this->getVar('product_discount_price', 'e'));
     $ret['product_price_ttc'] = $oledrion_Currency->amountForDisplay($ttc);
     $ret['product_price_ttc_long'] = $oledrion_Currency->amountForDisplay($ttc, 'l');
     if (intval($this->getVar('product_discount_price')) > 0) {
         //geeker
         $finalPriceTTC = $this->getDiscountTTC();
         $finalPriceHT = floatval($this->getVar('product_discount_price', 'e'));
         $ret['product_discount_price_ttc'] = $oledrion_Currency->amountForDisplay($this->getDiscountTTC());
         $ret['product_discount_price_ttc_long'] = $oledrion_Currency->amountForDisplay($this->getDiscountTTC(), 'l');
     } else {
         $ret['product_discount_price_ttc'] = '';
         $ret['product_discount_price_ttc_long'] = '';
     }
     // Les informations sur les attributs
     $attributesCount = $this->productAttributesCount();
     $ret['product_attributes_count'] = $attributesCount;
     if ($attributesCount > 0) {
         $optionsPrice = $this->getInitialOptionsPrice();
         $ret['product_price_formated'] = $oledrion_Currency->amountForDisplay(floatval($this->getVar('product_price', 'e')) + $optionsPrice);
         $ret['product_discount_price_formated'] = $oledrion_Currency->amountForDisplay(floatval($this->getVar('product_discount_price', 'e')) + $optionsPrice);
         $ret['product_price_ttc'] = $oledrion_Currency->amountForDisplay($ttc + $optionsPrice);
         $ret['product_price_ttc_long'] = $oledrion_Currency->amountForDisplay($ttc + $optionsPrice, 'l');
         if (intval($this->getVar('product_discount_price')) != 0) {
             $finalPriceTTC = $this->getDiscountTTC() + $optionsPrice;
             $finalPriceHT = floatval($this->getVar('product_discount_price', 'e')) + $optionsPrice;
             $ret['product_discount_price_ttc'] = $oledrion_Currency->amountForDisplay(floatval($this->getDiscountTTC()) + $optionsPrice);
             $ret['product_discount_price_ttc_long'] = $oledrion_Currency->amountForDisplay(floatval($this->getDiscountTTC()) + $optionsPrice, 'l');
         }
     }
     $ret['product_final_price_ht_formated_long'] = $oledrion_Currency->amountForDisplay($finalPriceHT, 'l');
     $ret['product_final_price_ttc'] = $finalPriceTTC;
     $ret['product_final_price_ttc_javascript'] = oledrion_utils::formatFloatForDB($finalPriceTTC);
     $ret['product_final_price_ttc_formated'] = $oledrion_Currency->amountForDisplay($finalPriceTTC);
     $ret['product_final_price_ttc_formated_long'] = $oledrion_Currency->amountForDisplay($finalPriceTTC, 'l');
     $ret['product_vat_amount_formated_long'] = $oledrion_Currency->amountForDisplay($finalPriceHT - $finalPriceTTC);
     $ret['product_tooltip'] = oledrion_utils::makeInfotips($this->getVar('product_description'));
     $ret['product_url_rewrited'] = $this->getLink();
     $ret['product_href_title'] = oledrion_utils::makeHrefTitle($this->getVar('product_title'));
     $ret['product_recommended'] = $this->isRecommended();
     $ret['product_recommended_picture'] = $this->recommendedPicture();
     $ret['product_image_full_url'] = $this->getPictureUrl();
     $ret['product_thumb_full_url'] = $this->getThumbUrl();
     $ret['product_image_full_path'] = $this->getPicturePath();
     $ret['product_thumb_full_path'] = $this->getThumbPath();
     $ret['product_shorten_summary'] = oledrion_utils::truncate_tagsafe($this->getVar('product_summary'), OLEDRION_SUMMARY_MAXLENGTH);
     $ret['product_shorten_description'] = oledrion_utils::truncate_tagsafe($this->getVar('product_description'), OLEDRION_SUMMARY_MAXLENGTH);
     $ret['product_new'] = $this->isNewProduct();
     return $ret;
 }
Example #11
0
 /**
  * Calcul du TTC à partir du HT et de la TVA
  *
  * @param float $ht		Montant HT
  * @param float $vat	Taux de TVA
  * @param boolean $edit	Si faux alors le montant est formaté pour affichage sinon il reste tel quel
  * @param string $format	Format d'affichage du résultat (long ou court)
  * @return mixed	Soit une chaine soit un flottant
  */
 function getTTC($ht, $vat, $edit = false, $format = 's')
 {
     $oledrion_Currency =& oledrion_Currency::getInstance();
     $ttc = $ht * (1 + $vat / 100);
     if (!$edit) {
         return $oledrion_Currency->amountForDisplay($ttc, $format);
     } else {
         return $ttc;
     }
 }
 /**
  * Retourne les informations formatées de l'attribut pour affichage dans la facture
  *
  * @param oledrion_products $product	Le produit concerné par l'attribut
  * @return array
  * @since 2.3.2009.03.23
  */
 function renderForInvoice(oledrion_products $product, $format = 's')
 {
     $names = $prices = $ret = array();
     $names = $this->getOption('ca_attribute_names', $format);
     if (oledrion_utils::getModuleOption('use_price')) {
         $prices = $this->getOption('ca_attribute_prices', $format);
     }
     $oledrion_Currency = oledrion_Currency::getInstance();
     $counter = 0;
     foreach ($names as $name) {
         $price = 0;
         if (oledrion_utils::getModuleOption('use_price')) {
             if (isset($prices[$counter])) {
                 $price = oledrion_utils::getAmountWithVat(floatval($prices[$counter]), $product->getVar('product_vat_id'));
                 $price = $oledrion_Currency->amountForDisplay($price);
             }
         }
         $ret[] = array('ca_attribute_name' => $name, 'ca_attribute_price_formated' => $price);
         $counter++;
     }
     return $ret;
 }
Example #13
0
 public function getThisLocationDelivery($location_id)
 {
     global $h_oledrion_location_delivery;
     $oledrion_Currency = oledrion_Currency::getInstance();
     $ret = array();
     $parameters = array('location' => $location_id);
     $location_delivery = $h_oledrion_location_delivery->getLocationDeliveryId($parameters);
     foreach ($location_delivery as $location) {
         $id[] = $location['ld_delivery'];
     }
     $critere = new CriteriaCompo();
     $critere->add(new Criteria('delivery_id', '(' . implode(',', $id) . ')', 'IN'));
     $critere->add(new Criteria('delivery_online', 1));
     $obj = $this->getObjects($critere);
     if ($obj) {
         foreach ($obj as $root) {
             $tab = array();
             $tab = $root->toArray();
             $tab['delivery_price'] = $location_delivery[$root->getVar('delivery_id')]['ld_price'];
             $tab['delivery_price_fordisplay'] = $oledrion_Currency->amountForDisplay($tab['delivery_price']);
             $tab['delivery_time'] = $location_delivery[$root->getVar('delivery_id')]['ld_delivery_time'];
             $ret[] = $tab;
         }
     }
     return $ret;
 }