Ankündigung

Einklappen
Keine Ankündigung bisher.

Problem mit der functions_prices

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Problem mit der functions_prices

    Zen-Cart 1.5.4 und php 7.0.13

    Hallo zusammen,

    ich habe das Problem das bei meinen Artikeln zwar der Sonderpreis angezeigt wird, nicht aber was der Kunde spart.
    Hier ein Beispiel: https://www.schwammerlsuche.de/index...products_id=94
    In Firebug sieht man das es da ist, aber nicht angezeigt wird.

    Klicke auf die Grafik für eine vergrößerte Ansicht

Name: 2016-12-08_045803.jpg
Ansichten: 1
Größe: 74,9 KB
ID: 104038

    Wäre super wenn hier jemand nen Tipp für mich hätte, hab schon alles probiert was meine bescheidenenen Möglichkeiten hergaben.

    Ich hab euch mal meine functions_prices.php rein kopiert, hoffe ich hab das richtig gemacht.

    Vielen Dank im voraus.


    PHP-Code:
    <?php
    /**
     * functions_prices
     *
     * @package functions
     * @copyright Copyright 2003-2014 Zen Cart Development Team
     * @copyright Portions Copyright 2003 osCommerce
     * @license http://www.zen-cart-pro.at/license/2_0.txt GNU Public License V2.0
     * @version $Id: functions_prices.php 852 2014-04-12 15:55:24Z webchills $
     */

    ////
    //get specials price or sale price
      
    function zen_get_products_special_price($product_id$specials_price_only=false) {
        global 
    $db;
        
    $product $db->Execute("select products_price, products_model, products_priced_by_attribute from " TABLE_PRODUCTS " where products_id = '" . (int)$product_id "'");

        if (
    $product->RecordCount() > 0) {
    //        $product_price = $product->fields['products_price'];
          
    $product_price zen_get_products_base_price($product_id);
        } else {
          return 
    false;
        }

        
    $specials $db->Execute("select specials_new_products_price from " TABLE_SPECIALS " where products_id = '" . (int)$product_id "' and status='1'");
        if (
    $specials->RecordCount() > 0) {
    //      if ($product->fields['products_priced_by_attribute'] == 1) {
            
    $special_price $specials->fields['specials_new_products_price'];
        } else {
          
    $special_price false;
        }

        if(
    substr($product->fields['products_model'], 04) == 'GIFT') {    //Never apply a salededuction to Ian Wilson's Giftvouchers
          
    if (zen_not_null($special_price)) {
            return 
    $special_price;
          } else {
            return 
    false;
          }
        }

    // return special price only
        
    if ($specials_price_only==true) {
          if (
    zen_not_null($special_price)) {
            return 
    $special_price;
          } else {
            return 
    false;
          }
        } else {
    // get sale price

    // changed to use master_categories_id
    //      $product_to_categories = $db->Execute("select categories_id from " . TABLE_PRODUCTS_TO_CATEGORIES . " where products_id = '" . (int)$product_id . "'");
    //      $category = $product_to_categories->fields['categories_id'];

          
    $product_to_categories $db->Execute("select master_categories_id from " TABLE_PRODUCTS " where products_id = '" $product_id "'");
          
    $category $product_to_categories->fields['master_categories_id'];

          
    $sale $db->Execute("select sale_specials_condition, sale_deduction_value, sale_deduction_type from " TABLE_SALEMAKER_SALES " where sale_categories_all like '%," $category ",%' and sale_status = '1' and (sale_date_start <= now() or sale_date_start = '0001-01-01') and (sale_date_end >= now() or sale_date_end = '0001-01-01') and (sale_pricerange_from <= '" $product_price "' or sale_pricerange_from = '0') and (sale_pricerange_to >= '" $product_price "' or sale_pricerange_to = '0')");
          if (
    $sale->RecordCount() < 1) {
             return 
    $special_price;
          }

          if (!
    $special_price) {
            
    $tmp_special_price $product_price;
          } else {
            
    $tmp_special_price $special_price;
          }
          switch (
    $sale->fields['sale_deduction_type']) {
            case 
    0:
              
    $sale_product_price $product_price $sale->fields['sale_deduction_value'];
              
    $sale_special_price $tmp_special_price $sale->fields['sale_deduction_value'];
              break;
            case 
    1:
              
    $sale_product_price $product_price - (($product_price $sale->fields['sale_deduction_value']) / 100);
              
    $sale_special_price $tmp_special_price - (($tmp_special_price $sale->fields['sale_deduction_value']) / 100);
              break;
            case 
    2:
              
    $sale_product_price $sale->fields['sale_deduction_value'];
              
    $sale_special_price $sale->fields['sale_deduction_value'];
              break;
            default:
              return 
    $special_price;
          }

          if (
    $sale_product_price 0) {
            
    $sale_product_price 0;
          }

          if (
    $sale_special_price 0) {
            
    $sale_special_price 0;
          }

          if (!
    $special_price) {
            return 
    number_format($sale_product_price4'.''');
          } else {
            switch(
    $sale->fields['sale_specials_condition']){
              case 
    0:
                return 
    number_format($sale_product_price4'.''');
                break;
              case 
    1:
                return 
    number_format($special_price4'.''');
                break;
              case 
    2:
                return 
    number_format($sale_special_price4'.''');
                break;
              default:
                return 
    number_format($special_price4'.''');
            }
          }
        }
      }


    ////
    // computes products_price + option groups lowest attributes price of each group when on
      
    function zen_get_products_base_price($products_id) {
        global 
    $db;
          
    $product_check $db->Execute("select products_price, products_priced_by_attribute from " TABLE_PRODUCTS " where products_id = '" . (int)$products_id "'");

    // is there a products_price to add to attributes
          
    $products_price $product_check->fields['products_price'];

          
    // do not select display only attributes and attributes_price_base_included is true
          
    $product_att_query $db->Execute("select options_id, price_prefix, options_values_price, attributes_display_only, attributes_price_base_included, round(concat(price_prefix, options_values_price), 5) as value from " TABLE_PRODUCTS_ATTRIBUTES " where products_id = '" . (int)$products_id "' and attributes_display_only != '1' and attributes_price_base_included='1'"" order by options_id, value");

          
    $the_options_id'x';
          
    $the_base_price0;
    // add attributes price to price
          
    if ($product_check->fields['products_priced_by_attribute'] == '1' and $product_att_query->RecordCount() >= 1) {
            while (!
    $product_att_query->EOF) {
              if ( 
    $the_options_id != $product_att_query->fields['options_id']) {
                
    $the_options_id $product_att_query->fields['options_id'];
                
    $the_base_price += (($product_att_query->fields['price_prefix'] == '-') ? -1) * $product_att_query->fields['options_values_price'];
              }
              
    $product_att_query->MoveNext();
            }

            
    $the_base_price $products_price $the_base_price;
          } else {
            
    $the_base_price $products_price;
          }
          return 
    $the_base_price;
      }


    ////
    // Display Price Retail
    // Specials and Tax Included
      
    function zen_get_products_display_price($products_id) {
        global 
    $db$currencies;

        
    $free_tag "";
        
    $call_tag "";

    // 0 = normal shopping
    // 1 = Login to shop
    // 2 = Can browse but no prices
        // verify display of prices
          
    switch (true) {
            case (
    CUSTOMERS_APPROVAL == '1' and $_SESSION['customer_id'] == ''):
            
    // customer must be logged in to browse
            
    return '';
            break;
            case (
    CUSTOMERS_APPROVAL == '2' and $_SESSION['customer_id'] == ''):
            
    // customer may browse but no prices
            
    return TEXT_LOGIN_FOR_PRICE_PRICE;
            break;
            case (
    CUSTOMERS_APPROVAL == '3' and TEXT_LOGIN_FOR_PRICE_PRICE_SHOWROOM != ''):
            
    // customer may browse but no prices
            
    return TEXT_LOGIN_FOR_PRICE_PRICE_SHOWROOM;
            break;
            case ((
    CUSTOMERS_APPROVAL_AUTHORIZATION != '0' and CUSTOMERS_APPROVAL_AUTHORIZATION != '3') and $_SESSION['customer_id'] == ''):
            
    // customer must be logged in to browse
            
    return TEXT_AUTHORIZATION_PENDING_PRICE;
            break;
            case ((
    CUSTOMERS_APPROVAL_AUTHORIZATION != '0' and CUSTOMERS_APPROVAL_AUTHORIZATION != '3') and $_SESSION['customers_authorization'] > '0'):
            
    // customer must be logged in to browse
            
    return TEXT_AUTHORIZATION_PENDING_PRICE;
            break;
            default:
            
    // proceed normally
            
    break;
          }

    // show case only
        
    if (STORE_STATUS != '0') {
          if (
    STORE_STATUS == '1') {
            return 
    '';
          }
        }

        
    // $new_fields = ', product_is_free, product_is_call, product_is_showroom_only';
        
    $product_check $db->Execute("select products_tax_class_id, products_price, products_priced_by_attribute, product_is_free, product_is_call, product_is_always_free_shipping, products_type from " TABLE_PRODUCTS " where products_id = '" . (int)$products_id "'" " limit 1");

        
    // no prices on Document General
        
    if ($product_check->fields['products_type'] == 3) {
          return 
    '';
        }

        
    $show_display_price '';
        
    $display_normal_price zen_get_products_base_price($products_id);
        
    $display_special_price zen_get_products_special_price($products_idtrue);
        
    $display_sale_price zen_get_products_special_price($products_idfalse);

        
    $show_sale_discount '';
        if (
    SHOW_SALE_DISCOUNT_STATUS == '1' and ($display_special_price != or $display_sale_price != 0)) {
          if (
    $display_sale_price) {
            if (
    SHOW_SALE_DISCOUNT == 1) {
              if (
    $display_normal_price != 0) {
                
    $show_discount_amount number_format(100 - (($display_sale_price $display_normal_price) * 100),SHOW_SALE_DISCOUNT_DECIMALS);
              } else {
                
    $show_discount_amount '';
              }
              
    $show_sale_discount '<span class="productPriceDiscount">' '<br />' PRODUCT_PRICE_DISCOUNT_PREFIX $show_discount_amount PRODUCT_PRICE_DISCOUNT_PERCENTAGE '</span>';

            } else {
              
    $show_sale_discount '<span class="productPriceDiscount">' '<br />' PRODUCT_PRICE_DISCOUNT_PREFIX $currencies->display_price(($display_normal_price $display_sale_price), zen_get_tax_rate($product_check->fields['products_tax_class_id'])) . PRODUCT_PRICE_DISCOUNT_AMOUNT '</span>';
            }
          } else {
            if (
    SHOW_SALE_DISCOUNT == 1) {
              
    $show_sale_discount '<span class="productPriceDiscount">' '<br />' PRODUCT_PRICE_DISCOUNT_PREFIX number_format(100 - (($display_special_price $display_normal_price) * 100),SHOW_SALE_DISCOUNT_DECIMALS) . PRODUCT_PRICE_DISCOUNT_PERCENTAGE '</span>';
          } else {
              
    $show_sale_discount '<span class="productPriceDiscount">' '<br />' PRODUCT_PRICE_DISCOUNT_PREFIX $currencies->display_price(($display_normal_price $display_special_price), zen_get_tax_rate($product_check->fields['products_tax_class_id'])) . PRODUCT_PRICE_DISCOUNT_AMOUNT '</span>';
            }
          }
        }

        if (
    $display_special_price) {
          
    $show_normal_price '<span class="normalprice">' $currencies->display_price($display_normal_pricezen_get_tax_rate($product_check->fields['products_tax_class_id'])) . ' </span>';
          if (
    $display_sale_price && $display_sale_price != $display_special_price) {
            
    $show_special_price '&nbsp;' '<span class="productSpecialPriceSale">' $currencies->display_price($display_special_pricezen_get_tax_rate($product_check->fields['products_tax_class_id'])) . '</span>';
            if (
    $product_check->fields['product_is_free'] == '1') {
              
    $show_sale_price '<br />' '<span class="productSalePrice">' PRODUCT_PRICE_SALE '<s>' $currencies->display_price($display_sale_pricezen_get_tax_rate($product_check->fields['products_tax_class_id'])) . '</s>' '</span>';
            } else {
              
    $show_sale_price '<br />' '<span class="productSalePrice">' PRODUCT_PRICE_SALE $currencies->display_price($display_sale_pricezen_get_tax_rate($product_check->fields['products_tax_class_id'])) . '</span>';
            }
          } else {
            if (
    $product_check->fields['product_is_free'] == '1') {
              
    $show_special_price '&nbsp;' '<span class="productSpecialPrice">' '<s>' $currencies->display_price($display_special_pricezen_get_tax_rate($product_check->fields['products_tax_class_id'])) . '</s>' '</span>';
            } else {
              
    $show_special_price '&nbsp;' '<span class="productSpecialPrice">' $currencies->display_price($display_special_pricezen_get_tax_rate($product_check->fields['products_tax_class_id'])) . '</span>';
            }
            
    $show_sale_price '';
          }
        } else {
          if (
    $display_sale_price) {
            
    $show_normal_price '<span class="normalprice">' $currencies->display_price($display_normal_pricezen_get_tax_rate($product_check->fields['products_tax_class_id'])) . ' </span>';
            
    $show_special_price '';
            
    $show_sale_price '<br />' '<span class="productSalePrice">' PRODUCT_PRICE_SALE $currencies->display_price($display_sale_pricezen_get_tax_rate($product_check->fields['products_tax_class_id'])) . '</span>';
          } else {
            if (
    $product_check->fields['product_is_free'] == '1') {
              
    $show_normal_price '<s>' $currencies->display_price($display_normal_pricezen_get_tax_rate($product_check->fields['products_tax_class_id'])) . '</s>';
            } else {
              
    $show_normal_price $currencies->display_price($display_normal_pricezen_get_tax_rate($product_check->fields['products_tax_class_id']));
            }
            
    $show_special_price '';
            
    $show_sale_price '';
          }
        }

        if (
    $display_normal_price == 0) {
          
    // don't show the $0.00
          
    $final_display_price $show_special_price $show_sale_price $show_sale_discount;
        } else {
          
    $final_display_price $show_normal_price $show_special_price $show_sale_price $show_sale_discount;
        }

        
    // If Free, Show it
        
    if ($product_check->fields['product_is_free'] == '1') {
          if (
    OTHER_IMAGE_PRICE_IS_FREE_ON=='0') {
            
    $free_tag '<br />' PRODUCTS_PRICE_IS_FREE_TEXT;
          } else {
            
    $free_tag '<br />' zen_image(DIR_WS_TEMPLATE_IMAGES OTHER_IMAGE_PRICE_IS_FREEPRODUCTS_PRICE_IS_FREE_TEXT);
          }
        }

        
    // If Call for Price, Show it
        
    if ($product_check->fields['product_is_call']) {
          if (
    PRODUCTS_PRICE_IS_CALL_IMAGE_ON=='0') {
            
    $call_tag '<br />' PRODUCTS_PRICE_IS_CALL_FOR_PRICE_TEXT;
          } else {
            
    $call_tag '<br />' zen_image(DIR_WS_TEMPLATE_IMAGES OTHER_IMAGE_CALL_FOR_PRICEPRODUCTS_PRICE_IS_CALL_FOR_PRICE_TEXT);
          }
          return 
    $free_tag $call_tag;
        } else{
        
        return 
    $final_display_price vatAddOn($product_check) . $free_tag $call_tag;     
      }
    }



    ////
    // Is the product free?
      
    function zen_get_products_price_is_free($products_id) {
        global 
    $db;
        
    $product_check $db->Execute("select product_is_free from " TABLE_PRODUCTS " where products_id = '" . (int)$products_id "'" " limit 1");
        if (
    $product_check->fields['product_is_free'] == '1') {
          
    $the_free_price true;
        } else {
          
    $the_free_price false;
        }
        return 
    $the_free_price;
      }

    ////
    // Is the product call for price?
      
    function zen_get_products_price_is_call($products_id) {
        global 
    $db;
        
    $product_check $db->Execute("select product_is_call from " TABLE_PRODUCTS " where products_id = '" . (int)$products_id "'" " limit 1");
        if (
    $product_check->fields['product_is_call'] == '1') {
          
    $the_call_price true;
        } else {
          
    $the_call_price false;
        }
        return 
    $the_call_price;
      }

    ////
    // Is the product priced by attributes?
      
    function zen_get_products_price_is_priced_by_attributes($products_id) {
        global 
    $db;
        
    $product_check $db->Execute("select products_priced_by_attribute from " TABLE_PRODUCTS " where products_id = '" . (int)$products_id "'" " limit 1");
        if (
    $product_check->fields['products_priced_by_attribute'] == '1') {
          
    $the_products_priced_by_attribute true;
        } else {
          
    $the_products_priced_by_attribute false;
        }
        return 
    $the_products_priced_by_attribute;
      }

    ////
    // Return a product's minimum quantity
    // TABLES: products
      
    function zen_get_products_quantity_order_min($product_id) {
        global 
    $db;

        
    $the_products_quantity_order_min $db->Execute("select products_id, products_quantity_order_min from " TABLE_PRODUCTS " where products_id = '" . (int)$product_id "'");
        return 
    $the_products_quantity_order_min->fields['products_quantity_order_min'];
      }


    ////
    // Return a product's minimum unit order
    // TABLES: products
      
    function zen_get_products_quantity_order_units($product_id) {
        global 
    $db;

        
    $the_products_quantity_order_units $db->Execute("select products_id, products_quantity_order_units from " TABLE_PRODUCTS " where products_id = '" . (int)$product_id "'");
        return 
    $the_products_quantity_order_units->fields['products_quantity_order_units'];
      }

    ////
    // Return a product's maximum quantity
    // TABLES: products
      
    function zen_get_products_quantity_order_max($product_id) {
        global 
    $db;

        
    $the_products_quantity_order_max $db->Execute("select products_id, products_quantity_order_max from " TABLE_PRODUCTS " where products_id = '" . (int)$product_id "'");
        return 
    $the_products_quantity_order_max->fields['products_quantity_order_max'];
      }

    ////
    // Return a product's quantity box status
    // TABLES: products
      
    function zen_get_products_qty_box_status($product_id) {
        global 
    $db;

        
    $the_products_qty_box_status $db->Execute("select products_id, products_qty_box_status  from " TABLE_PRODUCTS " where products_id = '" . (int)$product_id "'");
        return 
    $the_products_qty_box_status->fields['products_qty_box_status'];
      }

    ////
    // Return a product mixed setting
    // TABLES: products
      
    function zen_get_products_quantity_mixed($product_id) {
        global 
    $db;

    // don't check for mixed if not attributes
        
    $chk_attrib zen_has_product_attributes((int)$product_id);
        if (
    $chk_attrib == true) {
          
    $the_products_quantity_mixed $db->Execute("select products_id, products_quantity_mixed from " TABLE_PRODUCTS " where products_id = '" . (int)$product_id "'");
          if (
    $the_products_quantity_mixed->fields['products_quantity_mixed'] == '1') {
            
    $look_up true;
          } else {
            
    $look_up false;
          }
        } else {
          
    $look_up 'none';
        }

        return 
    $look_up;
      }


    ////
    // Return a products quantity minimum and units display
      
    function zen_get_products_quantity_min_units_display($product_id$include_break true$shopping_cart_msg false) {
        
    $check_min zen_get_products_quantity_order_min($product_id);
        
    $check_units zen_get_products_quantity_order_units($product_id);

        
    $the_min_units='';

        if (
    $check_min != or $check_units != 1) {
          if (
    $check_min != 1) {
            
    $the_min_units .= PRODUCTS_QUANTITY_MIN_TEXT_LISTING '&nbsp;' $check_min;
          }
          if (
    $check_units != 1) {
            
    $the_min_units .= ($the_min_units ' ' '' ) . PRODUCTS_QUANTITY_UNIT_TEXT_LISTING '&nbsp;' $check_units;
          }

    // don't check for mixed if not attributes
          
    $chk_mix zen_get_products_quantity_mixed((int)$product_id);
          if (
    $chk_mix != 'none') {
            if ((
    $check_min or $check_units 0)) {
              if (
    $include_break == true) {
                
    $the_min_units .= '<br />' . ($shopping_cart_msg == false TEXT_PRODUCTS_MIX_OFF TEXT_PRODUCTS_MIX_OFF_SHOPPING_CART);
              } else {
                
    $the_min_units .= '&nbsp;&nbsp;' . ($shopping_cart_msg == false TEXT_PRODUCTS_MIX_OFF TEXT_PRODUCTS_MIX_OFF_SHOPPING_CART);
              }
            } else {
              if (
    $include_break == true) {
                
    $the_min_units .= '<br />' . ($shopping_cart_msg == false TEXT_PRODUCTS_MIX_ON TEXT_PRODUCTS_MIX_ON_SHOPPING_CART);
              } else {
                
    $the_min_units .= '&nbsp;&nbsp;' . ($shopping_cart_msg == false TEXT_PRODUCTS_MIX_ON TEXT_PRODUCTS_MIX_ON_SHOPPING_CART);
              }
            }
          }
        }

        
    // quantity max
        
    $check_max zen_get_products_quantity_order_max($product_id);

        if (
    $check_max != 0) {
          if (
    $include_break == true) {
            
    $the_min_units .= ($the_min_units != '' '<br />' '') . PRODUCTS_QUANTITY_MAX_TEXT_LISTING '&nbsp;' $check_max;
          } else {
            
    $the_min_units .= ($the_min_units != '' '&nbsp;&nbsp;' '') . PRODUCTS_QUANTITY_MAX_TEXT_LISTING '&nbsp;' $check_max;
          }
        }

        return 
    $the_min_units;
      }


    ////
    // Return quantity buy now
      
    function zen_get_buy_now_qty($product_id) {
        global 
    $cart;
        
    $check_min zen_get_products_quantity_order_min($product_id);
        
    $check_units zen_get_products_quantity_order_units($product_id);
        
    $buy_now_qty=1;
    // works on Mixed ON
        
    switch (true) {
          case (
    $_SESSION['cart']->in_cart_mixed($product_id) == ):
            if (
    $check_min >= $check_units) {
              
    $buy_now_qty $check_min;
            } else {
              
    $buy_now_qty $check_units;
            }
            break;
          case (
    $_SESSION['cart']->in_cart_mixed($product_id) < $check_min):
            
    $buy_now_qty $check_min $_SESSION['cart']->in_cart_mixed($product_id);
            break;
          case (
    $_SESSION['cart']->in_cart_mixed($product_id) > $check_min):
          
    // set to units or difference in units to balance cart
            
    $new_units $check_units fmod_round($_SESSION['cart']->in_cart_mixed($product_id), $check_units);
    //echo 'Cart: ' . $_SESSION['cart']->in_cart_mixed($product_id) . ' Min: ' . $check_min . ' Units: ' . $check_units . ' fmod: ' . fmod($_SESSION['cart']->in_cart_mixed($product_id), $check_units) . '<br />';
            
    $buy_now_qty = ($new_units $new_units $check_units);
            break;
          default:
            
    $buy_now_qty $check_units;
            break;
        }
        if (
    $buy_now_qty <= 0) {
          
    $buy_now_qty 1;
        }
        return 
    $buy_now_qty;
      }


    ////
    // compute product discount to be applied to attributes or other values
      
    function zen_get_discount_calc($product_id$attributes_id false$attributes_amount false$check_qtyfalse) {
        global 
    $discount_type_id$sale_maker_discount;
        global 
    $cart;

        
    // no charge
        
    if ($attributes_id and $attributes_amount == 0) {
          return 
    0;
        }

        
    $new_products_price zen_get_products_base_price($product_id);
        
    $new_special_price zen_get_products_special_price($product_idtrue);
        
    $new_sale_price zen_get_products_special_price($product_idfalse);

        
    $discount_type_id zen_get_products_sale_discount_type($product_id);

        if (
    $new_products_price != 0) {
          
    $special_price_discount = ($new_special_price != ? ($new_special_price/$new_products_price) : 1);
        } else {
          
    $special_price_discount '';
        }
        
    $sale_maker_discount zen_get_products_sale_discount_type($product_id'''amount');

        
    // percentage adjustment of discount
        
    if (($discount_type_id == 120 or $discount_type_id == 1209) or ($discount_type_id == 110 or $discount_type_id == 1109)) {
          
    $sale_maker_discount = ($sale_maker_discount != ? (100 $sale_maker_discount)/100 1);
        }

       
    $qty $check_qty;

    // fix here
    // BOF: percentage discounts apply to price
        
    switch (true) {
          case (
    zen_get_discount_qty($product_id$qty) and !$attributes_id):
            
    // discount quanties exist and this is not an attribute
            // $this->contents[$products_id]['qty']
            
    $check_discount_qty_price zen_get_products_discount_price_qty($product_id$qty$attributes_amount);
    //echo 'How much 1 ' . $qty . ' : ' . $attributes_amount . ' vs ' . $check_discount_qty_price . '<br />';
            
    return $check_discount_qty_price;
            break;

          case (
    zen_get_discount_qty($product_id$qty) and zen_get_products_price_is_priced_by_attributes($product_id)):
            
    // discount quanties exist and this is not an attribute
            // $this->contents[$products_id]['qty']
            
    $check_discount_qty_price zen_get_products_discount_price_qty($product_id$qty$attributes_amount);
    //echo 'How much 2 ' . $qty . ' : ' . $attributes_amount . ' vs ' . $check_discount_qty_price . '<br />';

            
    return $check_discount_qty_price;
            break;

          case (
    $discount_type_id == 5):
            
    // No Sale and No Special
    //        $sale_maker_discount = 1;
            
    if (!$attributes_id) {
              
    $sale_maker_discount $sale_maker_discount;
            } else {
              
    // compute attribute amount
              
    if ($attributes_amount != 0) {
                if (
    $special_price_discount != 0) {
                  
    $calc = ($attributes_amount $special_price_discount);
                } else {
                  
    $calc $attributes_amount;
                }

                
    $sale_maker_discount $calc;
              } else {
                
    $sale_maker_discount $sale_maker_discount;
              }
            }
    //echo 'How much 3 - ' . $qty . ' : ' . $product_id . ' : ' . $qty . ' x ' .  $attributes_amount . ' vs ' . $check_discount_qty_price . ' - ' . $sale_maker_discount . '<br />';
            
    break;
          case (
    $discount_type_id == 59):
            
    // No Sale and Special
    //        $sale_maker_discount = $special_price_discount;
            
    if (!$attributes_id) {
              
    $sale_maker_discount $sale_maker_discount;
            } else {
              
    // compute attribute amount
              
    if ($attributes_amount != 0) {
                
    $calc = ($attributes_amount $special_price_discount);
                
    $sale_maker_discount $calc;
              } else {
                
    $sale_maker_discount $sale_maker_discount;
              }
            }
            break;
    // EOF: percentage discount apply to price

    // BOF: percentage discounts apply to Sale
          
    case ($discount_type_id == 120):
            
    // percentage discount Sale and Special without a special
            
    if (!$attributes_id) {
              
    $sale_maker_discount $sale_maker_discount;
            } else {
              
    // compute attribute amount
              
    if ($attributes_amount != 0) {
                
    $calc = ($attributes_amount $sale_maker_discount);
                
    $sale_maker_discount $calc;
              } else {
                
    $sale_maker_discount $sale_maker_discount;
              }
            }
            break;
          case (
    $discount_type_id == 1209):
            
    // percentage discount on Sale and Special with a special
            
    if (!$attributes_id) {
              
    $sale_maker_discount $sale_maker_discount;
            } else {
              
    // compute attribute amount
              
    if ($attributes_amount != 0) {
                
    $calc = ($attributes_amount $special_price_discount);
                
    $calc2 $calc - ($calc $sale_maker_discount);
                
    $sale_maker_discount $calc $calc2;
              } else {
                
    $sale_maker_discount $sale_maker_discount;
              }
            }
            break;
    // EOF: percentage discounts apply to Sale

    // BOF: percentage discounts skip specials
          
    case ($discount_type_id == 110):
            
    // percentage discount Sale and Special without a special
            
    if (!$attributes_id) {
              
    $sale_maker_discount $sale_maker_discount;
            } else {
              
    // compute attribute amount
              
    if ($attributes_amount != 0) {
                
    $calc = ($attributes_amount $sale_maker_discount);
                
    $sale_maker_discount $calc;
              } else {
    //            $sale_maker_discount = $sale_maker_discount;
                
    if ($attributes_amount != 0) {
    //            $calc = ($attributes_amount * $special_price_discount);
    //            $calc2 = $calc - ($calc * $sale_maker_discount);
    //            $sale_maker_discount = $calc - $calc2;
                  
    $calc $attributes_amount - ($attributes_amount $sale_maker_discount);
                  
    $sale_maker_discount $calc;
                } else {
                  
    $sale_maker_discount $sale_maker_discount;
                }
              }
            }
            break;
          case (
    $discount_type_id == 1109):
            
    // percentage discount on Sale and Special with a special
            
    if (!$attributes_id) {
              
    $sale_maker_discount $sale_maker_discount;
            } else {
              
    // compute attribute amount
              
    if ($attributes_amount != 0) {
                
    $calc = ($attributes_amount $special_price_discount);
    //            $calc2 = $calc - ($calc * $sale_maker_discount);
    //            $sale_maker_discount = $calc - $calc2;
                
    $sale_maker_discount $calc;
              } else {
                
    $sale_maker_discount $sale_maker_discount;
              }
            }
            break;
    // EOF: percentage discounts skip specials

    // BOF: flat amount discounts
          
    case ($discount_type_id == 20):
            
    // flat amount discount Sale and Special without a special
            
    if (!$attributes_id) {
              
    $sale_maker_discount $sale_maker_discount;
            } else {
              
    // compute attribute amount
              
    if ($attributes_amount != 0) {
                
    $calc = ($attributes_amount $sale_maker_discount);
                
    $sale_maker_discount $calc;
              } else {
                
    $sale_maker_discount $sale_maker_discount;
              }
            }
            break;
          case (
    $discount_type_id == 209):
            
    // flat amount discount on Sale and Special with a special
            
    if (!$attributes_id) {
              
    $sale_maker_discount $sale_maker_discount;
            } else {
              
    // compute attribute amount
              
    if ($attributes_amount != 0) {
                
    $calc = ($attributes_amount $special_price_discount);
                
    $calc2 = ($calc $sale_maker_discount);
                
    $sale_maker_discount $calc2;
              } else {
                
    $sale_maker_discount $sale_maker_discount;
              }
            }
            break;
    // EOF: flat amount discounts

    // BOF: flat amount discounts Skip Special
          
    case ($discount_type_id == 10):
            
    // flat amount discount Sale and Special without a special
            
    if (!$attributes_id) {
              
    $sale_maker_discount $sale_maker_discount;
            } else {
              
    // compute attribute amount
              
    if ($attributes_amount != 0) {
                
    $calc = ($attributes_amount $sale_maker_discount);
                
    $sale_maker_discount $calc;
              } else {
                
    $sale_maker_discount $sale_maker_discount;
              }
            }
            break;
          case (
    $discount_type_id == 109):
            
    // flat amount discount on Sale and Special with a special
            
    if (!$attributes_id) {
              
    $sale_maker_discount 1;
            } else {
              
    // compute attribute amount based on Special
              
    if ($attributes_amount != 0) {
                
    $calc = ($attributes_amount $special_price_discount);
                
    $sale_maker_discount $calc;
              } else {
                
    $sale_maker_discount $sale_maker_discount;
              }
            }
            break;
    // EOF: flat amount discounts Skip Special

    // BOF: New Price amount discounts
          
    case ($discount_type_id == 220):
            
    // New Price amount discount Sale and Special without a special
            
    if (!$attributes_id) {
              
    $sale_maker_discount $sale_maker_discount;
            } else {
              
    // compute attribute amount
              
    if ($attributes_amount != 0) {
                
    $calc = ($attributes_amount $special_price_discount);
                
    $sale_maker_discount $calc;
    //echo '<br />attr ' . $attributes_amount . ' spec ' . $special_price_discount . ' Calc ' . $calc . 'Calc2 ' . $calc2 . '<br />';
              
    } else {
                
    $sale_maker_discount $sale_maker_discount;
              }
            }
            break;
          case (
    $discount_type_id == 2209):
            
    // New Price amount discount on Sale and Special with a special
            
    if (!$attributes_id) {
    //          $sale_maker_discount = $sale_maker_discount;
              
    $sale_maker_discount $sale_maker_discount;
            } else {
              
    // compute attribute amount
              
    if ($attributes_amount != 0) {
                
    $calc = ($attributes_amount $special_price_discount);
    //echo '<br />attr ' . $attributes_amount . ' spec ' . $special_price_discount . ' Calc ' . $calc . 'Calc2 ' . $calc2 . '<br />';
                
    $sale_maker_discount $calc;
              } else {
                
    $sale_maker_discount $sale_maker_discount;
              }
            }
            break;
    // EOF: New Price amount discounts

    // BOF: New Price amount discounts - Skip Special
          
    case ($discount_type_id == 210):
            
    // New Price amount discount Sale and Special without a special
            
    if (!$attributes_id) {
              
    $sale_maker_discount $sale_maker_discount;
            } else {
              
    // compute attribute amount
              
    if ($attributes_amount != 0) {
                
    $calc = ($attributes_amount $special_price_discount);
                
    $sale_maker_discount $calc;
    //echo '<br />attr ' . $attributes_amount . ' spec ' . $special_price_discount . ' Calc ' . $calc . 'Calc2 ' . $calc2 . '<br />';
              
    } else {
                
    $sale_maker_discount $sale_maker_discount;
              }
            }
            break;
          case (
    $discount_type_id == 2109):
            
    // New Price amount discount on Sale and Special with a special
            
    if (!$attributes_id) {
    //          $sale_maker_discount = $sale_maker_discount;
              
    $sale_maker_discount $sale_maker_discount;
            } else {
              
    // compute attribute amount
              
    if ($attributes_amount != 0) {
                
    $calc = ($attributes_amount $special_price_discount);
    //echo '<br />attr ' . $attributes_amount . ' spec ' . $special_price_discount . ' Calc ' . $calc . 'Calc2 ' . $calc2 . '<br />';
                
    $sale_maker_discount $calc;
              } else {
                
    $sale_maker_discount $sale_maker_discount;
              }
            }
            break;
    // EOF: New Price amount discounts - Skip Special

          
    case ($discount_type_id == or $discount_type_id == 9):
          
    // flat discount
            
    return $sale_maker_discount;
            break;
          default:
            
    $sale_maker_discount 7000;
            break;
        }

        return 
    $sale_maker_discount;
      }

    ////
    // look up discount in sale makers - attributes only can have discounts if set as percentages
    // this gets the discount amount this does not determin when to apply the discount
      
    function zen_get_products_sale_discount_type($product_id false$categories_id false$return_value false) {
        global 
    $currencies;
        global 
    $db;

    /*

    0 = flat amount off base price with a special
    1 = Percentage off base price with a special
    2 = New Price with a special

    5 = No Sale or Skip Products with Special

    special options + option * 10
    0 = Ignore special and apply to Price
    1 = Skip Products with Specials switch to 5
    2 = Apply to Special Price

    If a special exist * 10+9

    0*100 + 0*10 = flat apply to price = 0 or 9
    0*100 + 1*10 = flat skip Specials = 5 or 59
    0*100 + 2*10 = flat apply to special = 20 or 209

    1*100 + 0*10 = Percentage apply to price = 100 or 1009
    1*100 + 1*10 = Percentage skip Specials = 110 or 1109 / 5 or 59
    1*100 + 2*10 = Percentage apply to special = 120 or 1209

    2*100 + 0*10 = New Price apply to price = 200 or 2009
    2*100 + 1*10 = New Price skip Specials = 210 or 2109 / 5 or 59
    2*100 + 2*10 = New Price apply to Special = 220 or 2209

    */

    // get products category
        
    if ($categories_id == true) {
          
    $check_category $categories_id;
        } else {
          
    $check_category zen_get_products_category_id($product_id);
        }
    /*
        $deduction_type_array = array(array('id' => '0', 'text' => DEDUCTION_TYPE_DROPDOWN_0),
                                      array('id' => '1', 'text' => DEDUCTION_TYPE_DROPDOWN_1),
                                      array('id' => '2', 'text' => DEDUCTION_TYPE_DROPDOWN_2));
    */
        
    $sale_exists 'false';
        
    $sale_maker_discount '';
        
    $sale_maker_special_condition '';
        
    $salemaker_sales $db->Execute("select sale_id, sale_status, sale_name, sale_categories_all, sale_deduction_value, sale_deduction_type, sale_pricerange_from, sale_pricerange_to, sale_specials_condition, sale_categories_selected, sale_date_start, sale_date_end, sale_date_added, sale_date_last_modified, sale_date_status_change from " TABLE_SALEMAKER_SALES " where sale_status='1'");
        while (!
    $salemaker_sales->EOF) {
          
    $categories explode(','$salemaker_sales->fields['sale_categories_all']);
          while (list(
    $key,$value) = each($categories)) {
            if (
    $value == $check_category) {
              
    $sale_exists 'true';
              
    $sale_maker_discount $salemaker_sales->fields['sale_deduction_value'];
              
    $sale_maker_special_condition $salemaker_sales->fields['sale_specials_condition'];
              
    $sale_maker_discount_type $salemaker_sales->fields['sale_deduction_type'];
              break;
            }
          }
          
    $salemaker_sales->MoveNext();
        }

        
    $check_special zen_get_products_special_price($product_idtrue);

        if (
    $sale_exists == 'true' and $sale_maker_special_condition != 0) {
          
    $sale_maker_discount_type = (($sale_maker_discount_type 100) + ($sale_maker_special_condition 10));
        } else {
          
    $sale_maker_discount_type 5;
        }

        if (!
    $check_special) {
          
    // do nothing
        
    } else {
          
    $sale_maker_discount_type = ($sale_maker_discount_type 10) + 9;
        }

        switch (
    true) {
          case (!
    $return_value):
            return 
    $sale_maker_discount_type;
            break;
          case (
    $return_value == 'amount'):
            return 
    $sale_maker_discount;
            break;
          default:
            return 
    'Unknown Request';
            break;
        }
      }

    ////
    // look up discount in sale makers - attributes only can have discounts if set as percentages
    // this gets the discount amount this does not determin when to apply the discount
      
    function zen_get_products_sale_discount($product_id false$categories_id false$display_type false) {
        global 
    $currencies;
        global 
    $db;

    // NOT USED
    echo '<br />' 'I SHOULD use zen_get_discount_calc' '<br />';

    /*

    0 = flat amount off base price with a special
    1 = Percentage off base price with a special
    2 = New Price with a special

    5 = No Sale or Skip Products with Special

    special options + option * 10
    0 = Ignore special and apply to Price
    1 = Skip Products with Specials switch to 5
    2 = Apply to Special Price

    If a special exist * 10

    0+7 + 0+10 = flat apply to price = 17 or 170
    0+7 + 1+10 = flat skip Specials = 5 or 50
    0+7 + 2+10 = flat apply to special = 27 or 270

    1+7 + 0+10 = Percentage apply to price = 18 or 180
    1+7 + 1+10 = Percentage skip Specials = 5 or 50
    1+7 + 2+10 = Percentage apply to special = 20 or 200

    2+7 + 0+10 = New Price apply to price = 19 or 190
    2+7 + 1+10 = New Price skip Specials = 5 or 50
    2+7 + 2+10 = New Price apply to Special = 21 or 210

    */

    /*
    // get products category
        if ($categories_id == true) {
          $check_category = $categories_id;
        } else {
          $check_category = zen_get_products_category_id($product_id);
        }

        $deduction_type_array = array(array('id' => '0', 'text' => DEDUCTION_TYPE_DROPDOWN_0),
                                      array('id' => '1', 'text' => DEDUCTION_TYPE_DROPDOWN_1),
                                      array('id' => '2', 'text' => DEDUCTION_TYPE_DROPDOWN_2));

        $sale_maker_discount = 0;
        $salemaker_sales = $db->Execute("select sale_id, sale_status, sale_name, sale_categories_all, sale_deduction_value, sale_deduction_type, sale_pricerange_from, sale_pricerange_to, sale_specials_condition, sale_categories_selected, sale_date_start, sale_date_end, sale_date_added, sale_date_last_modified, sale_date_status_change from " . TABLE_SALEMAKER_SALES . " where sale_status='1'");
        while (!$salemaker_sales->EOF) {
          $categories = explode(',', $salemaker_sales->fields['sale_categories_all']);
          while (list($key,$value) = each($categories)) {
            if ($value == $check_category) {
              $sale_maker_discount = $salemaker_sales->fields['sale_deduction_value'];
              $sale_maker_discount_type = $salemaker_sales->fields['sale_deduction_type'];
              break;
            }
          }
          $salemaker_sales->MoveNext();
        }

        switch(true) {
          // percentage discount only
          case ($sale_maker_discount_type == 1):
            $sale_maker_discount = (1 - ($sale_maker_discount / 100));
            break;
          case ($sale_maker_discount_type == 0 and $display_type == true):
            $sale_maker_discount = $sale_maker_discount;
            break;
          case ($sale_maker_discount_type == 0 and $display_type == false):
            $sale_maker_discount = $sale_maker_discount;
            break;
          case ($sale_maker_discount_type == 2 and $display_type == true):
            $sale_maker_discount = $sale_maker_discount;
            break;
          default:
            $sale_maker_discount = 1;
            break;
        }

        if ($display_type == true) {
          if ($sale_maker_discount != 1 and $sale_maker_discount !=0) {
            switch(true) {
              case ($sale_maker_discount_type == 0):
                $sale_maker_discount = $currencies->format($sale_maker_discount) . ' ' . $deduction_type_array[$sale_maker_discount_type]['text'];
                break;
              case ($sale_maker_discount_type == 2):
                $sale_maker_discount = $currencies->format($sale_maker_discount) . ' ' . $deduction_type_array[$sale_maker_discount_type]['text'];
                break;
              case ($sale_maker_discount_type == 1):
                $sale_maker_discount = number_format( (1.00 - $sale_maker_discount),2,".","") . ' ' . $deduction_type_array[$sale_maker_discount_type]['text'];
                break;
            }
          } 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 = '" . (int)$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_idtrue);
        
    $display_sale_price zen_get_products_special_price($products_idfalse);

        
    $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 preg_split("/[:,]/" $string);
        
    $new_price 0;
        
    $size sizeof($attribute_qty);
    // if an empty string is passed then $attributes_qty will consist of a 1 element array
        
    if ($size 1) {
          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 preg_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;

        
    $attributes_price_final 0;

        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= '" . (int)$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$qty1$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= '" . (int)$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='" . (int)$check_attribute "'");
        
    $check_type_query $db->Execute("select products_options_type from " TABLE_PRODUCTS_OPTIONS " where products_options_id='" . (int)$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) {
        
    $string str_replace(array("\r\n""\n""\r""\t"), ' '$string);

        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) {
        
    $string str_replace(array("\r\n""\n""\r""\t"), ' '$string);

        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$cart;
          
    $new_qty $_SESSION['cart']->in_cart_mixed_discount_quantity($product_id);
          
    // check for discount qty mix
          
    if ($new_qty $check_qty) {
            
    $check_qty $new_qty;
          }
          
    $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='" . (int)$product_id "'");
          
    $products_discounts_query $db->Execute("select * from " TABLE_PRODUCTS_DISCOUNT_QUANTITY " where products_id='" . (int)$product_id "' and discount_qty <='" . (float)$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_idfalse);

          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 quantities
      
    function zen_get_discount_qty($product_id$check_qty) {
        global 
    $db;

        
    $product_id = (int)$product_id;

        
    $discounts_qty_query $db->Execute("select pqd.*, p.products_discount_type
                  from " 
    TABLE_PRODUCTS_DISCOUNT_QUANTITY " pqd, " .
                  
    TABLE_PRODUCTS " p
                 where pqd.products_id='" 
    . (int)$product_id "' and pqd.discount_qty != 0
                 and p.products_id = pqd.products_id"
    );
    //echo 'zen_get_discount_qty: ' . $product_id . ' - ' . $check_qty . '<br />';
        
    if ($discounts_qty_query->RecordCount() > and $check_qty && $discounts_qty_query->fields['products_discount_type'] !=0) {
          return 
    true;
        } else {
          return 
    false;
        }
      }

    ////
    // set the products_price_sorter
      
    function zen_update_products_price_sorter($product_id) {
        global 
    $db;

        
    $products_price_sorter zen_get_products_actual_price($product_id);

        
    $db->Execute("update " TABLE_PRODUCTS " set
                      products_price_sorter='" 
    zen_db_prepare_input($products_price_sorter) . "'
                      where products_id='" 
    . (int)$product_id "'");
      }

    ////
    // salemaker categories array
      
    function zen_parse_salemaker_categories($clist) {
        
    $clist_array explode(','$clist);

    // make sure no duplicate category IDs exist which could lock the server in a loop
        
    $tmp_array = array();
        
    $n sizeof($clist_array);
        for (
    $i=0$i<$n$i++) {
          if (!
    in_array($clist_array[$i], $tmp_array)) {
            
    $tmp_array[] = $clist_array[$i];
          }
        }
        return 
    $tmp_array;
      }

    ////
    // update salemaker product prices per category per product
      
    function zen_update_salemaker_product_prices($salemaker_id) {
        global 
    $db;
        
    $zv_categories $db->Execute("select sale_categories_selected from " TABLE_SALEMAKER_SALES " where sale_id = '" . (int)$salemaker_id "'");

        
    $za_salemaker_categories zen_parse_salemaker_categories($zv_categories->fields['sale_categories_selected']);
        
    $n sizeof($za_salemaker_categories);
        for (
    $i=0$i<$n$i++) {
          
    $update_products_price $db->Execute("select products_id from " TABLE_PRODUCTS_TO_CATEGORIES " where categories_id='" . (int)$za_salemaker_categories[$i] . "'");
          while (!
    $update_products_price->EOF) {
            
    zen_update_products_price_sorter($update_products_price->fields['products_id']);
            
    $update_products_price->MoveNext();
          }
        }
      }

    #2
    Schau mal nach, ob 1.54 wirklich PHP 7 kompatibel ist, sonst ändere mal die PHP version auf 5.X

    Kommentar


      #3
      Hallo, ist mit der 5.6 oder 5.4 genau das gleiche.

      Kommentar


        #4
        Wenn Du in Deinem Stylessheet definierst:
        Code:
        .productPriceDiscount{display:none}
        dann wirds halt nicht angezeigt...

        Kommentar


          #5
          Danke webchills, ich hatte es einfach nicht gefunden.

          Kommentar

          Info zu diesem Forenarchiv:
          Mit Release von 1.5.7 wurde die deutsche Zen Cart Version auf eine reine DIY-Lösung umgestellt.
          Für einen Support via Forum stehen keine personellen und zeitlichen Ressourcen mehr zur Verfügung.
          Dieses Supportforum bleibt im Nur-Lesen-Modus als Wissensarchiv noch online verfügbar.
          PM Funktionalität, Registrierung und Posten neuer Beiträge sind deaktiviert.
          Zugriff auf Anhänge in den Postings ist auch ohne Registrierung/Einloggen möglich.
          FAQ und Downloadbereich des Forums wurden in die neue umfangreiche Knowledgebase auf der zen-cart-pro.at Website übernommen.

          Das Development der deutschen Zen Cart Version geht wie bisher auf Github weiter.
          Wir werden auch weiterhin neue Versionen bereitstellen und die Onlinedokumentation/Knowledgebase aktualisieren.
          Fehler in der Software können auf Github als Issues gemeldet werden.
          Follow us
          aktuelle version
          Zen Cart 1.5.7g deutsch
          vom 12.12.2023
          [Download]
          Lädt...
          X