if (count($attributes) == 0) { return _OLEDRION_NA; } // Et on recalcule le prix foreach ($attributes as $attribute) { $attributeNameInForm = xoops_trim($attribute->getVar('attribute_name') . '_' . $attribute->getVar('attribute_id')); if (isset($data[$attributeNameInForm])) { $attributeValues = $data[$attributeNameInForm]; if (is_array($attributeValues)) { foreach ($attributeValues as $attributeValue) { $optionName = oledrion_utils::getName($attributeValue); $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)) {
/** * 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; }