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; }
/** * 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; }
/** * 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; }
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; }
$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; }
/** * 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; }
/** * 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; }
/** * 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; }
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; }