📄 functions_prices.php
字号:
} else {
$sale_maker_discount = '';
}
}
return $sale_maker_discount;
}
////
// Actual Price Retail
// Specials and Tax Included
function zen_get_products_actual_price($products_id) {
global $db, $currencies;
$product_check = $db->Execute("select products_tax_class_id, products_price, products_priced_by_attribute, product_is_free, product_is_call from " . TABLE_PRODUCTS . " where products_id = '" . $products_id . "'" . " limit 1");
$show_display_price = '';
$display_normal_price = zen_get_products_base_price($products_id);
$display_special_price = zen_get_products_special_price($products_id, true);
$display_sale_price = zen_get_products_special_price($products_id, false);
$products_actual_price = $display_normal_price;
if ($display_special_price) {
$products_actual_price = $display_special_price;
}
if ($display_sale_price) {
$products_actual_price = $display_sale_price;
}
// If Free, Show it
if ($product_check->fields['product_is_free'] == '1') {
$products_actual_price = 0;
}
return $products_actual_price;
}
////
// return attributes_price_factor
function zen_get_attributes_price_factor($price, $special, $factor, $offset) {
if (ATTRIBUTES_PRICE_FACTOR_FROM_SPECIAL =='1' and $special) {
// calculate from specials_new_products_price
$calculated_price = $special * ($factor - $offset);
} else {
// calculate from products_price
$calculated_price = $price * ($factor - $offset);
}
// return '$price ' . $price . ' $special ' . $special . ' $factor ' . $factor . ' $offset ' . $offset;
return $calculated_price;
}
////
// return attributes_qty_prices or attributes_qty_prices_onetime based on qty
function zen_get_attributes_qty_prices_onetime($string, $qty) {
$attribute_qty = split("[:,]" , $string);
$size = sizeof($attribute_qty);
for ($i=0, $n=$size; $i<$n; $i+=2) {
$new_price = $attribute_qty[$i+1];
if ($qty <= $attribute_qty[$i]) {
$new_price = $attribute_qty[$i+1];
break;
}
}
return $new_price;
}
////
// Check specific attributes_qty_prices or attributes_qty_prices_onetime for a given quantity price
function zen_get_attributes_quantity_price($check_what, $check_for) {
// $check_what='1:3.00,5:2.50,10:2.25,20:2.00';
// $check_for=50;
$attribute_table_cost = split("[:,]" , $check_what);
$size = sizeof($attribute_table_cost);
for ($i=0, $n=$size; $i<$n; $i+=2) {
if ($check_for >= $attribute_table_cost[$i]) {
$attribute_quantity_check = $attribute_table_cost[$i];
$attribute_quantity_price = $attribute_table_cost[$i+1];
}
}
// echo '<br>Cost ' . $check_for . ' - ' . $attribute_quantity_check . ' x ' . $attribute_quantity_price;
return $attribute_quantity_price;
}
////
// attributes final price
function zen_get_attributes_price_final($attribute, $qty = 1, $pre_selected, $include_onetime = 'false') {
global $db;
global $cart;
if ($pre_selected == '' or $attribute != $pre_selected->fields["products_attributes_id"]) {
$pre_selected = $db->Execute("select pa.* from " . TABLE_PRODUCTS_ATTRIBUTES . " pa where pa.products_attributes_id= '" . $attribute . "'");
} else {
// use existing select
}
// normal attributes price
if ($pre_selected->fields["price_prefix"] == '-') {
$attributes_price_final -= $pre_selected->fields["options_values_price"];
} else {
$attributes_price_final += $pre_selected->fields["options_values_price"];
}
// qty discounts
$attributes_price_final += zen_get_attributes_qty_prices_onetime($pre_selected->fields["attributes_qty_prices"], $qty);
// price factor
$display_normal_price = zen_get_products_actual_price($pre_selected->fields["products_id"]);
$display_special_price = zen_get_products_special_price($pre_selected->fields["products_id"]);
$attributes_price_final += zen_get_attributes_price_factor($display_normal_price, $display_special_price, $pre_selected->fields["attributes_price_factor"], $pre_selected->fields["attributes_price_factor_offset"]);
// per word and letter charges
if (zen_get_attributes_type($attribute) == PRODUCTS_OPTIONS_TYPE_TEXT) {
// calc per word or per letter
}
// onetime charges
if ($include_onetime == 'true') {
$pre_selected_onetime = $pre_selected;
$attributes_price_final += zen_get_attributes_price_final_onetime($pre_selected->fields["products_attributes_id"], 1, $pre_selected_onetime);
}
return $attributes_price_final;
}
////
// attributes final price onetime
function zen_get_attributes_price_final_onetime($attribute, $qty= 1, $pre_selected_onetime) {
global $db;
global $cart;
if ($pre_selected_onetime == '' or $attribute != $pre_selected_onetime->fields["products_attributes_id"]) {
$pre_selected_onetime = $db->Execute("select pa.* from " . TABLE_PRODUCTS_ATTRIBUTES . " pa where pa.products_attributes_id= '" . $attribute . "'");
} else {
// use existing select
}
// one time charges
// onetime charge
$attributes_price_final_onetime += $pre_selected_onetime->fields["attributes_price_onetime"];
// price factor
$display_normal_price = zen_get_products_actual_price($pre_selected_onetime->fields["products_id"]);
$display_special_price = zen_get_products_special_price($pre_selected_onetime->fields["products_id"]);
// price factor one time
$attributes_price_final_onetime += zen_get_attributes_price_factor($display_normal_price, $display_special_price, $pre_selected_onetime->fields["attributes_price_factor_onetime"], $pre_selected_onetime->fields["attributes_price_factor_onetime_offset"]);
// onetime charge qty price
$attributes_price_final_onetime += zen_get_attributes_qty_prices_onetime($pre_selected_onetime->fields["attributes_qty_prices_onetime"], 1);
return $attributes_price_final_onetime;
}
////
// get attributes type
function zen_get_attributes_type($check_attribute) {
global $db;
$check_options_id_query = $db->Execute("select options_id from " . TABLE_PRODUCTS_ATTRIBUTES . " where products_attributes_id='" . $check_attribute . "'");
$check_type_query = $db->Execute("select products_options_type from " . TABLE_PRODUCTS_OPTIONS . " where products_options_id='" . $check_options_id_query->fields['options_id'] . "'");
return $check_type_query->fields['products_options_type'];
}
////
// calculate words
function zen_get_word_count($string, $free=0) {
if ($string != '') {
while (strstr($string, ' ')) $string = str_replace(' ', ' ', $string);
$string = trim($string);
$word_count = substr_count($string, ' ');
return (($word_count+1) - $free);
} else {
// nothing to count
return 0;
}
}
////
// calculate words price
function zen_get_word_count_price($string, $free=0, $price) {
$word_count = zen_get_word_count($string, $free);
if ($word_count >= 1) {
return ($word_count * $price);
} else {
return 0;
}
}
////
// calculate letters
function zen_get_letters_count($string, $free=0) {
while (strstr($string, ' ')) $string = str_replace(' ', ' ', $string);
$string = trim($string);
if (TEXT_SPACES_FREE == '1') {
$letters_count = strlen(str_replace(' ', '', $string));
} else {
$letters_count = strlen($string);
}
if ($letters_count - $free >= 1) {
return ($letters_count - $free);
} else {
return 0;
}
}
////
// calculate letters price
function zen_get_letters_count_price($string, $free=0, $price) {
$letters_price = zen_get_letters_count($string, $free) * $price;
if ($letters_price <= 0) {
return 0;
} else {
return $letters_price;
}
}
////
// compute discount based on qty
function zen_get_products_discount_price_qty($product_id, $check_qty, $check_amount=0) {
global $db;
$product_id = (int)$product_id;
$products_query = $db->Execute("select products_discount_type, products_discount_type_from, products_priced_by_attribute from " . TABLE_PRODUCTS . " where products_id='" . $product_id . "'");
$products_discounts_query = $db->Execute("select * from " . TABLE_PRODUCTS_DISCOUNT_QUANTITY . " where products_id='" . $product_id . "' and discount_qty <='" . $check_qty . "' order by discount_qty desc");
$display_price = zen_get_products_base_price($product_id);
$display_specials_price = zen_get_products_special_price($product_id, true);
switch ($products_query->fields['products_discount_type']) {
// none
case ($products_discounts_query->EOF):
//no discount applies
$discounted_price = zen_get_products_actual_price($product_id);
break;
case '0':
$discounted_price = zen_get_products_actual_price($product_id);
break;
// percentage discount
case '1':
if ($products_query->fields['products_discount_type_from'] == '0') {
// priced by attributes
if ($check_amount != 0) {
$discounted_price = $check_amount - ($check_amount * ($products_discounts_query->fields['discount_price']/100));
//echo 'ID#' . $product_id . ' Amount is: ' . $check_amount . ' discount: ' . $discounted_price . '<br />';
//echo 'I SEE 2 for ' . $products_query->fields['products_discount_type'] . ' - ' . $products_query->fields['products_discount_type_from'] . ' - '. $check_amount . ' new: ' . $discounted_price . ' qty: ' . $check_qty;
} else {
$discounted_price = $display_price - ($display_price * ($products_discounts_query->fields['discount_price']/100));
}
} else {
if (!$display_specials_price) {
// priced by attributes
if ($check_amount != 0) {
$discounted_price = $check_amount - ($check_amount * ($products_discounts_query->fields['discount_price']/100));
} else {
$discounted_price = $display_price - ($display_price * ($products_discounts_query->fields['discount_price']/100));
}
} else {
$discounted_price = $display_specials_price - ($display_specials_price * ($products_discounts_query->fields['discount_price']/100));
}
}
break;
// actual price
case '2':
if ($products_query->fields['products_discount_type_from'] == '0') {
$discounted_price = $products_discounts_query->fields['discount_price'];
} else {
$discounted_price = $products_discounts_query->fields['discount_price'];
}
break;
// amount offprice
case '3':
if ($products_query->fields['products_discount_type_from'] == '0') {
$discounted_price = $display_price - $products_discounts_query->fields['discount_price'];
} else {
if (!$display_specials_price) {
$discounted_price = $display_price - $products_discounts_query->fields['discount_price'];
} else {
$discounted_price = $display_specials_price - $products_discounts_query->fields['discount_price'];
}
}
break;
}
return $discounted_price;
}
////
// are there discount quanties
function zen_get_discount_qty($product_id, $check_qty) {
global $db;
$product_id = (int)$product_id;
$discounts_qty_query = $db->Execute("select * from " . TABLE_PRODUCTS_DISCOUNT_QUANTITY . " where products_id='" . $product_id . "' and discount_qty != 0");
//echo 'zen_get_discount_qty: ' . $product_id . ' - ' . $check_qty . '<br />';
if ($discounts_qty_query->RecordCount() > 0 and $check_qty > 0) {
return true;
} else {
return false;
}
}
?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -